बैकएंड डेवलपर इंटरव्यू सवाल

हर दो दिन में एक service मेमोरी खत्म हो जाने पर मार दी जाती है। आप जांच कैसे करेंगे?

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

छोटा जवाब

पहले metrics से पैटर्न की पुष्टि करें: लगातार बढ़त leak या बिना सीमा वाले cache की तरफ इशारा करती है, जबकि तीखा उछाल किसी एक request के एक साथ बहुत कुछ लोड करने की तरफ। बढ़त वाले दौर से पहले और बाद में heap profile लें और retained allocations की तुलना करें। आम वजहें हैं बिना eviction वाले caches, लंबी उम्र वाले objects से जुड़े बढ़ते collections, बिना बंद किए गए resources, और ऐसे endpoints जो पूरा result set मेमोरी में उठा लेते हैं।

इंटरव्यूअर यह क्यों पूछते हैं

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

अपना जवाब कैसे स्ट्रक्चर करें

  • metrics से लगातार बढ़त और उछाल वाले allocation को अलग करें।
  • बढ़त की खिड़की के आर पार heap profiles लें और तुलना करें।
  • आम वजहें गिनाएं और हाल के बदलाव जांचें।
  • एक guardrail लगाएं ताकि यह चुपचाप दोबारा न हो सके।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

ग्राफ का आकार ही बता देता है कि कहां देखना है। कई दिनों में धीमी चढ़ाई जो शांत दौर में भी नहीं गिरती, वह leak है या बिना सीमा वाला cache। जो आरी जैसा ग्राफ खास requests पर उछलता है, उसका मतलब है कुछ एक साथ बहुत ज़्यादा लोड कर रहा है। पहले वाले मामले में मैं मिलते जुलते ट्रैफ़िक पर कुछ घंटों के अंतर से heap profiles लेता हूं और retained size से उनका फर्क निकालता हूं, फिर देखता हूं कि सबसे बड़े objects को कौन पकड़े हुए है। व्यवहार में वजह आमतौर पर कोई नीरस सी बात निकली है: cache की तरह इस्तेमाल हो रहा एक map जिसमें न eviction है न कोई अधिकतम, कोई metrics label जो यूज़र के दिए गए मान से बनता था इसलिए cardinality हमेशा बढ़ती रही, या किसी लंबी उम्र वाले object पर रजिस्टर किए गए listeners जो कभी हटाए नहीं गए। उछाल के लिए मैं ऐसे endpoints ढूंढता हूं जो streaming की जगह पूरी टेबल एक list में पढ़ लेते हैं, या ऐसा batch job जो लिखने से पहले हर row लोड कर लेता है। ठीक यही मुझे एक CSV export में मिला था जो दस लाख rows मेमोरी में उतार रहा था; उसे पेजों में stream करने से मेमोरी सपाट हो गई। बाद में मैं सिर्फ crash पर नहीं, memory के रुझान पर alert लगाता हूं, ताकि restart से पहले मुझे खबर हो जाए।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • यह leak है या बस एक बड़ा working set, यह आप कैसे तय करेंगे?
  • बिना सीमा वाला cache दोबारा न बढ़े, इसके लिए आप किस पर हद लगाएंगे?
  • garbage collector की settings यहां आपके दिखने वाले नतीजे कैसे बदल देती हैं?

बैकएंड डेवलपर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं