काम और तकनीकी जानकारी से जुड़े सवाल
ब्राउज़र में URL डालकर Enter दबाने पर कदम-दर-कदम क्या होता है?
इंटरव्यूअर क्या परखता है: क्या आप DNS से लेकर पेज दिखने तक पूरा रास्ता समझते हैं, जिससे पता चले कि किसी धीमे पेज या बग की असली जगह आप ढूंढ पाएंगे।
सबसे पहले ब्राउज़र अपना cache देखता है, फिर DNS से डोमेन का IP पता निकालता है। इसके बाद सर्वर से TCP कनेक्शन बनता है और HTTPS हो तो TLS handshake से एन्क्रिप्शन तय होता है। फिर ब्राउज़र cookies के साथ GET रिक्वेस्ट भेजता है। सर्वर पर रूट चलता है और स्टेटस कोड के साथ HTML वापस आता है। ब्राउज़र उससे DOM बनाता है, CSS, स्क्रिप्ट और इमेज मंगाता है, लेआउट तय करता है और पेज स्क्रीन पर दिखाता है।
एक साधारण to-do ऐप के लिए आप REST API कैसे डिज़ाइन करेंगे?
इंटरव्यूअर क्या परखता है: क्या आप HTTP methods, resource URL और स्टेटस कोड सही इस्तेमाल करते हैं, और validation, लॉगिन व pagination के बारे में भी सोचते हैं।
मैं task को एक resource मानूंगा। GET /api/tasks लॉगिन किए यूज़र के सारे काम pagination के साथ लौटाएगा, POST नया task बनाकर 201 देगा, PATCH से title या स्थिति बदलेगी और DELETE पर 204 मिलेगा। गलत इनपुट पर 422 के साथ हर फ़ील्ड की गलती बताऊंगा, task न मिले तो 404 और किसी दूसरे यूज़र का task हो तो 403। हर रूट token से सुरक्षित होगा। जवाब का JSON ढांचा हर जगह एक जैसा रखूंगा, ताकि frontend गलतियों को एक ही जगह संभाल सके।
कोई फ़ीचर आपकी मशीन पर चलता है लेकिन production में टूट जाता है। आप कैसे डिबग करेंगे?
इंटरव्यूअर क्या परखता है: दबाव में आपका तरीका: अंदाज़े से fix डालने के बजाय logs पढ़ना, दोनों environment का फ़र्क़ ढूंढना और सुरक्षित तरीके से समस्या दोहराना।
मैं अंदाज़े से नहीं, सबूत से शुरू करता हूं। पहले error tracker और सर्वर logs में सही stack trace और समय देखता हूं। फिर लिखता हूं कि लोकल और production में क्या अलग है: environment variables, भाषा का version, डेटा, caching, फ़ाइल permissions और बाहरी सर्विस की keys। एक बार इमेज अपलोड सिर्फ़ लाइव सर्वर पर फेल हो रहा था, क्योंकि वहां अपलोड की सीमा कम थी। ज़रूरत हो तो staging पर वही सेटिंग लेकर समस्या दोहराता हूं, और fix के साथ एक टेस्ट या log जोड़ता हूं।
एक पेज खुलने में छह सेकंड लेता है। आप उसे तेज़ कैसे करेंगे?
इंटरव्यूअर क्या परखता है: क्या आप पहले नापते हैं कि समय कहां जा रहा है, फिर सबसे बड़े कारण पर काम करते हैं, न कि बिना जांचे सब कुछ बदल देते हैं।
पहले नापूंगा कि देरी कहां है। ब्राउज़र के Network टैब और Lighthouse से देखूंगा कि सर्वर का जवाब धीमा है या फ़ाइलें भारी हैं। अगर सर्वर धीमा है तो धीमी queries ढूंढूंगा, ज़रूरी index जोड़ूंगा, N+1 queries हटाऊंगा और बार-बार पढ़े जाने वाले डेटा को cache करूंगा। अगर फ़ाइलें भारी हैं तो इमेज को छोटा और WebP में करूंगा, lazy loading लगाऊंगा और बेकार JavaScript हटाऊंगा। हर बदलाव के बाद दोबारा नापूंगा, ताकि पता रहे कि किस कदम से कितना फ़र्क़ पड़ा।
आप वेब ऐप को SQL injection और XSS से कैसे बचाते हैं?
इंटरव्यूअर क्या परखता है: क्या सुरक्षा आपकी रोज़ की आदत है: यूज़र के इनपुट पर भरोसा न करना, parameterized queries और आउटपुट को सही तरह escape करना।
SQL injection से बचने के लिए मैं कभी यूज़र का इनपुट query में सीधे नहीं जोड़ता। हमेशा prepared statements या ORM के bindings इस्तेमाल करता हूं, और डेटाबेस यूज़र को सिर्फ़ उतनी अनुमति देता हूं जितनी ज़रूरी हो। XSS के लिए पेज पर दिखाने से पहले हर इनपुट escape करता हूं, जो ज़्यादातर template engine अपने आप करता है, और raw HTML तभी दिखाता हूं जब उसे साफ़ कर लिया गया हो। ऊपर से Content Security Policy और HttpOnly cookies लगाता हूं।
टीम में काम करते समय आप Git कैसे इस्तेमाल करते हैं?
इंटरव्यूअर क्या परखता है: क्या आप branch, pull request और code review के साथ सलीके से काम करते हैं, साफ़ commit लिखते हैं और conflict शांति से सुलझाते हैं।
हर काम के लिए main से अलग feature branch बनाता हूं और छोटे commit करता हूं जिनके संदेश बताते हैं कि क्या और क्यों बदला। काम पूरा होने पर pull request खोलता हूं, उसमें बदलाव और टेस्ट करने का तरीका लिखता हूं और review के कमेंट पर जवाब देता हूं। PR खोलने से पहले main की ताज़ा कॉपी लेकर conflict ख़ुद सुलझाता हूं। main पर सीधे push या force push नहीं करता, और कोई गलती हो जाए तो revert से सुधारता हूं।
अनुभव और व्यवहार से जुड़े सवाल
किसी ऐसे बग के बारे में बताइए जिसे ढूंढने में आपको बहुत समय लगा।
इंटरव्यूअर क्या परखता है: क्या आपके पास डिबग करने का व्यवस्थित तरीका है, आप धैर्य रखते हैं और उस अनुभव से कोई ठोस सीख निकालते हैं।
एक ऐप में कुछ यूज़र्स के ऑर्डर कभी-कभी दो बार बन जाते थे, और लोकल पर यह कभी नहीं होता था। दो दिन logs देखने के बाद पता चला कि धीमे नेटवर्क पर यूज़र बटन दो बार दबा रहे थे और दोनों रिक्वेस्ट सर्वर तक पहुंच रही थीं। मैंने बटन को क्लिक के बाद disable किया और सर्वर पर एक unique request key लगाई, ताकि वही ऑर्डर दोबारा न बने। तब से मैं हर पैसे वाले काम में यह जांच पहले से रखता हूं।
कोई ऐसा मौका बताइए जब आपसे production में कुछ टूट गया।
इंटरव्यूअर क्या परखता है: क्या आप गलती तुरंत मानते और बताते हैं, पहले असर कम करते हैं और फिर ऐसा इंतज़ाम करते हैं कि वह दोबारा न हो।
एक migration में मैंने एक कॉलम का नाम बदला, लेकिन पुराने कोड का एक हिस्सा अब भी पुराना नाम पढ़ रहा था। deploy के कुछ मिनट बाद checkout पेज पर error आने लगे। मैंने तुरंत टीम लीड को बताया, पिछला version rollback किया और सेवा ठीक हो गई। फिर मैंने बदलाव दो चरणों में किया: पहले नया कॉलम जोड़ा, कोड बदला, और बाद में पुराना कॉलम हटाया। उसके बाद टीम ने migration के लिए review checklist बनाई।
किसी non-technical क्लाइंट को technical समस्या समझाने का अनुभव बताइए।
इंटरव्यूअर क्या परखता है: क्या आप jargon छोड़कर कारोबार की भाषा में बात कर पाते हैं, ताकि क्लाइंट सही फ़ैसला ले सके।
एक दुकानदार क्लाइंट चाहते थे कि उनकी वेबसाइट पर एक दिन में पेमेंट गेटवे जुड़ जाए। मैंने उन्हें API या webhook जैसे शब्द नहीं बताए। मैंने कहा कि पेमेंट कंपनी को हमारे सर्वर से हर लेनदेन की पक्की जानकारी भेजनी होती है, और उसकी जांच न हो तो पैसा कटेगा लेकिन ऑर्डर नहीं बनेगा। फिर दो विकल्प रखे: जल्दी पर कम जांच वाला, या तीन दिन में पूरी तरह टेस्ट किया हुआ। उन्होंने दूसरा चुना।
HR round के सवाल
इस डेवलपर रोल के लिए आपकी सैलरी की उम्मीद क्या है?
इंटरव्यूअर क्या परखता है: क्या आपने अपने अनुभव, शहर और स्किल के हिसाब से रिसर्च की है और एक सोची-समझी रेंज बताते हैं, बिना ज़िद के।
मेरे पास React और Laravel में दो साल का अनुभव है और मैंने तीन फ़ीचर शुरू से लाइव किए हैं। मैंने इस शहर में इसी स्तर के रोल के लिए job portals और जानकार लोगों से रेंज समझी है, और मेरी उम्मीद उसी रेंज के बीच में है। मैं अपनी current salary slip दिखा सकता हूं। मेरे लिए सीखने का मौका, अच्छे code review और विकास का रास्ता भी उतने ही ज़रूरी हैं, इसलिए पूरा पैकेज देखकर बात करने के लिए तैयार हूं।
आपका notice period कितना है, और क्या आप जल्दी join कर सकते हैं?
इंटरव्यूअर क्या परखता है: क्या आप join करने की असली तारीख़ बताते हैं, अपनी मौजूदा टीम के प्रति ज़िम्मेदार रहते हैं और झूठे वादे नहीं करते।
मेरा notice period दो महीने का है। मैंने अपने मैनेजर से बात की है, और अगर मेरा अभी का काम समय पर किसी और को सौंप दिया जाए तो वे इसे कुछ हफ़्ते कम करने पर विचार कर सकते हैं। मैं अपने चल रहे मॉड्यूल का documentation और handover पूरा करके ही निकलूंगा, क्योंकि अधूरा काम छोड़ना ठीक नहीं होगा। offer मिलते ही मैं resignation दे दूंगा और आपको पक्की तारीख़ लिखकर बता दूंगा।
आप हमारी कंपनी में डेवलपर के रूप में क्यों आना चाहते हैं?
इंटरव्यूअर क्या परखता है: क्या आपने कंपनी के प्रोडक्ट और टेक्नोलॉजी के बारे में पढ़ा है और आपकी वजह आपके अपने काम से जुड़ी है, सिर्फ़ ब्रांड से नहीं।
मैंने आपका ऐप इस्तेमाल किया है और आपकी टीम के engineering blog पढ़े हैं। आप वही stack इस्तेमाल करते हैं जिसमें मैं काम करता हूं, और आपके यहां डेवलपर ख़ुद अपने फ़ीचर को production तक ले जाते हैं, जो मुझे पसंद है। अभी मेरी कंपनी में ज़्यादातर काम client के छोटे प्रोजेक्ट का है, जबकि मैं एक प्रोडक्ट को लंबे समय तक बेहतर बनाना चाहता हूं। मुझे लगता है कि यहां मैं performance और testing पर गहराई से काम कर सकूंगा।
पूरे सवाल अंग्रेज़ी में
अंग्रेज़ी पेज पर 20 सवाल, follow-up सवाल और fresher/experienced फ़िल्टर हैं।
इंटरव्यू की तैयारी के लिए टिप्स
- जिस framework का नाम Resume पर लिखा है, उसके बुनियादी सवाल ज़रूर दोहराएं, क्योंकि इंटरव्यूअर अक्सर वहीं से शुरू करते हैं।
- Take-home प्रोजेक्ट में README लिखें: कैसे चलाएं, कौन से फ़ैसले लिए और समय होता तो क्या बेहतर करते।
- Live coding में चुप न रहें। सोचते हुए बोलें, पहले आसान हल लिखें और फिर उसे बेहतर करें।
- अपने GitHub या लाइव प्रोजेक्ट का लिंक साथ रखें और उसके हर हिस्से पर सवाल के लिए तैयार रहें, ख़ासकर जो हिस्सा आपने ख़ुद लिखा।
जवाब बोलकर, घड़ी देखकर अभ्यास करें; हर जवाब एक-डेढ़ मिनट में पूरा हो। इसके लिए हमारा Interview Practice टूल (अंग्रेज़ी में) टाइमर के साथ इस्तेमाल कर सकते हैं। अपना काम दिखाने के लिए डेवलपर के लिए पर्सनल वेबसाइट भी बना सकते हैं।