Java डेवलपर इंटरव्यू सवाल

आप garbage collector कैसे चुनते हैं, और ZGC के बारे में आप क्या जानते हैं?

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

छोटा जवाब

G1 डिफॉल्ट है और ज्यादातर services के लिए ठीक बैठता है: region आधारित, generational, और दसियों मिलीसेकंड का pause target सेट किया जा सकता है। ZGC तब चुनते हैं जब pause time ही सब कुछ तय करता हो, क्योंकि यह लगभग सारा काम concurrently करता है और बहुत बड़े heaps पर भी pauses एक मिलीसेकंड से नीचे रखता है; Java 23 से यह डिफॉल्ट रूप से generational है। जहां pauses मायने नहीं रखते, ऐसे batch jobs में सीधे throughput के लिए Parallel GC अब भी जीतता है।

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

इंटरव्यूअर जानना चाहते हैं कि आप latency बनाम throughput के ट्रेडऑफ पर सोच सकते हैं या किसी ब्लॉग पोस्ट से flags कॉपी करते हैं। मौजूदा defaults का नाम लेना बताता है कि आपकी जानकारी ताजा है। इससे यह ज्यादा जरूरी सवाल भी खुलता है कि आप collector tune करेंगे भी या नहीं, क्योंकि ज्यादातर garbage collection की दिक्कतें असल में application की allocation rate या heap sizing की दिक्कतें होती हैं।

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

  • इसे latency बनाम throughput और footprint के ट्रेडऑफ की तरह रखें।
  • डिफॉल्ट बताएं और कब उसे छेड़ने की जरूरत नहीं है।
  • बताएं कि ZGC अपनी कीमत कब वसूल करता है, और वह कीमत क्या है।
  • किसी भी flag को tune करने से पहले नापने पर जोर दें।

उदाहरण जवाब

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

मैं इसे छेड़े बिना शुरू करता हूं, क्योंकि सही heap size के साथ G1 ज्यादातर services संभाल लेता है, और वह पहले से ही throughput और आपके दिए pause goal के बीच संतुलन बनाता है। कुछ भी छूने से पहले मैं garbage collection logs देखता हूं: allocation rate, pauses का बंटवारा, कितना promote हो रहा है, और कहीं heap बहुत छोटा तो नहीं। ज्यादातर बार जो collector की दिक्कत लगती है वह असल में application का हद से ज्यादा allocate करना है, या heap इतना कसकर सेट होना कि collection लगातार चलता रहे। अगर सच में pauses मेरी tail latency चला रहे हों, जैसे बड़े heap वाली किसी trading या bidding service में, तो मैं ZGC पर जाता हूं, जो load barriers के साथ marking और relocation concurrently करता है और pauses एक मिलीसेकंड से काफी नीचे रखता है। Java 23 से यह generational है, जिसने वह throughput वाली मार ठीक कर दी जिसकी वजह से लोग इससे बचते थे। ट्रेडऑफ यह है कि उन barriers के लिए अतिरिक्त CPU और मेमोरी लगती है। रात में चलने वाले batch job के लिए मैं उल्टी दिशा में जाता हूं और Parallel लेता हूं, क्योंकि वहां दो सेकंड का pause बेमानी है और मुझे सीधा throughput चाहिए।

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

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

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

  • garbage collection log में आप सबसे पहले क्या देखेंगे?
  • G1 में humongous allocation क्या है, और वह क्यों चुभता है?
  • heap size, pause times और collection की बारंबारता को कैसे प्रभावित करता है?

Java डेवलपर के और सवाल

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

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

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

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

GhostPilot पाएं