C++ इंटरव्यू कैसे पास करें: शीर्ष प्रश्न और उत्तर

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

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

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

C++ साक्षात्कार कैसे पास करें: उदाहरणों के साथ शीर्ष प्रश्नों का विश्लेषण



C++ डेवलपर पद के लिए साक्षात्कार केवल सिंटैक्स की जांच नहीं है, बल्कि यह समझने की गहराई की परीक्षा है कि मेमोरी, कंपाइलर और स्टैंडर्ड लाइब्रेरी कैसे काम करते हैं। इस लेख में, हम उन सबसे सामान्य प्रश्नों का विश्लेषण करेंगे जो 2024-2025 के इंटरव्यू में पूछे जाते हैं। आप केवल सही उत्तर ही नहीं जानेंगे, बल्कि कोड के उदाहरण भी देखेंगे जो आपको तकनीकी साक्षात्कार को आत्मविश्वास से पास करने में मदद करेंगे।



1. वर्चुअल फंक्शन और पॉलीमॉर्फिज़्म



यह एक क्लासिक विषय है। इंटरव्यूअर यह सुनिश्चित करना चाहते हैं कि आप स्टैटिक और डायनामिक बाइंडिंग के बीच अंतर, साथ ही vtable (वर्चुअल फंक्शन टेबल) के तंत्र को समझते हैं।



प्रश्न: यदि कंस्ट्रक्टर या डिस्ट्रक्टर से वर्चुअल फंक्शन को कॉल किया जाए तो क्या होगा?



उत्तर: बेस क्लास के कंस्ट्रक्टर से वर्चुअल फंक्शन का कॉल पॉलीमॉर्फिक नहीं होगा। बेस क्लास कंस्ट्रक्टर के कॉल के समय, डिराइव्ड क्लास का ऑब्जेक्ट अभी तक नहीं बना है, इसलिए बेस क्लास के फंक्शन का वर्जन कॉल होगा। इसी तरह डिस्ट्रक्टर के लिए भी — डिराइव्ड क्लास के डिस्ट्रक्टर के बाद, ऑब्जेक्ट "डाउनग्रेड" होकर बेस क्लास में आ जाता है।



#include <iostream>

class Base {public: Base() { print(); } // कंस्ट्रक्टर में वर्चुअल फंक्शन का कॉल virtual void print() { std::cout << "Base"; } virtual ~Base() = default;};

class Derived : public Base {public: Derived() { print(); } void print() override { std::cout << "Derived"; }};

int main() { Derived d; // आउटपुट: Base (Base के कंस्ट्रक्टर से) // Derived (Derived के कंस्ट्रक्टर से) return 0;}


2. स्मार्ट पॉइंटर्स (Smart Pointers)



इस विषय के बिना कोई भी आधुनिक साक्षात्कार पूरा नहीं होता। स्मार्ट पॉइंटर्स C++ में RAII और संसाधन प्रबंधन की नींव हैं।



प्रश्न: std::unique_ptr, std::shared_ptr और std::weak_ptr में क्या अंतर है? कब किसका उपयोग करें?



उत्तर:

  • unique_ptr — एकमात्र स्वामित्व। कॉपी नहीं किया जा सकता, केवल मूव किया जा सकता है। उन संसाधनों के लिए आदर्श है जिन्हें स्कोप से बाहर जाने पर मुक्त किया जाना चाहिए।
  • shared_ptr — साझा स्वामित्व। रेफरेंस काउंट का उपयोग करता है। जब काउंट शून्य हो जाता है तो ऑब्जेक्ट को हटा देता है।
  • weak_ptr — shared_ptr के लिए "पर्यवेक्षक"। रेफरेंस काउंट नहीं बढ़ाता। चक्रीय निर्भरताओं को रोकने के लिए उपयोग किया जाता है।


#include <memory>#include <iostream>

class Resource {public: Resource() { std::cout << "Resource acquired"; } ~Resource() { std::cout << "Resource released"; }};

int main() { // unique_ptr std::unique_ptr<Resource> uptr = std::make_unique<Resource>(); // shared_ptr std::shared_ptr<Resource> sptr1 = std::make_shared<Resource>(); std::shared_ptr<Resource> sptr2 = sptr1; // रेफरेंस काउंट = 2 // weak_ptr std::weak_ptr<Resource> wptr = sptr1; // काउंट नहीं बढ़ाता if (auto locked = wptr.lock()) { std::cout << "Resource is still alive"; } return 0;}


3. मूव-सिमैंटिक्स और rvalue-रेफरेंसेस



मूव-सिमैंटिक्स C++11 की प्रमुख विशेषताओं में से एक है। साक्षात्कार में आपसे मूव-कंस्ट्रक्टर लिखने या forwarding reference समझाने के लिए कहा जा सकता है।



प्रश्न: मूव-सिमैंटिक्स क्या है और इसकी आवश्यकता क्यों है? एक उदाहरण दें जब यह कोड को तेज़ बनाता है।



उत्तर: मूव-सिमैंटिक्स संसाधनों (जैसे डायनामिक मेमोरी) के स्वामित्व को कॉपी किए बिना स्थानांतरित करने की अनुमति देता है। डीप कॉपी के बजाय, हम पॉइंटर्स को "मूव" करते हैं, मूल ऑब्जेक्ट को शून्य कर देते हैं। बड़े कंटेनरों के साथ काम करते समय प्रदर्शन के लिए यह महत्वपूर्ण है।

```

ब्लॉग

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