Java इंटरव्यू कैसे पास करें: एडवांस्ड प्रश्न और उत्तर

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Java इंटरव्यू कैसे पास करें: एडवांस्ड लेवल के टॉप प्रश्न

\n\n

Senior Java Developer की पोजीशन के लिए इंटरव्यू सिर्फ सिंटैक्स की जांच नहीं है। इंटरव्यूअर यह देखना चाहते हैं कि आप JVM को अंदर से कैसे समझते हैं, मल्टीथ्रेडेड सिस्टम डिज़ाइन कर सकते हैं, और गार्बेज कलेक्शन की बारीकियों को जानते हैं। इस लेख में हम सबसे आम और कठिन सवालों को कवर करेंगे जो आपको टेक्निकल इंटरव्यू में आत्मविश्वास से पास होने में मदद करेंगे।

\n\n

1. मल्टीथ्रेडिंग और Java मेमोरी मॉडल (JMM)

\n

यह सबसे बड़े टॉपिक्स में से एक है। इंटरव्यूअर जांचते हैं कि क्या आप समझते हैं कि थ्रेड्स शेयर्ड मेमोरी के माध्यम से कैसे इंटरैक्ट करते हैं और क्या समस्याएं आ सकती हैं।

\n\n

सवाल: volatile और synchronized में क्या अंतर है?

\n

जवाब: volatile सभी थ्रेड्स के लिए वेरिएबल में बदलाव की दृश्यता (visibility) सुनिश्चित करता है, लेकिन एटॉमिसिटी (atomicity) नहीं देता। synchronized दोनों दृश्यता और एटॉमिसिटी (मॉनिटर को लॉक करके) सुनिश्चित करता है।

\n
// volatile का उपयोग उदाहरण\npublic class VolatileExample {\n    private volatile boolean running = true;\n\n    public void stop() {\n        running = false; // बदलाव तुरंत दूसरे थ्रेड्स को दिखता है\n    }\n\n    public void run() {\n        while (running) {\n            // कार्य करना\n        }\n    }\n}
\n\n

सवाल: JMM में happens-before क्या है?

\n

जवाब: यह एक आंशिक ऑर्डर संबंध है जो गारंटी देता है कि एक थ्रेड के कार्य दूसरे थ्रेड को दिखाई देंगे। उदाहरण के लिए, volatile वेरिएबल में लिखना उसी वेरिएबल को दूसरे थ्रेड द्वारा पढ़ने के साथ happens-before संबंध बनाता है। इसी तरह, synchronized ब्लॉक में प्रवेश/निकास पर भी happens-before होता है।

\n\n

सवाल: ConcurrentHashMap कैसे काम करता है?

\n

जवाब: Java 8+ में ConcurrentHashMap बकेट स्तर पर सेगमेंटेशन का उपयोग करता है। पूरी टेबल को लॉक करने के बजाय, केवल एक विशेष बकेट (कोलिज़न होने पर) लॉक की जाती है। रीड ऑपरेशन के लिए लॉकिंग का उपयोग नहीं किया जाता — volatile रीड का उपयोग होता है। उच्च प्रतिस्पर्धा पर, आंतरिक संरचनाएं पुनर्गठित हो सकती हैं (जैसे, लिस्ट के बजाय ट्री)।

\n
// ConcurrentHashMap का उदाहरण\nConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();\nmap.put("key", 1);\nInteger value = map.get("key"); // बिना रीड लॉक के
\n\n

2. गार्बेज कलेक्शन और GC ऑप्टिमाइज़ेशन

\n

Garbage Collector (GC) के बारे में सवाल Senior पोजीशन के लिए अनिवार्य हैं। आपको न केवल GC के प्रकार बल्कि लोड के अनुसार उन्हें कॉन्फ़िगर करना भी आना चाहिए।

\n\n

सवाल: HotSpot JVM में GC के मुख्य प्रकार कौन से हैं?

\n

जवाब: मुख्य कलेक्टर:

\n
    \n
  • Serial GC — सिंगल-थ्रेडेड, क्लाइंट एप्लिकेशन के लिए।
  • \n
  • Parallel GC (Throughput) — मल्टी-थ्रेडेड, थ्रूपुट पर केंद्रित।
  • \n
  • G1 GC (Garbage First) — Java 9 से डिफ़ॉल्ट, हीप को रीजन में बांटता है, पॉज़ को कम करता है।
  • \n
  • ZGC और Shenandoah — कम-लेटेंसी कलेक्टर, 10 ms से कम पॉज़ के साथ।
  • \n
\n\n

सवाल: Stop-The-World (STW) पॉज़ क्या है?

\n

जवाब: यह वह क्षण है जब एप्लिकेशन के सभी थ्रेड्स को रोक दिया जाता है ताकि GC अपना काम कर सके। लंबे STW पॉज़ रियल-टाइम सिस्टम के लिए गंभीर होते हैं। G1 GC समानांतर और इंक्रीमेंटल कलेक्शन करके इन्हें कम करने की कोशिश करता है।

\n\n

सवाल: Java में मेमोरी लीक कैसे पहचानें?

\n

जवाब: प्रोफाइलर (VisualVM, JProfiler) का उपयोग करें। heap dump की वृद्धि पर नज़र रखें। सामान्य लीक कारण: स्टैटिक कलेक्शन को खाली न करना, HashMap में गलत equals/hashCode इम्प्लीमेंटेशन, और अनरजिस्टर न किए गए लिसनर।

\n
// लीक का उदाहरण: स्टैटिक कलेक्शन\npublic class LeakExample {\n    private static List<byte[]> cache = new ArrayList<>();\n\n    public void addData() {\n        cache.add(new                

ब्लॉग

पुस्तक अनुशंसाएँ