क्या एल्गोरिदम प्रश्न अच्छे साक्षात्कार प्रश्न हैं? [बन्द है]


25

मैंने हाल ही में एक साथी प्रोग्रामर के साथ एक तर्क दिया है। वह एक नए पद के लिए साक्षात्कार कर रहे थे और उनसे यह सवाल पूछा गया था:

X पर शुरू होने वाले और Y में समाप्त होने वाले संख्याओं का एक क्रम दें, लेकिन एक तत्व गायब है इसलिए N YX-1 है, ओ (एन) में लापता तत्व को ढूंढें या बेहतर।

अब, जवाब यहाँ अप्रासंगिक है (लेकिन दिलचस्प है)। इस पर एक चर्चा शुरू हुई कि क्या यह एक साक्षात्कार के दौरान पूछने के लिए एक अच्छा सवाल था।

एक पक्ष: एल्गोरिदम प्रोग्रामिंग का एक अंतर्निहित हिस्सा है और इस सवाल का जवाब देने की एक उम्मीदवार की क्षमता का समर्थन करता है कि यह उम्मीदवार एक अच्छा प्रोग्रामर होगा और बड़ी समस्याओं को हल करने में सक्षम होगा और अधिकांश प्रोग्रामिंग कार्यों को संभाल सकता है जो अंततः समझने और जवाब देने में आसान हैं।

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

तुम्हारे विचार? अच्छा साक्षात्कार प्रश्न या नहीं?


मुझे क्षमा करें, लेकिन मैं समझ नहीं पा रहा हूं find the missing element in O(N) or betterकि इस संदर्भ में "या बेहतर" क्या मतलब है? ऐसा लगता है कि लूप के दौरान एक साधारण से हल किया जाएगा, लेकिन वैसे भी मुझे समझ में नहीं आता है - यह या तो हल है या हल नहीं है , है ना?
कैमिलो मार्टिन

"या बेहतर" प्रदर्शन को संदर्भित करता है - एक ओ (एलएन (एन)) समाधान बेहतर होगा।
एथेल इवांस

एल्गोरिथम प्रश्न वास्तव में, प्रोग्रामिंग या तकनीकी नौकरी के साक्षात्कार में अपेक्षित प्रश्नों में से एक हैं। गेल लाकमैन मैकडॉवेल ने "क्रैकिंग द कोडिंग इंटरव्यू" नामक एक पुस्तक लिखी है, जिसमें एल्गोरिदम के लिए एक समर्पित अनुभाग है।
नागफनी

जवाबों:


20

मैं एक एल्गोरिथ्म प्रश्न पूछने से सहमत हूं, लेकिन मैं एक विशिष्ट बिग-ओ गुणवत्ता स्तर पर जोर देने से असहमत हूं।

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

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


9

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

मैं निश्चित रूप से किसी ऐसे व्यक्ति को नियुक्त नहीं करना चाहता हूं जो यह नहीं जानता कि कैसे सोचना और विश्लेषण करना है। यही एक कोड बंदर और एक कंप्यूटर प्रोग्रामर के बीच अंतर करता है।


6

मुझे यहाँ स्वीकार करना होगा, कि मैं उन लोगों में से एक हूँ जो साक्षात्कार में एल्गोरिथ्म के प्रश्न पूछना पसंद करते हैं, लेकिन मुझे तनाव देना होगा, कि प्रश्न का वास्तविक उत्तर बिल्कुल अप्रासंगिक है। मुझे इस बात की जरा भी परवाह नहीं है कि साक्षात्कारकर्ता को उत्तर पता है या नहीं। इसके बजाय, मेरे लिए, यह प्रश्न विभिन्न पहलुओं को लक्षित करता है, जैसे कि निम्नलिखित - महत्व के क्रम में:

आवश्यकताएँ

इस तरह के सवालों को जानबूझकर कम-निर्दिष्ट किया जाता है। आपके उदाहरण में, अनुक्रम के बारे में अधिक विवरण नहीं दिए गए हैं। यदि आपके पास एक साक्षात्कारकर्ता है जो आपसे पूछता है कि क्या ये संख्याएं वास्तव में क्रमबद्ध हैं, तो यह एक अच्छा संकेत है। ग्राहकों को आगे के विवरण के बारे में पूछने के लिए उनकी सही मानसिकता है, जो कम समय में बेहतर समाधान के लिए आने में मदद करेगा। उम्मीदवार N संख्याओं की एक सरणी को संग्रहीत करने के लिए O (n) स्थान का उपयोग करने के विचार के साथ भी खिलौना कर सकता है, लेकिन उसे ऐसा नहीं करना चाहिए कि X और Y पर अधिक विवरण के बारे में पूछे बिना कहें कि X और Y 1 और 1000 के बीच हैं। , तो यकीन है, आगे बढ़ो और एक सरणी आधारित समाधान आग। लेकिन अगर मैं आपको बताता हूं कि अंतराल 1 और 1 बिलियन है, तो समस्या पूरी तरह से अलग हो जाती है। मुझे फिर से तनाव दें, कि मुझे समाधान की परवाह नहीं है।

मानक तकनीक

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

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

समस्या-व्यवहार मानसिकता

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

उदाहरण: आप अपने उम्मीदवार को अगले आधे घंटे के लिए मूक मोड में नहीं जाना चाहते हैं! जांचें कि क्या वह बुद्धिमान प्रश्नों के साथ आ सकता है (आवश्यकताओं को देखें), जांचें कि क्या वह बॉक्स से बाहर निकलना शुरू कर देता है जब उसे पता चलता है कि वह ऐसा नहीं कर सकता है। यहां तक ​​कि "फन" काउंटर-क्वेश्चन जैसे "क्या मैं फोन-ए-को-वर्कर विकल्प का उपयोग कर सकता हूं?" एक अच्छा संकेत है।

कैसे जवाब दें

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

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


"मैं फोन-ए-को-वर्कर विकल्प का उपयोग क्यों कर सकता हूं?" एक अच्छा संकेत? क्या यह नहीं दिखाता है कि साक्षात्कारकर्ता को समस्याओं से निपटने का तरीका नहीं पता है और हमेशा मदद मांगता है?
उउउ

हमेशा एक सवाल होगा कि साक्षात्कारकर्ता बस जवाब नहीं दे सकता है। उस मामले में यह एक अच्छा संकेत है, लेकिन निश्चित रूप से, साक्षात्कारकर्ता को कई सवालों के लिए उस व्यवहार को दोहराना नहीं चाहिए। कठिन कार्य यह पता लगाना है, यदि आप बस उस एक मीठे स्थान से टकराते हैं, जहां उम्मीदवार को कोई ज्ञान नहीं है (जो स्वीकार्य है), या यदि वह सामान्य रूप से कठिन समस्याओं से बाहर निकलने की कोशिश कर रहा है (जो नहीं है)।
फ्रैंक

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

5

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

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


4

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


2

उस विशिष्ट प्रश्न के साथ समस्या यह है कि यह लगभग एक ट्रिकी प्रश्न है। एक विशेष अंतर्दृष्टि के साथ, आप आसानी से ओ (एन) के साथ आएंगे, अन्यथा आप ओ (एन लॉग एन) से बेहतर पाने के लिए संघर्ष करेंगे। यह लगभग कम कर देता है "क्या आपने इसे पहले देखा है?"

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

गंभीर समस्या-समाधान करने के लिए एक नियमित साक्षात्कार में समय नहीं है, और जब मैं बैठ सकता हूं, विकिपीडिया का उपयोग कर सकता हूं, और चीजों को जानने के लिए कुछ समय लेता हूं। शायद साक्षात्कारकर्ता के लिए समय नहीं है कि वह इस बात पर ध्यान से चर्चा करे कि साक्षात्कारकर्ता को क्या पता है और एक उपयुक्त एल्गोरिथम प्रश्न चुन सकता है।


1
यह हे (n) को देखने के लिए विशेष अंतर्दृष्टि क्या है? मुझे "O (n) समस्या के रूप में याद आ रही है" एक के लिए N अनुक्रमिक मानों की क्रमबद्ध सूची की खोज "दिखाई दे रही है। आप इसे कैसे लिख सकते हैं ताकि यह बदतर हो? (ईमानदारी से, मैं उत्सुक हूं और यह नहीं देखता कि ओ (एन) समाधान गैर-स्पष्ट कैसे है, और यहां तक ​​कि हे (लॉग एन) एक मुझे स्पष्ट लगता है।)
डैश-टॉम-बैंग

@ डैश-टॉम-बैंग: मैं सूची के अनुसार सॉर्ट नहीं कर रहा था (क्या मैंने कुछ गलत किया है?) इसलिए ओ (एन लॉग एन) समाधान सॉर्ट और स्कैन होगा, जबकि ओ (एन) संख्याओं का योग होगा। अप।
डेविड थॉर्नले

आह- ठीक है कि मामला हो सकता है- मैंने यह नहीं सोचा था कि सूची को अनसोल्ड कर दिया जाएगा। :) ("सूची एक्स से शुरू होती है और वाई पर समाप्त होती है")
डैश-टॉम-बैंग

2
क्विक-सलेक्ट का एक वेरिएंट भी यहां काम करता है। धुरी पर (ऊपर + नीचे) / 2, और यह देखना आसान है कि कौन सी आधी प्रविष्टि गायब है क्योंकि आप जानते हैं कि प्रत्येक आधा कितना बड़ा होना चाहिए। तब तक दोहराएं जब तक आपको लापता तत्व न मिल जाए।
पॉल हांकिन

1
मुझे लगता है कि जैसा कि सवाल एक्स पर शुरू होने और वाई पर समाप्त होने के बाद एक अनुक्रम (एक सेट के बजाय, आदि) को संदर्भित करता है इसका मतलब है कि आइटम सॉर्ट किए गए हैं। यह एक बल्कि तुच्छ प्रश्न लगता है।
फिनकेक

1

मेरे पास कई एल्गोरिदम जैसे प्रश्न हैं जो मैं नियमित रूप से उपयोग करता हूं, जिनमें से कुछ बहुत कठिन हैं। मैं उनका उपयोग यह देखने के लिए करता हूं कि वे मानसिक रूप से किसी समस्या पर कैसे हमला करते हैं और यह देखने के लिए कि क्या उन्होंने कुछ अवधारणाओं को देखा है। (मैंने ऐसे कई डेवलपर उम्मीदवारों को देखा है जो केवल संकेत नहीं समझते हैं।)


संकेत, जैसे, कुत्ता, सही? :)
जोश

1

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

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

आप वास्तव में जो चाहते हैं वह एक साक्षात्कारकर्ता है जो कौशल निर्धारित करने की क्षमता के साथ साक्षात्कार के दौरान प्रस्तुत किया जा सकता है या नहीं। प्रश्न सिर्फ उपकरण हैं। मेरे लिए, सभी हथौड़े समान दिखते हैं। लेकिन किसी के साथ पर्याप्त कुशल, मुझे यकीन है कि वहाँ अंतर है।


0

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

मुझे "व्हाइटबोर्ड पर कोड लिखना" होने के लिए इन प्रकार के प्रश्नों के उत्तर की आवश्यकता नहीं है। साक्षात्कारकर्ता को समाधान के दृष्टिकोण के बारे में समझदारी से बात करने में सक्षम होना चाहिए और चल रही चर्चा में संलग्न होना चाहिए क्योंकि साक्षात्कारकर्ता आवश्यकताओं को बदल रहे हैं जबकि चर्चा चल रही है।

मूल प्रश्न पूछा जाता है, साक्षात्कारकर्ता कहता है, "शुरुआत में शुरू करें और अंत में 'छेद' की तलाश में मार्च करें।" साक्षात्कारकर्ता का कहना है कि यह बहुत धीमा है, क्योंकि एन अभिमानी है। साक्षात्कार बाइनरी खोज पर चर्चा शुरू करता है। साक्षात्कारकर्ता का कहना है कि अचानक डेटा को अब सॉर्ट नहीं किया गया है। साक्षात्कारकर्ता कहता है "फिर खोज"। "अब बहुत धीमी है"। आदि आदि।

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