HackerRank इंटरव्यू: हर फ़ॉर्मैट असल में क्या परखता है

· 12 मिनट पढ़ें

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

पता कीजिए आपको कौन-सा राउंड भेजा गया

निमंत्रण देखिए। Test या Assessment वाला लिंक, जिसके साथ अवधि लिखी हो और शुरू करने के लिए कई दिनों की खिड़की मिले, वह स्वचालित वाला है: आप अकेले घड़ी के ख़िलाफ़ कोड करते हैं, सबमिशन टेस्ट केस पर चलते हैं, कोई मौजूद नहीं होता। CodePair वाला लिंक, जो किसी तय समय पर कैलेंडर निमंत्रण के साथ आए, वह लाइव है: साझा एडिटर, कॉल पर इंटरव्यूअर, आमतौर पर पैंतालीस से साठ मिनट।

अगर ईमेल से साफ़ न हो, तो सीधे रिक्रूटर से पूछ लीजिए। यह बिलकुल सामान्य सवाल है और जवाब से यह बदल जाता है कि तैयारी कहाँ लगानी है।

स्वचालित असेसमेंट के अंक असल में कैसे बनते हैं

आपका स्कोर उन छिपे टेस्ट केस का अनुपात है जो पास होते हैं, आमतौर पर हर समस्या के हिसाब से भारित। इससे कई नतीजे निकलते हैं, और वे ज़ाहिर नहीं हैं:

  • आंशिक अंक सचमुच मिलते हैं। ब्रूट-फ़ोर्स हल जो छोटे केस पास कर ले और बड़ों पर समय से बाहर हो जाए, फिर भी अंक पाता है। कुछ न भेजना शून्य है। अनुकूलन से पहले हमेशा कुछ चलता हुआ छोड़िए।
  • नुक़सान छिपे केस में होता है। ख़ाली इनपुट, एक ही तत्व, सारे तत्व बराबर, ऋणात्मक संख्याएँ, बड़े इनपुट पर इंटीजर ओवरफ़्लो। ज़्यादातर गँवाए अंक यहीं रहते हैं, एल्गोरिद्म में नहीं।
  • इनपुट पार्सिंग के भी अंक लगते हैं। stdin पढ़ने वाला ढाँचा दिया होता है, पर आपके किनारे के मामलों के लिए हमेशा सही नहीं होता, और वहाँ क्रैश होना ग़लत एल्गोरिद्म जितना ही महँगा है।
  • घड़ी आमतौर पर टेस्ट खोलने पर चलती है, मिलने पर नहीं। इसे तब खोलिए जब काम करने को तैयार हों, झाँकने को नहीं।

एक व्यावहारिक क्रम: पहले सारी समस्याएँ पढ़िए, जिस पर सबसे ज़्यादा भरोसा हो उसे हल कीजिए, उसे पास कराइए, फिर आगे बढ़िए। लौटकर अनुकूलन करना सस्ता है; तीन अधूरी समस्याओं के साथ समय ख़त्म हो जाना नहीं।

CodePair इसके बजाय क्या आँकता है

लाइव राउंड में पास होने वाले टेस्ट केस उतने मायने नहीं रखते जितना ज़्यादातर मान लेते हैं। इंटरव्यूअर समस्या-समाधान, संवाद, और आप संकेत कैसे लेते हैं — इन पर रूब्रिक भरता है। जो चुपचाप साफ़-सुथरे O(n log n) तक पहुँचता है, उसके अंक अक्सर उससे कम होते हैं जो धीमे हल को बोलकर समझाता है, उसकी कमज़ोरी पकड़ता है, और कैमरे के सामने उसे सुधारता है।

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

यह माहौल आपका एडिटर नहीं है

HackerRank का एडिटर जानबूझकर सादा है। कॉन्फ़िगरेशन के हिसाब से ऑटोकम्प्लीट सीमित हो सकता है, कोई लैंग्वेज सर्वर नहीं, इम्पोर्ट के सुझाव नहीं, डिबगर नहीं — बस चलाइए और प्रिंट कीजिए। जो इंजीनियर अपनी IDE पर टिके रहते हैं, उन्हें यह भारी पड़ता है: स्टैंडर्ड लाइब्रेरी के वे सिग्नेचर जो आम तौर पर एडिटर भर देता है, अचानक असली लागत बन जाते हैं।

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

नमूने पास क्यों होते हैं और छिपे टेस्ट फेल

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

बाध्यताओं को पृष्ठभूमि नहीं, छिपे टेस्ट का विवरण मानकर पढ़िए। अगर लिखा है कि ऐरे में 10⁵ तक तत्व और 10⁹ तक मान हो सकते हैं, तो वह दो बातें कह रहा है: वर्गात्मक लूप समय से बाहर होगा, और मानों का योग 32-बिट इंटीजर में नहीं समाएगा। दोनों जानबूझकर हैं।

हर सबमिट से पहले अपने कोड को इन छह इनपुट पर हाथ से चलाइए। दो मिनट लगते हैं और किसी भी अनुकूलन से ज़्यादा अंक बचाते हैं।

चुनी हुई भाषा समय की समस्या बदल देती है

HackerRank हर समस्या पर समय-सीमा लगाता है, और हालाँकि कई लोग व्याख्यायित भाषाओं के लिए इसे बढ़ा देते हैं, बहुत से नहीं बढ़ाते। व्यावहारिक असर यह है कि वही सही एल्गोरिद्म C++ या Java में पास हो सकता है और Python में समय से बाहर हो सकता है, सिर्फ़ स्थिरांक गुणकों की वजह से।

अगर Python लिख रहे हैं, तो दो आदतें ख़ुद की क़ीमत वसूल लेती हैं: लूप में input() के बजाय sys.stdin से इनपुट पढ़िए, और हाथ से लिखे लूप के बजाय स्टैंडर्ड लाइब्रेरी इस्तेमाल कीजिए, क्योंकि लाइब्रेरी C में चलती है। अगर बड़े इनपुट के सामने तंग सीमा दिखे, तो यही संकेत है कि तेज़ भाषा चुन लीजिए — बशर्ते उसमें सहज हों: चलता हुआ C++ हल, 80% केस पर समय से बाहर होने वाले सुंदर Python हल से बेहतर है।

रिक्रूटर को असल में क्या मिलता है

असेसमेंट बंद होने पर नियोक्ता को सिर्फ़ एक संख्या नहीं, एक रिपोर्ट दिखती है: हर समस्या पर आपका स्कोर, कौन-से टेस्ट केस पास हुए, कितना समय लगा, कब शुरू और कब ख़त्म किया, पिछली कोशिशों समेत सबमिशन इतिहास, और — अगर प्रॉक्टरिंग चालू थी — फ़ोकस बदलने का लॉग। कुछ प्लान में यह रीप्ले भी शामिल होता है कि कोड कैसे लिखा गया।

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

अगर बुरा जाए: दोबारा मौक़ा और फिर से आवेदन

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

ज़्यादातर कंपनियाँ दोबारा आवेदन से पहले एक प्रतीक्षा अवधि रखती हैं, आमतौर पर छह से बारह महीने। यह इतना लंबा है कि इस कोशिश को फ़ैसला नहीं, अभ्यास मानना ज़्यादा स्वस्थ पढ़ाई है।

प्रॉक्टरिंग और समानता जाँच, ईमानदारी से

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

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

उस दिन के लिए चेकलिस्ट

  • पक्का कीजिए कि कौन-सा फ़ॉर्मैट मिला है और उसकी अवधि क्या है।
  • CodePair हो तो तार वाले हेडफ़ोन और शांत कमरा; दोनों हाल में स्थिर कनेक्शन।
  • कुछ भी लिखने से पहले सारी समस्याएँ पढ़िए।
  • चलना सुंदर होने से बेहतर है — पहले कुछ पास कराइए, फिर सुधारिए।
  • हर सबमिट से पहले: ख़ाली इनपुट, एक तत्व, डुप्लिकेट, बहुत बड़ा इनपुट।
  • CodePair में बोलते रहिए; असेसमेंट में घड़ी पर नज़र रखिए।

FAQ

HackerRank Test और CodePair में क्या फ़र्क़ है?

Test (या Assessment) स्वचालित राउंड है: आप अकेले घड़ी और छिपे टेस्ट केस के ख़िलाफ़ कोड करते हैं, कोई देख नहीं रहा होता। CodePair लाइव राउंड है: कॉल पर इंटरव्यूअर के साथ साझा एडिटर, आमतौर पर पैंतालीस से साठ मिनट। निमंत्रण ही बता देता है — अवधि और कई दिनों की खिड़की वाला लिंक स्वचालित टेस्ट है; तय समय का कैलेंडर निमंत्रण CodePair है।

क्या HackerRank आंशिक अंक देता है?

हाँ। हर समस्या पर आपका स्कोर पास हुए छिपे टेस्ट केस का अनुपात है, इसलिए ब्रूट-फ़ोर्स हल जो छोटे केस निकाल ले और बड़ों पर समय से बाहर हो जाए, फिर भी अंक पाता है। कुछ चलता हुआ भेजना, इष्टतम तरीक़ा ढूँढते हुए एडिटर ख़ाली छोड़ने से बेहतर है।

क्या HackerRank टैब बदलना या कॉपी किया कोड पकड़ता है?

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

HackerRank असेसमेंट कितनी देर का होता है?

आमतौर पर दो से चार समस्याओं के लिए साठ से नब्बे मिनट, और पूरे टेस्ट पर एक ही घड़ी। घड़ी साझा होने की वजह से हर समस्या का समय पहले से बाँट लीजिए — ज़्यादातर गँवाए अंक एक सवाल पर ज़रूरत से ज़्यादा ख़र्च करने से आते हैं, उसे हल न कर पाने से नहीं।

मेरा हल नमूने पास करता है पर छिपे टेस्ट फेल क्यों करता है?

नमूने सिर्फ़ इनपुट का रूप दिखाते हैं। छिपा सेट जानबूझकर सीमाएँ टटोलता है: ख़ाली इनपुट, एक तत्व, सारे मान बराबर, पहले से सॉर्टेड इनपुट, बाध्यताओं की अधिकतम सीमा, और इंटीजर सीमा के पास के मान। हर सबमिट से पहले इन छह को हाथ से जाँचिए।

क्या मैं HackerRank असेसमेंट दोबारा दे सकता हूँ?

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

क्या भाषा चुनने से समय-सीमा पर असर पड़ता है?

पड़ सकता है। सीमा हर समस्या पर तय होती है और व्याख्यायित भाषाओं के लिए हमेशा नहीं बढ़ाई जाती, इसलिए वही एल्गोरिद्म C++ या Java में पास हो सकता है और Python में सिर्फ़ स्थिरांक गुणकों की वजह से समय से बाहर। sys.stdin से इनपुट पढ़ना और स्टैंडर्ड लाइब्रेरी पर टिकना, दोनों मदद करते हैं।

यहाँ ऐप कैसे मदद करता है

आगे पढ़ें