Home › Hindi › Debugging interview questions
Python debugging interview questions Hindi में — 12 सवाल और model answers
🌐 यह page Hindi में है · Read this in English →
12 सवाल + model answersFresher से 2-साल experience तकहर सवाल के साथ practice
Interviewer असल में क्या देख रहा है
Debugging round में सवाल का मकसद यह नहीं कि आपको हर error का नाम याद है या नहीं। Interviewer देखता है: आप crash को एक तरीके से छोटा करते हो या अंदाज़े लगाते हो। इसलिए जवाब हमेशा एक process की तरह दो — "पहले traceback की आखिरी line पढ़ूँगा, फिर अपनी file वाली सबसे नीचे की line देखूँगा, फिर वहाँ values print करूँगा" — न कि सिर्फ "try/except लगा दूँगा"।
Q1–Q4: Basics जो हर fresher से पूछे जाते हैं
Q1. Traceback कैसे पढ़ते हो?
नीचे से ऊपर। सबसे आखिरी line error का type और message देती है, उसके ऊपर वाला block crash की file और line, और बाकी blocks call stack — यानी program वहाँ तक कैसे पहुँचा। Library-भरे traceback में मैं सबसे नीचे वाली अपनी file की line ढूँढता हूँ।
Q2. Syntax error और runtime error में फर्क?
Syntax error code चलने से पहले पकड़ा जाता है — एक भी line नहीं चलती (colon/bracket/quote की galti)। Runtime error चलते-चलते आता है (NameError, TypeError, ZeroDivisionError)। तीसरी किस्म logical error है — code चलता भी है, crash भी नहीं होता, पर जवाब गलत आता है। यह सबसे खतरनाक है क्योंकि इसे सिर्फ testing पकड़ती है।
Q3. is और == में फर्क?== values की तुलना करता है, is देखता है कि दोनों नाम एक ही object की तरफ इशारा कर रहे हैं या नहीं। None के लिए हमेशा if x is None लिखना चाहिए। छोटे integers और short strings पर is कभी-कभी True दे देता है (Python उन्हें cache करता है) — इसी भरोसे code लिखना bug है।
Q4. Program चल रहा है पर output गलत है — क्या करोगे?
Input को छोटा करूँगा जब तक सबसे छोटा failing case न मिले, फिर बीच की values print करके expected से मिलाऊँगा। Binary search वाला तरीका: बीच में एक print लगाओ — वहाँ तक सही है तो bug नीचे है, गलत है तो ऊपर।
Q5–Q8: Code दिखाकर पूछे जाने वाले सवाल
Q5. इस function में bug क्या है?
def add_item(item, items=[]):
items.append(item)
return items
Mutable default argument। Default list सिर्फ एक बार, function define होते वक्त बनती है — इसलिए हर call में वही list भरती जाती है। Fix: items=None रखो और अंदर if items is None: items = []।
Q6. यह list क्यों नहीं sort हुई?
nums = nums.sort()
sort() जगह पर sort करके None लौटाता है, इसलिए nums अब None है। या तो सिर्फ nums.sort() लिखो, या nums = sorted(nums)।
Q7. Loop के अंदर list बदलने पर क्या होता है?
for n in nums:
if n < 0:
nums.remove(n) # ⚠️ कुछ items skip हो जाएँगे
Loop internally index पर चलता है; item हटते ही बाकी items एक जगह पीछे खिसक जाते हैं, इसलिए अगला item छूट जाता है। Fix: नई list बनाओ — nums = [n for n in nums if n >= 0]। Dictionary पर loop चलाते हुए key add/delete करने पर तो Python सीधा RuntimeError: dictionary changed size during iteration देता है।
Q8. Shallow copy और deep copy में फर्क?a.copy() ऊपरी level की copy बनाता है, पर अंदर की nested lists अभी भी share होती हैं — इसलिए nested item बदलने पर दोनों में दिखता है। पूरी अलग copy चाहिए तो copy.deepcopy(a)।
Q9–Q12: थोड़े senior-level सवाल
Q9. except: अकेला क्यों नहीं लिखना चाहिए?
वह हर चीज़ पकड़ लेता है — KeyboardInterrupt और आपके अपने programming bugs (typo से आया NameError) भी। इससे bug चुपचाप छुप जाता है और debugging नामुमकिन हो जाती है। हमेशा specific लिखो: except ValueError:, और सबसे ज़्यादा-से-ज़्यादा except Exception as e: के साथ log करो।
Q10. try/except/else/finally में else और finally कब चलते हैं?else तब चलता है जब try में कोई exception आया ही नहीं। finally हर हाल में चलता है — exception आए या न आए, यहाँ तक कि return के बाद भी। इसलिए file बंद करने या connection छोड़ने का काम finally में रखते हैं (या with इस्तेमाल करते हैं)।
Q11. Production में bug कैसे पकड़ते हो जहाँ print नहीं लगा सकते?logging module से — levels (DEBUG/INFO/ERROR) के साथ, और exception पर logger.exception() जो पूरा traceback log करता है। print के बजाय logging इसलिए क्योंकि उसे बिना code बदले on/off किया जा सकता है।
Q12. Debugger में कौन से commands इस्तेमाल करते हो?breakpoint() लगाकर program रोकता हूँ, फिर n (next line), s (function के अंदर जाओ), p variable (value देखो), c (आगे चलाओ), q (बाहर)। Loop वाले bug में condition के साथ रोकना सबसे काम आता है।
Interview में debugging सवाल का जवाब देने का ढाँचा
1. Error को ज़ोर से पढ़ो — "यह ZeroDivisionError है, यानी कहीं denominator 0 हुआ।"
2. जगह बताओ — "traceback के हिसाब से crash line 5 पर है, पर असली galti line 9 वाले caller में लगती है।"
3. Hypothesis बोलो — "मेरा अंदाज़ा है कि marks list खाली है।"
4. जाँचने का तरीका बताओ — "मैं print(f'{marks=}') लगाकर पक्का करूँगा।"
5. Fix + बचाव — "guard clause लगाऊँगा और खाली list वाला test case जोड़ूँगा ताकि दोबारा न हो।"
यह पाँच-step जवाब हर debugging सवाल में काम करता है, और interviewer को यही सुनना होता है।
🛠️ Practice करो (free, browser में)
पढ़ना काफी नहीं — यही bug खुद fix करके देखो। नीचे के problems browser में ही चलते हैं, कोई install नहीं, कोई login नहीं।
- Mutable default argument trap — Q5 वाला सवाल खुद fix करो
- sort() ने None लौटा दिया — Q6 का practical
- Copy बनाम reference — Q8 की नींव
अक्सर पूछे जाने वाले सवाल
Python debugging interview में सबसे ज़्यादा क्या पूछा जाता है?
traceback पढ़ने का तरीका, syntax बनाम runtime बनाम logical error का फर्क, is बनाम ==, mutable default argument, sort() बनाम sorted(), loop के दौरान list/dict बदलना, और try/except/else/finally का flow।
debugging सवाल का जवाब कैसे दें?
process बताएँ, सिर्फ fix नहीं — error पढ़ें, crash की जगह बताएँ, एक hypothesis रखें, उसे print या debugger से जाँचने का तरीका बताएँ, फिर fix के साथ एक test case जोड़ने की बात करें।
except: अकेला लिखना गलत क्यों है?
क्योंकि वह KeyboardInterrupt और आपके अपने typo जैसे bugs समेत सब कुछ पकड़ लेता है, जिससे असली galti छुप जाती है। हमेशा specific exception पकड़ें, जैसे except ValueError।
fresher के लिए debugging practice कैसे करें?
रोज़ 2–3 broken programs fix करें। PyDebug पर हर problem एक असली bug है जो browser में ही चलता है — पहले traceback पढ़ें, फिर बिना hint fix करने की कोशिश करें।