मुझे लगता है कि वहाँ उन आसान सवाल हैं fizzbuzz, एक स्ट्रिंग उल्टा, आदि, और फिर कुछ सवाल हैं, जबकि अगर आपने उन्हें पहले नहीं देखा है तो साक्षात्कार के अतिरिक्त दबाव और कम समय के साथ इच्छित इष्टतम समाधान प्राप्त करना कठिन है बाधाओं। सबसे बुरी बात यह है कि कभी-कभी बिना तकनीकी ज्ञान वाले भर्तीकर्ता इनमें से कुछ प्रश्न पूछते हैं और वे बहुत विशिष्ट उत्तर की तलाश में रहते हैं .... यदि आप इष्टतम उत्तर नहीं देते हैं तो उन्हें लगता है कि आप एक पूर्ण बेवकूफ हैं। यहां तक कि अगर आपका जवाब काम करता है, तो समस्या हल करती है, और जबकि यह इष्टतम नहीं हो सकता है यह बहुत अक्षम नहीं है ...।
कुछ उदाहरण:
आप कार्डों के डेक को कैसे फेरबदल करेंगे? वे फिशर-येट्स विधि की तलाश कर रहे हैं http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffleअन्य उत्तर "गलत" हैं ..... यह कोई ऐसी चीज नहीं है, जिसके बारे में आपको तब तक पता चलने की संभावना है जब तक आप कार्ड को फेरबदल नहीं करना चाहते थे और विशेष रूप से इसे देखा था। आप इसका जवाब देने के क्रम में इस पर ठोकर खा सकते हैं, लेकिन मैंने जो देखा है, उससे आपको उम्मीद है कि आपको इस ठंड का पता चल जाएगा, इसलिए यह संदिग्ध है कि समाधान खोजने की अनुमति देने में बहुत समय दिया जाएगा। एक और कम कुशल (लेकिन शायद अधिक स्पष्ट) तरीका मूल सरणी के लिए एक सूचक के साथ एक नया सरणी बनाना है और एक संख्या जो एक यादृच्छिक संख्या है फिर यादृच्छिक संख्या द्वारा सरणी को सॉर्ट करें। फिर कार्ड की एक नई सरणी बनाने के लिए सॉर्ट की गई सरणी का उपयोग करें। किसी भी मामले में, मुझे उस भर्ती के लिए 0 क्रेडिट मिला।
एक अन्य उदाहरण यह सवाल है कि आप 1 से n-1 तक सभी n संख्याओं की सूची में डुप्लिकेट संख्या का पता कैसे लगाएंगे। स्पष्ट उत्तर (जो एक समय के परिप्रेक्ष्य में अपेक्षाकृत कुशल है) प्रत्येक तत्व को सम्मिलित करने के लिए हैश तालिका का उपयोग करना है और यदि आप पहले से डाला हुआ पाते हैं तो आपने डुप्लिकेट पाया। इष्टतम उत्तर इसलिए है क्योंकि संख्या 1 और n के बीच हैं यदि कोई डुप्लिकेट नहीं हैं, तो आप अपेक्षित राशि को n (n + 1) / n के रूप में प्राप्त कर सकते हैं। फिर यदि आप एरे को जोड़ते हैं तो आपको वास्तविक राशि मिलती है जो अपेक्षित योग से कम है। तो मूल रूप से n - (अपेक्षित राशि - वास्तविक योग) = डुप्लीकेट नंबर ... यह एक बहुत ही खास मामला है .... मैं वास्तव में साक्षात्कार समस्याओं पर कुछ ऑनलाइन पोस्ट से पहले कुछ इसी तरह की चाल के साथ संबंधित एक के बारे में पहले देखा था, इसलिए मैं ठीक था…।
एक और, किसी भी अतिरिक्त स्थान का उपयोग किए बिना एक स्ट्रिंग में सभी शब्दों को उल्टा। मुझे इसके बारे में सोचना था और 5 मिनट में मैंने सोचा कि रिक्रूटर बहुत अधीर था (स्ट्रिंग को उल्टा करना और फिर से जोड़ना, या नए शब्द में शब्द द्वारा शब्द जाना दोनों बहुत आसान है)। मैं अंतिम शब्द की सीमा को खोजने, पहले शब्द के अंत को खोजने, और लगातार पूरी सूची को 1 से नीचे स्थानांतरित करने और फिर उपयुक्त पत्र डालने के साथ आया था। तब तक दोहराएं जब तक आप सूची के अंत तक नहीं पहुंच गए। इस पद्धति ने काम किया और साक्षात्कारकर्ता सहमत हुए (वह थोड़ा तकनीकी था), लेकिन यह बहुत अक्षम है। जब मुझे घर मिला तो मैंने इष्टतम उत्तर के लिए खोज की, और यह सिर्फ सूची को उलटने के लिए है, फिर प्रत्येक व्यक्तिगत शब्द को उल्टा करें। कुछ लोग इसके साथ आ सकते हैं,
अब यह सच है एक बार जब आप इनमें से कुछ समस्याओं को देखते हैं तो आप उन्हें आसानी से हल कर सकते हैं। क्योंकि कुछ ऐसे ही ट्रिक्स के साथ कुछ ऐसे ही सवाल हैं। मुझे पता है कि विशेष रूप से n (n-1) / 2 सूत्र और संख्या सूची में कई भिन्नताएं हैं। लेकिन फिर भी मुझे नहीं पता कि ये प्रश्न क्या परीक्षण करते हैं। एक FizzBuzz कुछ ऐसा है जो हर किसी को करने में सक्षम होना चाहिए (हालांकि मैंने ऐसी विविधताएं देखी हैं जो इतनी सरल नहीं हैं कि मैं किस मामले में सवाल करना शुरू कर दूं, भले ही वह साक्षात्कार की स्थिति के लिए यथार्थवादी हो / कोड को डीबग करने में सक्षम होने के बिना)। इनमें से कुछ प्रश्न आपको देखने के बाद स्पष्ट होते हैं, लेकिन यदि आपने उन्हें नहीं देखा है तो वे स्पष्ट नहीं हैं। आखिरकार किसी ने उल्लेख किया कि यह द्विआधारी खोज के पहले सही कार्यान्वयन के लिए सालों लग गए ... अभी बाइनरी खोज इतनी स्पष्ट है क्योंकि हर कोई इसके बारे में पढ़ सकता है।
फिर भी, मुझे लगता है कि सबसे खराब हिस्सा तब है जब गैर तकनीकी लोग सवाल पूछ रहे हैं क्योंकि वे सराहना नहीं कर सकते हैं कि आपका समाधान सही है, हालांकि इष्टतम नहीं। वे बस जानते हैं कि आपका समाधान प्रस्तुत नहीं है और इसलिए यह सब गलत है, आपको प्रयास का कोई श्रेय नहीं मिलता है। यहां तक कि गैर-इष्टतम समाधान अक्सर प्रोग्रामिंग कंस्ट्रक्शन का ज्ञान दिखाते हैं। जब तक मैं पोकर गेम्स नहीं कर रहा हूं, मुझे परवाह नहीं है कि कोई कार्ड के डेक को कितनी अच्छी तरह से फेरबदल कर सकता है। और यहां तक कि अगर मैं था, तो उन्हें कुशल एल्गोरिथ्म दिखाने के बाद मुझे यकीन है कि कोई भी सभ्य आधे रास्ते का पालन कर सकता है।
टेम्प्लेट प्रश्न केवल उन अभ्यर्थियों को लाभ देते हैं जो अब तक साक्षात्कार कर रहे हैं क्योंकि वे अधिक होने की संभावना है जो टेम्प्लेट प्रश्नों के अधिक देखे गए हैं। यहां तक कि FizzBuzz भी, पहली बार जब आप इसे देखते हैं तो आप बाहर बेकार हो सकते हैं, लेकिन जैसा कि आप इसे बार-बार देखते हैं, आप इसके लिए अधिक अभ्यस्त हो जाते हैं। सबसे अच्छी बात जो आप कर सकते हैं वह कुछ कोडिंग चुनौती दे सकता है जिसमें कस्टम व्यवसाय तर्क की आवश्यकता होती है। जैसे कुछ डेटासेट (ऑब्जेक्ट्स / रिकॉर्ड्स की सरणी) बनाएं और फिर प्रत्येक ऑब्जेक्ट पर लागू करने के लिए कुछ व्यावसायिक नियम बनाएं और एक उत्तर दें .. जैसे कुछ प्रकार की रेटिंग, आदि लेकिन बहुत ही कस्टम नियम)। जबकि उन्होंने संभवतः रिकॉर्ड के माध्यम से लूप देखा है और तर्क को एक ज़िलिन बार लागू करते हैं, आपके नियम अद्वितीय होंगे, इसलिए कम से कम उन्हें आपके द्वारा बनाए गए नियमों को समझना और सफलतापूर्वक लागू करना होगा।
मान लीजिए कि वेतन और उम्मीदवारों की सूची और उनके शीर्ष 3 वीडियो पसंदीदा वीडियो गेम, और शायद एक प्रारंभिक वेतन है। जिन उम्मीदवारों को ज़ेल्डा पसंद है उन्हें 300 जुर्माना मिलता है, जो उम्मीदवार छोटे मत्स्यांगना को पसंद करते हैं उन्हें 200 बोनस मिलते हैं। जिन उम्मीदवारों को गधा काँग और सुपर मारियो ब्रदर्स पसंद हैं लेकिन डॉ। मारियो को 300 बोनस नहीं मिलते हैं। ऐसे उम्मीदवार जो मेट्रॉइड या किड इकारस को पसंद करते हैं, उन्हें 200 का बोनस मिलता है, आदि .... यह थोड़ा पागल लगता है, लेकिन यह आपको व्यापार के नियमों को तार्किक कार्यक्रम निर्माणों में अनुवाद करने और बूलियन तर्क के बारे में उनकी समझ का परीक्षण करने की क्षमता दिखाएगा। मोडुलस और छोरों का उपयोग न करने के अलावा, कुल मिलाकर फ़िज़बज़ की तुलना में बहुत अलग नहीं है। आप निश्चित रूप से उन्हें सूची दे सकते हैं और उन्हें इसके माध्यम से लूप दे सकते हैं और परिणाम को विशिष्ट आउटपुट मानदंड का उपयोग करके स्क्रीन पर प्रिंट कर सकते हैं।