कोटलिन इंटरव्यू कैसे पास करें: शीर्ष प्रश्न
Kotlin ने एंड्रॉइड डेवलपमेंट के लिए मुख्य भाषा के रूप में अपनी जगह पक्की कर ली है और बैकएंड (Ktor, Spring Boot) में सक्रिय रूप से उपयोग किया जाता है। Kotlin डेवलपर पद के लिए इंटरव्यू केवल सिंटैक्स की जांच नहीं है, बल्कि भाषा के दर्शन की समझ की भी जांच है: null safety, coroutines, functional approach। इस लेख में, हमने इंटरव्यू में पूछे जाने वाले सबसे सामान्य प्रश्नों को कोड उदाहरणों और स्पष्टीकरणों के साथ विस्तार से समझाया है।
1. Null Safety: Kotlin NullPointerException से कैसे लड़ता है
Kotlin के मुख्य लाभों में से एक null के खिलाफ अंतर्निहित सुरक्षा है। Java के विपरीत, जहां कोई भी रेफरेंस null हो सकता है, Kotlin में प्रकार nullable और non-null में विभाजित होते हैं।
प्रश्न: ? और !! में क्या अंतर है?
? — सुरक्षित कॉल ऑपरेटर है। यदि ऑब्जेक्ट null है, तो मेथड या प्रॉपर्टी का कॉल बिना किसी अपवाद के केवल null लौटाता है।
val name: String? = nullval length = name?.length // null, कोई त्रुटि नहीं!! — non-null assertion है। आप गारंटी देते हैं कि मान null नहीं है। यदि यह null है — तो NullPointerException फेंकता है।
val length = name!!.length // NPE जब name == nullप्रश्न: एल्विस ऑपरेटर ?: क्या है?
यदि बाईं ओर null है तो डिफ़ॉल्ट मान सेट करने की अनुमति देता है।
val name: String? = nullval display = name ?: "अतिथि"प्रश्न: nullable प्रकारों के साथ let कैसे काम करता है?
let केवल तभी निष्पादित होता है जब ऑब्जेक्ट null न हो। यह nullable को संभालने का एक idiomatic तरीका है।
name?.let { println("नाम: $it")}2. कोरूटीन्स: बिना दर्द के एसिंक्रोनसी
कोरूटीन्स हल्के थ्रेड हैं जो आपको इम्पेरेटिव स्टाइल में एसिंक्रोनस कोड लिखने की अनुमति देते हैं। इंटरव्यू में scopes, dispatchers और suspend-functions की समझ की जांच की जाती है।
प्रश्न: launch, async से कैसे अलग है?
launch— कोरूटीन शुरू करता है, Job लौटाता है। कोई परिणाम नहीं लौटाता।async— कोरूटीन शुरू करता है, Deferred (Future का एनालॉग) लौटाता है। परिणाम.await()के माध्यम से प्राप्त होता है।
coroutineScope { val job = launch { delay(100) } val deferred = async { 42 } val result = deferred.await() // 42}प्रश्न: CoroutineContext और डिस्पैचर क्या हैं?
CoroutineContext — तत्वों का एक सेट है जो कोरूटीन के व्यवहार को परिभाषित करता है (डिस्पैचर, Job, नाम)। मुख्य डिस्पैचर:
Dispatchers.Main— UI के लिए (Android)।Dispatchers.IO— इनपुट-आउटपुट के लिए (नेटवर्क, फ़ाइलें)।Dispatchers.Default— CPU-गहन कार्यों के लिए।
प्रश्न: withContext क्या है?
स्कोप बदले बिना कोरूटीन के अंदर डिस्पैचर बदलने की अनुमति देता है।
suspend fun loadData(): String = withContext(Dispatchers.IO) { // लंबा ऑपरेशन "डेटा"}3. क्लासेस और ऑब्जेक्ट्स: sealed, data, companion
Kotlin कई विशेष प्रकार के क्लास प्रदान करता है जो सामान्य पैटर्न को सरल बनाते हैं।
प्रश्न: sealed class क्या है और इसका उपयोग कब करें?
Sealed class एक अमूर्त क्लास है जिसमें उपवर्गों का एक सीमित सेट होता है। सभी वंशज कंपाइलेशन के समय ज्ञात होते हैं। स्थितियों (UI State) या ऑपरेशन परिणामों का प्रतिनिधित्व करने के लिए आदर्श है।
sealed class Result { data class Success(val data: String) : Result() data class Error(val message: String) : Result() object Loading : Result()}
fun handleResult(result: Result) { when (result) { is Result.Success -> println(result.data) is Result.Error -> println(result.message) Result.Loading -> println("लोड हो रहा है...") }}else शाखा की आवश्यकता नहीं है — कंपाइलर सभी विकल्पों को जानता है।