“RAII deyimini açıklayın” iyi bir C ++ tarama sorusu mu? [kapalı]


13

Birlikte çalıştığım bir şirket, potansiyel bir müşteriye birini gönderirken tamamen utanmadıklarından emin olmak için aday telefon taramaları yapmamı istedi.

C ++ geliştirici rolü için adil sayıda insan yerleştirildi. C ++ 'da fazla zaman harcamıyorum, ancak dilde birkaç önemsiz ve önemsiz proje yaptım. "RAII deyimini açıkla" nın en ciddi C ++ geliştiricilerinin yarı uyurken cevaplayabileceği ve deneyim hakkında daha ilginç sorulara geçmeme izin verebileceği hoş bir softball sorusu olacağını düşündüm. Ancak, 10 yıldan fazla C ++ deneyimi olan kişilerin, "Kaynak Edinimi Başlatmadır" kısaltmasını genişletmiş olsam bile terimi tanımadığı ortaya çıkıyor. Bir aday, garip bir duygu olduğunu düşündüğüm tekniği geliştirmede her zaman pratik olmadığını hissettiğini söyleyecek kadar ileri gitti, ancak bu düşünceyi tartışmaya açık bir şekilde destekleyen birkaç örnek görebiliyordum.).

Yetkinliklerini yargılayacak kadar iyi bildiğim birkaç C ++ geliştiricisi bile bu terimi tanımadıklarını, ancak tekniğin bir özetini okuduktan sonra, "Oh, evet, bunun bir adı olduğunu bilmiyordum. bunları sadece yapmanız gereken bir şey olarak düşündü . " Stroustrup'un kitabının ikinci baskısındaki terimi hatırlıyorum, ancak tam etki o zamanlar batmadı.

Yani, "RAII deyimini bana açıklayabilir misin?" adil bir tarama sorusu mu? Tüm yetkili C ++ geliştiricilerinin bunu anlamasını beklemek mantıklı mıdır? Terim düşündüğümden daha ezoterik mi? Bir adayın terimi bilmediğini varsayarsak, RAII'yi çalıştıran uygulamaları en azından içselleştirip içmediklerini anlamama yardımcı olabilecek takip soruları var mı? Adayı cevaplama konusunda biraz enlem veren ve adayın C ++ geliştirme anlayışını göstermesine yardımcı olan daha iyi alternatif "yabani ot" soruları var mı?

Eklemek için düzenleme : Açıklığa kavuşturmak için, insanları terimsizleştiren bir tür röportajcı değilim, çünkü terim ve kısaltma bilmiyorlar. Ancak, deneyimli bir C ++ programcısının kaynak yönetimi için iyi uygulamaları içselleştirmesini beklemenin mantıklı olduğunu düşünüyorum. Ayrıca, bir adayın tasarım, problem çözme, vb. İle ilgili daha ilginç sorulara geçmeden önce uzmanlık iddia ettikleri teknoloji hakkında bazı "temelleri" anladığını doğrulamanın önemli olduğunu düşünüyorum. Aradığım şeyin iyi bir yol olduğunu düşünüyorum. "sert" sorular sormadan önce, adayın C ++ 'daki iyi kaynak yönetimi uygulamaları konusundaki temel anlayışını değerlendirmek için kullanabileceğim, açık telefonla sorulan bir soruyu sormak.


3
"Yetkinliklerini yargılayacak kadar iyi bildiğim birkaç C ++ geliştiricisi bile bu terimi tanımadıklarını söyledi". Tamam. “Öyleyse,“ RAII deyimini bana açıklayabilir misin? ”Adil bir tarama sorusu mu?” Neden sordun? Bunu bilen insanlar bulamadınız. Zaten bilmediğinizi bilmek için daha ne gerekiyor? Belki de bu konuyu küçümsemelisiniz (cevabı zaten bildiğinizden beri) ve ilginç olabilecek "Daha iyi alternatif" yabani ot "sorularına" odaklanmalısınız. Bunun dışında iyi tolere edilmeyen fikirler çıkar.
S.Lott

9
Deyimler değişir, iyi uygulama değişmez. Belli bir deyim sormak yerine, basitçe "sınıfın sızıntı yapmadığından emin olmak için ne gibi adımlar atıyorsunuz?" Diye sormaya ne dersiniz?
Blrfl

Yeterince adil, örnek büyüklüğüm düşük olmasına rağmen ve artık C ++ topluluğuyla aktif olarak ilgilenmiyorum, bu yüzden topluluğun bugünlerde temel bilgileri ne düşündüğünü bilmiyorum. Temelde gerçek C ++ bilgisini sözdiziminin temelleri ötesinde değerlendirmek için kullanılabilecek sorular repertuarımı nasıl genişleteceğimi anlamaya çalışıyorum.
JasonTrue

2
senin sorunun beklediğim gibi değil. RAII'nin ne olduğunu bilen, işe alınan birini bulacağınızı sanıyordum ve ancak daha sonra hala kodlamaya emdiğini öğrendiniz.
Kevin

1
@JasonTrue: Bence fizz vızıltı soruları bir dize ters gibi gerçek programlama soruları olması gerekiyordu. Ama yine de bence bu güzel bir soru. Ayrıca, röportaj yapılan kişinin en heyecan verici veya önemli olduğunu düşündüğü c ++ - 0x içindeki hangi özellikleri sormayı da düşünebilirsiniz. Biraz daha zor ama iyi bir cevap alırsanız, muhtemelen iyi şeyler anlamına gelir. Ve soru her zaman, boş bir bakış alırsanız 'destek kütüphanelerinin en önemli / ilginç olanı' ne geri dönebilir.
Kevin

Yanıtlar:


24

Deneyimden bildiğiniz C ++ geliştiricilerinin bu kısaltmaya veya hatta tam ifadeye aşina olmadığını fark etmişsinizdir. Bu tek başına sorunun bir telefon görüşmesi sırasında bir tarama sorusu olarak uygun olmadığını gösterir.

Öte yandan, bir senaryo oluşturarak aynı noktaya daha dolambaçlı bir yolla ulaşabilirsiniz. Şunun gibi bir şey: "Bir dosyaya günlük bilgisi yazacak bir Log sınıfı uyguluyorsunuz. Açıkçası, dosya tanıtıcısı olan bir üye değişkeninizin olması gerekir (std :: FILE *). üstesinden gelmek?" Aday, yapıcıdaki dosya tanıtıcısını ayırmak ve tanıtıcıyı ayırıcıdan ayırmak yerine bir open () ve close () yöntemi oluşturma hakkında konuşmaya başlarsa, sınıflarının nasıl davranacağını sorarak takip edebilirsiniz. çağrı kodu özel durumlar vb.


Mükemmel bir öneri. Bu yaklaşımı seviyorum.
JasonTrue

Bir telefon görüşmesinde çok fazla zaman alıyor.
HelloWorld

15

Önerildiği gibi pratik bir soru olduğunu düşünmüyorum. Sanırım bir çok geliştirici "oh, evet, bunun bir adı olduğunu bilmiyordum" kampına gireceğini göreceksiniz. Adayları kavramın adını değil, kavram üzerinde test etmenizi öneririm. Onlara bir kod örneği verin ve neden eksik olduğunu sorun veya konsepti bildiklerini göstermelerini isteyin.


3

Bence geçerli bir soru. RAII teriminin ne kadar popüler olduğunu bilmememe rağmen (ekibimde RAII terimini her zaman kullanıyoruz), ancak özellikle istisna güvenli ve çok iş parçacıklı güvenlik istiyorsanız, kaynak işleme kavramı önemlidir .


3

Birinin yetkin olup olmadığını bilmek istediğimde yaptığım ilk şey kısaltma bilgisini kontrol etmek olduğunu biliyorum. Bir kez kurulduktan sonra, kulağa hoş geldiğini düşündüğüm diğer teknolojilerin adlarını bildiklerinden emin olurum. Bundan sonra hala oradalarsa, onlardan en sevdikleri renklerin bir listesini isterim.

Bu tür şeylere dayanamıyorum. Yani, röportajın sonunda, bu sirenler ve uyarı çanları. Patronumun "temel" olduğunu düşündüğü tuhaf anımsatıcıları bildiğim gerçekten önemli olan bir yerde çalışmak istemiyorum. Yıllarca uğraştığım insanların isimlerini öğrenmekten rahatsız olamam, bu yüzden cehennem olarak en iyi uygulamaları tanımlayan sevimli kısaltmalar ile beyin alanını boşa harcamayın.

Koduma bak. Bana işleri nasıl yapacağımı sor. İnekler eve gelene kadar beyaz tahtada bok çizeceğim. Size bir uygulama kodlayacağım. Bana saçma sorular sorma. Trivia her zaman vurulur veya özlenir ve asla temel değildir.


Röportajları taramada pek çok ezoterik bilgi sorusu sormuyorum, ancak birisinin tamamen yetersiz olmadığından emin olmak için yapmam gereken biraz titizlik var. Buna göre, adayın kendi geçmişini göstermesine izin verirken bir miktar bilgiyi doğrulamama izin veren açık uçlu bir soru arıyorum. Birisi özgeçmişinde X teknolojisini bildiğini söylerse "bazı" doğrudan bilgi bekliyorum; sorum aşağı kayıyor, daha fazla konuşma için yararlı bir ağ geçidi olan bir C ++ programcısı hakkında ne beklemeliyim?
JasonTrue

4
@jason: Muhtemelen birkaç aylığına RAII kısaltmasını hatırlayabileceğim. Yıllardır C ++ 'a dokunmama rağmen, bu geçici bilgi beni yetkin kılıyor mu? Özlü bir trivia. Onlara kilitleri nasıl ele aldıklarını sorun ve garip kısaltmayı değil, gerçek BİLGİ'yi anladıklarından emin olun.
Satanicpuppy

1
@jason: Katılıyorum. Sadece temel bilgilerin bu tür triviaları içerdiğine katılmıyorum. Bir aptal bunu bilebilir ve bir uzman bilmeyebilir. Seçim sürecinizi beceriyle alakasız bir şeye dayandırıyorsunuz.
Satanicpuppy

5
RAII'nin ne olduğunu bilmek temel bilgi değildir. Ama otomatik olarak desene ulaşmak.
btilly

2
RAII iyi C ++ 'ın temel bir kavramdır ve terim en az 20 yıldır kullanılmaktadır. Bence bunu trivia olarak reddetmenin biraz haksız olduğunu düşünüyorum. Terimi bilmeyen iyi C ++ geliştiricilerine sahip olsanız da, benim için zanaatlarını araştırmayan birinin kokusunu alıyor.
Kaz Ejderha

1

Amacınız toplam beceriksizliği hızlı bir şekilde elemekse, şöyle bir şey deneyin:

FizzBuzz Testi

Ardından C ++ uzmanlığını değerlendirmek için C ++ kavramlarını ve uygulamalarını daha iyi bir konumda bırakabilirsiniz.


1
Bu soruyu sık kullandım ve aldım ve yukarıda yorumumda bahsetmiştim, ancak 25 dakikalık bir telefon görüşmesinde sormak garip buluyorum.
JasonTrue

0

Bu geçerli bir soru, ancak tarama için değil. Röportajda tartışılmak için yazılı bir soru olarak kullandım. Önceden bildirilen düşünce kalıpları hakkında bir çok fikir edinebilirsiniz. Bir tarama sorusu olarak sadece kötü bir tuzak.

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.