C# साक्षात्कार कैसे पास करें: शीर्ष प्रश्न और उत्तर

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

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

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

C# साक्षात्कार कैसे पास करें: शीर्ष प्रश्न और उत्तर



C# / .NET डेवलपर पद के लिए साक्षात्कार न केवल तकनीकी ज्ञान की जांच है, बल्कि सोचने की क्षमता और जटिल अवधारणाओं को सरल शब्दों में समझाने की क्षमता भी है। इस लेख में, हमने साक्षात्कार में पूछे जाने वाले सबसे सामान्य प्रश्नों को कोड उदाहरणों और स्पष्टीकरणों के साथ विश्लेषित किया है। यह सामग्री जूनियर और मिडिल दोनों डेवलपर्स के लिए उपयोगी होगी।



1. वैल्यू टाइप्स और रेफरेंस टाइप्स में क्या अंतर है?



यह एक बुनियादी लेकिन महत्वपूर्ण प्रश्न है। C# में सभी प्रकार दो श्रेणियों में विभाजित होते हैं:



  • वैल्यू टाइप्स (मान प्रकार) — स्टैक में संग्रहीत होते हैं, असाइन करने पर कॉपी हो जाते हैं। उदाहरण: int, double, struct, enum.
  • रेफरेंस टाइप्स (संदर्भ प्रकार) — हीप में संग्रहीत होते हैं, वेरिएबल ऑब्जेक्ट का संदर्भ रखता है। उदाहरण: class, string, array, delegate.


साक्षात्कार के लिए उदाहरण:



int a = 10;int b = a;b = 20;Console.WriteLine(a); // 10 — मान नहीं बदला

var obj1 = new MyClass { Value = 10 };var obj2 = obj1;obj2.Value = 20;Console.WriteLine(obj1.Value); // 20 — वही संदर्भ


साक्षात्कार में अक्सर boxing/unboxing के बारे में भी पूछा जाता है — वैल्यू टाइप को object में और वापस बदलना। कोड में इससे बचने का प्रयास करें, क्योंकि इससे प्रदर्शन कम होता है।



2. डेलिगेट्स, इवेंट्स और लैम्ब्डा एक्सप्रेशन क्या हैं?



डेलिगेट्स ऐसे प्रकार हैं जो विधियों के संदर्भ संग्रहीत करते हैं। इवेंट्स डेलिगेट्स पर एक रैपर हैं, जिनका उपयोग "प्रकाशक-सब्सक्राइबर" पैटर्न को लागू करने के लिए किया जाता है।



डेलिगेट का उदाहरण:



public delegate void MyDelegate(string message);

public static void ShowMessage(string msg) => Console.WriteLine(msg);

MyDelegate del = ShowMessage;del("Hello from delegate");


इवेंट का उदाहरण:



public class Button{    public event EventHandler Click;    public void Press() => Click?.Invoke(this, EventArgs.Empty);}


लैम्ब्डा एक्सप्रेशन अनाम विधियों का संक्षिप्त रूप है। इनका LINQ में सक्रिय रूप से उपयोग किया जाता है:



var numbers = new List<int> { 1, 2, 3, 4, 5 };var even = numbers.Where(x => x % 2 == 0).ToList();


साक्षात्कार में पूछा जा सकता है: "डेलिगेट्स के बजाय इवेंट्स का उपयोग करना बेहतर क्यों है?" — उत्तर: इवेंट्स सब्सक्राइबर्स की सूची को बाहरी परिवर्तनों से बचाते हैं (बाहर से Invoke नहीं किया जा सकता)।



3. async/await कैसे काम करता है और मल्टीथ्रेडिंग से इसका क्या अंतर है?



यह सबसे लोकप्रिय प्रश्नों में से एक है। async/await एसिंक्रोनस संचालन के साथ काम करने के लिए सिंटैक्टिक शुगर है। यह कोई नया थ्रेड नहीं बनाता, बल्कि मौजूदा थ्रेड (UI थ्रेड या थ्रेड पूल से थ्रेड) का कुशलतापूर्वक उपयोग करता है।



मुख्य बिंदु:

  • async — विधि का मॉडिफायर, जो await के उपयोग की अनुमति देता है।
  • await — थ्रेड को ब्लॉक किए बिना कार्य पूरा होने तक विधि के निष्पादन को रोकता है।
  • वापसी प्रकार — आमतौर पर Task या Task<T>।


उदाहरण:



public async Task<string> GetDataAsync(){    using var client = new HttpClient();    string result = await client.GetStringAsync("https://api.example.com");    return result;}


मल्टीथ्रेडिंग से अंतर: मल्टीथ्रेडिंग (Thread, Task.Run) — CPU के कई कोर पर कोड का समानांतर निष्पादन है। Async/await — एसिंक्रोनसी है, जो प्रतीक्षा के दौरान (जैसे, सर्वर से प्रतिक्रिया) थ्रेड को अन्य कार्यों के लिए मुक्त करता है।



सुझाव: साक्षात्कार में एक वास्तविक उदाहरण दें — नेटवर्क या फ़ाइल से डेटा लोड करना। async void (इवेंट हैंडलर को छोड़कर) से बचें — इससे अनहैंडल्ड एक्सेप्शन हो सकते हैं।

ब्लॉग

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