पहले यह देखिए कि इनपुट बढ़ने पर रनटाइम कैसे बढ़ता है, फिर constants और छोटे टर्म हटा दीजिए। कोड की बनावट पढ़िए: एक के बाद एक चलने वाले ब्लॉक जुड़ते हैं, nested loops गुणा होते हैं, और recursive calls अपनी recurrence के हिसाब से चलती हैं। स्पेस वह अतिरिक्त मेमोरी है जो आप इनपुट के अलावा लेते हैं, जिसमें call stack भी शामिल है। डिफॉल्ट रूप से worst case बताइए, और average case अलग से बताइए अगर दोनों में सच में फर्क हो।
इंटरव्यूअर यह क्यों पूछते हैं
कॉम्प्लेक्सिटी एनालिसिस परफॉर्मेंस की साझा भाषा है, इसलिए इंटरव्यूअर देखना चाहता है कि आप कोड लिखने से पहले स्केल के बारे में सोच सकते हैं, प्रोडक्शन में प्रोफाइलिंग करने के बाद नहीं। वे यह जांच रहे हैं कि आप growth rate को micro optimization से अलग रखते हैं, टाइम के साथ स्पेस भी याद रखते हैं, और loop के अंदर sorting या हर iteration में list कॉपी करने जैसी छिपी हुई लागत पकड़ लेते हैं।
अपना जवाब कैसे स्ट्रक्चर करें
- इनपुट का नाम लीजिए और बताइए कि n असल में किस चीज को नापता है।
- कोड को ऊपर से नीचे पढ़िए, क्रम वाला काम जोड़िए और nested काम गुणा कीजिए।
- टाइम और स्पेस अलग अलग बताइए, constants हटाकर।
- worst case बताइए और वह इनपुट भी जो उसे ट्रिगर करता है।
उदाहरण जवाब
मैं सबसे पहले n तय करता हूं, क्योंकि ऐसी बातचीत में आधी उलझन इसी से आती है कि दो लोग अलग अलग चीजें नाप रहे होते हैं। उसके बाद मैं कोड को बनावट के हिसाब से पढ़ता हूं। क्रम में चलने वाले ब्लॉक जुड़ते हैं, तो सबसे बड़ा वाला जीतता है; nested loops गुणा होते हैं; और recursive call एक recurrence बन जाती है जिसे मैं या तो खोल सकता हूं या पहचान सकता हूं। स्पेस के लिए मैं वह सब गिनता हूं जो इनपुट के अलावा allocate होता है, और call stack हमेशा शामिल करता हूं, जिसे recursion में लोग अक्सर भूल जाते हैं। एक ठोस उदाहरण: मेरे पास एक फंक्शन था जो linear लग रहा था क्योंकि वह orders की एक list पर सिर्फ एक loop था, लेकिन उसके अंदर हम एक helper बुला रहे थे जो list में id से record ढूंढता था। वह lookup linear थी, तो असली लागत quadratic निकली, और यह तभी सामने आई जब एक कस्टमर के करीब चालीस हजार orders हो गए। हमने list की जगह id वाली dictionary रख दी और endpoint लगभग नौ सेकंड से घटकर दो सौ मिलीसेकंड के अंदर आ गया। तो मेरा नियम यही है कि हर call के अंदर झांको, सिर्फ दिखने वाले loops तक मत रुको।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- अगर इनपुट पहले से sorted हो तो कॉम्प्लेक्सिटी क्या होगी?
- dynamic array के लिए amortized analysis आपका जवाब कैसे बदल देगी?
- आप बेहतर real world constant के लिए खराब big O कब मंजूर करेंगे?
सॉफ्टवेयर इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें