कोटलिन साक्षात्कार कैसे पास करें: उन्नत स्तर के शीर्ष प्रश्न

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

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

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

कोटलिन साक्षात्कार कैसे पास करें: उन्नत स्तर के शीर्ष प्रश्न

\n\n

सीनियर Kotlin डेवलपर पद के लिए साक्षात्कार केवल सिंटैक्स की जांच नहीं है। साक्षात्कारकर्ता भाषा की वास्तुकला, संकलन की विशेषताओं और मल्टीथ्रेडिंग की गहरी समझ देखना चाहते हैं। इस लेख में, हम सबसे कठिन और अक्सर पूछे जाने वाले प्रश्नों का विश्लेषण करेंगे जो आपको तकनीकी साक्षात्कार को आत्मविश्वास से पास करने में मदद करेंगे। यह सामग्री उन डेवलपर्स के लिए है जिनके पास पहले से Kotlin और Java के साथ काम करने का अनुभव है।

\n\n

1. कोरूटीन: स्ट्रक्चर्ड कंकरेंसी और कार्यों को रद्द करना

\n\n

कोरूटीन Kotlin की सबसे मजबूत विशेषताओं में से एक हैं। एक उन्नत प्रश्न अक्सर स्ट्रक्चर्ड कंकरेंसी से संबंधित होता है। साक्षात्कारकर्ता पूछ सकता है: "यदि कोई चाइल्ड कोरूटीन एक अपवाद फेंकता है और पैरेंट इसे पकड़ नहीं पाता है तो क्या होगा?"

\n\n

उत्तर Job के पदानुक्रम में निहित है। यदि कोई चाइल्ड कोरूटीन (coroutineScope या launch के अंदर शुरू किया गया) अपवाद के साथ विफल होता है, तो यह पैरेंट तक पहुँचता है। पैरेंट कोरूटीन रद्द हो जाता है, और उसके सभी चाइल्ड कार्य भी रद्द हो जाते हैं। यह कोड को पूर्वानुमानित और सुरक्षित बनाता है।

\n\n

एक उदाहरण जो साक्षात्कार में दिखाना चाहिए:

\n\n
import kotlinx.coroutines.*\n\nfun main() = runBlocking {\n    try {\n        coroutineScope {\n            launch {\n                delay(100)\n                throw RuntimeException("चाइल्ड कोरूटीन में त्रुटि")\n            }\n            launch {\n                delay(200)\n                println("यदि पहला विफल होता है तो यह कोरूटीन निष्पादित नहीं होगा")\n            }\n        }\n    } catch (e: Exception) {\n        println("अपवाद पकड़ा गया: ${e.message}")\n    }\n    println("प्रोग्राम काम करना जारी रखता है")\n}\n
\n\n

एक और सामान्य प्रश्न है कोरूटीन को रद्द करना। कोरूटीन को सही तरीके से कैसे रद्द करें? Job.cancel() का उपयोग करें और लंबे संचालन के अंदर ensureActive() या isActive के माध्यम से स्थिति की जाँच करें।

\n\n

2. इनलाइन-फंक्शन और reified-प्रकार

\n\n

उन्नत डेवलपर्स को समझना चाहिए कि inline-फंक्शन क्यों आवश्यक हैं। प्रश्न इस प्रकार हो सकता है: "Kotlin बिना inline के reified-प्रकारों के उपयोग की अनुमति क्यों नहीं देता?"

\n\n

उत्तर: reified (मूर्त) प्रकार केवल inline-फंक्शन के अंदर काम करते हैं, क्योंकि ऐसे फंक्शन का कोड सीधे कॉल स्थान पर एम्बेड हो जाता है। कंपाइलर संकलन के समय विशिष्ट प्रकार को प्रतिस्थापित करता है, जो JVM में प्रकार मिटाने के कारण सामान्य generic-फंक्शन के लिए संभव नहीं है।

\n\n

एक उदाहरण जो reified की शक्ति दर्शाता है:

\n\n
inline fun <reified T> isInstance(value: Any): Boolean {\n    return value is T\n}\n\nfun main() {\n    println(isInstance<String>("Hello")) // true\n    println(isInstance<Int>("Hello"))    // false\n}\n
\n\n

साथ ही noinline और crossinline के बारे में पूछा जाएगा। noinline किसी विशेष लैम्ब्डा पैरामीटर के एम्बेडिंग को प्रतिबंधित करता है, जबकि crossinline लैम्ब्डा के अंदर return (गैर-स्थानीय रिटर्न) के उपयोग को प्रतिबंधित करता है।

\n\n

3. डेलिगेट: Delegates.observable, vetoable और कस्टम डेलिगेट

\n\n

डेलिगेट पर प्रश्न एक क्लासिक है। उन्नत स्तर का अर्थ न केवल बिल्ट-इन डेलिगेट (lazy, observable) का ज्ञान है, बल्कि अपने स्वयं के डेलिगेट लिखने की क्षमता भी है।

\n\n

उदाहरण: "एक डेलिगेट कैसे लागू करें जो प्रॉपर्टी के प्रत्येक परिवर्तन को लॉग करता है?"

\n\n
import kotlin.properties.ReadWriteProperty\nimport kotlin.reflect.KProperty\n\nclass LoggingDelegate<T>(private val initialValue: T) : ReadWriteProperty<Any?, T> {\n    private var value = initialValue\n\n    override fun getValue(thisRef: Any?, property: KProperty<*>): T {\n        println("${property.name} पढ़ना: $value")\n        return value\n    }\n\n    override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {\n        println("${property.name} लिखना: $value")\n        this.value = value\n    }\n}\n\nclass User {\n    var                

ब्लॉग

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