Swift साक्षात्कार कैसे पास करें: A से Z तक शीर्ष प्रश्न

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

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

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

परिचय: क्यों Swift एक सफल साक्षात्कार की कुंजी है

\n

Swift साक्षात्कार केवल सिंटैक्स की जांच नहीं है। Apple-इकोसिस्टम को भाषा के मूलभूत सिद्धांतों, मेमोरी प्रबंधन और आधुनिक फ्रेमवर्क की समझ की आवश्यकता होती है। इस लेख में, हम शीर्ष प्रश्नों का विश्लेषण करेंगे जो आपसे किसी भी स्तर पर - जूनियर से सीनियर तक - निश्चित रूप से पूछे जाएंगे। आप न केवल सही उत्तर जानेंगे, बल्कि सामान्य जाल भी जानेंगे जिनमें उम्मीदवार फंस जाते हैं।

\n

यह लेख शैक्षिक पोर्टल PythonLib के लिए लिखा गया है, लेकिन Swift के अनुकूल बनाया गया है। हमने सामग्री को इस प्रकार संरचित किया है कि आप साक्षात्कार से पहले मुख्य विषयों को जल्दी से दोहरा सकें।

\n\n

1. Swift की मूल बातें: Optional, Value vs Reference Types

\n

Optional क्या है और इसकी आवश्यकता क्यों है?

\n

Optional एक एनुम (enum) है, जो या तो .none (nil) या .some(Wrapped) हो सकता है। यह Swift का मान की अनुपस्थिति के साथ सुरक्षित रूप से काम करने का तरीका है।

\n
var name: String? = "Alice"\nvar age: Int? = nil\n\n// सुरक्षित निष्कर्षण\nif let unwrappedName = name {\n    print("Hello, \\(unwrappedName)")\n} else {\n    print("Name is nil")\n}
\n

सामान्य गलती: बिना जांच के force unwrap (!) का उपयोग करना। हमेशा guard let या if let को प्राथमिकता दें।

\n\n

Value Types बनाम Reference Types

\n

Swift प्रकारों को सख्ती से अलग करता है:

\n
    \n
  • Value Types (स्ट्रक्चर, एनुम, मूल प्रकार) - असाइनमेंट पर कॉपी किए जाते हैं।
  • \n
  • Reference Types (क्लास) - संदर्भ द्वारा पास किए जाते हैं।
  • \n
\n
struct Point {\n    var x: Int\n    var y: Int\n}\n\nclass Car {\n    var model: String\n    init(model: String) { self.model = model }\n}\n\nvar point1 = Point(x: 1, y: 2)\nvar point2 = point1\npoint2.x = 5 // point1.x 1 ही रहेगा\n\nvar car1 = Car(model: "Tesla")\nvar car2 = car1\ncar2.model = "BMW" // car1.model भी "BMW" हो जाएगा
\n

साक्षात्कार प्रश्न: "Apple क्लास के बजाय स्ट्रक्चर का उपयोग करने की सलाह क्यों देता है?" उत्तर: थ्रेड सुरक्षा, पूर्वानुमेयता, ARC ओवरहेड का अभाव।

\n\n

2. मेमोरी मैनेजमेंट और ARC: लीक से कैसे बचें

\n

Automatic Reference Counting (ARC) कैसे काम करता है?

\n

ARC स्वचालित रूप से क्लास ऑब्जेक्ट्स के संदर्भों की गणना करता है। जब काउंटर शून्य तक पहुंचता है, तो मेमोरी मुक्त हो जाती है। चक्रीय संदर्भों के साथ समस्याएं उत्पन्न होती हैं।

\n
class Person {\n    let name: String\n    var apartment: Apartment?\n    init(name: String) { self.name = name }\n    deinit { print("\\(name) deallocated") }\n}\n\nclass Apartment {\n    let unit: String\n    weak var tenant: Person?  // weak — कमजोर संदर्भ\n    init(unit: String) { self.unit = unit }\n    deinit { print("Apartment \\(unit) deallocated") }\n}\n\nvar john: Person? = Person(name: "John")\nvar unit4A: Apartment? = Apartment(unit: "4A")\njohn?.apartment = unit4A\nunit4A?.tenant = john\njohn = nil\nunit4A = nil\n// दोनों ऑब्जेक्ट मुक्त हो जाएंगे
\n

मुख्य मॉडिफायर:

\n
    \n
  • weak — हमेशा optional, मुक्त होने पर स्वचालित रूप से nil हो जाता है।
  • \n
  • unowned — optional नहीं, मानता है कि ऑब्जेक्ट जीवित है (क्रैश का जोखिम)।
  • \n
\n

सामान्य प्रश्न: "weak और unowned में क्या अंतर है?" उत्तर: weak अधिक सुरक्षित है, unowned अनिवार्य निर्भरताओं (जैसे, डेलीगेट) के लिए अधिक सुविधाजनक है।

\n\n

3. फ्रेमवर्क: UIKit बनाम SwiftUI, GCD और प्रोटोकॉल

\n

UIKit: ViewController का जीवन चक्र और Delegate Pattern

\n

viewDidLoad, viewWillAppear, viewDidDisappear की समझ — आधार है। लेकिन साक्षात्कार में अक्सर Delegate pattern के बारे में पूछा जाता है:

\n
protocol MyDelegate: AnyObject {\n    func didTapButton()\n}\n\nclass MyView: UIView {\n    weak var delegate: MyDelegate?\n    \n    @objc func buttonTapped() {\n        delegate?.didTapButton()\n    }\n}\n\nclass MyViewControlle                

ब्लॉग

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