सबसे अच्छा C ++ साक्षात्कार प्रश्न क्या है? [बन्द है]


28

यदि आप C ++ प्रोग्रामर से उनके C ++ कौशल को मापने के लिए एक प्रश्न पूछ सकते हैं, तो यह क्या होगा?

जो प्रश्न मुझे लगता है कि सबसे अच्छा है: क्या आप "इसे हटा सकते हैं?" एक सदस्य समारोह के अंदर? (मैं इसे एक लिंक के रूप में रखता हूं ताकि आप इसे पहले के माध्यम से सोच सकें, फिर द बेस्ट सी ++ साक्षात्कार प्रश्न पर जाएं - और सही उत्तर देखने के लिए।)

मैं यह नहीं पूछता क्योंकि मुझे उम्मीद है कि ज्यादातर लोग इसका जवाब जानेंगे। अगर उन्होंने ऐसा किया तो यह उपयोगी सवाल नहीं होगा। मैं यह देखने के लिए कहता हूं कि क्या वे सही उत्तर के लिए अपना काम कर सकते हैं और वे ऐसा कैसे करते हैं।

जवाबों:


8

मैं उनसे कारण पूछूंगा कि C ++ में टेम्पलेट के साथ वर्चुअल मेम्बर फ़ंक्शन का उपयोग क्यों नहीं किया जा सकता है। बेशक, केवल कुछ ही लोग हैं जो वास्तव में प्रश्न का तुरंत उत्तर दे सकते हैं। लेकिन अगर एक साक्षात्कारकर्ता C ++ के कोर यांत्रिकी को अच्छी तरह से समझता है (कैसे टेम्पलेट C ++ में काम करता है, कैसे वर्चुअल फ़ंक्शन लागू किया जाता है, कैसे संकलक और लिंकर स्रोत कोड से एक निष्पादन योग्य उत्पन्न करते हैं, आदि), तो आपको उचित चरण-दर-उत्तर के साथ उत्तर मिल सकता है। प्रमुख सवाल।

जोड़ा गया: इस उत्तर में टेम्पलेट वर्चुअल मेंबर फंक्शन का मतलब है टेम्पलेट फंक्शन जो किसी वर्ग का वर्चुअल मेंबर फंक्शन है - टेम्पलेट क्लास में रेगुलर मेंबर फंक्शन नहीं। भ्रमित करने के लिए क्षमा करें :(


3
@summerlight: मैं वर्चुअल मेंबर फ़ंक्शंस और टेम्प्लेट मिक्स करता हूं और अब तक कुछ भी बुरा नहीं हुआ है ... इसलिए मुझे डर है कि मैं समझ नहीं पाया कि आप क्या कर रहे थे। मुझे याद दिलाने के लिए देखभाल :)?
मथिउ एम।

2
यह उत्तर लगभग सही है लेकिन काफी सही नहीं है। आपके पास टेम्पलेट वर्चुअल सदस्य फ़ंक्शन नहीं हो सकते हैं, लेकिन आपके पास टेम्पलेट क्लास के वर्चुअल सदस्य फ़ंक्शन हो सकते हैं।
catphive

1
@summerlight: आह यह मिल गया! मनोरंजक सवाल हाँ, अक्सर पॉप अप;)
मैथ्यू एम।

2
@ मिनी: यह टेम्प्लेट क्लास में एक वर्चुअल मेंबर फंक्शन है - न कि टेम्प्लेट की तरह एक वर्चुअल टेम्प्लेट मेंबर फंक्शन <टाइपनेम टी> वर्चुअल वॉयड डूसमेलिंगविथेनगेनिक टाइप (टी आर्ग);
ग्रीष्मकालीन

2
@summerlight: आपको उस उदाहरण को अपनी पोस्ट में शामिल करना चाहिए। मुझे नहीं पता था कि आपका अब तक क्या मतलब है। अच्छा सवाल, हालांकि, अब जब कि मैं इसे समझ गया हूं ;-)
nikie

57

सबसे अच्छा C ++ साक्षात्कार प्रश्न एक प्रोग्रामिंग समस्या होगी, प्रश्नोत्तरी प्रश्न नहीं।


माना। सिंटैक्स के बारे में मत पूछिए जो Google पर देखा जा सकता है। इसके बजाय, उम्मीदवार ने एक आसान (हालांकि तुच्छ नहीं) फ़ंक्शन लिखा है, अधिमानतः कुछ ऐसा है जो आपने एक बिंदु पर अपने कोड में लिखा है।
क्रिसकॉक

4
सरल रूप में भी कुछ के रूप में आप एक विशेषज्ञ प्रोग्रामर बारे में बहुत कुछ बता सकते हैं "एक स्ट्रिंग को उल्टा करने के एक समारोह के बारे में": वे का उपयोग CString, char*, std::string, आदि .; क्या वे एक नया स्ट्रिंग लौटाते हैं या जगह में उलट देते हैं; क्या वे पात्रों पर मैन्युअल रूप से लूप करते हैं या वे लाइब्रेरी फ़ंक्शन कहते हैं। और निश्चित रूप से अगर वे कुछ सरल नहीं कर सकते जैसे कि एक स्ट्रिंग को उल्टा करना, यह भी आपको उनके बारे में बहुत कुछ बताता है! बहुत सारे फॉलो-अप प्रश्न भी हैं, जैसे कि यह यूनिकोड के साथ काम करता है, क्या यह UTF-8 के साथ काम करता है, आदि
Gabe

16
@Enelli: C ++ ने वास्तव में कभी नहीं लिया? गंभीरता से?
स्टीवन एवर्स

1
@ गबे - अच्छी बात है। उदाहरण के लिए, एक पॉलिसी पैरामीटर के साथ इन-प्लेस रिवर्स को करना या तो बहुत सामान्य नहीं होगा, या (शायद यह फ़ंक्शन बल्कि फ़ंक्शन) काफी जटिल है, जब यह चर-बाइट्स-प्रति-वर्ण स्ट्रिंग्स की बात आती है। मुझे नहीं पता कि क्या समय से पहले-अनुकूलन (एक नया स्ट्रिंग बनाएं क्योंकि यह सामान्य होना आसान है) या चपलता (उस मामले के बारे में चिंता न करें जब तक ऐसा नहीं होता है, और इन-प्लेस रिवर्स कोई मुश्किल नहीं है, शायद एक सनक है आसान, निश्चित-चौड़ाई-वर्ण स्ट्रिंग्स के लिए) जीत जाएगा।
स्टीव ३१

1
@ अर्नेली - आप wchar_t और std को भूल रहे हैं :: wstring और वे विंडोज / यूनिक्स पर अलग-अलग चीजों का अर्थ रखते हैं
मार्टिन बेकेट

32

मैं उनसे पूछूंगा कि उन्हें C ++ 0x के बारे में क्या पसंद है। इससे मैं उन्हें विभिन्न रूढ़ियों में "बाल्टी" कर सका:

  • सुपर ओल्ड स्कूल, C कोड संकलित करने के लिए C ++ कंपाइलर का उपयोग करता है
  • पुराना स्कूल, एसटीएल से डरता है (या कोई बात नहीं देखता है), परिवर्तनों के साथ नहीं रखा गया है
  • लंबोदर को प्यार करता है, एसटीएल को प्रतिद्वंद्वियों के संदर्भों से तेज होना पसंद है, बड़ा RAII प्रशंसक, शेअर करने के लिए हॉट_प्ट्र, यूनीक_प्ट्र आदि।
  • कड़वा है क्योंकि पिछले कुछ वर्षों में लिखे गए सभी बूस्ट कोड को C ++ 0x समकक्षों का उपयोग करने के लिए अनुकूलित करना होगा
  • पागल टेम्पलेट मेटाप्रोग्रामर जो अपेक्षाकृत कम प्रश्न का उत्तर देते समय मेरा सिर फट जाता है

संभावना है कि इनमें से कुछ बाल्टी आपके लिए एकदम सही हैं और कुछ "आने के लिए धन्यवाद" हैं। एक सवाल के रूप में जो आपको बहुत सारी जानकारी जल्दी देता है, यह मेरा विजेता है।


1
एक अच्छे अग्रणी प्रश्न के लिए +1 जो विषय के आसपास बहुत चर्चा को प्रोत्साहित करता है।
गैरी रोवे

8
आप उन लोगों की श्रेणी को भूल गए जिन्हें पता नहीं है कि C ++ 0x क्या है। मुझे लगता है कि इसका उत्तर अधिक होगा, और पहले दो प्रकार फिट होंगे।
फास्ट फिश

1
@ फास्ट मछली, हां, जो लोग C ++ 0-Whatnow की तरह हैं? आम तौर पर पहले दो श्रेणियों में से एक होगा, और आम तौर पर उनके जवाब में प्रकाशित करेगा।
केट ग्रेगरी

28

मैं कुछ हद तक परेशान हूं कि "क्या आप इसे हटा सकते हैं?" एक दिलचस्प सवाल माना जाता है। कोई भी व्यक्ति जिसने C ++ में COM कोड लिखा है, वह जानता है कि मूल COM प्रोग्रामिंग के दिन आप जो पहली चीज सीखते हैं, वह है "डिलीट" सही तरीके से उपयोग करना। मुझे लगता है कि यह निर्धारित करने के लिए उपयोगी हो सकता है, कहते हैं, कोई व्यक्ति COM प्रोग्राम लिखे जाने के बारे में अपने फिर से शुरू पर झूठ बोल रहा है, लेकिन एक सामान्य ज्ञान C ++ प्रश्न के रूप में, अगर कोई तुरंत इसका जवाब नहीं दे सकता है, तो वे एक अच्छे फिट नहीं होंगे मेरी टीम के लिए।

वैसे भी, यदि आपका लक्ष्य C ++ कौशल को मापने वाले प्रश्न के साथ आना है, तो एक प्रश्न को चुनना गलत तरीका है। पलट। पूछने के लिए सही सवाल है:

एक से दस तक के पैमाने पर, आप C ++ प्रोग्रामर कितने अच्छे हैं?

यह वह प्रश्न नहीं है जो आपको वह उत्तर मिले जो आप चाहते हैं। हर कोई परवाह किए बिना "आठ" कहता है। जो प्रश्न आपको चाहिए वह उत्तर आपको चाहिए:

ठीक है, तो तुम एक आठ हो। एक समस्या क्षेत्र क्या है जो आपको लगता है कि एक सात के साथ काम करने में मुश्किल समय होगा?

और उछाल , अब तुम उन्हें पा चुके हो। यदि उम्मीदवार सोचता है कि "कुछ को पुनरावृत्ति के साथ करना है" या "जब एक आभासी विध्वंसक का उपयोग करना है" तो इस तरह की बात है कि सात के साथ एक कठिन समय है, तो आप जानते हैं कि वे पुनरावृत्ति या विनाश या जो कुछ भी जानते हैं , और यह कि उनका ज्ञान इससे अधिक दूर नहीं जाता है।

यह आपको कुछ सामान्य प्रश्न के साथ आने से बेहतर अंशांकन देना चाहिए। यदि आप मुझे सी ++ के बारे में एक अच्छे एकल प्रश्न के साथ आने के लिए मजबूर करने के लिए थे, तो मैं शायद कुछ ऐसा पूछूंगा "आप सी + + कंपाइलर के हिस्से के लिए सिमेंटिक एनालाइज़र और कोड जनरेटर कैसे डिज़ाइन करेंगे जो आभासी तरीकों से संबंधित है बेस क्लास डिस्ट्रक्टर में कहा जाता है? " आपको उन सवालों के बारे में पूछना चाहिए जिनका असली सामान आपके साथ काम करना है, और उम्मीदवार के काम करने की संभावना है। यह एक समस्या है जिस पर मुझे एक बार काम करना पड़ा था, और मुझे लगता है कि यह एक बहुत अच्छी जानकारी देगा कि एक व्यक्ति अर्थ एनालिटिक्स और कोड जनरेटर, साथ ही साथ C ++ के अपने ज्ञान को कैसे डिजाइन करता है।


3
मैं इस एक का उपयोग शुरू करने जा रहा हूं: ठीक है, इसलिए आप एक आठ हैं। एक समस्या क्षेत्र क्या है जो आपको लगता है कि एक सात के साथ काम करने में मुश्किल समय होगा?
डेविड थिएलेन

10
यहाँ एक और अच्छा सवाल: एक नौ क्या कर सकता है जिससे आपको परेशानी होगी?
डेविड थॉर्नले

यह बहुत बढ़िया है, यह शानदार है।
ऊपरअद्दाम

14

बस मज़े के लिए, मैंने C ++ प्रोग्रामर को इस छोटे बच्चे के साथ फिर से मिलाया है:

यह एक अनंत लूप में क्यों चलता है (और हाँ यह सही ढंग से टाइप किया गया है)?

int x=0;
while (x<3) {
  x = x++;
}

यह आश्चर्यजनक है कि कितने फंस गए। बेशक, स्टैक ओवरफ्लो पर दिखाई देने के बाद मैं इसका इस्तेमाल नहीं कर सकता । मटर ... मटेर ...

(उचित उत्तर पाने के लिए स्वीकारोक्ति पढ़ें और निश्चित रूप से टिप्पणियाँ पढ़ें)

जोड़ा गया बोनस प्रश्न

सभी समय का क्लासिक फ़िज़बज़ है (जैसा कि अब-प्रसिद्ध कोडिंग हॉरर लेख में चित्रित किया गया है )। मैंने वास्तव में कभी भी खुद एक साक्षात्कार में इसका इस्तेमाल नहीं किया है, लेकिन विकास टीम के चारों ओर एक लंच करने के बाद परिणाम सामने आए ... उम्म ... आश्चर्यजनक रूप से सटीक।

इकबालिया बयान

मुझे मानक "x ++ मूल मूल्य देता है" प्रतिक्रिया पर पकड़ा गया था। हालाँकि, सही उत्तर यह है कि अनुक्रम बिंदुओं के कारण व्यवहार अपरिभाषित है। किसी ने कभी भी अनुक्रम बिंदुओं का उल्लेख नहीं किया, जब तक मैंने इसे यहां पोस्ट नहीं किया।

मुझे शिक्षित किया गया है और मैं वास्तव में उन सभी को धन्यवाद देना चाहता हूं जिन्होंने टिप्पणी करने के लिए समय लिया है।


1
गैरी रो: जबकि मैं उस उदाहरण से प्यार करता हूं (पहली बार मैंने इसे देखा है)। यह मुझे दुःख देता है कि लोग इसे बहुत जल्दी नहीं देखते हैं, अकेले नहीं जानते हैं।
परिक्रमा

2
जब मैं Microsoft में था तो मैंने आवेदकों को एक लिंक की गई सूची में एक प्रविष्टि करने के लिए कहा। क्यूं कर? क्योंकि लगभग 80% ऐसा नहीं कर सके। अद्भुत ...
डेविड थिएलेन

43
यह जरूरी नहीं कि एक अनंत लूप हो। आप यहां अपरिभाषित व्यवहार लागू कर रहे हैं (एक्स को दो बार बिना किसी क्रम अनुक्रम के साथ संशोधित किया गया है)। और वास्तव में, मेरी विशेष संकलक, जीसीसी मेरी विशेष मेहराब पर (Debian 4.3.2-1.1) 4.3.2 (86) के साथ यह है समाप्त।
लोगान कैपल्डो

2
@Logan +1 अनुक्रम बिंदुओं का उल्लेख करने के लिए। आपको निश्चित रूप से दूसरा साक्षात्कार मिलेगा ;-)
गैरी रोवे

4
यह वास्तव में एक अच्छा साक्षात्कार प्रश्न है क्योंकि यह उम्मीदवार को बताता है कि क्या यह एक और साक्षात्कार के लिए वापस आने के लायक है ;-)। यदि साक्षात्कार वास्तव में सोचता है कि कोड एक अनंत लूप में परिणाम करता है (और साक्षात्कारकर्ता तकनीकी रूप से सक्षम माना जाता है) तो उम्मीदवार सुरक्षित रूप से "अवसर" एक मिस दे सकता है।
सीबी बेली

8

पहली बात यह है कि संकेत के बारे में एक साधारण सवाल है। मैं यह देखकर चकित था कि C ++ या उससे भी बदतर जानने का दावा करने वाले कितने लोग, C, इसका उत्तर देने में असमर्थ हैं। तब मैं आभासी कार्यों के बारे में एक सरल प्रश्न पूछूंगा। यह संयोजन आपको बहुत जल्दी बताता है कि व्यक्ति वास्तव में C ++ जानता है या नहीं।


4
उनकी पृष्ठभूमि पर निर्भर करता है, कभी भी किसी ऐसे हार्डवेयर बैकग्राउंड वाले से नहीं मिला जो पॉइंटर्स को नहीं समझता था, लेकिन कुछ ऐसे हैं जो वास्तव में एनकैप्सुलेशन या पॉलीमॉर्फिज्म
जे.के.

7

यह बहुत कुछ इस बात पर निर्भर करता है कि आपकी कंपनी में किस तरह का C ++ लिखा गया है। (जब मुझे C ++ प्रोग्रामर्स को हायर करना था, तो मैंने कभी इसके बारे में नहीं पूछा delete, क्योंकि मैंने उनसे तकनीकों के बारे में पूछा कि वे deleteपूरी तरह से लिखने से बचें ।)

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



6

मुझे विश्वास है कि मैं उनसे पूछूंगा कि वे और क्या जानते हैं, या अधिक संभावना है कि उन्हें कुछ अलग तरीके से प्रश्न देना चाहिए।

अन्य भाषाओं के बारे में बहुत कम अनुभव रखने वाले बहुत से C ++ कोडर तक। संकीर्ण अनुभव आमतौर पर प्रतिबंधात्मक है।


6

एक महान C ++ डेवलपर के लिए सबसे अच्छा सवाल यह है कि "मुझे C ++ का उपयोग करने के कारण बताएं ?"


4

मुझे नहीं लगता कि कोई सबसे अच्छा C ++ प्रश्न है। C ++ इतनी बड़ी भाषा है, और C ++ 0X के साथ यह बड़ा हो गया है, कि आप भाषा के एक निश्चित उपडोमेन में मजबूत हो सकते हैं और भाषा के किसी अन्य भाग के बारे में कम नहीं। एक 'एक शॉट' सवाल केवल भाषा के एक छोटे से हिस्से के किसी के ज्ञान का उपयोग करेगा और भाषा के अन्य पहलुओं के बारे में उसके ज्ञान को अनदेखा करने का जोखिम होगा।


4

3

मेरा पसंदीदा सवाल पूछने का एक सरल तरीका है:

a) क्या आपने C से शुरू किया और फिर C ++ से स्विच किया?

ख) यदि हां, तो पहले कुछ चीजें क्या थीं जो आपने अलग-अलग तरीके से सीखीं?

यह उत्तर मुझे आमतौर पर एक बीड देता है कि प्रोग्रामर C ++ और सामान्य रूप से OOP और C ++ की उसकी समझ कैसे प्राप्त करता है।

यहां कोई "राइट" या "गलत" उत्तर नहीं है, लेकिन आमतौर पर यह एक शानदार तरीका है कि उम्मीदवार कहां से आ रहे हैं, यह समझ सकें।


1

मैं वास्तव में उस व्यक्ति को एक अन्य प्रोग्रामिंग भाषा से कोड के साथ प्रस्तुत करूंगा जो ऑब्जेक्ट ओरिएंटेड था और अधिमानतः उन भाषाओं की सूची पर नहीं जिन्हें वे जानते हैं। कोड को उस भाषा में किए गए एक सरल कार्य का प्रतिनिधित्व करना चाहिए।

इसका मतलब यह नहीं होगा कि वे C ++ के अपने ज्ञान का निर्धारण करें, लेकिन यह पता करें कि वे प्रोग्रामिंग को कितनी अच्छी तरह समझते हैं। जब आप प्रोग्रामिंग के पीछे मूल अवधारणाओं को समझते हैं, तो आप समस्याओं को हल कर सकते हैं।


1

आप वर्चुअल फ़ंक्शंस को C ++ में कैसे लागू करते हैं, एक वास्तविक विश्व परिदृश्य की व्याख्या करें।


1

फिलहाल, मैं कहूंगा: "आप एक कंटेनर के लिए एक चाल निर्माणकर्ता को लागू करने के बारे में कैसे जाएंगे?"

मेरा तर्क यह है कि, क्योंकि कदम निर्माणकर्ता अगले मानक की एक विशेषता है और वर्तमान एक नहीं, उम्मीदवार का जवाब इंगित करेगा कि क्या प्रश्न में डेवलपर सक्रिय रूप से अपनी भाषा के बारे में ज्ञान का पीछा करता है या बस उन चालों से चिपक जाता है जो वे जानते हैं।


1

मुझे लगता है कि मैं डिजाइन के बारे में उनकी राय पूछूंगा, कहते हैं std::string,। मैं भी उन्हें अगर वे अन्य डिजाइन (जैसे, MFC / ATL का उपयोग किया है पूछना चाहते हैं CString, wxString, आदि) और यह सोचते हैं कि वे है, उन्हें पूछना तुलना और डिजाइन विपरीत।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.