Ben bu kolay sorular fizzbuzz olduğunu düşünüyorum, bir dize ters, vb, ve sonra bazı sorular vardır, oysa daha önce görmediyseniz röportaj ek baskı ve kısa sürede istenen optimal çözümü elde etmek zor kısıtlamaları. En kötü yanı, bazen teknik bilgisi olmayan işverenlerin bu soruların bazılarını sormaları ve çok özel bir cevap aramalarıdır .... En uygun cevabı vermezseniz, mutlak bir salak olduğunuzu düşünürler. Cevabınız çalışıyor olsa bile, sorunu çözüyor ve optimal olmasa da çok verimsiz değil ....
Bazı Örnekler:
Bir kart destesini nasıl karıştırırsınız? Fisher-Yates yöntemini arıyorlar http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shufflediğer cevaplar "yanlış" ..... Bu kartları daha önce karıştırmak istemediğiniz ve özellikle bakmadığınız sürece bilmeniz gereken bir şey değil. Cevabı yaparken cevap verebilirsiniz, ancak gördüklerimden bu soğuk algınlığı bilmenizi bekliyorlar, bu yüzden çözüm bulmaya izin vermek için çok zaman olacak. Daha az verimli (ama belki daha açık) bir başka yol da, orijinal diziye bir işaretçi ve rastgele bir sayı olan bir sayı içeren yeni bir dizi oluşturmak ve diziyi rastgele sayıya göre sıralamaktır. Ardından yeni bir kart dizisi oluşturmak için sıralanmış diziyi kullanın. Her durumda, bunu bir işe alan kişiye sunmak için 0 kredi aldım.
Başka bir örnek, 1'den n-1'e kadar olan n sayısı listesindeki yinelenen bir sayıyı nasıl tespit edeceğinizle ilgili sorudur. Açık cevap (bir zaman perspektifinde nispeten etkilidir), her öğeyi eklemek için bir karma tablo kullanmaktır ve zaten eklenmiş olanı bulursanız, kopyayı buldunuz. En uygun cevap, çoğaltma yoksa sayıların 1 ile n arasında olması, beklenen toplamı n (n + 1) / n olarak alabilirsiniz. Daha sonra diziyi toplarsanız, beklenen toplamdan nd daha az olan gerçek toplamı elde edersiniz. Yani temelde n - (Beklenen Toplam - Gerçek Toplam) = yinelenen sayı ... Bu oldukça özel bir durum ... Aslında birkaç yıl önce aynı hile ile ilgili bir röportaj sorunları hakkında röportaj sorunları hakkında bir şey gördüm, bu yüzden Ben iyiydim ....
Bir diğeri, herhangi bir ek alan kullanmadan bir dizedeki tüm kelimeleri tersine çevirir. Bu konuda düşünmek zorunda kaldı ve işveren düşündüm 5 dakika içinde oldukça sabırsız (yarma ve ters dizeye yeniden katılma, ya da kelime kelime yeni bir dizi içine gidiş hem de çok kolay). Son kelimenin kenarlığını bulmak, ilk kelimenin sonunu bulmak ve tüm listeyi sürekli olarak 1 aşağı kaydırıp uygun mektubu ekleyerek geldim. Sonra listenin sonuna gelene kadar tekrarlayın. Bu yöntem işe yaradı ve görüşmeci kabul etti (biraz teknikti), ancak oldukça verimsiz. Eve geldiğimde en uygun cevabı aradım ve bu sadece listeyi tersine çevirip her bir kelimeyi tersine çevirmek. Bazı insanlar bununla gelebilir,
Şimdi bu problemlerden bazılarını gördükten sonra bunları daha kolay çözebilirsiniz. Çünkü aynı hilelerle bazı benzer sorular var. Özellikle n (n-1) / 2 formülü ve sayı listesinin birkaç varyasyonu olduğunu biliyorum. Ama yine de bu soruların neyi test ettiğini bilmiyorum. FizzBuzz herkesin yapabilmesi gereken bir şeydir (her ne kadar çok basit olmayan varyasyonlar gördüm, ancak bu durumda bile, kod yazmadan / hata ayıklama yapmadan bir görüşme durumu için gerçekçi olup olmadığını sorgulamaya başlarım). Bu sorulardan bazıları, onları gördüğünüzde açıktır, ancak görmediyseniz açık değildir. Herkesin bahsettikten sonra, ikili aramanın ilk doğru uygulanmasının ortaya çıkması yıllar aldı ... Şu anda ikili arama çok açık çünkü herkes bunu okuyabilir.
Yine de, en kötü yanı teknik olmayan kişilerin soruları sormasıdır, çünkü optimal olmasa da çözümünüzün doğru olduğunu anlayamazlar. Sadece çözümünüzün sunulan çözüm olmadığını biliyorlar ve bu yüzden hepsi yanlış, girişim için kredi alamıyorsunuz. Optimal olmayan çözümler bile genellikle programlama yapıları hakkında bilgi gösterir. Poker oyunları programlamıyorsam, birisinin bir kart destesini ne kadar iyi karıştırdığı umurumda değil. Ve ben olsaydım, onlara verimli algoritmayı gösterdikten sonra eminim yarıya yakışır herkes bunu takip edebilirdi.
Şablon soruları, şablon sorularının daha fazlasını görme olasılığı daha yüksek olduğu için daha uzun görüşme yapan adaylara sadece bir avantaj sağlıyor gibi görünmektedir. FizzBuzz bile, ilk gördüğünüzde çıldırmış olabilirsiniz, ancak tekrar tekrar gördüğünüzde buna daha fazla alışırsınız. Yapabileceğiniz en iyi şey, özel iş mantığı gerektiren bazı kodlama zorlukları vermektir. Örneğin, bazı veri kümeleri (nesneler / kayıtlar dizisi) oluşturun ve sonra her bir nesneye uygulamak ve bir cevap döndürmek için bazı iş kuralları oluşturun. Muhtemelen kayıtlar arasında dolaşıp mantığı bir milyon kez uygulamış olsalar da, kurallarınız benzersiz olacak, en azından oluşturduğunuz kuralları anlamak ve başarılı bir şekilde uygulamak zorunda kalacaklardı.
Diyelim ki öngörülen Maaş ve adayların bir listesi ve en sevdiği 3 video oyunu ve belki de bir başlangıç maaşı. Zelda'yı seven adaylar 300 ceza alır, küçük denizkızı seven adaylar 200 bonus alır. Donkey Kong ve Super Mario Brothers'ı seven ancak Dr. Mario'yu sevmeyen adaylar 300 bonus kazanır. Metroid veya Kid Icarus gibi adaylar 200 bonus kazanırlar .... Bu biraz çılgınca görünür ama iş kurallarını mantıksal program yapılarına çevirme ve boolean mantık anlayışlarını test etme yeteneklerini gösterir. Genel olarak modül ve döngüler kullanmamak dışında fizzbuzz'dan çok farklı değil. Elbette onlara listeyi verebilir ve listeden dönmelerini sağlayabilir ve sonuçları belirli çıktı ölçütlerini kullanarak ekrana yazdırabilirsiniz.