क्या मुझे असफल साक्षात्कार कोडिंग अभ्यास का उत्तर देना चाहिए? [बन्द है]


14

हमारे पास एक वरिष्ठ स्तर के साक्षात्कार के उम्मीदवार को FizzBuzz प्रश्न 1 2 की बारीकियों को विफल कर दिया गया था ।
मेरा मतलब है, वास्तव में, पूरी तरह से, पूरी तरह से, प्रश्न को विफल कर दिया - पास भी नहीं।
मैं भी उसे प्रशिक्षित एक पाश का उपयोग कर के बारे में और उस सोच के माध्यम से 3और 5थे वास्तव में विशेष मामलों के रूप में विचार के लायक।

उसने उसे उड़ा दिया।

सिर्फ क्यूए उद्देश्यों के लिए, मैंने तीन टीममेट्स को एक ही सटीक प्रश्न दिया; उन्हें 5 मिनट दिए; और फिर अपना छद्म कोड लेने के लिए वापस आए। उन सभी ने इसे भुनाया और पहले प्रश्न नहीं देखा था। दो ने पूछा कि चाल क्या थी ...

एक अलग तर्क अभ्यास पर, उम्मीदवार ने उस भाषा के भीतर उपलब्ध कुछ विशेषताओं के बारे में कुछ समझ दिखाई जो उसने उपयोग करने के लिए चुनी थी (C #)। इसलिए ऐसा नहीं है कि उसने कभी भी एक लाइन ऑफ कोड नहीं लिखा है। लेकिन उनका तर्क अभी भी अटका हुआ है।

मेरा सवाल यह है कि मुझे तर्क के सवालों का जवाब देना चाहिए था या नहीं।

वह जानता था कि उसने उन्हें उड़ा दिया था, और बाद में साक्षात्कार में स्वीकार किया।
दूसरी ओर, उन्होंने कभी जवाब नहीं मांगा या मुझे जो देखने की उम्मीद थी।

मुझे पता है कि असफलता के लिए उम्मीदवारों को सेट करने के लिए कोडिंग अभ्यास का उपयोग किया जा सकता है (फिर से, ऊपर से दूसरा लिंक देखें)। और मैंने वास्तव में प्रश्न के मूल का उत्तर देने में उसकी मदद करने की कोशिश की। लेकिन यह एक वरिष्ठ स्तर का उम्मीदवार था और फ़िज़-बज़, स्पष्ट रूप से, हास्यास्पद रूप से साक्षात्कारकर्ताओं के लिए लेखांकन के बाद भी आसान है।

मुझे ऐसा लगा कि मुझे उसे समस्या को सुलझाने का एक तरीका दिखाना चाहिए ताकि वह कम से कम अनुभव से सीख सके। लेकिन फिर, उसने पूछा नहीं।

उस स्थिति को संभालने का सही तरीका क्या है?


1 ठीक है, यह वास्तविक FizzBuzz प्रश्न का लिंक नहीं है, लेकिन यह FizzBuzz के आसपास एक अच्छा P.SE चर्चा है और इसके विभिन्न पहलुओं के लिए लिंक है।

2 स्पष्ट करने में मदद करने के लिए, यह मैंने पूछा फिज़ा-बज़ की बारीकियों है और यह प्रोजेक्ट यूलर की पहली समस्या है । स्थानापन्न मुद्रण फ़िज़ | संख्याओं के योग के लिए बज़ और आपके पास एक ही मौलिक प्रश्न है।
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Write a function that finds the sum of all the multiples of 3 or 5 below 1000.

3 इस सवाल ने मेरी अपेक्षा से अधिक ध्यान आकर्षित किया, और मैं सभी उत्तरों की सराहना करता हूं। बाद के कुछ उत्तर वास्तव में मेरे प्रश्न के मूल में आ गए हैं, इसलिए मैं "उत्तर" को निर्दिष्ट करने से पहले समुदाय को समीक्षा करने और मतदान करने की अनुमति दूंगा।

4 मैंने उस समय सामुदायिक वोटों के आधार पर "" जवाब चुना। और मुझे लगता है कि नए देवताओं के साथ साक्षात्कार के लिए यानिस का जवाब उपयुक्त है। मुझे लगता है कि सामूहिक प्रतिक्रिया जवाब देने की कमी पर ध्यान केंद्रित करने के साथ-साथ हाजिर है।


34
कटौती उन्हें ढीला और अपने दिन के साथ मिलता है। जहां तक ​​मेरा सवाल है, "सीनियर लेवल" पर FizzBuzz को विफल करना जानबूझकर और दुर्भावनापूर्ण रूप से मेरा समय बर्बाद कर रहा है।
स्टीवन एवर्स

6
मैंने हाल ही में अपने क्षेत्र में कई पदों के लिए साक्षात्कार किया, और जिन लोगों को कोड की आवश्यकता थी, उन्होंने मुझे संकेत दिया कि उन्हें वरिष्ठ स्तर के उम्मीदवारों को खोजने में परेशानी हो रही थी, जो अपने "FizzBuzz" -ish परीक्षणों को पास कर सकते थे। हर मामले में मेरी प्रतिक्रिया थी "आप गंभीर नहीं हो सकते"। स्पष्ट रूप से बहुत सारे भयानक प्रोग्रामर हैं जो वरिष्ठ स्तर के रूप में सामने आते हैं जो कि करीब भी नहीं हैं।
जोएल एथरटन

6
@JoelEtherton - इधर उधर की बात। मैंने फोन स्क्रीन के लिए धक्का दिया है हर जगह मैं जाता हूं। यदि आप C # का उपयोग कर एक वरिष्ठ बनने के लिए आवेदन कर रहे हैं और हमें एक मूल्य प्रकार और एक संदर्भ प्रकार के बीच का अंतर नहीं बता सकते हैं, तो आपको साक्षात्कार नहीं मिल रहा है।
तेलस्टिन

3
@ 0A0D, एक टीम का नेतृत्व करना एक अच्छा डेवलपर होने से एक अलग तरह का कौशल है। मैंने टीम लीड देखी है जो बुरे डेवलपर भी थे।
१६:१२ पर क्यूरेलसा

4
@JoelEtherton, आश्चर्यचकित नहीं है। मैंने सोचा था कि "200 में से 199 आवेदक कोड नहीं कर सकते हैं" जब तक मैं वास्तव में स्क्रीन और साक्षात्कार के उम्मीदवारों की मदद करना शुरू नहीं कर रहा था तब तक हाइपरबेल था। वर्षों के (कथित) अनुभव बस मायने नहीं रखते। नौकरी के शीर्षक मायने नहीं रखते। अधिकांश आवेदक वास्तव में अविश्वसनीय रूप से कनिष्ठ हैं, चाहे वे इसे जानते हों या नहीं।
एंथनी पेग्राम

जवाबों:


15

मेरे अधिकांश साक्षात्कार एक इंटर्नशिप स्थिति की तलाश करने वाले छात्रों के साथ थे, और अधिक बार वे सरल (?) अभ्यासों को खराब नहीं करते थे। मैं उनकी त्रुटियों को संप्रेषित करने के लिए एक आसान और मैत्रीपूर्ण तरीका चाहता था, और जो मैं लेकर आया था, वह काफी सरल था: मैंने स्वयं अभ्यासों को हल किया, और उनके साथ समाप्त होने के बाद उन्हें अपना समाधान दिखाया।

मेरे पास कुछ बहुत ही रोचक और खुलासा करने वाले उम्मीदवारों के साथ विचार-विमर्श किया गया था जो एक ही समस्या को हल करने के लिए हमारे विभिन्न दृष्टिकोणों की तुलना करके शुरू हुआ था। थोड़ी देर के बाद मैंने कुछ त्रुटियों की भी आशंका जताई, बस यह जाँच कर कि कौन सा उम्मीदवार भाग ले रहा था (कुछ "प्रोफेसर" हैं ... मॉर्टन)। और, ठीक है, कुछ उदाहरणों में कि कोई उम्मीदवार किसी भी समाधान के साथ नहीं आ सकता है, मैंने पहले ही उन्हें अगली बार के लिए एक दिया था।


समझ में आता है; मैं हाल ही में एक नई नौकरी की तलाश कर रहा था, और मैंने पाया कि अधिकांश साक्षात्कारकर्ताओं ने यही काम तब किया जब मैंने उनके सवालों के गलत उत्तर दिए (या "बिंदुओं से थोड़ा हटकर")। यह वास्तव में अच्छा अभ्यास है। ज्यादातर क्योंकि यह उम्मीदवार को खोलता है (मुझे पसंद है।) और साक्षात्कार को दोनों पक्षों से अधिक आकर्षक बनाता है। लेकिन निश्चित रूप से, हम C ++ में टेम्पलेट, RAII और मल्टीथ्रेडिंग पर चर्चा कर रहे थे। सवाल यह है कि आप उस व्यक्ति से क्या कहते हैं जो खिचड़ी को फिज़बज़्ज़ हल करता है?
चनी

11
@RitwikG ईमानदारी से, यदि उम्मीदवार एक प्रोग्रामिंग स्थिति के लिए साक्षात्कार कर रहा है और फ़िज़बज़्ज़ के साथ सामना नहीं कर सकता है, तो मैं शायद ... हंसी (अरे, मैंने कभी नहीं कहा कि मैं एक अच्छा साक्षात्कारकर्ता था;)। उस ने कहा, कुछ महीने पहले मैंने अपने कोड में एक अत्यंत तुच्छ ओबीओई बनने से लड़ने वाले कुछ दिनों के बारे में खो दिया था । हम सभी के पास अपने क्षण हैं, और मैं वास्तव में एक अभ्यास को गड़बड़ाने वाले उम्मीदवार पर ठीक नहीं करूंगा, मैं शायद अगले एक पर जल्दी से आगे बढ़ूंगा। अगर वे अगले एक के रूप में अच्छी तरह से विफल रहे, तो मैं शायद उनके समय के लिए उन्हें धन्यवाद दूंगा और आगे बढ़ूंगा।
यानिस

1
@ यानिसरिज़ोस यह शायद एक अच्छा तरीका है; वहाँ हमेशा एक मौका है कि व्यक्ति साक्षात्कार स्थितियों में अच्छा नहीं करता है, या किसी भी तरह से अपने काम में modulo ऑपरेशन से बचा है (हालांकि यह कम से कम कहने के लिए अच्छी तरह से नहीं है)। मेरे अनुभव में, किसी भी साधारण लूप (अपनी पसंद की किसी भी भाषा में), यहां तक ​​कि वरिष्ठ पदों के लिए भी पूछे जाने पर आवेदकों की एक बड़ी संख्या को रोक दिया जाता है। अब है कि , मैं सही ठहराने के लिए पूरी तरह से असंभव लगता है।
डैनियल बी

इस प्रक्रिया में कुछ अच्छी जानकारी भी है। उम्मीदवार काफी घबरा गया था, और मैं उसके लिए कुछ भत्ता देने के लिए तैयार था। जब उन्होंने आखिरकार एक समाधान में अपने प्रयास के माध्यम से बात करना शुरू कर दिया, तो यह सिर्फ समझा गया और सीमा की स्थिति बन गई जिसे उन्होंने याद किया।

15

जवाब देते हुए

मैं यह कहने जा रहा था कि यदि उम्मीदवार को पूछने के लिए पर्याप्त रुचि नहीं है, तो मैं अपनी सांस नहीं बर्बाद करूंगा, लेकिन @Yannis_Rizos का उत्तर बहुत बेहतर है।

साक्षात्कार बहुत तेजी से पुस्तक हैं। मुझे पता है कि मैं अक्सर साक्षात्कार के बाद दिनों के लिए चीजों को देखता हूं।

जो लोग FizzBuzz क्लासिक कोड नहीं कर सकते

मुझे लगता है कि एक बड़े स्टिकिंग पॉइंट को% ऑपरेटर के बारे में पता चल रहा है। आप उम्मीद करेंगे कि कोई तुलना करने के लिए सोच सकता है, (myInt / 3) == (myDouble / 3.0)लेकिन हो सकता है कि एक साक्षात्कार के तनाव के साथ ... फिर भी, FizzBuzz क्लासिक एक क्रूर-बल दृष्टिकोण को बल देता है, इसे हल करने के लिए सबसे आसान एल्गोरिदम समस्याओं की श्रेणी में डालता है। एक संकेत के रूप में, क्या आपने आधे क्रेडिट के लिए लोगों को सिर्फ "फ़िज़" कोड देने की कोशिश की है और हो सकता है कि एन्हांसमेंट के रूप में बाद में "बज़" जोड़ दें?

मुझे लगता है कि आपके प्रश्न का अंतिम उत्तर यह है कि अच्छे उम्मीदवारों को ढूंढना वास्तव में कठिन है।

सामान्य में साक्षात्कार प्रश्न

मैंने अक्सर अंतिम प्रोग्रामिंग प्रोजेक्ट का वर्णन करने के लिए उम्मीदवारों से पूछना आसान और अधिक उत्पादक पाया है जिसके बारे में वे उत्साहित थे। मुझे इस प्रश्न के साथ 100% सफलता मिली है, जिसका अर्थ है कि जो लोग एक प्रोग्रामिंग प्रोजेक्ट के बारे में एनिमेटेड रूप से बोलते थे और इसके बारे में तकनीकी सवालों के जवाब दे सकते थे वे महान हायर थे और जो नहीं कर सकते थे, वे नहीं थे। इससे उम्मीदवार को आसानी से डालने, और ओपन एंडेड चर्चा को प्रोत्साहित करने के अच्छे दुष्प्रभाव हैं। इस सवाल के साथ, उम्मीदवार, वास्तव में, आपको बताएंगे कि वे किसके लिए सबसे उपयुक्त हैं।

हो सकता है कि एक थिंक टैंक एल्गोरिदम पर भी सवाल ज़रूरी हों, लेकिन मैंने उन्हें "पसंदीदा प्रोजेक्ट" सवाल के पक्ष में छोड़ दिया है।

फ़िज़बज़ के सुम (पुत्र)

आपका साक्षात्कार प्रश्न FizzBuzz के बराबर नहीं है:

यदि हम 10 से नीचे की सभी प्राकृतिक संख्याओं को सूचीबद्ध करते हैं जो 3 या 5 के गुणक हैं, तो हमें 3, 5, 6 और 9 प्राप्त होते हैं। इन गुणकों का योग 23 है। 3 या 5 के सभी गुणकों के योग को लिखने वाला फ़ंक्शन लिखें 1000 से नीचे।

जहां FizzBuzz क्लासिक आपको n पुनरावृत्तियों (प्रत्येक संख्या या फ़िज़ / बज़ को प्रिंट करने के लिए) के माध्यम से जाने के लिए मजबूर करता है , आपकी समस्या n / 5 + n / 3 + n / 15 पुनरावृत्तियों, या यहां तक ​​कि कोई पुनरावृत्तियों में नहीं हो सकती है - एक प्रत्यक्ष निश्चित- बिंदु गणना संभव है। निम्नलिखित कार्यक्रम इन तीन तरीकों की तुलना करता है:

public static void main(String[] args) {
  long n = Long.valueOf(args[0]).longValue();
  long sum = 0;
  long ms = System.currentTimeMillis();
  // Brute force method  Performance: cn
  for (long i = 1; i <= n; i++) {
    if ((i % 3) == 0) { sum += i;
    } else if ((i % 5) == 0) { sum += i; }
  }
  System.out.print("Brute force sum:    " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Second solution: iterate through only numbers we are
  // interested in.  Performance: c * (n/3 + n/5 + n/15)
  // We counted multiples of 15 twice, so subtract one of them
  sum = countSum(n, 3) + countSum(n, 5) - countSum(n, 15);
  System.out.print("Only multiples sum: " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Third solution: Use high school algebra.  Performance: c
  sum = sumSeries(n, 3) + sumSeries(n, 5) - sumSeries(n, 15);
  System.out.print("Sum of series:      " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
}

// Iteravely sum all multiples of skip
private static long countSum(long n, long skip) {
  long skipTotal = skip;
  long grandTotal = 0;
  while (skipTotal <= n) {
    grandTotal += skipTotal; skipTotal += skip;
  }
  return grandTotal;
}

// Thanks to @Caleb for pointing this out!  High school algebra
// tells us that the sum of a series is: (n * (a1 + an)) / 2
// where a1 is the first term and an is the nth term.  E.g. The
// sum of a series of 3 is: (n/3 * (3 + n - (n % 3))) / 2
// Since we are thinking about performance here, we'll shift
// right one instead of dividing by 2 for style points.  ;-D
private static long sumSeries(long n, long skip) {
  return (n/skip * (skip + n - (n % skip))) >> 1;
}

आउटपुट (FizzBuzz का योग <1000):

$JDK_HOME/bin/java FizzBuzzNot 999
Brute force sum:    233168 time: 0
Only multiples sum: 233168 time: 0
Sum of series:      233168 time: 0

प्रदर्शन तुलना के लिए एक बड़ा n के साथ:

$JDK_HOME/bin/java FizzBuzzNot 1000000000
Brute force sum:    233333334166666668 time: 4744
Only multiples sum: 233333334166666668 time: 818
Sum of series:      233333334166666668 time: 0

नोट करने वालों को इसे ऑफ-टॉपिक के रूप में डाउन-वोट किया

इस प्रश्न का एक समाधान प्रस्तुत करने का उद्देश्य यह दिखाना है कि जबकि FizzBuzz के Sum के लिए brute force का समाधान FizzBuzz Classic के समान है, Sum समस्या के बेहतर समाधान उपलब्ध हैं, जिससे यह एक मौलिक रूप से अलग समस्या है। यदि आप किसी श्रृंखला के योग के लिए उचित सूत्र याद नहीं करते हैं, या यह महसूस नहीं करते हैं कि यह 3 या 5 से आगे बढ़ते समय लागू होता है, तो FizzBuzz का योग बहुत मुश्किल है।

यदि आप श्रृंखला को आधा में विभाजित करके एक श्रृंखला के योग के सूत्र को फिर से प्राप्त करते हैं, तो एक आधा को उलट कर उन्हें जोड़ते हैं, तो आपको मिलता है (n + 1) (n / 2) जो आपको एक बहुत ही गन्दा रास्ता दिखा सकता है। जहां तक ​​पूर्णांक विभाजन और काटे गए अवशेषों का संबंध है। इस सूत्र का n (a1 + a)) / 2 संस्करण n के सभी मूल्यों के लिए एक सरल उत्तर के लिए बिल्कुल महत्वपूर्ण है।


3
इसकी गणना सीधे (रूबी) की जा सकती है: t = { |i| (i * (i+1)) / 2 }; fizzbuzz = { |n| 3 * t((n-1)/3) + 5 * t((n-1)/5) }
केविन क्लाइन


1
@ GlenH7 हाँ, मैंने अपनी टिप्पणी हटा दी क्योंकि यह buzzkill थी। ग्लेन अपने विश्लेषण के लिए सहारा का हकदार है, भले ही यह सवाल का जवाब सभी पर नहीं देता है: डी (इसके अलावा, मैंने पूरी तरह से कोडित किया और अपने स्वयं के समाधान के क्षणों पहले कोशिश की)
एंड्रेस एफ।

2
आप एक श्रृंखला की राशि की तलाश में हैं, यह देखते हुए कि यह श्रृंखला modulo = 0 की है, सूत्र n / 2 * (m + nm) का उपयोग किया जा सकता है। जहाँ श्रृंखला में m = मोडुलो संख्या और n = तत्वों की संख्या (उर्फ़ तल (x / m) है। उसके बाद यह आसान है, S (3) + S (5) - S (3 * 5) [ताकि कुछ संख्याएँ दो बार मत
गिनो

3
एक कारण आपको समस्या हो सकती है, यह है कि आप कुछ संख्याओं को दो बार गिन रहे हैं (15 से विभाजित)। एक उदाहरण कार्यक्रम के लिए देखें ideone.com/clone/oNWrhJ
jmoreno

8

मुझे ऐसा लगा कि मुझे उसे समस्या को सुलझाने का एक तरीका दिखाना चाहिए ताकि वह कम से कम अनुभव से सीख सके। लेकिन फिर, उसने पूछा नहीं। उस स्थिति को संभालने का सही तरीका क्या है?

मुझे परवाह नहीं है कि साक्षात्कार किस स्तर के लिए है, और न ही वास्तव में अगर इसका "फ़िज़बज़" प्रश्न या उन्नत प्रश्न। यदि आप एक उम्मीदवार से एक प्रश्न को हल करने के लिए कहते हैं, और वे नहीं कर सकते, लेकिन आपको सही उत्तर के लिए पूछने में भी परेशान नहीं करते हैं तो वे आपके समय के लायक नहीं हैं। दुनिया में आप कैसे बौद्धिक रूप से आलसी हो सकते हैं?!?

और यहां तक ​​कि अगर आप पूरी तरह से एक प्रोग्रामर के रूप में बदबू आ रही है और बस एक नौकरी में अपना रास्ता भटकाने की कोशिश कर रहे हैं, तो आप कम से कम इतना व्यावहारिक क्यों नहीं होंगे कि अब आपको सही जवाब मिल सके, ताकि आप इसे अगले साक्षात्कार के लिए जान सकें?

तो नहीं, तुम जवाब नहीं "देने" चाहिए, लेकिन आप चाहिए उम्मीदवार की अपेक्षा सही जवाब सुनने के बाद वे असफल हो पर जोर देते हैं। यदि वे नहीं करते हैं, तो यह मेरी पुस्तक में एक विशाल लाल झंडा है।

अगर किसी ने जूनियर स्तर के देव इंटरव्यू में FizzBuzz उड़ाया क्योंकि वे मापांक ऑपरेटर को याद नहीं कर सकते थे और बस खुद को इसके बिना आगे बढ़ने के लिए नहीं ला सकते थे, लेकिन उन्होंने सही उत्तर के बारे में समझाने के बाद फिर से इसे करने के लिए सभी भावुक हो गए, या कम से कम आपके साथ सही कोड के माध्यम से बात कर रहा है, तो यह लगभग सही रूप में जवाब देने के रूप में अच्छा है।


1
क्यों? आप बाद में केवल Google को जवाब दे सकते हैं। FizzBuzz बहुत लोकप्रिय है। अगर किसी को मापांक विभाजन नहीं पता है तो मैं ईमानदारी से चिंतित रहूंगा।
ब्रायन

मैंने उसे मापांक ऑपरेटर के बजाय कुछ के साथ आने का प्रयास करने के लिए श्रेय दिया होगा, लेकिन वह उस बिंदु तक नहीं पहुंचा। मुझे लगता है कि आपके पास उत्तर देने के लिए उसकी विफलता पर ध्यान देने के साथ एक अच्छा बिंदु है। आपका अवलोकन साक्षात्कार के दौरान आई कुछ अन्य चुनौतियों के अनुरूप है।

मुझे FizzBuzz के बारे में वास्तव में राय है ... लेकिन यह सही जवाब है। यदि उम्मीदवार उत्तर नहीं मांगता है, तो उसे न दें।
जेम्स पी। राइट

@ JamesP.Wright - मैं कुछ हद तक सहमत हूं, और साक्षात्कार में जा रहा हूं, मैं उस लीड कोडिंग प्रश्न के रूप में उपयोग करने के लिए थोड़ा शर्मिंदा था। यह हास्यास्पद रूप से आसान माना जाता था , और मैंने इसे प्रश्न को अधिक न पढ़ने की चेतावनी के साथ पूर्वनिर्मित किया था। मेरे पास एक अनुवर्ती था जो आसान होना चाहिए था, और फिर मेरे पास एक तीसरा था जो उसे उच्च स्तर के विकास / डिजाइन कौशल का प्रदर्शन करने की अनुमति देगा। हमें तीसरा प्रश्न कभी नहीं मिला ....

1
@ 0A0D, FizzBuzz में शामिल "गणित" बस जाँच कर रहा है कि क्या दिया गया चर 3 और / या 5 से विभाज्य है। गणित का वह स्तर आपके द्वारा लिखे गए लगभग हर ऐप में मौजूद है। यहां तक ​​कि मेरी तरह "बिजनेस देव" जो गणित के इस स्तर का उपयोग करने के लिए सिर्फ एक ही तरह की परियोजनाओं को लागू करते हैं। GlenH7, मुझे यकीन भी नहीं है कि अगर FizzBuzz में पुनरावृत्ति का उपयोग मुझे प्रभावित करेगा या मुझे डरा देगा .... निश्चित रूप से खतरनाक ओवरकिल जैसा लगता है।
ग्राहम

4

मैंने प्री-स्क्रीन के दौरान साक्षात्कारकर्ता के साथ फोन पर रहते हुए फ़िज़बज़ टाइप किया। यह कुछ ऐसा है, भले ही हर किसी के बारे में नहीं सुना है, आप पाठ्यक्रम के काम के एक सेमेस्टर के बाद, लेकिन निश्चित रूप से "वरिष्ठ" का दर्जा प्राप्त करने के बाद एक साथ cobble करने में सक्षम होना चाहिए।

ऐसा करने में सक्षम नहीं होने से वास्तव में कोई वसूली नहीं है। यह उन आवश्यक उपद्रवों में से एक है जिन्हें आपको बस मामले में बाहर निकलने की आवश्यकता है।

मैं कहूंगा कि यह एक पूर्व-स्क्रीन के रूप में वितरित करने के लिए समझ में आता है ताकि आप हर किसी के समय को एक साक्षात्कार के लिए साइट पर लाने के साथ बर्बाद नहीं कर रहे हैं।


हमारी प्री-स्क्रीन के लिए, हमने कुछ सैंपल कोड मांगे थे, जो प्रदान किए गए थे। उस कोड में उन्नत C # भाषा सुविधाओं के लिए कुछ मध्यवर्ती था, इसलिए मैंने उनसे केवल एक या दो मिनट में तर्क प्रश्नों के माध्यम से उड़ाने की उम्मीद की थी।

7
जब प्रदान किया गया नमूना कोड एक साक्षात्कार में प्रदर्शित ज्ञान से मेल नहीं खाता है, तो मेरा मस्तिष्क तुरंत नमूना कोड के बारे में संदिग्ध हो जाता है।
ग्राहम

@ ग्राहम: 6 महीने के लिए उन्हें एक अस्थायी के रूप में किराए पर लें ..
ब्रायन

@ 0A0D दुख की बात है कि मैंने कभी ऐसी जगह पर काम नहीं किया है जो उस तरह के लचीलेपन की अनुमति देता है। यदि विज्ञापित स्थिति एक पूर्णकालिक टमटम थी, तो हम सभी व्यक्ति की पेशकश कर सकते हैं।
ग्राहम

3
उस परिदृश्य में कोई बाड़ नहीं है। यदि उसका "सैंपल कोड" एक मजबूत ज्ञान प्रदर्शित करता है और वह फ़िज़बज़्ज़ को कोड नहीं कर सकता है, तो नमूने को बाहर निकालें और उसे निर्दिष्ट करें। यदि वह इसे वापस नहीं कर सकता है, तो यह मेरी पसंदीदा पंक्ति का समय है "हमारे पास अभी भी कुछ उम्मीदवारों की समीक्षा करने के लिए है, हम आपको वापस कर देंगे।"
माइकल ब्राउन

4

मैंने उन्हें एक लूप का उपयोग करने के बारे में सोचने के माध्यम से भी कोचिंग दी और वह 3 और 5 वास्तव में विशेष मामलों के रूप में विचार करने योग्य थे।

यह पता है कि दिलचस्प होगा आप लगता है कि आपके FizzBuzz-ish सवाल का 'सही' जवाब है। जहां से मैं बैठता हूं, आपके प्रश्न के पत्र में लिखा गया एक अच्छा (सी में) है:

int f(void) {
    // sum the multiples of 3 and of 5 and subtract multiples of 15 so we don't count them twice
    return ((1000/3)/2)*(999+3) + ((1000/5)/2)*(995+5) - ((1000/15)/2)*(990+15);
}

एक बेहतर हो सकता है:

बिल्ली आप ऐसा करने के लिए एक कार्यक्रम क्यों लिखेंगे जब आप इसे सीधे गणना कर सकते हैं?

मुद्दा यह है कि एक बिल्ली को त्वचा देने का एक से अधिक तरीका है, और यह तथ्य कि प्रश्न में उम्मीदवार तुरंत forलूप लिखना शुरू modनहीं करता है और ऑपरेटरों का मतलब यह नहीं है कि वह बेवकूफ है। यदि आप जानना चाहते हैं कि उम्मीदवार क्या जानता है, तो समस्या पर चर्चा करें - पता करें कि वह क्या सोच रहा है। यदि वह फंस गया है या भ्रमित है, तो यह पता लगाएं कि कहां और क्यों। वह आपको एक ऐसे दृष्टिकोण की ओर ले जा सकता है जिसे आपने कभी नहीं माना था।

मेरा सवाल यह है कि मुझे तर्क के सवालों का जवाब देना चाहिए था या नहीं।

साक्षात्कारकर्ता के रूप में, उम्मीदवार को सबक सिखाने के लिए यह आपकी जगह नहीं है । यदि वे वास्तव में कोड लिखना नहीं जानते हैं, तो उन्हें पता नहीं है कि उन्हें कितना पता नहीं है। यदि वे पूछने के लिए पर्याप्त रुचि रखते हैं, तो हर तरह से साझा करने के लिए स्वतंत्र महसूस करें। अन्यथा, साक्षात्कार समाप्त करें, उनके समय के लिए धन्यवाद, और अगले उम्मीदवार के लिए आगे बढ़ें।


अपने अंतिम पैराग्राफ में ठोस उत्तर के लिए +1। और आप एक अच्छा मुद्दा उठाते हैं कि मुझे "जवाब" के बजाय "ए" उत्तर देना चाहिए था। उस विशेष को हल करने के कई तरीके हैं। के रूप में discuss the problem, उस तत्व साक्षात्कार के दौरान अन्य प्रश्न के साथ आया था। अफसोस, उम्मीदवार था ... उत्तर देने में आगामी से कम। मैंने मूल प्रश्न में उस पहलू को नहीं जोड़ा क्योंकि मैं वास्तव में "अच्छे व्यक्तिपरक" के लिए P.SE दिशानिर्देशों के भीतर रखने की कोशिश कर रहा था।

1
"यह उम्मीदवार को सबक सिखाने के लिए आपकी जगह नहीं है" - मैं असहमत हूं। एक अच्छा प्रोग्रामर हमेशा सीख रहा है। यदि वे नई चीजों को सीखने के लिए आभारी अभिनय करके आपके पाठ का जवाब देते हैं, तो यह इस बात का संकेत है कि वे एक अच्छे प्रोग्रामर हैं। यदि वे आपके सबक को कम कर देते हैं, तो वे सबसे अधिक संभावना एक चमकदार प्रोग्रामर हैं।
nbv4

अगर मैं आपका साक्षात्कारकर्ता होता, और आपने मुझे उस तरह का उत्तर दिया होता, तो मैं आपको बीजगणित शिक्षकों की आवश्यकता के लिए एक स्कूल जिले में संदर्भित करता। FizzBuzz प्रोग्रामिंग के बुनियादी ज्ञान को प्रदर्शित करने के बारे में है ताकि साक्षात्कारकर्ता उन सवालों पर आगे बढ़ सके जो आपको अन्य मूल रूप से सभ्य प्रोग्रामर से अलग करेंगे। आपके उत्तर चतुर हैं, लेकिन वे यह स्थापित नहीं करते हैं कि आप लूपिंग, मॉड्यूलर अंकगणित आदि को समझते हैं, या तो साक्षात्कार को छोड़कर इस धारणा के तहत आगे बढ़ना है कि जो लोग बीजगणित जानते हैं वे भी प्रोग्रामिंग (गलत) जानते हैं, या बस अपना हाथ मिलाने के लिए और (अधिक संभावना) पर आगे बढ़ें।
user1172763

@ user1172763 यह बात है - FizzBuzz के विपरीत, ओपी के साक्षात्कार प्रश्न का उत्तर एकल गणना के साथ दिया जा सकता है। यह एक खराब विकल्प है, अगर यह देखना है कि उम्मीदवार लूप लिख सकता है या नहीं। आप एक उम्मीदवार से यह उम्मीद नहीं कर सकते हैं कि आप एक विशिष्ट (और अस्थिर) कारण के लिए सवाल पूछने वाले धीमे, अधिक क्रियात्मक समाधान का चयन करें। वास्तव में, साक्षात्कारकर्ता आसानी से एक "चाल" प्रश्न हो सकता है यह देखने के लिए कि क्या उम्मीदवार ने नोटिस किया कि लूपिंग पूरी तरह से अनावश्यक है। अपने मन को पढ़ना उम्मीदवार की जिम्मेदारी नहीं है।
कालेब

2

आपकी "समस्या" यह है कि आप एक सहानुभूति वाले इंसान हैं, इसलिए किसी ऐसे व्यक्ति को किसी समस्या से जूझते देखना मुश्किल है, जिसका उत्तर आपको पता हो (यदि आप प्रयोज्य अध्ययन चलाते हैं तो यह भी एक समस्या है)। एक कर्तव्यों के रूप में एक साक्षात्कारकर्ता परिप्रेक्ष्य से, आप किसी भी तरह से साक्षात्कारकर्ता को कार्यक्रम या समस्या-समाधान, या आपके द्वारा पूछे जाने वाली समस्या के समाधान को सिखाने के लिए बाध्य नहीं हैं।

जब आप एक साक्षात्कारकर्ता को कोच करते हैं, तो ऐसा नहीं है कि उन्हें सही उत्तर मिल सके। ऐसा है कि आप देख सकते हैं कि क्या वे वास्तव में समस्या को हल नहीं कर सकते हैं या यदि वे सिर्फ एक या दो गलतियों या गलतफहमी पर लटकाए गए हैं।

इसलिए यदि आप एक साक्षात्कारकर्ता को इस तथ्य के बाद समाधान देना चाहते हैं, तो आप इसे अपने लिए शुद्ध रूप से कर रहे हैं। सामान्य तौर पर, मैं उस समय का उपयोग साक्षात्कारकर्ता को किसी अन्य समस्या का प्रयास करने के लिए करता हूं। लेकिन एक "वरिष्ठ" प्रोग्रामर जो FizzBuzz का जवाब नहीं दे सकता है वह शायद सूची से बाहर है। यदि आप समाधान देने का निर्णय लेते हैं, तो सुनिश्चित करें कि आपने यह सोचकर खुद को मूर्ख नहीं बनाया कि साक्षात्कार इससे बेहतर हुआ (यदि आप खुद को सोच पाते हैं, "वह समस्या को हल नहीं कर सकता था, लेकिन जब मैंने समझाया कि वह इसे अच्छी तरह से समझ गया है", तो आप एक खतरनाक रास्ते पर हैं)।

और हां, मैं एक साक्षात्कारकर्ता रहा हूं जो अपने सिर के ऊपर था और एक साक्षात्कार समस्या को हल करने का पहला प्रयास भी नहीं कर सका। इसका सीधा सा मतलब यह था कि मुझे उस क्षेत्र में नौकरी करने के लिए बहुत कुछ सीखने की जरूरत थी।


2

सही उत्तर प्राप्त करना इस परीक्षण का महत्वपूर्ण हिस्सा नहीं है। आप समस्या को हल करने के लिए किसी के दृष्टिकोण को माप रहे हैं, वे सवाल के साथ कैसे जुड़ते हैं, कुछ भी रचनात्मक या दिलचस्प वे जिस तरह से साथ आते हैं; उस तरह का सामान। यहां तक ​​कि अगर उन्हें गलत जवाब मिलता है, तो भी वे इन मानदंडों से व्यवहार्य हो सकते हैं।

ठीक है, पता नहीं है कि मोड ऑपरेटर अक्षम्य है, और मैट्रिक्स द्वारा मैंने जो उम्मीदवार दिया है, वह अभी भी एक राइट-ऑफ प्रतीत होता है, लेकिन मुझे विश्वास नहीं है कि इस उम्मीदवार को सिर्फ सही उत्तर देने से किसी का होने वाला है फायदा।

यह यहाँ से आपकी अपनी व्यक्तिगत राय के लिए आता है। क्या आप भविष्य के साक्षात्कार में बेहतर करने में उम्मीदवार की मदद करने के लिए एक साक्षात्कार के साथ साक्षात्कार प्रतिक्रिया देना चाहते हैं (और ताकि भविष्य के साक्षात्कारकर्ताओं को आपको भुगतना न पड़े) यदि ऐसा है, तो मैंने जिन शब्दों को अभी ऊपर उल्लिखित किया है, उन पर अपनी प्रतिक्रिया दें: उन्हें बताएं कि यह केवल सही उत्तर के बारे में नहीं है, लेकिन वे जवाब पर पहुंचने के लिए कैसे काम करते हैं, यह एक महत्वपूर्ण कारक है।


+1 की टिप्पणी के लिए, how they work to arrive at the answer is a critical factor. जबकि मुझे उम्मीद थी कि एक मापांक ऑपरेटर का उपयोग किया जाएगा, ऐसा केवल इसलिए है क्योंकि मैंने इसे हल किया होगा। मैं किसी भी अन्य दृष्टिकोण को देखने के लिए बहुत ही खुला था, जिसने बिना किसी समस्या के हल की गई सीमा स्थिति त्रुटियां पैदा कीं (मेरी पुनरावृत्ति के साथ दृष्टिकोण के बारे में मेरी विभिन्न टिप्पणियाँ देखें)।

2

मुझे ऐसा लगा कि मुझे उसे समस्या को सुलझाने का एक तरीका दिखाना चाहिए ताकि वह कम से कम अनुभव से सीख सके। लेकिन फिर, उसने पूछा नहीं। उस स्थिति को संभालने का सही तरीका क्या है?

जिस तरह से मैं इसे देखता हूं, उसे संभालने की कोई स्थिति नहीं है। यह मानते हुए कि आपने उसके आवेदन को अस्वीकार कर दिया है, उम्मीदवार की (स्पष्ट) रुचि की कमी कुछ ऐसी चीज नहीं है जिसके बारे में आपको खुद चिंता करने की आवश्यकता है।

दरअसल, भले ही वह था पूछते हैं, आप नहीं है देना है उसे एक विवरण। और अगर आपने इसके बारे में अपने एचआर लोगों से बात की है, तो वे आपको सलाह दे सकते हैं कि उम्मीदवार के साथ आगे की चर्चा कानूनी कारणों के लिए अनुपयुक्त है।


यह भी ध्यान देने योग्य है कि FizzBuzz समस्या के अलग-अलग "सर्वश्रेष्ठ" उत्तर हैं, यह इस बात पर निर्भर करता है कि आप इसे कैसे पूछते हैं। यदि आप "सरलतम" समाधान और "सबसे कुशल" समाधान के लिए पूछते हैं, तो सर्वोत्तम उत्तर मौलिक रूप से भिन्न होते हैं। और यह आपके फैसले को गलत तरीके से रंग सकता है ... यदि आप उस तरीके से अस्पष्ट थे जो आपने प्रश्न पूछा था। (दूसरी ओर, एक अच्छे / अनुभवी उम्मीदवार को स्पष्ट करने की दूरदर्शिता होगी कि कोड शुरू करने से पहले ...)


2

आपके प्रश्न का उत्तर देने के लिए, नहीं, मैं इसका उत्तर नहीं दूंगा। यदि व्यक्ति एक बेहतर सॉफ्टवेयर इंजीनियर बनना चाहता है, तो उन्हें इसका जवाब मिल जाएगा। यदि आप उन्हें जवाब देते हैं तो आप उन्हें इस अवसर को लूट रहे हैं।

अधिक प्रासंगिक सवाल यह है कि आप खुद को वरिष्ठ डेवलपर कब कह सकते हैं? यह संगठनों और देशों के बीच भिन्न होता है। उदाहरण के लिए, एक कंपनी मैंने सॉफ्टवेयर इंजीनियर्स के साथ 5 साल के अनुभव के साथ सीनियर्स के रूप में काम किया। अनुभव की गुणवत्ता पर कोई जोर नहीं था, बस लंबाई।

जब तक हम एक मानक के साथ नहीं आते हैं, जो सभी सॉफ्टवेयर इंजीनियरों को उनकी भाषा की परवाह किए बिना उनके कौशल के स्तर को तय करने वाले व्यक्ति के साथ छोड़ देता है। और हम "वरिष्ठ इंजीनियरों" की सुनवाई जारी रखेंगे जो कि अल्पविकसित कौशल परीक्षण को विफल कर रहे हैं।

कुछ हफ़्ते पहले सवाल पूछा गया था "आपको अपने आप को वरिष्ठ डेवलपर कब कहा जाना चाहिए" । मैंने इस विषय पर एक ब्लॉग पोस्ट भी लिखा ।


क्या आप कृपया अपने ब्लॉग लिंक को संशोधित करेंगे?
एंड्रे

@ André लिंक अपडेट किया गया।
चक कॉनवे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.