Sadece ben miyim yoksa bu şaşırtıcı bir mülakat sorusu mu? [kapalı]


153

Arka fon

Sadece bir teknik röportajda, A'nın B'ye ve B'nin C'ye eşit olduğu ve A'nın C'ye eşit olduğu bir "nesneyi" geçmek için bir algoritma yazmam istendi.

Bu kadar. Bana verilen tüm bilgi buydu.

Mülakatçıya amacın ne olduğunu sordum ama görünüşe göre bir tane yoktu, sadece “nesneyi” dolaştırdı.

Başka kimseyi bilmiyorum ama bu bana aptalca bir soru gibi görünüyor. Tekrar sordum, "bir değer mi arıyorum?". Hayır! Sadece "çapraz" yap.

Neden hiç bu "nesne" üzerinden sonsuz bir şekilde döngü oluşturmak isteyeyim ki? İşlemcimi eritmek için belki?

Cevap görüşmeci göre bir özyinelemeli fonksiyon yazdım gerektiği şeklindeydi.

Tamam, öyleyse neden benden özyinelemeli bir işlev yazmamı istemiyorsunuz? Ve kim hiç bitmeyen özyinelemeli bir işlev yazacak?

Benim sorum:

Bu, geri kalanlarınız için geçerli bir soru mu ve eğer öyleyse, eksik olabileceğim konusunda ipucu verebilir misiniz? Belki de gerçek dünya problemlerini çözme konusunda çok fazla düşünüyorum. Uzun zamandır başarıyla kodlama yapıyorum ancak bu teknik görüşme süreci hiçbir şey bilmediğimi hissettiriyor.


197
Buradaki tek doğru cevap "Ben soruyu anlamıyorum."
user16764

16
Eh, A, B ve C'nin ne olduğunu gerçekten söylemedilerse (nesneler gibi) ve nesneyi tırnak işaretleri içine koyarlarsa, kendilerine özgü bir terminolojileri varmış gibi görünüyor. Onlar bir nesne çapraz nasıl sorsaydım grafiği nesne A nereye referanslar B nesne başvuran nesne C referanslar o anlaşılır olurdu A nesne, ancak özyinelemeli olmak zorunda neden bilmiyorum. Bu arada, önceden ziyaret edilen nesnelerin bir listesini tutarsanız, sınırsız olmasına gerek yoktur. Ama evet, bu testi kullanan bir şirkette çalışmaktan endişe ederdim - aklı karışık gibi görünüyor.
psr

77
Açıklandığı gibi soru saçma ve cevap da öyle. Ya ne istediklerini yanlış anlıyorsun ya da soruyu yapan kişi bir aptal ve onunla çalışmamaktan daha iyisin.
Mason Wheeler

26
Dev röportajları neden acı verici olmak zorunda? Hepimiz oturup oturup birbirimizin kodlarına bakıp tartışamaz mıyız? Devs bunu yaparak diğer devlerin nerede olduğunu bilecek ve 6 saat sürmeyecektir. Kod testleri en kötüsüdür. Asla tanıştığım 3 cihaz daha yazarken beni izlediğimde optimum çözümler sunmak için emdiğimi itiraf etmiyorum.
Erik,

19
Benimle aynı bölgede yaşayıp yaşamadığınızı görmek için profilinizi kontrol etmek zorunda kaldım, çünkü kısa bir süre çalıştığım bir işte benimle görüşen birinin "Ayrıntı odaklı mısın?" Hangi cevabı verdim, "Daha açık konuşabilir misin?" Ve cevabı, "Bunu açıklayamam, ama çalışmalarını gördüğümde ayrıntı odaklı bir insan biliyorum." Belirsizliği seviyorum.
Jesse C. Dilimleyici

Yanıtlar:


305

Bu şaşırtıcı, geçersiz görüşme sorusu. Görüşmeci, aradığı şeyin ne olduğunu açıkça ifade edemedi ve sorunun açıklamasını netleştirmek için uygun girişimlerinize anlamlı bir şekilde karşılık vermek yerine aklını okumanızı bekledi. Kendini şanslı say, işi almadığın için.

Genel bir "nesne" üzerinde çalışan "travers" fiilinin anlamı, bence belirsizdir. Nesne kelimesi için farklı isimler kullanmaya başlayın ve bir nesnenin değişmesinin sadece nesne olan nesnelerin evreninin küçük bir alt kümesi için anlamlı olduğu hemen anlaşılır.

Bir "ikili ağacın" düğümlerini "hareket ettirmek" mantıklıdır. Bir "palyaço" yu "geçmek" bir şey ifade etmiyor. Bununla birlikte, bir nesne "ikili ağacı" gösterebildiği gibi kolayca bir "palyaço" yu temsil edebilir.


9
Son zamanlarda aptalca sorulardaki isimleri "palyaço" kelimesi ile değiştirmeye başladım efendim!
rupjones

108
"Palyaço geçişi" - "aptal teknik soru" için ne harika bir Meme. Geç şunu!
radarbob

8
Hmm, var palyaço = {şapka: "çiçek", saç: "parlak kırmızı", burun: "kırmızı top", ağız: "beyaz çerçeveli kırmızı ağız", ...};)
geçebilir

37
Tüm teorik CS araştırma alanım yineleyen palyaço geçişini içerir, sizi duyarsız pıhtı!

6
@ JackManey: Herkes palyaçoların özyinelemeli olarak hareket etmesi gerektiğini bilir .
Adam Robinson,

39

Burada üç olasılık görebiliyorum.

  1. Tamamen beceriksizdi. Bu konuda söylenecek fazla bir şey yok.
  2. Kasten belirsizleştiriyordu, ne yapmanız gerektiğini ve gerçekte neyin peşinde olduğunu bulmak için sorular sormakta ne kadar iyi olacağınızı görmek için.
  3. Her ne sebeple olursa olsun, sizi işe almamızı istemediğine karar verdi, bu yüzden verilen gibi cevapsız bir soru sordu. Becerileriniz hakkında sorular sorulduğunda, o kısmı atlayıp şöyle bir şey söyleyecekti: “Ona üç düğümlü bir grafiğin nasıl geçileceğini sordum ve tamamen güdüktü - nasıl bir ipucu bile yoktu. Açıkçası. Açıkça kaba bir şekilde beceriksiz! Onu işe almayı bile düşünmemeliyiz. "

7
“Ona üç düğümlü bir grafiğin nasıl geçileceğini sordum, ...” OP mesajını düzeltirsem, bir grafik veya düğümden söz edilmez. sadece "nesneler". Bu bir "sahte ifade" şeklindedir. Böyle bir şey yazarsa kovuşturulabilir!
Emilio Garavaglia

9
Kişinin cinsiyetinden söz edilmediğinde genellikle kadın zamirlerini kullanıyor musunuz?
Chan-Ho Suh

8
@EmilioGaravaglia: Her şeyden önce, asla yazılı olmayabilir. İkincisi, yazıldığını varsayarsak bile, hiç şüphesiz erişemezsiniz, sadece "sizi bilgilendirmekten pişman oluruz" mektubu. Üçüncüsü, görüşme kaydınız yoksa, görüşmecinin gerçeği söylemediğini nasıl ispat edersiniz? Alt satır: teoride haklı olmalısınız - ama gerçekte, neredeyse hiç şansı yok.
Jerry Coffin

11
@ Chan-HoSuh: OP, yorumlarından birinde cinsiyetten bahseder.
Jerry Coffin

4
@ JerryCoffin Özür dilerim o zaman.
Chan-Ho Suh

32

Bu sadece çılgınca bir tahmin, ancak görüşmecinin imleç referansları (ve hileli bir soru) hakkında konuştuğunu varsayarsak, cevap: geçiş yapacak bir şey yok çünkü referansların tümü aynı nesneye işaret ediyor.

Özyinelemeli bir işlev mi? Bu bir ağaca geçmek için. Asıl soruda, bir ağaçtan bahsettiği anlamına gelebilecek hiçbir şey göremiyorum.


28
Devam et. Çalışacak daha iyi şirketler var.
shufler

7
Hayır. Kayıp bir sebep. Eğer görüşmeci yanlış olduğunu düşünüyorsa, ilk başta soruyu sormazdı. Bir keresinde istediğim herhangi bir dilde örnek yazmam istendi; Benimle görüşme yapan kişi sahte kodun geçerli bir seçim olduğunu varsaydı .
Robert Harvey,

8
@Robert Harvey: Sahte kodun nesi var?
James,

6
@Robert Harvey: Pek çok insanın istediği gibi adil olmak, herhangi bir dilin sözdizimini öğrenip öğrenemediğinizi öğrenmemek için sorunu nasıl çözeceğinizi bulmaktır. Algoritmaların sözde kodda belirtilmesi oldukça yaygındır.
James,

8
Sözde kod ile Python arasındaki fark nedir? :)
David Robinson,

15

Bu görüşmeci için konuşamasam da, bir ön uç geliştirici pozisyon görüşmesinde benzer sorular gördüm, bu yüzden bu örnekte kullanacağım dil JavaScript olacak.

Verilen:

var A = {
    key1: 'value1',
    key2: 2,
    key3: {
        innerkey1: 'value3'
    }
}

Tipik bir yanlış cevap sadece ilk seviyeyi "geçebilir" ve yazdır / karşılaştır:

'value1'
2
[Object object]

Bu yüzden, tüm seviyeleri geçecek özyinelemeli bir örneği kodlarken şöyle bir şeyden bahsedeceğim:

  • Dairesel referans taşıma
  • Dizileri nasıl kullanmalı (yinelemeli olarak da mı hareket etmeli?)
  • İşlevler değerlendirilmeli ve getirileri işlenmeli mi?
  • JavaScript için: prototip uyumlu olmalı ve miras alınan özellikler de karşılaştırılmalı mı?

Dolayısıyla, görüşmecinin gideceğini tahmin ettiğim "çözüm", yinelemeler, işaretçiler / referanslar, beklentiler, vs.


5
Bu, senin söylediğin gibi mantıklı geliyor, WSKid. Ne yazık ki, bu bağlamın hiçbiri teklif edilmedi.
Matt Cashatt

3
Doğru, bu gerçekten payet kavrayarak. Asıl soruna yol açacak bir kullanım durumu veya örnek 3 nesne ya da bir şey sunmalıydılar.
WSkid

1
Aynı şeyi düşünüyordum, sadece python nesne nitelikleri için. Hangi cevabı beklediklerini bilmek çok yararlı olurdu, ancak bu durum bağlamında beklenebilir, yani python dev, c # dev, javascript dev, php dev, vb.
Ken

2
Sorunun bir anlam ifade ettiği bir bağlam bulmak için +1!
Donal Fellows

9

Bazı görüşmeciler, adayın bu iki cevaptan birini verebilecek kadar akıllı ve dürüst olup olmadığını anlamak için sorular sormaya çalışırlar:

Bilmiyorum.

ya da belki:

Belirtildiği gibi cevap veremem.

Saf BS'yi bir özellik olarak kabul edecek bir aday istemiyorlar ve işverenlerinin zamanını boşa harcıyorlar ve uygulamaya çalışmak için para ödüyorlar.


6
Tüm hayatımız boyunca, bu röportaj gibi bir senaryoda, bir soruya cevap verebilmemiz için şart koşuyoruz. "Bilmiyorum" demek (ki bu arada yaptım) kabul edilebilirse, o zaman bana önceden de söylemeliydim. Bir mülakat sorusunu cevaplamak için iyi niyetle yapılan bir girişimin, birinin yetersiz bir spesifikasyon veya bir dizi şartı nasıl ele alması gerektiği ile aynı olması gerekmez. Ve bence asıl mesele bu, bu röportajlar yoldan saptı ve birçok durumda noktayı kaçırıyor.
Matt Cashatt

Böyle iyi bir cevap. Ancak, bunu söyleyebilmek için çok fazla tecrübe gerektiğini unutmayın. Şahsen, görüşmelerle ilgili tecrübenin işin hayati bir parçası olduğunu söyleyebilirim. @MatthewPatrickCashatt görüşmeci “Bilmiyorum” u kabul etmeyecekse IMO'yu daha fazla tartışmayacaktır.
arin

2
Hile soruları ya trolling ya da beceriksizliği engelliyor. Her iki durumda da bir görüşmeci hileli sorular sorarsa orada çalışmak istemezsiniz.
Ben Brocka

7

Bana öyle geliyor ki, bunun bir dairesel bağlantı listesiyle ilgili (açıkça ifade edilmiş) bir sorusu olduğu görülüyor. Bunun ne anlama geldiğini sorduğumu sordum (çünkü cevap, hepsinin aynı nesneye referans olduğunu söylemek için yukarıdakilerden kesinlikle farklı olurdu).

Eğer bu bir bağlantılı liste sorusuysa, o zaman (bu durumda) tek bir bağlantılı listeye sahipsiniz, burada son düğüm diğer uca işaret eder (eğer söylediğiniz gibi ifade edilmiş olsa da - o zaman A iki B ve C - ancak görüşmeci kısmındaki açıklama buna yardımcı olacaktır).

A -> B -> C -> A

Ayrıca (ve bu her zaman olur), görüşmeci bu soruyu okumuş, bunun 'iyi' bir soru olduğunu düşünmüş, ancak aslında cevabı kendileri (ya da ne anlama geldiğini) bilmiyordu.


1
Teşekkürler Maich - Son noktanızın en muhtemel olduğunu düşünüyorum.
Matt Cashatt

5

Buradaki zorluğun bir kısmı, bir ağaç yapısının olduğunu ve bir geçiş yapmanın içerdiği bileşenlerin neler olduğunu ortaya çıkarmak için özel sorular sorarak daha fazla ayrıntı elde etmektir. Biri ağaçların yanından geçen başka pek çok veri yapısının olmadığı ama aklıma bir sıçrama olduğu varsayımı olabilir.


1
Teşekkürler JB King. Soru sormanız iyi bir hatırlatıcıdır. Bu özel durumda yaptım. Aslında bir ağaç olup olmadığını bile sordum, cevabım hayırdı! Ancak amacınız, sorular sorarak mümkün olduğunca fazla bilgiyi dağıtmak benim sorumluluğumdur.
Matt Cashatt

3

Garip sorunlarla nasıl başa çıkacağınızı anlamaya çalışmak isteyebilirler. Ancak bu durumda, bir "teknik röportaj" ile ilgisi yoktur. Daha çok psikolojik bir röportaj gibi gözüküyor.


5
Bir yazılım projesi için teknik özelliklerinden bir örneğini görmek isterim.
Chuck D

Eğer röportaj bir sistem analisti ya da benzer bir pozisyon içinse, bu tamamen uygundur: işiniz müşterilerin sorularını cevaplamak yerine sorularını netleştirmelerine yardımcı olmaktır.
reinierpost

1
@ reinierpost - Öyle değildi.
Matt Cashatt

3

A eşittir B ve B eşittir C ve A eşittir C "A" (tırnak işaretleri) geçiş için bir algoritma yazın

Çoğu insan, A, B ve C'nin işaretçiler olduğunu varsayıyor gibi görünüyor, ancak onlar da kolayca palyaço olabiliyorlardı. (Veya palyaço sınıfının üyeleri.) Veya palyaço adları olabilir. (Veya sınıf isimleri. Veya palyaço sınıfının alt sınıfları.)

Tabloları çevirirdim ve bunun tipik olarak geliştirme şartnamelerini nasıl hazırladıklarını sordum ve daha sonra onlara geliştirme şartnamesi aşamasında onlara nasıl yardımcı olabileceğimi söyleyecektim. Beklentilerin zayıf iletişimi, zayıf iş ürününe yol açar. Ya alacaklardı ya da almazlarsa, Almazlarsa yürüyüp giderdim.


2

Soru çok açık bir şekilde ifade edilmemişken ve görüşmeci herhangi bir yönlendirme konusunda açıkça yararsız olsa da, neyin sorulduğu konusunda biraz farklı bir yaklaşımım var.

Bence görüşmeci, bir çeşit yansıma kullanarak nesne yapısını geçen bir çözüm aradığını düşünüyorum. Üç nesnenin eşit olduğu bilgisi, bir nesne kimliği karşılaştırması (A == B anlamına gelir), nesnelerin bellekteki gerçekten aynı nesne olduğu anlamına gelir) veya nesne eşitliği karşılaştırması (A == B, nesnelerin değerleri olduğu anlamına gelir) aynısı).

Mülakatçının cevabın “özyinelemeli” bir işlev olduğunu söylemesi, muhtemelen derin ve sığ kopyalama ve karşılaştırma tartışmasının beklendiğini göstermiştir.


2

Bu partiye çok geç geliyor, ancak görüşmeci yanlış bu soruyu sordu:

Bir diziyi geçmek için bir algoritma yazın ve A'nın B'ye eşit olduğunu ve B'nin C'ye eşit olduğunu ve A'nın C'ye eşit olduğunu belirlemek için bir algoritma yazın .

O zaman doğru cevap özyinelemeli bir algoritma olurdu.


1

Sadece bir teknik röportajda, A'nın B'ye ve B'nin C'ye eşit olduğu ve A'nın C'ye eşit olduğu bir "nesneyi" geçmek için bir algoritma yazmam istendi.

Söz objectkonusu kısımlardan A,B and Coluşur ve a'yı oluşturur triangle. Kişi sadece nesnenin (bir koleksiyonun) tüm eşit parçaları içerip içermediğini soruyor.

Görüşmeci, bölümlerle sunulup sunulmadığını, A, B and Csonsuz bir döngüye takılmadan hepsinin eşit olup olmadığını söyleyebilir misiniz? Bu soru aptalca basitçe anlamaktır ve hala bunu sorarak cevaplamayı başardılar.

Hepsi ne zaman eşittir A == B && B == C && A == C, ama bu sadece basitleştirilebilir A == B && A == C.

Sorunun basitliği karışıklığa neden oldu ve gerçekten de kötü bir şekilde anlatılıyor.

Doğru ifadeler olmalıydı.

Bir koleksiyonun parçalarının hepsinin birbirine eşit olup olmadığını görmek için bir algoritma yazın. Sonsuz bir döngüde sıkışıp kalmamaya özen gösterilmelidir. Örneğin; A parçalarının B'ye eşit olması ve B'nin C'ye eşit olması ve A'nın C'ye eşit olması sorunlara neden olabilir.


Görüşmeciye göre cevap, özyinelemeli bir işlev yazmam gerektiğiydi.

Evet, are all my parts equalözyinelemeli işlevleri kullanarak soruyu cevaplayabilirsiniz . Hayır, bu verimli bir çözüm değil.

EDIT : Bazı düşüncelerden sonra. Bir özyinelemeli işlev kullanarak tüm eşit parçaları içeren bir koleksiyonu kontrol etmek mümkün değildir.

En verimli çözüm aşağıdaki gibidir.

function are_all_equal(parts)
{
   for(int i=1; i < parts.length; i++)
       if parts[i] is not same as parts[0]:
           return false;
   return true;
}

print are_all_equal(parts) ? "yes" : "no";

Bu problem programlamada ortaya çıkmakta ve birinden bir koleksiyonu test etmek için bir algoritma yazmasını istemek tamamen normaldir. Programlama diline bağlı olarak, bu sorun genellikle sadece bir kod satırı ile çözülebilir.

Oldukları gibi ifade etmek ve yanlış cevap beklemek normal değildir. Bu soru bir yıl önce sorulduğundan beri. Umarım başka bir yerde çalışmaya başlamışsındır. Orijinal görevden onun için nasıl bir sonuç çıktığını duymak isterim.


2
İşler harika çıktı - o şirketten olabildiğince hızlı koştum ve o zamandan beri mutluydum.
Matt Cashatt

0

Bu bir Java mülakat sorusu muydu, öyleyse, "hashcode" ve "eşittir" geçersiz kılma becerilerinizi test etmek isteyebilirdi.

Bu iki yöntemi geçersiz kılmanız ve A ile A'yı karşılaştırdığınızda yinelemeyi durdurmak için geçersiz kılınan eşittir yöntemini kullanmanız gerekir.

Geçersiz kılmadan, "A" B "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A" karşılaştırması yapılarak yanlış sonuçlanacak.

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.