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

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

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

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

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

\n\n

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

\n\n

1. Go की मूल बातें: डेटा प्रकार, संरचनाएँ और मेमोरी प्रबंधन

\n\n

आइए बुनियादी बातों से शुरू करें। इसके बिना कहीं नहीं जा सकता। साक्षात्कारकर्ता प्रकारों और उनके व्यवहार के बारे में प्रश्न पूछना पसंद करते हैं।

\n\n

Go में कौन से अंतर्निहित डेटा प्रकार मौजूद हैं?

\n
    \n
  • बुनियादी: int, float64, string, bool।
  • \n
  • एकत्रित: array, struct।
  • \n
  • संदर्भित: slice, map, channel, pointer, function।
  • \n
\n\n

एरे और स्लाइस में क्या अंतर है?

\n

एरे की एक निश्चित लंबाई होती है, जो संकलन चरण में निर्धारित होती है। स्लाइस एक गतिशील संरचना है जो एक आधार एरे को संदर्भित करती है।

\n
// एरे\nvar arr [3]int = [3]int{1, 2, 3}\narr[0] = 10 // ठीक है\n\n// स्लाइस\nslc := []int{1, 2, 3}\nslc = append(slc, 4) // लंबाई बढ़ सकती है\n
\n

मुश्किल सवाल: यदि स्लाइस की क्षमता पार हो जाती है तो append के साथ मेमोरी का क्या होता है? (उत्तर: Go एक नया एरे आवंटित करेगा जो 2 गुना बड़ा होगा और डेटा कॉपी करेगा)।

\n\n

Go में मैप (map) कैसे काम करता है?

\n

मैप एक हैश तालिका है। ट्रैवर्सल का क्रम गारंटीड नहीं है। गैर-मौजूद कुंजी से पढ़ने पर शून्य मान लौटाया जाता है (उदाहरण के लिए, int के लिए 0)।

\n
m := make(map[string]int)\nm["key"] = 42\nvalue, ok := m["key"] // ok == true, यदि कुंजी मौजूद है\n
\n\n

2. समवर्तीता: गोरूटीन, चैनल और म्यूटेक्स

\n

यह Go के लिए सबसे महत्वपूर्ण विषय है। इसके बिना साक्षात्कार पास नहीं किया जा सकता।

\n\n

गोरूटीन क्या है और यह OS थ्रेड से कैसे अलग है?

\n

गोरूटीन एक हल्का थ्रेड है जो Go रनटाइम द्वारा प्रबंधित होता है। गोरूटीन का स्टैक 2-4 KB से शुरू होता है (OS थ्रेड के 1 MB के विपरीत)। हजारों गोरूटीन कई OS थ्रेड्स पर काम करते हैं (M:N मॉडल)।

\n\n

चैनल कैसे काम करते हैं? वर्कर पूल पैटर्न का उदाहरण दें।

\n
func worker(id int, jobs <-chan int, results chan<- int) {\n    for j := range jobs {\n        results <- j * 2\n    }\n}\n\nfunc main() {\n    jobs := make(chan int, 100)\n    results := make(chan int, 100)\n\n    // 3 वर्कर शुरू करें\n    for w := 1; w <= 3; w++ {\n        go worker(w, jobs, results)\n    }\n\n    // कार्य भेजें\n    for j := 1; j <= 5; j++ {\n        jobs <- j\n    }\n    close(jobs)\n\n    // परिणाम एकत्र करें\n    for r := 1; r <= 5; r++ {\n        <-results\n    }\n}\n
\n\n

बफ़र्ड और अनबफ़र्ड चैनल में क्या अंतर है?

\n
    \n
  • अनबफ़र्ड: भेजने वाला तब तक ब्लॉक रहता है जब तक प्राप्तकर्ता संदेश नहीं ले लेता। सिंक्रोनस संचार।
  • \n
  • बफ़र्ड: भेजने वाला केवल तब ब्लॉक होता है जब बफ़र भर जाता है। एसिंक्रोनस संचार।
  • \n
\n\n

डेडलॉक से कैसे बचें?

\n

टाइमआउट या default के साथ select का उपयोग करें:

\n
select {\ncase msg := <-ch:\n    fmt.Println(msg)\ncase <-time.After(1 * time.Second):\n    fmt.Println("timeout")\n}\n
\n\n

3. इंटरफ़ेस, जेनेरिक और त्रुटि प्रबंधन

\n

Go एक शुद्ध OOP भाषा नहीं है, लेकिन इंटरफ़ेस यहाँ महत्वपूर्ण भूमिका निभाते हैं।

\n\n

Go में डक टाइपिंग कैसे काम करती है?

\n

एक प्रकार अंतर्निहित रूप से इंटरफ़ेस को लागू करता है यदि उसके पास सभी आवश्यक विधियाँ हों। यह लचीला कोड लिखने की अनुमति देता है।

\n
type Stringer interface {\n    String() string\n}\n\ntype User struct {\n    Name string\n}\n\nfunc (u User) Str                

ब्लॉग

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