'खराब कोड' का इंटरव्यू कैसे संभालें? [बन्द है]


12

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

इस तरह के साक्षात्कार को संभालने का एक अच्छा तरीका क्या है, और, आमतौर पर, कोड को जल्दी से पढ़ने और समझने के लिए कुछ अच्छी तकनीकें क्या हैं ?


8
क्यों "जल्दी से"? यदि आपको सोचने के लिए समय चाहिए, तो सोचने में समय लेने में क्या हर्ज है?
एस.लॉट

क्या यह लिखित / एप्टीट्यूड टेस्ट का हिस्सा है? तो आपको चिंता में कंपनियों के लिए इस प्रकार के परीक्षणों पर अपना होमवर्क करने की आवश्यकता है।
आदित्य पी

@ S.Lott खैर, मैं मुख्य रूप से कुछ तकनीकों को चाहता था जो मुझे उस तरह की स्थिति में संज्ञानात्मक लॉक से बचने में मदद करेंगे। ऐसी तकनीकें जिन्हें जल्दी लागू किया जा सकता है, वे मेरे लिए बेहतर काम करती हैं।
क्वांटिकल

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

@ क्वेंटिकल: "स्टॉप एंड थिंक" "नॉट द फर्स्ट" तकनीक है जिसका आप उपयोग करेंगे? वास्तव में, "स्टॉप एंड थिंक" के अलावा और कौन सी संभावित तकनीक है?
एस.लॉट

जवाबों:


18

खराब कोड साक्षात्कार (यदि वे ठीक से किए गए हैं) आपको निम्नलिखित के साथ कोड दिखाना चाहिए:

  • एक खराब भाषा तकनीक ( usingआवश्यकता पड़ने पर C # में स्टेटमेंट का उपयोग नहीं करना , या ArrayListइसके बजाय ए List<T>) का उपयोग करना
  • एक बुरा डिजाइन निर्णय (क्यों बिल्ली हम हर जगह तार गुजर रहे हैं, या उपयोग कर रहे हैं refऔर outमापदंडों इतना?)
  • सिंटैक्स त्रुटियां (यह भी संकलित नहीं होनी चाहिए!)
  • रन-टाइम एरर (जैसे कि C # में खुद को रेफर करने वाली प्रॉपर्टी के कारण हुआ स्टैक ओवरफ्लो)

ऊपर दी गई प्रत्येक बातों को ध्यान में रखते हुए एक मानसिक चेकलिस्ट है, जिससे आपको गुजरना चाहिए। यदि आप कोड को नहीं देख सकते हैं और ऐसा करते हैं, तो यह सुधार का एक बिंदु है। आप जिस भी भाषा में 'कुशल' होने का दावा करते हैं, आपको कोड के एक खंड को देखने और उन चार प्रकार की त्रुटियों को इंगित करने में सक्षम होना चाहिए।

मैंने हाल ही में कोड के एक टुकड़े के बारे में ब्लॉग किया था जिसमें इन सभी समस्याओं का प्रदर्शन किया गया था , इससे आपको उसी मानसिक प्रक्रिया से गुजरने में मदद मिलेगी।

आयेंडे ने अपनी वेज ऑफ़ सिन सीरीज़ के साथ इसे और गहरा किया


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

महान ब्लॉग पोस्ट। हमेशा सबसे मजेदार जब कोड का टुकड़ा विशेषज्ञ एक उदाहरण के रूप में रखता है बड़े पैमाने पर कीड़े है। मैं उम्मीद कर रहा हूं कि मेरी टिप्पणी आपके और स्कॉट के बग प्रदर्शन को जारी नहीं रखेगी।
बेन वोइगट

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

+1। चेकलिस्ट के लिए एक और बिंदु: चेक करें कि कोड बॉर्डर के मामलों को कैसे संभालता है (फ्लोटिंग पॉइंट नंबरों के लिए खाली सूची, 0, Inf / NaN, List<T>जिसमें nullतत्व शामिल हैं ...)
nikie

9

इसे जल्दी समझने की कोशिश मत करो। यहां लक्ष्य यह नहीं है कि आप गुरु की तरह कोड को समझ सकें, बल्कि यह देखें कि आप कैसे सोचते हैं।

प्रमुख IMO केवल ज़ोर से सोचने के लिए है। तो यहां तक ​​कि अगर आप फ्रीज करते हैं - तो बस कहो, "मैं यहां जोर दे रहा हूं, लेकिन मुझे इस धीरे से बाहर जोर से जाने दो"।

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


2

ऑड्स हैं, 'टाइम प्रेशर' जो आपको लगता है कि पूरी तरह से आत्म-लगाया गया है। यह असुरक्षा की अपनी भावनाओं के साथ और अधिक है और इस बात की चिंता करता है कि आप कितनी अच्छी तरह से मापते हैं।

सबसे अच्छी सलाह जो कोई भी दे सकता है वह है: आराम करना। अपना समय लें, कोड देखें और जैसा आप देखते हैं वैसा ही बोलें। अच्छे हिस्सों के साथ-साथ बुरे के बारे में बात करने के लिए स्वतंत्र महसूस करें; यह आपकी घबराहट को कम करने में मदद करेगा और अंदर की चिंताओं को बहुत अधिक समय दे रहा है।

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

इन सबसे ऊपर, बात करें कि आप क्या कर रहे हैं और सोच रहे हैं - यह आपकी और साक्षात्कारकर्ता दोनों की मदद करेगा।


1

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


1

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

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

यदि वह आपको कहीं भी नहीं मिल रहा है, या यदि आपको ऐसा लगता है कि आप चीजों को कहने के लिए भाग चुके हैं, तो परीक्षण मूल्यों की अपनी सूची पर वापस लौटें, और एक नए तरीके से फिर से चलें जो आपको लगता है कि समस्याओं का कारण है।

यह कम से कम आप जा रहे हो जाएगा।


0

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


0

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


0

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


0

दो मुद्दे हो सकते हैं:

यह एक "तनाव साक्षात्कार" हो सकता है http://en.wikipedia.org/wiki/Job_interview#Stress । साक्षात्कारकर्ता यह देखने की कोशिश कर रहे हैं कि उनके कामकाजी माहौल के बाद से आप तनाव से कैसे निपटते हैं।

या

हो सकता है आप खुद तनाव में आ रहे हों। उस स्थिति में आपको इस तनाव का प्रबंधन करना होगा, जैसे कि आत्मनिरीक्षण करें और देखें कि आप कैसे शांत रह सकते हैं।

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