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

समझाइए कि HashMap अंदर से कैसे काम करता है, और भरने के साथ उसमें क्या होता है।

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

छोटा जवाब

HashMap के पास buckets की एक array होती है। key का hash उसके ऊपरी bits मिलाकर फैलाया जाता है, फिर index उस hash को table की लंबाई से mask करके निकलता है, और वह लंबाई हमेशा दो की घात होती है। टकराव एक bucket में linked list बनाते हैं, और कम से कम चौंसठ के table में जिस bin में आठ या ज्यादा entries हों वह red black tree में बदल जाता है। 0.75 के load factor के बाद table दोगुना होता है और entries दोबारा hash होती हैं।

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

इंटरव्यूअर देखना चाहते हैं कि जिस डेटा स्ट्रक्चर को आप हर क्लास में इस्तेमाल करते हैं उसे समझते भी हैं, या बस यह रटा है कि वह तेज है। treeification और resize की बारीकियां बताती हैं कि जानकारी ताजा है, क्योंकि Java 8 में implementation बदली थी। इससे यह भी निकलता है कि keys immutable क्यों होनी चाहिए, खराब hash परफॉर्मेंस क्यों गिराता है, और कनकरेंट writes में HashMap असुरक्षित क्यों है।

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

  • bucket array और index कैसे निकलता है, यह बताएं।
  • टकराव संभालना और list से tree में बदलाव समझाएं।
  • load factor, resizing और rehashing की लागत कवर करें।
  • key design और thread safety पर व्यावहारिक नतीजे निकालें।

उदाहरण जवाब

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

अंदर से यह bins की एक array है। key का hashCode ऊपरी bits को नीचे exclusive or करके फैलाया जाता है, और यह इसलिए मायने रखता है क्योंकि index बस hash को table length माइनस एक से mask करके निकलता है, तो बिना उस mixing के सिर्फ निचले bits ही काम आते। टकराने वाली entries उसी bin में chain बनाती हैं, और Java 8 से जो bin आठ entries से आगे बढ़ जाए, बशर्ते table कम से कम चौंसठ का हो, वह red black tree बन जाता है ताकि worst case lookup linear की जगह logarithmic रहे। यह hash collision denial of service हमलों का जवाब था। बढ़त load factor से चलती है, तो 0.75 भरने पर table दोगुना होता है और सब कुछ फिर से बंटता है, इसीलिए अगर मुझे पता है कि इसमें दस लाख entries आएंगी तो पहले से size देना मायने रखता है। व्यावहारिक नतीजे जिनकी मुझे परवाह है: keys immutable होनी चाहिए, खराब hashCode सब कुछ एक ही bin में गिरा देता है, और कनकरेंट writes table को खराब कर सकती हैं, इसलिए साझा maps के लिए बाहरी locking नहीं, ConcurrentHashMap लेता हूं।

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

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

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

  • table का साइज हमेशा दो की घात क्यों होता है?
  • कनकरेंट writes की इजाजत देने के लिए ConcurrentHashMap अलग क्या करता है?
  • आप LinkedHashMap या TreeMap कब पसंद करेंगे?

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

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

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

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

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

GhostPilot पाएं