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

checked और unchecked exception के बीच आप कैसे तय करते हैं, और किसी service में exceptions कैसे संभालते हैं?

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

छोटा जवाब

checked exception तभी लें जब caller सच में उबर सकता हो और आप चाहते हों कि compiler उसे फैसला लेने पर मजबूर करे; programming errors और ऐसी नाकामियों के लिए unchecked लें जिन्हें ऊपर कोई ठीक नहीं कर सकता। व्यवहार में ज्यादातर आधुनिक Java कोड unchecked की तरफ झुकता है, जहां निचले स्तर की नाकामियों को संदर्भ रखने वाले domain exception में लपेटा जाता है और किसी एक boundary पर संभाला जाता है, जैसे कोई exception handler जो उसे response में बदल दे।

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

इंटरव्यूअर समझदारी टटोल रहे हैं और उन आदतों को भी जो codebase बर्बाद कर देती हैं: Exception पकड़कर लॉग कर देना, exception को खाली block में निगल जाना, या हर चीज को बिना संदर्भ के RuntimeException में लपेट देना। वे translation की एक ही परत के बारे में भी सुनना चाहते हैं, क्योंकि business logic में जगह जगह try catch बिखेरना ही नाकामियों को अनट्रेसेबल बनाता है। Lambdas और streams के साथ checked exceptions सचमुच बेढंगे हो जाते हैं, और इसका जिक्र करना बनता है।

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

  • दोनों में चुनने के लिए recoverability वाली कसौटी दें।
  • कच्चे causes को दोबारा फेंकने की जगह संदर्भ के साथ wrapping समझाएं।
  • हर जगह नहीं, किसी एक boundary layer पर handling बताएं।
  • वे एंटीपैटर्न गिनाएं जिन्हें आप review में मंजूर नहीं करते।

उदाहरण जवाब

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

मेरी कसौटी यह है कि caller इसके बारे में कुछ काम की चीज कर सकता है या नहीं। provider का payment decline करना एक जायज business नतीजा है, तो वह या तो checked exception है या, अक्सर, एक result type। null argument या फेल हुआ डेटाबेस connection ऐसी चीज नहीं जिसे calling कोड ठीक कर सके, इसलिए वह unchecked है। services में मैं ज्यादातर unchecked domain exceptions लेता हूं, अंदरूनी cause को लपेटता हूं ताकि stack trace बची रहे, और वे identifiers जोड़ता हूं जो मुझे लॉग में चाहिए होंगे, जैसे order id, क्योंकि तीन परत नीचे का सूखा SQL exception मुझे कुछ नहीं बताता। Handling एक ही बार होती है, किसी boundary पर: Spring में वह exception handler है जो हर domain exception को एक status code और response body में मैप करता है, ताकि controllers साफ रहें। Review में मैं जिन चीजों पर अड़ता हूं वे हैं Exception को चौड़े तौर पर पकड़ना, पकड़कर लॉग करके ऐसे चलते रहना जैसे कुछ हुआ ही न हो, और खाली catch blocks। मैं finally blocks की जगह हर जगह try with resources भी इस्तेमाल करता हूं, क्योंकि suppressed exceptions और close की नाकामियां वहां अपने आप सही ढंग से संभल जाती हैं।

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

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

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

  • stream lambda के अंदर checked exception से आप कैसे निपटते हैं?
  • throw करने की जगह आप result type कब लौटाएंगे?
  • exception के साथ आप कौन सा संदर्भ जोड़ते हैं ताकि वह लॉग में काम आए?

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

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

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

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

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

GhostPilot पाएं