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

आधुनिक Java में आप records, sealed types और pattern matching का इस्तेमाल कैसे करते हैं?

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

छोटा जवाब

Records पारदर्शी immutable carriers हैं: आप components घोषित करते हैं और बदले में canonical constructor, accessors, equals, hashCode और toString मिल जाते हैं। Sealed interfaces तय कर देते हैं कि कौन से types उन्हें implement कर सकते हैं, इसलिए उन types पर चलने वाला switch compile time पर बिना default branch के exhaustive जांचा जा सकता है। फिर record patterns switch के भीतर ही destructure करने देते हैं, जिससे instanceof casts की लंबी चेन एक पढ़ने लायक statement बन जाती है।

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

इससे आपकी Java जानकारी की तारीख तुरंत पता चल जाती है और यह भी कि आप डेटा को सोच समझकर मॉडल करते हैं या नहीं। इंटरव्यूअर सुनना चाहते हैं कि sealed और records मिलकर algebraic data types देते हैं, कि exhaustive switch में नया subtype runtime का झटका नहीं, compile error बनता है, और यह कि record सिर्फ छोटी class नहीं है: वह एक बयान है कि यह value एक पारदर्शी aggregate है।

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

  • हर फीचर को एक लाइन में परिभाषित करें और बताएं कि ये मिलकर कैसे काम करते हैं।
  • exhaustiveness समझाएं और बताएं कि default का न होना ही असली बात है।
  • मॉडलिंग का असली उदाहरण दें, जैसे कोई result या event type।
  • सीमाएं बताएं: records shallow रूप से immutable हैं और entities के लिए नहीं हैं।

उदाहरण जवाब

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

मैं इन्हें साथ में इस्तेमाल करता हूं। एक sealed interface मामलों का बंद सेट घोषित करता है, हर मामला अपने components वाला एक record होता है, और फिर record patterns वाला switch उन्हें संभालता है। तो payment का नतीजा एक sealed interface बन जाता है जिसमें Approved, Declined और Pending records हैं, और switch हर एक को सीधे उसकी fields में destructure कर देता है। compiler exhaustiveness लागू करता है, और असली फायदा यही है: जब कोई चौथा मामला जोड़ता है, तो उस type को संभालने वाला हर switch compile होने से मना कर देता है, बजाय चुपचाप default branch में गिरकर गलत काम करने के। Records ने मुझे सही equals और hashCode मुफ्त में दिए, और compact constructor validate करने की सहज जगह है, तो किसी भी मौजूद instance पर amount नेगेटिव हो ही नहीं सकता। जो चेतावनियां मैं देता हूं वे ये हैं कि record सिर्फ shallow रूप से immutable है, यानी list रखने वाला record उस list के जरिए अब भी बदला जा सकता है जब तक मैं constructor में उसकी कॉपी न बनाऊं, और यह कि ये JPA entities के लिए ठीक नहीं बैठते, जिन्हें बिना argument वाला constructor और mutable state चाहिए।

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

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

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

  • पूरा constructor लिखे बिना आप record के भीतर validate कैसे करते हैं?
  • record की जगह आप आम class कब भी लिखेंगे?
  • sealed hierarchy आपको वह क्या देती है जो enum नहीं देता?

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

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

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

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

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

GhostPilot पाएं