FizzBuzz - gerçekten mi? [kapalı]


60

"Mülakat testi" sorularına gelince, FizzBuzz'ın konusu sıklıkla ortaya çıkıyor. Ayrıca bununla ilgili bir Kodlayıcı Korku yazısı var.

Şimdi, eğer böyle bir siteyi okumaktan rahatsız olursanız, FizzBuzz'ı önemsizden başka bir şey bulan programcıların demografisinde olma ihtimaliniz daha düşüktür.

Ancak programcıların% 99'unun bununla mücadele edeceği gerçekten doğru mu?

Gerçekten mi?

Bunu destekleyecek kanıt nedir?

Bazı gerçek hayattan örnekler bu soruyu cevaplamak için çok yardımcı olacaktır.


57
Programcıların% 99'u, başvuru sahiplerinin % 99,5'i (çoğu programcı değil).
webbiedave

4
Bir röportaj yapana kadar inanmadım - daha sonra işi aldım ve daha sonra da ceo ile konuştum. Görünüşe göre% 99 haklı. Oo
Fishtoaster

3
Her zaman fizzbuzz sorularının bir efsane olduğunu düşündüm, ya da sadece üniversiteden yeni başlayanlar için, ama bir gün bir röportajda sorulmuştu. Evet, birçok aday bu konuda gerçekten sorun mu yaşıyor?
DarenW

2
Röportajlarda düzenli olarak FizzBuzz testini verdim ve rutin olarak insanların başarısız olmasını sağladım. Bir grafik tasarımcı olsa bir gün geçti ama ..... Beni biraz şaşırttı :)
Brandon Wamboldt

4
@Rogue Coder - Hey, aptal değiliz, sadece garip. Ve çoğumuz matematik emer.
Inaimathi

Yanıtlar:


46

% 99? Hayır. Önemli bir yüzde? Evet. Kendi insanlarla röportaj yapma deneyimimden buna tanıklık edebilirim. Sizin için önemsiz görünebilir, ancak programlama alanında yıllarca yolunda ilerleyen ya da giriş yapmayan pozisyonlara başvuran ve başarısız olan birçok kişi var.

Kolayca çözebilseniz bile, ancak bana böyle bir insansal iş yapmanın istenmesi konusunda çok büyük bir statik güç veriyorsunuz size karşı sayılır. Takımda olmak bazen hoşlanamayacağınız ama gerekli olabilecek şeyleri yapmak zorunda olduğunuz anlamına gelir. Eğer yarasadan çıkarsanız, birlikte çalışmaya başlamadan önce, sizden yapmamı istediğim bir şey yapmanın üstünde olmanızın özel statüsünü denemenizin ve en iyi şekilde davranmanızın en iyi olacağını düşünürsünüz.

Çözümünüzün ne kadar zarif olduğunu umursamıyorum (her ne kadar güzel olsa da), ancak bir beyaz tahta üzerinde bir bıçak aldığınızı görmek ve bunun üzerinden geçerken konuşmak bana en azından bir bıçak almaya istekli olduğunuzu gösteriyor . Sinirlenir ve "Ben bir problem çözücüyüm, bir kod maymunu değil!" o zaman bir mandal yıkılır.

Görüşmeciler, henüz denemeye başlamayı bile reddederek reddetti. Sadece basitçe reddet. Hayır. Yapmayacak. Bir veya iki kibar soru daha sorar, zaman ayırdıkları için onlara teşekkür eder ve görüşmeyi kapatırım.

Bunu yönetici olarak ve geliştirici olarak söylüyorum.


1
Denemeyi reddetme nedenleri nelerdir?
Jon Hopkins

3
Onlara asla doğrudan sormadım. İkinci reddetmelerinden sonra birkaç soru daha sorar ve görüşmeyi kapatırdım. Eğer GUESS'e gidecektim, denemek için çok gerginlerdi (hayırsever davranıyorsam) ya da aslında yerinde farkedemiyorlardı (eğer daha alaycı olursam).
Todd Williamson

1
Röportajlarda kod yazmayı reddeden birini tanıyorum. Ayrıca Googling’in birkaç saniyesinde arayabildiği her şeyi hafızaya almayı reddediyor. O bir "problem çözücü".
kirk.burleson

4
Sonra tekrar, beyaz tahta kodlaması, görüşmecinin size verdiği bir problem… belki de çözülmesi gereken? Bana göre görüşmede kod yazmayı reddetmek, görüşmecinin sahip olduğu bir problemi çözmeyi reddetmeye eşdeğerdir. Dolayısıyla “problem çözücü” terimiyle çelişki ve daha çok “sorun reddedici” gibi bir şey.
Spoike

@Spike nope çünkü problem çözenlerin herhangi bir programlama dilinin sözdizimini bilmelerine gerek yok, öyle mi?
Pierre Arlaud

25

Bir işe başvuran (ve alamayan) programcıların% 99'unun bunun için mücadele edebileceğini düşünüyorum. Ancak, verimli bir şekilde iş sahibi olan programcıların% 99'u değil.

Modern iş arama sürecimizin doğası budur. Başvuran birçok kişi nitelikli değildir.

Bu Kodlayıcı Korku yazısı, bugünlerde Bilgisayar Bilimi öğretme yöntemimizle de konuşuyor. Geçmişte (özellikle MIT'de), özyineleme gibi kavramları kavramanızı gerektiren Lisp gibi şeyler öğrenmeniz gerekiyordu.

Günümüzde insanlara Java öğretiliyor çünkü endüstride yaygın olarak kullanılıyor ve odak derin programlama düşüncesinden çok sözdizimine geçti. Java'dan hoşlanmıyorum; Aslında, bence ideal bir ilk programlama dili. Ancak öğretmenlerimin onunla derin programlama prensipleri öğrettiğini görmedim.


11
Evet, eğitim sistemimizin (en azından ABD’de) bunun büyük bir parçası olduğunu düşünüyorum. Yazılım Programcılığı alanında 2 yıllık bir diploma alan, onur derecesi ile mezun olan ve kod okuyamayan veya yazamayan birini tanıyorum.
Rachel

8
Java öğretmeye karşı argüman zayıf bir tanesidir. Kavramlar birçok dilde öğretilebilir (örneğin, örneğin Java için kolayca yazılır). Öğretilen kavramların öğretilmesinin güçsüzleştiğine katılmıyorum, ancak keyfi olarak uygulama dilinde suçlamıyorum.
Steven Evers

1
Ah, Recursion gibi şeyler öğretiliyor, alışık değiller. Özyinelemeli bir işlev yazmak için yaptığınız gibi (en azından gittiğim yerde yaptınız) 100 satır IF ifadesi yazmak için aynı notu elde edersiniz ve 100 satır IF ifadesinin acele ederken yazmanız daha kolaydır (örneğin, ödevini yapmadan önce 5 dakikaya kadar ödevini yapmayı atladım)
Rachel

1
@SnOrfus: Java'dan da suçlamıyorum. Java öğretmeye karşı bir tartışma yapmadım. Evet, bu kavramları Java'da öğretebilirsiniz, ama yine de aldığım Java sınıflarında bunun olduğunu görmedim. Bununla birlikte, MIT başlangıçta programlama dersleri için Scheme'yi seçti, çünkü çok basit bir sözdizimine sahipti, bu nedenle dil kavramına çok fazla odaklanmak zorunda kalmadan erken programlama kavramlarını düşünmeye başlıyorsunuz.
Robert Harvey,

4
Dünyada kim "Java öğrettikleri" bir üniversiteye gidiyor. Programlama dili okulları daha az yararlıdır (Java, C ++, Lisp veya her neyse); ABD'de sahip olduğunuz bu mu? Nerede Ben CS okudu gerektiği gibi, daha fazla veya daha az (bir istisna sanırım Paradigmalar sınıf olurdu) Kendinize bir prog dili öğretildi. Üniversite dersleri matematik, CS teorisi, çoklu programlama paradigmaları, matematik vb. Dersleri vermiştir.
Andres F.

20

Bunu söylemekten nefret ediyorum ama

Programlama sorularının cevaplanmamasının ana nedeni, cevaplayıcıdan ziyade, askerin hatasıdır.

Sabit bir zamanda çalışacak belirli bir koleksiyon arama algoritmasını nasıl oluşturacağımı sorduğum bir röportajı açıkça hatırlayabiliyorum (Koleksiyondaki kaç öğeye bakılmaksızın aynı sayıda bakma). Vazgeçtim ve 20 dakika boyunca pes ettim. O zaman görüşmeyi yapan bu dahinin cevabı neredeyse sabit bir zamanda işlenen bir şey olarak göstermeye devam etti , fakat yine de sabit bir süre değil. Biraz "Bana sıfıra cevap ver" diyip 0.1'i kabul etmek gibi.

Kısacası, görüşülen birinin aşağıdaki kriterleri karşılamayan bir soru sorduğu çok fazla vaka gördüm.

  1. Bütün olası doğru cevapları biliyorlar.
  2. Doğru cevapların neden doğru olduğunu biliyorlar .
  3. Cevabı vermeden aslında yeterli bilgiyi nasıl sağlayabileceklerini biliyorlar.
  4. “Problem çözme” soruları açıklanmayan bir gerçeğin bilgisine dayanmaz (bu gördüğüm en büyük konudur).
  5. Çözmek zorunda kalmazsanız cevabı yazmak 1 dakikadan az sürer. Sadece kodun yazılması 5 dakika sürerse, gerçekten görüşmenin sözlü kısmına sığabileceğinden daha fazla problem çözmeyi gerektirir.
  6. Sorular, sadece "Bir kez karşılaştığım veya okulda verdiğim bir problem olduğu için şu anda nasıl çözeceğinizi bilmelisiniz" ifadesinden daha fazlasını temel alır . Eminim cevaplamak için 2 dakikadan fazla zamanınız kaldı, neden adayı aynı nezaketle vermiyorsunuz?

Cidden (1), insanlardan bir görüşmenin sözlü kısmında kod yazmalarını istemek aptalca olduğunu düşünüyorum.

Cidden (2), insanlarla kod yazmalarını istemeden röportaj yapmanın aptalca olduğunu düşünüyorum.

Cidden (3), ya onlara "ev ödevi" vermelisiniz, kod örnekleri getirmelerini isteyin ya da bir dizüstü bilgisayar ve üzerinde çalışacakları birkaç soru ve sessiz ofis verin. Sonra onlar üzerinde çalışırken onları rahat bırakın. Genellikle dışardan yardım alma yeteneklerini sınırladığı için sonuncu yaklaşıma gidiyorum (hile) ve bunu zamanlayabiliyorum.


Görüşme yapan kişiyle çözümlerinin neden sürekli olmadığını açıklayan bir tartışma yaptınız mı? Ben görüşmeci olsaydım ve siz özlü bir şekilde başarabilseydiniz ve kötülük olmadan beni ikna edemezsem yanıldım sizi yerinde işe alırdım.
Nemi

1
@Nemi - Evet yaptım. Söz konusu kişi işe alma yetkisine sahip biri değildi, ama pozisyon hakkında bir teklif aldım.
MIA

8
int? result; for (int i = 0; i < int.MaxValue; i++) { T item = (i < array.Length) ? array[i] : someDummyItem; if (item == whatWereLookingFor) result = i; } return result;- sabit zaman :)
yapılandırıcı

Hatalıysam beni düzelt, ancak düzgünce yapıldığını ve çarpışma olmadığını varsayarak karma tablolarının sürekli erişim sürelerine sahip olduğunu düşünüyorum. Bu nedenle, bir karma işlevini kullanarak bir arama sürekli bir zamanda mümkün olmalıdır.
15

Hash'lerin çarpışmaları olabilir. Bu yüzden genellikle itfa edilmiş sabit süre olarak ifade edilir.
Rig,

10

Tek yapmanız gereken FizzBuzz'da arama yapmak. Üzerinde büyük bir blog yazısı dalgası vardı. Genel olarak konuşan blogcu, "İnsanlara [bazı dillerde] yazmalarını söyledim ve işte yaptıkları hata türleri:" dedi ve sonra bazı tuzaklar listelendi. Eğlence insanların "ha! [Başka bir dilde bu kadar önemsiz" dediği yorumlarda başlar, tek yazmanız gereken şudur: "ve ardından kod. Bir sonraki yorumda, ilkinde kaçınılmaz olarak hatalar var. Görünüşe göre çok iyi bazı devs herhangi bir dilde ilk defa doğru anlamıyor. Hatalardan bazıları:

  • 1'den 100'e kadar istedim ve sen 1'den 99'a veya 0'dan 99'a kadar yaptın.
  • numarayı fizz ve / veya buzz ile birlikte basıp basmamak konusunda karışık
  • "fizzbuzz" ile "fizz-buzz" arasındaki anlaşmazlıklar
  • cevapsız optimizasyonlar, ne zaman bir kere yapılacağını iki kez karşılaştırmak gibi
  • çok daha fazla

İşe aldığımda, insanlardan benim için beyaz tahtada kod yazmasını istiyorum, bu kadar karmaşık bir yerde hiçbir şey yok (biliyorum, bunun karmaşık olduğunu düşünmüyorsunuz) ve birçok aday tamamen başarısız oluyor. Demek istediğim, vb-tarzı Yazmak, Öyleyse, Bitirseniz Ama aynı zamanda parantez koymak (sadece güvenli tarafta olmak için sanırım) veya C # yazmak (ve ilk sormak, C #? Bana mantık hatalarında başlama!


2
@Jeff çoğu devs önce derlenmeyecek bir şeyler yazar. İyi olanlar bir göz atın ve basit sözdizimi hatalarını düzeltin. İyi ya da sakin olarak vurgulayın tamam programcılar bir işlev yazar ancak kodunu çağırmak için kod yazmazlar, süper optimize edilmemiş bir şeyler yazarlar, tek tek sıkıntı çekmezler (ya da tek tek fark etmezler) ya da bir ya da iki sözdizimi hatası özleyebilirler. Korkunç programcılar, hiçbir yerde derlenemez bir yere kod yazıyorlar, tamamen yanlış bir şey yapıyorlar, vb. Örneğin 3 veya 5'e döngü, çünkü söz konusu olanlar 99, 100 veya 101'e (döngü) değil, hatta hayır hiç kod. Görene kadar gerçekten inanamazsın.
Kate Gregory

7
Eğer {"If {} Sonra {} EndIf" tamamen başarısız olarak nitelendirildiyse} Sonra {Görüşme tarzınız arızalıdır ve / veya bir adayı böylesine önemsiz bir temelde görevden atamadığı için çok şanslısınız} EndIf
Sparr

7
Aylık olarak en az bir düzine dil programlıyorum. Beni bir bilgisayarın önüne oturtun ve bir ay içinde dokunmadığım bir yerde çalışmamı isteyin ve oluğa geri döndüğümde ilk beş dakika böyle hatalar yapacağım, genellikle hatalarımı gösterdim derleyici veya tercüman tarafından dışarı.
Sparr

2
@Sparr - tabi. Bu yüzden, beyaz tahtada bakmanızı istersem, muhtemelen onu görür ve "ayy, çok dil kullanırım" diyeceksiniz. Yapmazsan, "Bunu hangi dilde yazdın?" Diyeceğim. ve sonra yapacaksın. Bu hileli bir soru ya da tuzak değil. Bazı insanlar aslında hiç kod yazmamış ve sahip olduklarını iddia etmişlerdir. Bu böyle soruların noktası.
Kate Gregory,

2
Ama bence bu sorular bunun için iyi değil. Bu yorum dizisine başlamadan beş dakika önce, VB'nin kod blokları etrafında parantez gerektirip gerektirmediğini size söyleyemem. If / Then / EndIf'in çoğunlukla VB [.Net] 'e benzediğini söyleyebilirim. Ve her üç ayda bir iki saat boyunca VB'ye kod yazıyorum (rentacoder.com görevleri, asla gerçek VB işlerini yapmam, nefret ediyorum).
Sparr

10

Bahsettiğiniz Kodlama Korku makalesini okudum ve bence Jeff haklı ... ama en son ne zaman röportaj yaptı?

Röportaj yaparken, genellikle stres altındasınız ve genellikle teorik sorulara cevap vermek zorundasınız (istihbarat yok, google yok, yeniden yok etme yok, sadece stresinizle ilgili belleğinizi). Bu testlerde aynı. Stres size yardımcı olmuyor.

Birinin bir pozisyon için uygun olup olmadığını bilmenin tek yolunun bir süre onunla çalışmak olduğunu fark ettim ... Sadece 100 kişiden (en fazla) kiraladığınız son 10 kişiyi alın, ne kadar iyiydi kiralama???

Bir işveren, modulos hakkında bilgi sahibi olan bir kod maymunu değil bir problem çözücüyü işe almalı.

"Bir süredir bütün adaylar için" test edemezsiniz, bu nedenle onlarla mülakat yapmanız gerekir. Bu yüzden sorularımı buna odaklarım (problem çözme) ve geçmiş referans kontrolünü yapıyorum.

Benim fikrim, FizzBuzz'ın, geliştiricilerin büyümesini sürdürmek isteyen şirket için tehlikeli olduğudur.


28
IMHO buradaki sorun, FizzBuzz'ın böyle bir alçak toplu soru olması, strese rağmen cevap veremezseniz, kendinize bir "programcı" diyorsanız, insanların yüzünüzde gülmesini hak ettiğiniz anlamına gelir. Eğer biraz daha karmaşık bir şey olsaydı , "bir baloncuk türünü uygula" gibi, bu mazeretler ve endişeler FizzBuzz için geçerli olmazdı.
dsimcha

23
Tanıdığınız filtreleme: Fizzbuzz bunun için ne iyidir şey insanlar arasından bir şey . Ve bilerek bir şeyler hala işi yapmak için yeterli olmayabilir. Bu bir işe alım kararı testi değil, "röportajda vaktimi boşa harcayacak mısın" testi değil. Bazı işe alım yöneticileri fizzbuzz'ı kendileri için yapmaları için çok fazla almaya çalışırlar.
Steven Evers

31
Aman Tanrım, modulo bir çeşit ezoterik operatör değil. Kendisini profesyonel programcılar olarak adlandırmak istiyorlarsa, tüm geliştiricilerin deneyime sahip olması gereken temel bir işlemdir. Ne olursa olsun, birisi FizzBuzz yazabilirse, bu onları işe almak anlamına gelmez. Bu kişinin görevi tamamlamak için gereken kontrol akışını düzenlemeye çalışıp çalışamayacağını görmek sadece hızlı bir başlangıç ​​noktasıdır .
webbiedave

12
Bence FizzBuzz basitçe kullanışlıdır çünkü çok akıl almaz derecede önemsizdir. Bir for döngüsü gerektirir, iki if ifadesi, modulo ve print. Anlamlı bir programlama tecrübesi olan herhangi biri, zor bir düşünce olsa bile bunu çözebilmelidir. Birisi bir röportajda onunla mücadele ederse, ben mükemmel geçerli bir turnusol testi olduğunu düşünüyorum.
Adam Crossland

11
@snorfus: "Başkasının problemi" altında yayımlandı. Değerli zaman ve para eğitimlerini harcamaktan ziyade sosyal kaygısı olan iyi bir geliştiricinin teknesini özlemeyi tercih ediyorum ve programlama yetkisi olmayan birinden sonuç bekliyordum. Kendini diğer insanların etrafında tutamaz mısın? Bir terapiste bakın.
Aarona

10

Geçenlerde 50'den fazla programcı ile çoğunlukla PHP ile çalışacakları üst düzey bir pozisyon için röportaj yapmakla görevlendirildim.

Fizzbuzz problemini tarama sınavına attım, çoğunlukla kendimi eğlendirmek ve on iyi soru istedim ve sadece dokuz tane vardı. Niyetim, o zaman insanlara röportaj soruları hakkında bile eğlenebileceğimizi göstermekti.

Başvuranların% 80'i sorunu çözdü, ancak modül operatörü kullanmadı.

Başvuranların% 15'i sorunu çözemedi.

Başvuranların% 5'i problemi modül operatörü kullanarak çözmüştür.

Örneklemem oldukça sınırlı olsa da (bir ülkeden 50 başvuru sahibi), size şunu söyleyebilirim:

% 95'inde bir CS müfredatında BS veya daha yüksek bir dereceye sahipti (buradaki üniversiteler CS'nin daha muhteşem görünmesini sağlayarak rekabet ediyor).

Gerçekten şaşırdım. Eh, korkmuş .. ama hayretler içinde. Sorun çok popüler hale geldiğinden sonuçları yeniden üretmeye yaklaşacağımı düşünmedim. Bu bana başvuranların% 5'inin süper programcılar olmayabileceğini, ancak en azından programlamaya ilişkin blogları okuduğunu gösteriyor.


Modüler operatörün kullanılmasının en bariz olduğunu düşünmüştüm, sorunu başarıyla çözen insanların% 95'inin başka bir şey kullandığından şaşırdım. Belki de yeni mezunlar oldukları ve matematik kosullarını yaptıkları için mi?
jmoreno

Modül operatörünü hiçbir zaman sınıflarımda öğrenmedim. Staj yapmamış olsaydım ya da açık kaynaklı projelere katkıda bulunmak için zaman harcamış olsaydım, endüstriye girene kadar asla öğrenemezdim. Ayrıca, bilgisayar bilimleri sınıflarımdan birinde, üçlü operatörün kötü kodlama uygulaması olduğu, çünkü çok kafa karıştırıcı ve okuması zor olduğu öğrenildi.
Robert Fraser,

Kalan operatör yerine ne kullandılar? x - (x/y)*y?
KodlarInChaos

9

Son işe alım turumda 0 ile 3 inşaat işçim vardı, sıfırı tekrarlıyorum, programlama eğitimi veya bir yazılım geliştirici pozisyonu için deneyim başvurusu. * Demek varilin dibi. Normal bir beceri dağılımını varsayıyorsanız, o zaman ortalama beceri seviyesinin oldukça düşük olacağını ve hatta 'ortalamanın üstünde' (başvuru sahipleri arasında) hala nispeten kötü olacağını görebilirsiniz.

Şimdi, sadece bazı programlama kabiliyetine sahip görünen başvuru sahiplerini fiziki hale getiriyorsanız, şimdi sahip olduğunuzu göreceksiniz:

  1. yalancılar
  2. buzzword meraklıları (bir kere .NET hakkında bir makale okudum)
  3. Kötü gerçek programcılar
  4. bir projeyi tamamlamak için teknolojiyi kullanan, ancak bunu öğrenmeyen insanlar (bunları tanımlamak için kullanılabilecekler hakkında fizzbuzz sorularına bakın)

Ek olarak, gördüğüm bazı 'fizzbuzz' soruları alana özgü. Bir dizi / çerçeve x ile birkaç yıl boyunca aşamalı olarak gelişebilir (dolayısıyla x ile z yıllık deneyim) ve bunun belirli bölümlerine rastlamamış olabilirsiniz (örneğin, UI bileşen gelişimi hakkında fazla bilgi sahibi olmayan kütüphane geliştiricileri).

Aynı şekilde, birçok geliştirici bugünlerde bakım geliştirme yapmakta, bu nedenle mimarlık / tasarım becerileri bazı alanlarda zayıf olabilir.

Şimdi,% 99'un doğru olup olmadığından emin değilim, ancak IME hala oldukça yüksek. En azından% 80 aralığında.

* Hayır, biz bu uygulamaları aramadık hatta ikinci bir bakış bile vermedik.


3
Benzer bir durum vardı, ancak müşteriyle olan sözleşmemiz projeye 4 tane tam zamanlı dev alacağımızı söylediğinden ve proje temelde yapıldığından, tavaya takılan adam müşterinin dolarına göre 3 dolar için programlama öğrendi. sözleşmede kalan haftalar.
Tangurena

Ayrıca bazı devlet yardımları programı / işsizlik sigortası ödeneği alan kişinin haftada belirli sayıda işe başvurmasını gerektirdiğinde böyle bir şey gördüm. Bu programlar, alıcının gerçekte kalifiye oldukları işlere uyguladığı bir tür nominal gereksinime sahip olsa bile, hangi iş için nitelikli olduklarını değerlendirme ve "iş başvurusu" gereksiniminin belirli bir parçasını uygulamak için kaynaklar çok sınırlıdır. .
Daniel Martin,

8

Evet gerçekten. Muhtemelen% 99 değil ama yine de oldukça yüksek. Bilgisayar bilimi öğrencileriyle staj ve tam zamanlı işe alımlar için röportaj yaptım. Bir kolejde 25 öğrenci hakkında röportaj yaparım. Aynı soruları sormamamız istendi çünkü öğrenciler konuştu. Çabucak önemli olmadığını öğrendim, çünkü ilk soruma cevap verebilecek 25 kişiden sadece 3 veya 4 öğrenciyi alacağım. "Strcmp yaz"

İki dizgiyi karşılaştırmak için bir işlev yazmalarını istedim. Belki bir sözlük için kelimeleri sıralamak için bu fonksiyonu kullanmak için. İki kelimeyi nasıl karşılaştıracağınızı anlamayan öğrencilerin sayısına hayran kalacaksınız, bu fonksiyonu nasıl yazacağınızı bile bilmeyeceksiniz. Ve bu öğrencilerin bazıları, A'nın CSc'de olduğunu iddia etti.

Programlanan şey ÇOK FARKLI. Birçok insan programlamayı bildiklerini düşünmekten hoşlanır, ama yapmazlar.


3
Sınıf enflasyonu berbat, herkes için zaman harcıyor!
DarenW

8

Bazı düşünceler:

  • Programlarında bazı hatalar olsa birisine karşı tutmam, ama açıkça doğru fikirleri vardı. Hata ayıklama programlamanın bir parçasıdır.

  • Bence pek çok insan, yapamadıklarını bilmedikleri işler için başvuruyorlar. Bana ekonomi ile ilgili bir sorun gibi görünüyor.

  • İnsanlara kötü sorular sormak gerçekten kolay, nerede tek "doğru" cevap anketörün vereceği cevaptı.


2
İkinci nokta hakkında ... bir sonraki kariyer hareketimi düşünmek, çeşitli endüstrileri incelemek ve iş aramak için çok zaman harcayan, kendi yetkinlik seviyemi birçok farklı konuda değerlendirmek büyük bir zorluktu. Görünüşe göre bu (neredeyse) herkes için büyük, büyük bir sorundur.
DarenW

@DarenW: Sende benim sempatim var. Bence, neyi sevdiğinizi bilmek ve oradan çalışmak önemlidir . Şahsen ben her zaman okulu sevdim ve mühendisliğe olan ilgimden asla şüphe etmedim. Benim kardeşlerim neredeyse hepsi ne yaptıklarından emin. Bir değil, ve bunun bir mücadele olduğunu görmek kolaydır. Ana sayfanız bilim ve sanatın kesişimine olan ilgiyi gösterir - bu harika. Bazı insanlar gençlikte kötü deneyimler yaşamıştır ve bu şimdi tüm enerjilerini kullanabilir.
Mike Dunlavey,

7

Bu test çok güzel bir şekilde işe alabileceğim bir programcı hakkında bilmek istediğim birkaç şeyi kapsıyor:

  1. Hiç programlayabilir misin?
  2. Sıfırdan bir program yazabilir misiniz (çünkü herkes yapamaz !!!)
  3. Bir problemi fazla düşünmeden çözebilir misiniz?

Son noktaya değinmek için, fizz-buzz'a sayısız çözüm var. Okunabilirlik için mi gidiyorsun? Hız? Kısalık? Programı hızlı bir şekilde yazmayı bitirdin mi? Bir programcının bu basit soruna nasıl saldırdığı çok açıklayıcı. Bir programcı bir çözüm seçemez ve sonuna kadar göremezse, bu kişinin gerçek bir görevde nasıl performans göstereceği hakkında size ne söyler?


6

Ne yazık ki, etkileyici görünümlü özgeçmişlerine sahip birçok insan temel programlama becerilerinden yoksun gibi görünüyor. C ve C ++ 'ı özgeçmişlerinde listeleyenlerin işaretçilerle ilgili temel soruları cevaplayamadığı birçok vakayı gördüm.


3

FizzBuzz'ın kaçmama yardım edeceğini umduğum iki tür insan var.

  1. Programlama bilgisi olmayan ya da ilgili programlama bilgisi olmayan değiştiriciler. Genellikle bunları CV'den tanıyabilirsiniz, ancak her zaman değil ve onlara basit bir programlama görevi vermek, programcı olmadıklarını açıkça belirtmek için iyi bir yoldur.
  2. Bir programlama kursunu veya derecesini tamamlayan, ancak nasıl programlanacağını bilmeyen Java okulu mezunları. Bu insanları filtrelemek zor olabilir çünkü teori hakkında konuşabilirler ancak pratik becerileri yoktur. Önünde basit bir sorun ortaya koymak ve bir çözüm istemek ve çözümün açıklanması bir Petra Java ile Paula Bean arasındaki farkı görmenin oldukça iyi bir yoludur.

Her iki durumda da, kusursuz bir uygulama umurumda değil. Geliştirici işlerine başvuran kişilerle yapmanız gereken test , programlayabilmeleridir.

Bununla birlikte, şu anda birkaç nedenden ötürü o özel testle uğraşmayacağım. Öncelikle çok iyi bilinmektedir ve yukarıdaki gruplardan biri denemek için hızlı olacaktır. İkincisi, Steve Yegge'nin telefon ekranı sorularını , programcı olmayanları ortaya koymadan önce ele geçirmek için kullanmamayı tercih ediyorum . Eğer birileri bu soruları tanıdıysa, onlar benim için onlar da bana önerecek olan Steve Yegge'nin blogunu okumuşlardı. Mesleğini ciddiye alan geliştiricilerin% 1'i ve kesinlikle bir röportaj yapma garantisi var. Aynı şekilde, burada veya SO'da birilerinin iyi bir temsilcisi varsa, onlarla röportaj yapmaya meyilli olurdum.


A) "İyi" ne kadar iyidir? B) İşe alıyor musunuz? :)
Sparr

3

Geliştiricilerin, çalışmalarını birlikte kopyalayıp yapıştıran ve bilinçli bir şekilde kod yazmamaya çalışan "dokuza beşleri" görene kadar FizzBuzz'ı kodlayamayacağına inanmak zor. Üst düzey geliştiricilerimizden birinin C # geliştiricisini öğrettiği, 3 yıllık "tecrübesi" olan bir sözlük kullanmayı öğrendiğimde inanamadım. Arabirimler? Tasarım desenleri? stdout'u? YAGNI? Liderim YAGNI'yi hiç duymamıştı! Bu insanların bilmedikleri şey şaşırtıcı.

Şimdi inanıyorum. Ayrıca yeterince geliştirici olduğunu düşünüyorum.


3

Bunun neden bu kadar popüler bir soru olduğunun bir parçası olduğunu düşünüyorum, çünkü cevap vermenin birden fazla yolu var ve adayın hangi yöne gitmeyi seçtiğine bağlı olarak, nasıl kodlandıkları hakkında bir fikir verebilir. Yığın Taşması konusunda 10K temsilciniz varsa , bazı harika örnekler burada görülebilir .

% 99 istatistik olarak, bu sayının nereden geldiğini kontrol edin. Muhtemelen önyargılıdır. İlk iş için görüşme yapan giriş seviyesi programcılarına dayanıyorsa, evet, özellikle adaylarının çoğunluğu üniversiteden çıkıyorsa, bunun mümkün olduğunu görebiliyorum. Aslında, bu soruna bir çözüm olarak ifade ederse muhtemelen 100 koşul yazacak birini düşünebilirim.


3
% 99 rakamının, tüm istatistiklerin% 87'sinin yerinde oluşturulduğuna dair ifadenin gerçeğini (özyinelemeli gerçeği, daha azını) gösterdiğinden şüpheliyim.
Adam Crossland

1
@Adam Crossland: İstatistiklerle ilgili istatistiklerin% 100'ü de yerinde oluşturulmaktadır.
Macha

Yine de, birisinin fizzbuzz'ı üniversiteden çözemediği için korkunç görünüyor. Bunu yapamazlarsa ne yapabilirler?
Morgan Herlocker

2
@Ironcode Okula fizzbuzz'ı bile anlayamayacak biriyle okudum ... Fizzbuzz değerleri ile kodlanmış 100 satır basan bir şey yazsalar bile şaşırırdım. Onur ile mezun oldular.
Rachel

2

Programcıların% 99'unun yüksek derecede abartılı basit bir kodlama testini programlayamadığını veya çözemediğini açıklıyor. FizzBuzz testi durumunda, daha önce bu problemle karşılaştınız ve modulo operatörü ile kolayca çözebildiniz veya daha önce karşılaşmamış ve bununla mücadele etmiş olacaksınız. Görüşme yapan kişiye programlama becerileriniz hakkında hiçbir şey söylemez.

Bence pek çok programcının teknik görüşme yöntemlerinin doğası gereği görüşme sırasında kötü bir izlenim bıraktığı anlaşılıyor. Mülakatçılar başvuru sahiplerinin dil sözdizimini, veri yapılarını, donanım mimarilerini, tasarım modellerini vb. Ayrıntılarını ve hesaplama karmaşıklığını ezberlemelerini ve anında çoğaltmalarını beklemektedir. Bilgisayar bilimi / yazılım mühendisliği alanı çok geniştir. Her şeyi ezberlemeye çalışmak imkansız ve duyarsız.

Gerçek dünyada, anahtar size atanan programlama / tasarım problemini anlayabilmek ve problemi nasıl çözeceğinizi (IDE, man sayfaları, kitaplar, google vb.) Nerede bulacağınızı bilmek. Ancak bu görüşme yapanların asla test etmediği bir şey.


14
FizzBuzz'ın ne kadar kolay olduğunun farkında mısın? Bununla karşılaşmana gerek yok. Eğer mücadele edersen, kariyer değişikliği yapmayı düşün.
John Smith,

Ancak, bölme kullanılarak modulo olmadan çözülebilir. % Yerine / yerine doğru bir çözüm benim için işe yarayacak. Bu yüzden çok temel matematik ve çok temel programlamayı anlamalıdırlar.
Almo

0

Hala nispeten küçük bir programcıyım (~ 2 yıldır para kodluyorum ve bazı profesyonel kapasitelerde bundan önce yaklaşık 2 kişi için bir yan sorumluluk olarak kodladım) bu yüzden yeterli tuz taneleri kullanın.

Büyük İşletme Projesi için kodlayıcılar için ilk ekran yapımında bazı deneyimlerim var (projenin mahkum olduğunu biliyorduk, ama hey, yine de ödemek istediler). İstihdam yapan firmadaki tek programcı olarak, özgeçmişleri gözden geçirme ve başvuru sahiplerini tarama görevini üstlenmiştim.

Bu bir hükümet projesi içindi, bu yüzden belki de en yetenekli başvuru sahiplerini cezbetmedi, ancak kod gösteren bir github hesabı olan veya portföyü olan hiç kimseden bir başvuru almadım, bu yüzden fizzbuzz kullandım ( Kelimenin tam anlamıyla tam sorunu) gibi görünen herkesin ilk geçişi olarak programlayabilecekler.

Aptalca olduğumu bildiğimi ancak herhangi bir çalışma kodunu görmek istediğimi ve eğer isterlerse eşit veya daha büyük veya başka bir şey için başka bir örnek gönderebileceklerini, ancak bu fizzbuzz'un yeterli olacağını söyleyen bir sözde özür dileyerek öne çıktım.

Sonuç: İnternetteki cevapların hacmini göz önünde bulundurarak gerçekten doğru olan bir cevap alamadım. Hiç kimse intihal için zahmet etmedi. Sadece projenin önceki başarısızlıkları üzerinde daha önce çalışmış olan insanları işe almak zorunda kaldık.

Tatbikatın ilk şokundan ve devlet yazılımlarının / sözleşmelerinin ne kadar berbat olduğu konusundaki hayal kırıklığından sonra, kendi becerilerim konusunda kendimi çok daha iyi hissettim, bu yüzden küçük zaferler?

Düzenleme: Doğru değil demediğimde tek tek bir hata (yani 100'den 99'a kadar olmayanlar için 99) veya kolay bir düzeltme olan başka bir masum hata demek istemiyorum. İşlevsel değil, ya derleme / derleme / etc işlemez ya da sorunun sadece okunmadığını ve anlaşılmadığını açıkça gösterir, ayrıca uygulamanın geri çekildiğini ve bunun yerine başka bir kod göndermediğini gösterir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.