Burada itiraf etmeliyim ki, görüşmelerde algoritma soruları sormayı sevenlerden biri olduğumu, ancak soruya verilen cevabın kesinlikle alakasız olduğunu vurgulamalıyım. Görüşülen kişinin cevabı bilip bilmemesi en ufak bir umurumda değil. Bunun yerine, benim için bu soru, önem sırasına göre, aşağıdakiler gibi farklı yönleri hedeflemektedir:
Gereksinimler
Bu tür sorular kasıtlı olarak belirtilmemiştir. Örneğinizde, dizi hakkında daha fazla ayrıntı verilmemiştir. Bu sayıların gerçekten sıralanıp sıralanmadığını soran bir görüşmeci varsa, bu iyi bir işarettir. Müşterilerine daha kısa sürede daha iyi bir çözüme ulaşmalarına yardımcı olacak daha fazla ayrıntı sormak için doğru zihniyete sahiptir. Aday ayrıca bir N sayı dizisini saklamak için O (n) boşluğu kullanma fikrini de kullanabilir, ancak bunu X ve Y hakkında daha fazla ayrıntı sormadan yapmamalı. Sonra emin olun, devam edin ve dizi tabanlı bir çözümü başlatın. Ama size aralığın 1 ile 1 milyar olduğunu söylersem, sorun tamamen farklı bir hal alır. Tekrar strese gireyim, çözümü umursamıyorum.
Standart Teknikler
O (n) 'nin ne anlama geldiğini bile bilmeyen bir programcı kiralamak istemiyorum. Bu alanda iyi bir eğitime sahipseniz, bu mutlaka bilmeniz gereken bir şey. Ancak , sadece ne anlama geldiğini bilmek değil, aynı zamanda bu bilgiyi uygulamak için de önemlidir. Örneğinizde, adayın gerekli sıralama (O sıralama (n log n) nedeniyle, bir sıralama düzenini veya başka bir O (n) sıralama yaklaşımını hedefleyen daha fazla soru sormadan) verileri sıralamasına izin verilmediğini fark etmesini istiyorum. Genel olarak.
Benzer şekilde, diğer algoritma soruları ağaç veya grafik değiştirme veya özyineleme gibi standart teknikleri hedefler. Bir aday, iyi bir izlenim bırakmayan bu tekniklerden birine kayabilir. Ancak bu gibi durumlarda, adayın herhangi bir CS geçmişi olup olmadığını öğrenmek için daha derine inmeyi seviyorum. Tabii ki, hedef pozisyonun ne olduğuna bağlı, ancak genellikle çalışma zamanı karmaşıklıklarını, tipik veri yapılarını ve geçişlerini bilmeyen bir geliştirici herhangi bir yardımcı olmayacak.
Sorunlu Zihniyet
Soruyu sorduktan sonra adayı yakından izlersiniz. Nasıl tepki veriyor? En iyi sonuçları burada, sorunun ilk önce nasıl çözüleceğine dair hiçbir fikri olmayan adaylardan elde edersiniz . Bu bakımdan, soru daha sonra işyerinde benzer bir durum ortaya çıkarsa neler olabileceğini kontrol eder. Gelişiminiz sırasında böyle bir sorunla karşılaşabilirsiniz ve adayınızın bu sorunları nasıl çözebileceğini bilmek, kendi başlarına çözemiyor olsa bile iyidir.
Örnek: Adayınızın önümüzdeki yarım saat boyunca sessiz moda geçmesini istemiyorsunuz! Akıllı sorular bulabiliyor mu (bkz. Gereksinimler) kontrol edip, yapamayacağını anladıktan sonra kutunun dışında düşünmeye başlayıp başlamadığını kontrol edin. "Eğlenceli" bir soru sorma bile "İş arkadaşı telefon seçeneğini kullanabilir miyim?" iyi bir işaret.
Nasıl cevap verilir
Genel olarak, bu tür sorular için verebileceğiniz en iyi cevaplar karşı sorulardır! Hemen bir cevabı söylemek temel olarak her şeyi mahvetti ve aslında hiç de iyi bir cevap değil, çünkü bu soruların tümü, henüz akıllıca bunu yapmanız için gerekli bilgiye sahip olmadan, cevabınızın ima ettiği takaslar hakkında ipucu veriyor. değiş tokuş. Elbette, karşı soruların kalitesi adaylar arasında değişmektedir.
Görüşme sorularına genel bir not olarak: Karşı sorular nadiren kötü bir şeydir. Kendi röportajlarımdan birinde, örneğin, bana şöyle bir şey soruldu: "Eğer X'i uygulamak zorunda kalırsanız, bunun için C ++ veya Java'yı seçersiniz ve neden?" - Ben sadece "Bu ikisiyle sınırlı muyum?" Kendiniz için tahmin edin, böyle bir karşı soru için görüşmeci tarafından ne tür bir tepki alırsınız - ve görüşmeciye gerçekten neler yapabileceğinizi göstermenin sizin için ne kadar kolay olduğunu.
find the missing element in O(N) or better
ne demek ? Basit bir döngü sırasında çözülebilecek bir şey gibi görünüyor, ama yine de anlamıyorum - ya çözüldü ya da çözüldü değil mi?