कोटलिन साक्षात्कार कैसे पास करें: A से Z तक शीर्ष प्रश्न
\n\nकोटलिन साक्षात्कार केवल सिंटैक्स की जांच नहीं है। नियोक्ता यह देखना चाहते हैं कि आप भाषा के दर्शन को समझते हैं: शून्य सुरक्षा, कार्यात्मक शैली, मुहावरे और संकलन की विशेषताएं। इस लेख में, हमने सबसे सामान्य प्रश्नों का विश्लेषण किया है - बुनियादी से लेकर उन्नत तक। 100% इंटरव्यू की तैयारी करें।
\n\n1. बुनियादी प्रश्न: सिंटैक्स और null safety
\n\nसाक्षात्कार आमतौर पर मूल बातों से शुरू होता है। यहाँ वह है जो आपको निश्चित रूप से जानना चाहिए।
\n\nकोटलिन में डेटा प्रकार क्या हैं और वे Java से कैसे भिन्न हैं?
\nकोटलिन एक स्थिर रूप से टाइप की गई भाषा है। सभी प्रकार ऑब्जेक्ट हैं, कोई प्रिमिटिव नहीं हैं (लेकिन कंपाइलर ऑप्टिमाइज़ कर सकता है)। मुख्य प्रकार: Int, Double, Boolean, String, Array। Java के विपरीत, कोटलिन में ऑब्जेक्ट बनाने के लिए new नहीं है, और nullable प्रकारों को स्पष्ट रूप से ? चिह्न से चिह्नित किया जाता है।
null safety क्या है और कोटलिन इसे कैसे लागू करता है?
\nNull safety NullPointerException के खिलाफ एक अंतर्निहित सुरक्षा है। प्रकार nullable (String?) और non-null (String) में विभाजित हैं। सुरक्षित पहुँच के लिए ऑपरेटरों का उपयोग करें:
val name: String? = null\nprintln(name?.length) // सुरक्षित कॉल -> null\nprintln(name?.length ?: 0) // एल्विस ऑपरेटर -> 0\nprintln(name!!.length) // जबरदस्ती -> NPE, यदि null\n\nval, var से कैसे भिन्न है?
\n- \n
val— अपरिवर्तनीय संदर्भ (read-only)। Java मेंfinalके समान। \nvar— परिवर्तनीय संदर्भ (mutable)। \n
महत्वपूर्ण: val ऑब्जेक्ट की अपरिवर्तनीयता की गारंटी नहीं देता, केवल संदर्भ की।
2. उन्नत संरचनाएँ: क्लासेस, फंक्शन और sealed
\n\nयहाँ वे संक्षिप्त और सुरक्षित कोड लिखने की क्षमता की जाँच करते हैं।
\n\ndata class क्या है और यह कौन से मेथड उत्पन्न करता है?
\ndata class — डेटा संग्रहीत करने के लिए एक क्लास। कंपाइलर स्वचालित रूप से उत्पन्न करता है: equals(), hashCode(), toString(), copy(), और componentN()।
data class User(val id: Int, val name: String)\nval user = User(1, "Alice")\nval copy = user.copy(name = "Bob")\nprintln(user) // User(id=1, name=Alice)\n\nsealed class क्या है और इसका उपयोग कब करें?
\nsealed class — एक सीमित वर्ग पदानुक्रम। सभी उपवर्गों को उसी फ़ाइल में घोषित किया जाना चाहिए। स्थितियों का प्रतिनिधित्व करने के लिए आदर्श (उदाहरण के लिए, लोडिंग परिणाम)।
sealed class Result {\n data class Success(val data: String) : Result()\n data class Error(val message: String) : Result()\n object Loading : Result()\n}\n\nfun handle(result: Result) = when (result) {\n is Result.Success -> println(result.data)\n is Result.Error -> println(result.message)\n Result.Loading -> println("Loading...")\n}\nलाभ: when को संपूर्ण होना चाहिए - कंपाइलर सभी विकल्पों की जाँच करेगा।
extension functions क्या हैं और वे कैसे काम करते हैं?
\nExtension functions आपको बिना इनहेरिटेंस के किसी मौजूदा क्लास में एक नया मेथड जोड़ने की अनुमति देते हैं। वास्तव में, ये स्थैतिक फंक्शन हैं जो क्लास के इंस्टेंस को पहले तर्क के रूप में लेते हैं।
\nfun String.isEmail(): Boolean = this.contains("@")\nprintln("test@mail.ru".isEmail()) // true\n\n3. कार्यात्मक प्रोग्रामिंग: लैम्ब्डा, कलेक्शन, स्कोप फंक्शन
\n\nकोटलिन सक्रिय रूप से कार्यात्मक दृष्टिकोण का उपयोग करता है। कलेक्शन और स्कोप-फंक्शन के साथ काम करने के बारे में प्रश्नों के लिए तैयार रहें।
\n\nआप कौन से स्कोप-फंक्शन जानते हैं? वे कैसे भिन्न हैं?
\nमुख्य: let, run, with, apply, also। मुख्य अंतर संदर्भ (this या it) और वापसी मान है।
| फंक्शन | संदर्भ |
|---|