Bir röportaj sırasında beyaz tahta “testi”: (beyaz tahta) kodunuzu yedeklemenin meşru yolu? [kapalı]


15

Anladığım kadarıyla, beyaz tahta kodunuzda bir hata (hatta bir yazım hatası gibi veya eksik ";") olması genellikle size bazı görüşme noktalarına mal olacaktır. Kaçınılmaz olarak tekrar tekrar bir okuma-okuma kodu yapacak (zaman kaybetme ve muhtemelen nöral enerji / konsantrasyon) veya daha basit (ve dolayısıyla daha az etkili) bir algoritma kullanmaktan kaçınmak ve her iki yol da yine "maliyetlidir"!

Öyleyse, neden sadece hızlı bir kod yazmak için bir (birim) test çerçevesine sahip olduğunuz kadar zarif ve etkili değil, sadece normal olarak test edin (sadece beyaz tahtada)?

Bu yaklaşımı deneyen / gören var mı? Tüm fikir layık mı?

[bu elbette kalem ve kağıt için de geçerlidir]


23
Birisinin bir röportaj sırasında beyaz tahtaya veya kağıda kod yazmasını istesem, sözdizimsel olarak% 100 doğru olmasını beklemezdim - bu onları çok fazla baskı altına sokar. Evet, genel olarak doğru olmalı, ancak noktalı virgüllerin olmaması veya hatta bir yöntem adı / parametre profilinin biraz yanlış alınması tamam (veya olması gerekir).
ChrisF

17
Röportajlarda büyük bir beyaz tahta kodlama hayranıyım, ancak beyaz tahta kodunuzun sözdizimsel olarak mükemmel olmasını bekleyen herkes yanlış yapıyor. Mesele, tamamen gerçekçi olmayan bir ortamda sözdizimsel olarak mükemmel kod üretebileceğinizi görmemek değil, bir soruna nasıl saldırdığınızı görmektir.
Tim Goodman

3
hangisinin ne yaptığını anlatan bir yorum yapmalarını isteyerek veya çözümü bitirdikten sonra onlarla çözümü tartışarak hangisinin olduğunu söyleyebilmelisiniz.
ChrisF

6
Tam sözdizimi ve yazım konusunda aşırı endişe duymak kitabımdaki görüşmeci puanlarına mal olacak.
JeffO

2
psuedo kodu bunun için
jk.

Yanıtlar:


49

Kesinlikle yazmanızı istediğim beyaz tahta kodunu test etmenizi istiyorum. Yazarken yüksek sesle konuşmanızı, bakmanızı, yaptığınız sözdizimi hatalarının çoğunu tespit etmenizi ve nasıl daha verimli olabileceğini belirtmenizi istiyorum. Aslında, bunu beyaz tahtada yapmanın bir anlamı. Bu var olmayan bir atışlık, yazma-it-all-out, A-ha-sen get 70 şey / 100 çeşit. Kodla aracılık eden ve masamın yerine beyaz tahtada yapılan bir konuşma.

"Beyaz Tahta kodlama" testini geçememenin bazı harika yolları:

  • onu reddet
  • tek bir açıklayıcı soru sormayın (dil, platform, gereksinimler hakkında bir şey) VE bana herhangi biriyle ilgili varsayımlarınızı söyleme VE cevaplayacağımdan çok daha fazla olan varsayımlar yapmayın

(örneğin: Fortran'a yazın, "display" veya "print" ifadesini "event log'a yazın", bu tür bir şey olarak yorumlayın. Önceden bana bu varsayımlarınız olduğunu söylediyseniz izin verebilirim)

  • Bana hangi dili istediğimi sor, iş tanımındaki cevabı al ve sonra farklı bir dilde yaz, çünkü istediğim dilde rahat değilsin.

(Biz burada danışmanız. Kodlama kadar danışman davranışını test ediyorum. Müşteriye soru sormak sadece müşterinin gerçekten bir seçeneği varsa doğrudur. Size ödeme yapacak kişilerle konuşmaları kontrol etmek zordur. Bu 1. Ders: Bu bir ders. herhangi bir konuda size karşı işaretleyin, ancak belirli bir "X programcısı tutuyorsunuz, ancak sizin için X yazmak istemiyorum" için iki büyük siyah işaretiniz var.)

  • "beyaz rakamları bire 5'e basmanızı istediğimde arayüzleri, fabrika düzenlerini, soyutlamaları, enjeksiyonları ve testleri içeren iki beyaz tahtayı doldurarak ne bir mimari astronot olduğunuzu gösterin.

(abartıldığımı düşünüyorsun ama sorunumu dramatik bir şekilde genelleştiren bir adamım vardı - yukarıdaki örneğe bağlı kalmak, diyelim ki çözümü 1 ila 5 yerine herhangi bir keyfi tamsayı dizisi yapacaktı (nereden aldım? kimsenin yaptığı işin fonksiyonunu çağırmayı unuttuğu ve hata ayıklayıcıymış gibi yürüdüğünü ileri sürerek tekrarlaması ve işlevin asla çağrılmadığını fark etmedi.)

Her zaman "Bunu sevdin mi?" "Bunu geliştirebilir misin?" "beni bu şekilde yürü" ve benzerleri. Genellikle bu konuşmada eksik yarı kolon veya tek tek tespit edilir. Değilse, genellikle sinirlere işaretlerim.

Beyaz tahtada benim için önemli olduğunu düşündüğünüz diğer şeyler:

  • işiniz bittiğinde hala okuyabilir miyim? Bulaştın mı, karaladın mı, renkleri değiştirdin, çizilen oklar mı, çarpı işareti mi çıkardın ve genellikle şu anda kullanılamayan bir karmaşa bıraktın mı? Ya da beyaz tahtaların silinebildiğinin, daire içinde / oklamak yerine havadaki kod satırlarına işaret ettiğini ve bana fotoğrafını çekip tasarım dosyasında tutabileceğim bir şey bıraktığını biliyor musunuz?
  • bana bunu nasıl yaptığını sordun? Yalnız kalmaktan ve kodunuzu tartışmamaktan hoşlanır mısınız, yoksa kodu işbirlikçi bir şey olarak görüyor musunuz? Hala yazarken sana bir şey sorduğumda nasıl karşılık verdin?
  • "kolay" görevde alay mı ettiniz veya "zor" görevde bayıldınız mı? Kod yazabileceğinizi göstermeniz isteniyorsa kaba davrandınız mı? Teknik bir sorundan kolayca korkutuyor musunuz veya iyi bir algoritma bulma yeteneğiniz hakkında kibirli misiniz?
  • kafanızda mı çalışıyorsunuz veya bir yerde okuduğunuz bir çözümü hatırlıyor musunuz? Genellikle zor problemleri anlatabilirim.
  • yazmaya nereden başladığınızı önceden planladınız mı? Beyaz tahtadan çıkan insanlar genellikle çok düşük başlar veya çok büyük yazarlar - bunun 20 kod satırı olacağını bilmiyorlardı ve bu yüzden sadece 5 için yer bıraktı - inan ya da inanma, bu küçük detay yansıtılır daha büyük tahmin görevleri de.
  • bittiğini söylemeden önce ona baktın mı? Sizden istemeden önce işaret ettiğinizi ya da yolunuzu dokunduğunuzu gördünüz mü? Size sorulduğunda veya size özel sorular sorduğumda, ona tekrar baktınız mı, yoksa sadece bellekten mi gittiniz? İlk taslağınızın tamamlanmış olmayabileceğini düşünmeye istekli misiniz?

Beyaz tahtada kodlama yapmanızı şiddetle tavsiye ederim. Görüşmecilerden her zaman yapmaları isteneceği konusunda uyarıyorum. Gerçek bir beyaz tahtaya erişiminiz varsa, kendinize bazı basit sorunlar ayarlayın ve bunları orada yapın. Performansınıza ve güveninize yardımcı olacaktır.

Üzgünüm TL; DR topraklarında olduğumu biliyorum ama işte şey - beyaz tahtada kodlama kodlamaktan daha fazlası . Sözdizimini kavramanızdan daha fazlası için bir test. İyi programcıların bu göreve verdiğiniz yanıtta gösterilen birçok davranışı vardır. Eğer sadece kodlama ile ilgili olduğunu düşünüyorsanız noktayı kaçırıyorsunuz demektir.

Beyaz tahta testi ile ilgili diğer konuşmalarda, insanlar bana iyi bir adayı reddedebileceğimi söylüyor. Dürüst olmak gerekirse, bu benim almaya hazır olduğum bir risk. Her işe alım turunda işe alabileceğim birkaç kişi var. Mülakatın soru-cevap kısmında iyi olan, büyük özgeçmişleri olan bazı insanlar, beyaz tahtadan ayrılırlar ve açıkça iddia ettikleri dilde basit kod yazamazlar. Bunlardan bazılarını işe almış olabilirim. Bunu engelleyen herhangi bir araç kullanmaya devam edeceğim bir araçtır. Hiç kimseyi kiralamak için hiç tekneye gitmedim çünkü tüm adaylarım tahtaya bulaştı ve hiç beklemiyorum.


2
Büyük bir cevap gibi görünüyor (ve başlangıçta almayı umduğum çok daha dürüst olmak gerekirse). Çok çok teşekkürler.
mlvljr

9
@KingOfHococrites cevabı gerçekten okudunuz mu? Noktalı virgül eksik. Bak ne umurumda. Beyaz tahtada 20 dakika bana çok şey anlatıyor.
Kate Gregory

7
Herhangi bir araştırmanın beyaz tahta röportajını doğrulayıp onaylamadığını merak ediyorum. Tam açıklama: Bir beyaz tahta röportajını başarısızlıkla bitirdikten sonra meraklandım. Birkaç yıldır röportaj yapmadım, iyi bir performans / sunum yapan kişi olmadım ve neredeyse dondum. Görüşleriniz mükemmel ve bunu önce okumuş olsaydım, röportaj sürecinin o kısmını çok daha farklı düşünürdüm (ve daha fazla konuştum). Bununla birlikte, birçok insanın bu konuda güçlü görüşleri var, ancak hepsi bu gibi görünüyor. Verileri destekleyerek desteklenen bu uygulama için objektif bir gerekçe olduğunu varsayıyorum. Var mı?
Suboptimus

3
+1 Dürüst olmak gerekirse, Kate'in önerdiği gibi görevle ilgili bir konuşma akışını sürdürmeyi umarak beyaz tahtaya çift programlama çalışması için bir vekil olarak yaklaşırdım - aslında bir makinem olmasını ve programı eşleştirmeyi tercih ederim aday (ya da görüşmeci ile aday çifti programlama). Birlikte nasıl kod yazdığınız, her boyutta bir kuruluşta tek başına nasıl kodladığınız kadar önemlidir.
Julia Hayward

4
Bunun eski olduğunu biliyorum, ancak ona bağlandım ve belirtmek istedim: Görsel işleme bozukluğunun ayırt edici özelliklerinden biri, yazdığınız alanı tahmin etme ve dolayısıyla odadan çıkmaya son verme yeteneğidir. . Değerlendirdiğiniz kişi sadece daha fazla satır için yer kalmaz, aynı zamanda çok büyük başladıklarını fark ettikleri için bir satırın sonuna doğru karakterler küçülürse, anlamaktan ziyade bir öğrenme özürü olabilir. kodun ne kadar süreceği. Onlardan uzamsal olmayan bir şeyi tahmin etmelerini isteyin ve daha iyi bir sonuç alabilirsiniz.
Yamikuronue

17

Sanırım burada yanlış bir varsayım yaptınız. Bir adayın beyaz tahtaya kod yazmasını beklememin hiçbir yolu yok ';' mükemmel yerinde. Bunun için sizi cezalandıran bir yerde röportaj yapıyorsanız, onların çalışmak istediğiniz kuruluş olmadığını :-) öneririm.


2
Bir röportajda başarısız oldum, çünkü dedikleri gibi, bir kalem ve kağıt testinin ilk geçişinde mükemmel bir şekilde optimize edilmiş kod yazmamıştım (ünite-test-ile-test-sonra-optimize-okulundan olmak) ). Sonra tekrar, hiçbir test çerçevesi yoktu, sadece ilk kez doğru yapan kodlayıcıları olduğunu varsaydılar!
Julia Hayward

3
@JuliaHayward - Sesler sizin için Şanslı bir kaçış! İnsanların hala bunu yaptığına inanamıyorum.
Martijn Verburg

7

Kağıt veya beyaz tahta testleri son derece etkisizdir. Kağıt üzerinde bazı kodlarda hatalar aramak zorunda kaldığım bir röportajım olduğunda hatırlıyorum. Bunlardan biri, sınıfın bir arayüzden miras aldığı, ancak bir üyenin uygulanmasını kaçırdığıydı. Bunun hatalardan biri olduğunu biliyordum, onu arıyordum ve herhangi bir sebepten ötürü sadece göremedim (her ne kadar sorunlardan biri olarak aradığımı belirtmiştim).

Olduğu gibi, hala bu işi aldım, ama ne olduğunu düşünmemi sağladı. Bu tür bir şey için gerçekçi bir senaryoda, bir şeylerin yanlış olduğu anda (bu Visual Studio'da C #) ve şey derlenmeyecek dalgalı çizgiler elde edeceğim. Bunu gerçek hayatta asla kontrol edemem çünkü asla olmuyor (imkansız) ve dolayısıyla bu tür şeyleri görmekten alıkonuluyorum. Eksik yarım sütunlar bunun çok daha aşırı bir örneğidir - not defterinde yazmazsanız ve kodunuzu derlemek için başka birine e-postayla göndermediğiniz sürece gerçek dünyada tamamen gerçekçi değildir!

Birisi bir röportaj sırasında söylemek istediği bir şeyi desteklemek için bir beyaz tahta kullanmayı isterse, o zaman harika, ama bunu asla başka şekilde yapmam.


2
Hikayeniz, testinizin etkili olduğunu kanıtlıyor gibi görünüyor. Genel olarak "Kodu nasıl inceliyorsunuz?" gözden geçirmen için sana verdiler. Yüksek sesle konuştunuz ve "her şeyi uyguladığından emin olmalısınız" gibi bir şey söylediniz ve eksik olanı fark etmemiş olsanız bile, onlara sadece kodları nasıl inceleyeceğinizi, sadece bununla ilgili soruları yanıtlamayı bildiğinizi gösterdiniz. . Ayrıca muhtemelen bazı kişilerin sahip olabileceği bir grup hataya da işaret etmediniz ve belki de başka hatalar gördünüz. Ve sonra işi aldın. Bu bana çok etkili geliyor, herkes için!
Kate Gregory

2
Ayrıca, eksik yarım sütunlar gerçek bir negatif olarak reddedilmeye devam ediyor. Tercih ettiğiniz dilin sözdizimini sürekli olarak yanlış yazmak, tüm bu sözdizimini içselleştiren birinden daha yavaş bir geliştirici olduğunuz anlamına gelir. Sürekli geri dönüp unuttuğun şeyleri tamir ediyorsun. IDE'den sürekli sarkma ile ritminizi atma şansınız yüksektir. Buna ek olarak, tüm yarım sütunlarını beyaz tahtada bırakan ve sizden istendiğinde fark etmeyen insanlar, haftada bir kez IDE'ye bir yarım kolon yazmayı ve sonra düzeltmeyi unutan iyi geliştiricilerle aynı seviyede değildir. o.
Kate Gregory

2
+1 etkisizdir. Kesinlikle hiçbir şey kanıtlamaz. Testi geçemeyen birçok insanın onu geçen ortalama bir adamdan daha iyi olduğundan eminim.

3
@Kate - Nereden geldiğini anlıyorum, ama katılmıyorum - özellikle de masanın diğer tarafında otururken. Birisi düzenli olarak noktalı virgül eksikse IDE'de yapay bir ortamda olmadığını görmek istiyorum. Ofisimin anahtar kodu gibi - Numarayı düşünmeden yazabilirim,% 100 güvenle yazmamı isteyebilirim ve mücadele ediyorum. Bir röportaj hiçbir zaman% 100 gerçekçi olmayacaktır, bu yüzden daha az yapmak için yolumdan çıkmak istemiyorum.
FinnNk

1
Klavyede önemli bir sözdizimini beyaz tahtaya göre atlamama olasılığı daha düşüktür, çünkü yazma kas hafızası ile güçlendirilmiştir. Bununla birlikte, özellikle bir çift programlama durumunda buğulanma (ve editörümden veya çift ortağımdan bir nag) beni hataların hatalara neden olan sinirleri güçlendirdiği bir geri besleme döngüsüne atacak. Bence çok dilli adayların tek dilli adaylar üzerinde dezavantajlı olmaları muhtemel.
15:15

5

Onu yaptım. Bir röportajda beyaz tahtaya çalışma uzunluğu kodlaması uygulamam istendi ve beyaz tahtaya sığdırmak için kodun bir kısmını (kısalttığımı açıklayan) kısa keserken hala bu ünite için bir test koleksiyonu buldum, ve çözümümü doğrulamak ve testin nasıl yardımcı olacağını göstermek için bunlardan birini geçirdim. Bu pozisyon teklif edildi, bu yüzden testin yararlı olduğunu ya da en kötüsü can sıkıcı olmadığını varsayalım.


4

Okul için sınava girerken bu yaklaşımı kullanıyorum. Önce işlevi yazıyorum, sonra yan tarafa küçük bir girdi, çıktı ve değişken tablosu yazıyorum. Bu şekilde birkaç aptal hata yakaladım. Testler, kağıt üzerinde / beyaz tahta testlerinde bile, test etmekten daha iyidir.

Yine de profesyonel bir ortamda noktalı virgüllerde korkmaya katılmıyorum.


4

Bir adaydan beyaz tahtada kod yazmasını istemek aptalca. Parçacıklar, jsfiddle ve intellisense gibi modern araçlar var. Ayrıca sözdizimini ezberlemek için hiçbir mühendis gerekli olmamalıdır. Sözdizimi aranır ve kaynak gösterilir. Kodu ezberliyorsanız, kariyerinizde çok kiracılı bir ortamda nasıl kod yazacağınızı, sözdizimini veya hatta barındırılan bir ortamı nasıl optimize edeceğinizi öğrenmek için hiç zaman harcamadınız.


3
Belirli bir dilde yarı iyi olan herkes sözdizimini basitçe çok fazla kullanmaktan ezberlemelidir. Bir adam bütün gün C # kodu yazarsa ve sözdiziminin çoğunu başının üstünden bilmiyorsa, yavaş ve korkunç olacaktır. Ayrıca 2 ^ 8'in ne olduğunu da görebilirsiniz, ancak tuzuna değer herhangi bir geliştirici, sık sık karşılaştığından başının üstünden ne olduğunu bilmelidir. Aynı sözdizimi için de geçerlidir.
whatsisname

1
Bu doğru değil. Bu gün ve yaşta sözdizimini ezberlemek gerekli değildir. Sql, vb, c #, javascript ve json, angularjs, telerik ve diğerleri gibi sayısız dilde kod yazmayı bilen geliştiricilerin sözdizimini ezberleyemedikleri için tuzlarına değmeyeceklerini söylemek aptalca. Listelediğiniz gibi matematiksel operatörlerden daha iyi bir yazılım mühendisi olmaktan daha fazlası vardır. Gereksinimleri, tasarım yapılarını, kalıpları, endüstri deneyimini anlamaya ne dersiniz? Bir kamyonun arkasını doldurmak için diller ve kütüphanelerde tam anlamıyla yeterli sözdizimi vardır.
James Bailey

"Gerekli" olma meselesi değil. Eğer yeterince sık bir şey kullanırsanız, hatırlayacaksınız. Bir adam SQL geliştiricisi olduğunu iddia ederse ancak başının üstünden birleştirme ifadesi yazamazsa, bunun nedeni ya a) beceriksiz b) nitelikleri hakkında ya da c) çok garip bir beyne sahip olmasıdır. uğraşmak istemediğim üç durum.
whatsisname

1
"Birleştirme" genellikle beyaz tahtada sorulan şey değildir. Genellikle bilmeceler ve işle ilgili olmayan şeyler. Adayın sertifikalı, derecesi ve sağlam bir özgeçmişi varsa ne olur. Hala "beceriksiz" olduğunu düşünüyorsunuz çünkü yaşamak için beyaz tahtada kod yazmıyor mu? Pazarlama insanlarından üç ayda bir pazarlama stratejisine röportaj noktalarında beyaz tahta atmaları istenmez. Aptalca. Adayla konuşabilmeli ve kod yazıp yazamayacağını kolayca çıkarabilmelisiniz.
James Bailey

3

Bir restoran bir şef kiralamak istediğinde, sahibi ondan bir kürdan ve bir kap ile bir "pot au feu" pişirmek istemiyor.

Bir geliştiriciden bir röportajda beyaz tahtaya kod yazmasını istemeyin.


3
Ve sorulduğunda?
mlvljr

Röportaj sırasında

3

Beyaz tahta kodlaması zordur. Disney'le röportaj yapana kadar bununla hiç tanışmadım. Ne olacağını bilmeden ve hata ayıklamak mümkün değil, ben üzerinden konuşarak ve sorunu çözerek tökezledi, ama bir şekilde sahte bir kodla. Sorduklarında koşabilirler.

Yani sözdizimi hatalarını düzeltmeniz gerekebileceğinden emin olabilirsiniz, doğru. Beyaz tahta yüzünden işe alınmazsam çok iyi bir aday kaybettiklerine inanıyorum. Niteliklere bakıyorum ve pozisyon için çok kalifiye olduğum ve işi yapabileceğim gibi görünüyor. Şu an bulunduğum işte mükemmelim ve onlarla birlikte olabilmemi diliyorum.

Kate'in için teşekkürler, her kelimeyi okudum. Sadece bir programcı olarak bana göre, beyaz tahta gerçekten yeteneklerinizi göstermiyor. Birden çok dilde çalışan harika bir programcıyım. Programlamak istediğim dili biliyordum, ama beyaz tahtada aniden unuttum.

Karmaşık entegrasyon ve kredi kartı işlemleri oluşturuyorum, ancak beyaz tahtada, doğru sözdiziminin nasıl yapılacağını bile hatırlayamıyordum.

Bir işveren olarak beyaz tahta testini seviyorum; ancak bu işi yaparlarsa gerçek becerilerini görmek istediğim bir programcı tutuyorum. İletişim kurabilmeleri harika, ama sorunları çözebildiklerini görmem gerekiyor.


1
Giriş için teşekkürler, öyle görünüyor ki, soruyu sorduğumda ne düşündüğüm hakkında doğru - bir (zaten) doğru olup olmadığını bilmeden bir beyaz tahta kodunda gerçekten sıkışmış olabilir ve "aslında" kontrol etmenin hiçbir yolu yoktur. Zor bir çözüm - bir beyaz tahta testi yazın! ;)
mlvljr
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.