Geliştiricilerle görüşürken hangi teknikleri kullanıyorsunuz? [kapalı]


28

Bu tür bir şey hakkında pek çok tartışma olduğunu ve "100 mantık korsanı" türündeki soruları sorup sormamaya ya da "fizz buzz" yazmalarını isteyip istemediğinize sık sık dogmaya girdiklerini biliyorum.

İşler için potansiyel geliştiricilerle görüşürken sizin için hangi tekniklerin ve soruların etkili olduğunu merak ediyorum .

Cevap başına bir teknik böylece onlara oy verebiliriz, lütfen.

Yanıtlar:


21

Gerçek teknik soruların yanı sıra ve tipik olarak görüşmenin sonunda, sektöre olan ilgilerini ve kültürünü şu sorularla kavramaya çalışıyorum:

  • Programlama ile ilgili ilginç bulduğunuz ve diğer programcılara önermek istediğiniz herhangi bir şey gördünüz mü? Yeni bir dil, araç, platform, teknik, web sitesi?

  • Sektörümüzde, çalışmalarından hoşlandığınız ya da ilham alan nedenlerini tanıyan herhangi bir kişiyi adlandırabilir misiniz? (geliştirici, web sitesi kurucusu, yazar, konuşmacı vb.)

  • Şimdi ne okuyorsunuz ya da en son okuduğunuz yazılımla ilgili kitap neydi?

  • Hangi programlama ile ilgili siteleri sık kullanıyorsunuz?

Bu soruları hiç cevaplamamak (ne yazık ki çok sık oluyor) benim için 'işe alınmamak' anlamına gelmese de, bir kişinin yazılım geliştirme mesleğine yaklaşma şekli hakkında çok fazla şey söylüyorlar.


4
Muhtemelen bunun herhangi bir yazılım röportajında ​​ölçülecek en önemli şey olduğunu söylemeye kadar giderim. Kod yazmanın daha önemli olduğunu iddia edebilirsiniz, ancak yakın zamanda veya üniversitede benzer bir şeyi ele alan insanlar bu yöntemle kendi yollarını tahmin edebilirler, oysa gerçek, gerçek ilgiyi taklit etmek çok zordur.
Mike B,

5
Bunun bu web sitesinde popüler bir cevap olması beni şaşırtmadı. Buradaki izleyici tanımı gereği "programcı kültürü" nü değerlendiriyor. (Buna katılıyorum, ancak bu testi
geçmeyecek

2
@AShelly: Evet, katılıyorum. Bu nedenle, bu soruyu bir programcının reddetmesi veya kabul etmesi için gerekli görmüyorum. Bu sadece röportaj yaparken kullanabileceğiniz başka bir tekniktir.
Sergio Acosta

16

Kod yazmasını sağlayın, gerçek kod.

Görüşme yapan kişi, en rahat olduğunuz programlama dilini seçmenize izin verebilir, C ++, Java, C # veya her ne olursa olsun ve sizden basit bir problemi çözmenizi isteyebilir; En iyi dilinizi kullanarak basit bir problem çözmede sorun yaşıyorsanız, bir problem var demektir. Lütfen Steve Yegge'nin blog yazısına ve özellikle "Mental Prep" bölümüne bakın.


6
Evet, ama fazla değil.
Damovisa

Gerçek kod yazmak, seçkin yazılım şirketlerinin (Google, Amazon, Microsoft, ...) kapılarına girmenize ve gerisini seçmekte özgürsünüz.
grokus

3
Lütfen cevabınızı açıklayın. "Gerçek" kodla ne demek istiyorsun? Hangi kod "gerçek" değil?
MAK

+1 @MAK: Kabul, gerçek kod nedir? Üretim yazılımınızda kullanmak istediğiniz kod ise ...
Steven Evers

1
'Gerçek kod' dan, görüşülen kişiden bir 'strdup ()' işlevi yazmasını istemek gibi bir şey düşünürdüm. Gerçek bir kullanıma sahiptir ve deneyimlerini ve bellek yönetimi ve hata yönetimi gibi şeylere karşı tutumlarını gösterir.
JBRWilkinson

11

Ekibinizden birkaç kişi ile onlarla bağımsız olarak görüşün. Sonra düşüncelerinizi paylaşın, görüşmeden önce ikisi arasında konuşmayın. Arada konuşmak, kararınızı değiştirecek ve bağımsız değerlendirmeleriniz olmayacak.

Görüşme yapan teknik kişiler için görüşme yapmalarını sağlar. Teknik olmayanlar için tecrübeli olmayan şeyler sormaya çalışmayın. Yine de bazı teknik kişilerle görüşme yaptığınızdan emin olun.

Görüşmeler sadece yöneticiler tarafından yapılmamalı, gelecekte birlikte çalışacakları her işçi için son derece önemlidir.


2
"Görüşmeler sadece yöneticiler tarafından yapılmamalıdır" için +1. Yeni işe alım, meslektaşlarının yanı sıra kodu daraltamazsa, takım arasında huzursuzluk olur.
JBRWilkinson

7

Bir görüşmeci önceki projeleri ve ne yaptıklarını açıklamak istiyorum. Bu cevabdan takip eden soruları alabilirim: neden bazı şeyleri belirli bir şekilde yaptıklarını, birinden söz ettikleri takdirde belirli bir problemi nasıl çözdüklerini, ama en önemlisi projenin amacı ve bunun çözdüğü iş problemini nasıl çözdüklerini.

Bunu ne yaptığımı anlamamı sağlayacak şekilde ifade edip edemediklerini görmek ve ne yaptıklarını anlamalarını görmek için yapıyorum.

Projenin amacı ve iş sorunu hakkındaki son sorunun bir çok insanı gezdirdiğini çözmesi şaşırtıcı. Üzerinde çalıştıkları projenin neden yapıldığı hakkında hiçbir fikirleri yok. Projenizin neden en başta bulunduğunu bilmiyorsanız, size çözüm üretmeye katkıda bulunup bulunmadığınızı veya sadece size söyleneni yaptığınızı merak ediyorum.

(Bunları oraya fırlattığımı düşündüm, çünkü diğer tüm cevaplar teknik olma eğilimindedir. İnsanların da çözdükleri sorunları neden çözdüklerini bilenleri istiyorum, aksi takdirde son kullanıcının yapmadığı yanlış sorunları çözme eğiliminde olurlar. umrumda değil :)


6

Önemli bir mimari karar almalarını isteyin

Örneğin. İşte y sayısı alt görevlerini aynı anda çalıştıran x programı. Hangisini tercih edersiniz, çok işlemli veya iş parçacıklı bir yapı.

Her ikisinin de faydaları / dezavantajları nelerdir? Ne kadar iyi çalışırlar ve çok çekirdekli, çok işlemcili bir platformdan yararlanmak için nasıl kullanılabilirler? Kişisel tercihiniz nedir? Kişisel önyargılar, bilgiyi gerçekten uygulamak zorunda olup olmadıklarını ve deneyimlerini paylaşmaları için onlara bir sıçrama noktası sağlayıp sağlamadıklarını belirlemede yardımcı olabilir?

Bir görüşmecinin şu şekilde bulabileceği tonlarca soru vardır:

  • TCP veya UDP?
  • Dinamik veya Statik yazılan dil?
  • Monolitik uygulama veya daha küçük uygulamalar?
  • Süreçler Arası İletişim için ne kullanırsınız?
  • Saklı Prosedürler veya ORM?

Bu konuların çoğu, bir bilgisayar sisteminin nasıl çalıştığı / niçin böyle çalıştığı hakkında kesin bilgi içeren türlerdir. Hepsi kesin bir cevabı olmayan sorunlara çözüm / çözümdür, bu nedenle bu kişinin elindeki zorlukları ne kadar iyi adapte edebileceğini veya üstesinden gelebileceğini hissederler. Bazı gerçek eller deneyim olmadan kolayca elde edilebilecek kavramların değil.

Not: Başvuranın bazı pesudo kodlarını yazması da bir zorunluluktur ancak bu cevap çoktan alınmıştır.


Buna ekleyeceğim bir uyarı, sorunun, görüşmeyi yapan şirketin etki alanına özgü olmamasını sağlamaktır.
JBRWilkinson

1

Onlara beyaz tahtada yapmaları gereken bazı temel kodları verin - örneğin, bağlı liste uygulaması, sıralama veya benzeri bir şey.

Derleyicinin yardımı olmadan dilleriyle ne kadar rahat olduklarını yargılayabilir ve düşünce sürecini yargılayabilirsiniz (özellikle böyle bir şeyi asla uygulamazlarsa - çoğu "yeni" programcının yapmadığı).


8
Katılmıyorum. Bağlantılı listeler ve sıralama, ortak bir soruna ilişkin iyi bilinen hazır konulardır. Birini yazmış olan herkes nasıl çalıştığını bilir, ancak çoğu kişi kendi yazılarını yazmakla uğraşmaz çünkü çoğu dil zaten iyi bir iş çıkarır.
Evan Plaice

Evan ile aynı fikirdeyim. Uygulamada, farklı sıralama / arama algoritmalarının performansından ve temel veri yapılarından haberdar olmak çoğu zaman yeterlidir. Bunları nasıl uygulayacağınızı bilmek temiz, ama sonuçta işe yaramaz. Ayrıca, çoğu programlama işinde, görev için doğru çerçeveyi / kütüphaneyi nasıl seçeceğinizi bilmek, QuickSort'u üç satırda nasıl uygulayacağınızdan daha önemlidir.
Alan Plum

0

Bir konuşma yapın, teknik ve profesyonel rota boyunca sürüklenmesini ve kıvrılmasını sağlayın ve yol boyunca anlayışlı veya aptal yorumlar arayın. Bu size bir röportajda ihtiyacınız olanın 3 / 4'ünden, bir insanın yeteneklerinden ve kişiliğinden, genel istihbarattan ve teknik becerilerin kaba bir değerlendirmesinden geçer.

Röportajınızı "sorular" olarak, konu başlatıcı olarak kullanın ve sohbeti teknik konulara dolaştırmak için kullanın - sohbeti / ilgi alanlarını yeterince araştırmak için sohbeti zaman zaman (kodlama alıştırması yapmak gibi) sıfırlamanız gerekebilir.

Bu teknikle gerçek hüner emin olmaktır onlar yaptıkları çünkü aksi takdirde olumlu değerlendirmenin riskiyle, konuşma işini sen hiç / söylediğin her şeyi kabul dinleyerek akıllı hissediyorum.

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.