कोटलिन साक्षात्कार कैसे पास करें: उदाहरणों के साथ शीर्ष प्रश्नों का विश्लेषण
Kotlin ने Android डेवलपमेंट और JVM पर बैकएंड के लिए आधुनिक भाषा के रूप में अपनी जगह मजबूती से बना ली है। यदि आप तकनीकी साक्षात्कार की तैयारी कर रहे हैं, तो केवल सिंटैक्स जानना ही नहीं, बल्कि भाषा के दर्शन को समझना भी महत्वपूर्ण है: सुरक्षा, संक्षिप्तता और Java के साथ संगतता। इस लेख में, हम कोटलिन साक्षात्कारों में सबसे अधिक पूछे जाने वाले प्रमुख प्रश्नों को वास्तविक कोड उदाहरणों के साथ विश्लेषित करेंगे।
1. Null Safety: Kotlin null समस्या को कैसे हल करता है
Kotlin की सबसे बड़ी ताकतों में से एक NullPointerException से अंतर्निहित सुरक्षा है। साक्षात्कार में आपसे nullable और non-null प्रकारों के बारे में जरूर पूछा जाएगा।
प्रश्न: String? और String में क्या अंतर है? nullable के साथ सुरक्षित रूप से कैसे काम करें?
उत्तर: String प्रकार गारंटी देता है कि वेरिएबल कभी null नहीं होगा। String? null की अनुमति देता है। सुरक्षित पहुंच के लिए ऑपरेटर ?., ?: (एल्विस) और !! (केवल तभी जब आप 100% आश्वस्त हों) का उपयोग किया जाता है।
fun main() { val name: String? = null // सुरक्षित कॉल println(name?.length) // null // डिफ़ॉल्ट मान val length = name?.length ?: 0 println(length) // 0 // जबरन निकालना (NPE का जोखिम) // println(name!!.length) // त्रुटि!}अतिरिक्त प्रश्न: lateinit और lazy क्या हैं?
lateinit— उन वेरिएबल के लिए जो बाद में इनिशियलाइज़ होते हैं (केवलvar)।lazy— प्रतिनिधि इनिशियलाइज़ेशन के लिए (केवलval)।
class User { lateinit var email: String val config by lazy { loadConfig() } fun init() { email = "test@example.com" }}2. कोरूटीन: बिना दर्द के एसिंक्रोनसी
कोरूटीन (coroutines) आधुनिक Kotlin के लिए अनिवार्य हैं। साक्षात्कारकर्ता suspend, launch, async और डिस्पैचर्स की समझ की जाँच करते हैं।
प्रश्न: launch और async में क्या अंतर है?
उत्तर: launch कोरूटीन शुरू करता है और Job लौटाता है (बिना परिणाम के)। async Deferred लौटाता है, जिससे await() के माध्यम से परिणाम प्राप्त किया जा सकता है।
suspend fun fetchData(): String { delay(1000) return "डेटा लोड हो गया"}
fun main() = runBlocking { // launch: बिना परिणाम के val job = launch { println("कार्य 1 पूरा हुआ") } // async: परिणाम के साथ val deferred = async { fetchData() } println(deferred.await()) // "डेटा लोड हो गया" job.join()}प्रश्न: आप कौन से डिस्पैचर (Dispatchers) जानते हैं?
Dispatchers.Main— UI के लिए (Android)।Dispatchers.IO— इनपुट-आउटपुट, नेटवर्क के लिए।Dispatchers.Default— CPU-गहन कार्यों के लिए।Dispatchers.Unconfined— किसी विशिष्ट थ्रेड से बंधा नहीं (शायद ही उपयोग होता है)।
3. Extension functions और Sealed class: संभावनाओं का विस्तार
Kotlin विरासत के बिना मौजूदा कक्षाओं में नए फंक्शन जोड़ने की अनुमति देता है। आर्किटेक्चर के संदर्भ में अक्सर इसके बारे में पूछा जाता है।
प्रश्न: extension functions क्या हैं? एक उदाहरण दें।
उत्तर: ये ऐसे फंक्शन हैं जो क्लास के बाहर घोषित किए जाते हैं, लेकिन इसके मेथड के रूप में कॉल किए जाते हैं। ये क्लास को नहीं बदलते, बल्कि केवल सिंटैक्टिक शुगर जोड़ते हैं।
// String के लिए Extension functionfun String.isEmail(): Boolean { return this.contains("@") && this.contains(".")}
fun main() { val email = "user@example.com" println(email.