2008-12-13 13 views
10

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

अब व्यक्तिगत रूप से मैं फोन स्क्रीन को थोड़ा और ठोस रखना पसंद करता हूं, और सफेद बोर्ड के लिए अमूर्त प्रश्न छोड़ देता हूं। तो जब सी ++ फोन साक्षात्कार आयोजित करते हैं, तो आप किस तरह के विषयों को कवर करते हैं, खासकर सीनियर डेवलपर्स के लिए?

मुझे पता है कि इसके समान एक और धागा है, लेकिन स्पष्ट रूप से ऐसा लगता है कि यह पूरी तरह से इस बात से चूक गया है कि यह फोन स्क्रीन के बारे में है, साक्षात्कार नहीं जो आमने-सामने हैं। इसके अलावा यह अधिक सी ++ विशिष्ट है।

+1

जो कुछ भी आप करते हैं, कृपया माइक्रोसॉफ्ट पार्श्व-सोच पहेली प्रश्नों से मत पूछें।और यदि आप करते हैं, तो कृपया आमने-सामने साक्षात्कार में उनसे दोबारा मत पूछें। – zaratustra

+0

ऐसा क्यों है कि मुझे कभी इस तरह के प्रश्न नहीं पूछा गया है? मेरे पास कुछ आईक्यू परीक्षण (मजेदार) हैं, लेकिन ऐसा कुछ भी नहीं है। मेरे सभी साक्षात्कार दोस्तों के बीच बातचीत की तरह रहे हैं। क्या यह सांस्कृतिक है? – Guge

+0

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

उत्तर

12

मैं संसाधन/स्मृति प्रबंधन के बारे में पूछूंगा, क्योंकि यह सी ++ में एक महत्वपूर्ण विषय है, और इसे ठोस कोड की आवश्यकता नहीं है। बस एक साधारण काल्पनिक परिदृश्य को स्केच करें, और पूछें कि वे कैसे सुनिश्चित करेंगे कि कुछ महत्वपूर्ण संसाधन त्रुटियों/अपवादों के मुकाबले भी मुक्त हो जाएं। मान लें कि वे एक नेटवर्क ऐप विकसित कर रहे हैं, वे कैसे सुनिश्चित करते हैं कि हम अपने सॉकेट को सही तरीके से बंद कर दें? निस्संदेह उचित उत्तर इसे आरएआईआई ऑब्जेक्ट में लपेटना होगा, लेकिन उनसे सीधे पूछें ("आरएआईआईआई" को Google करना आसान है, जबकि उपरोक्त प्रश्न "आप संसाधनों को ठीक से कैसे जारी करेंगे" वास्तव में आपको दिखाता है कि क्या या नहीं, वे उचित तकनीकों को जानते हैं। अगर वे "कोशिश/पकड़ने में सब कुछ लपेटें" का जवाब देते हैं, तो उन्हें एक समस्या हो सकती है। और यह ढेर और ढेर के बीच मतभेदों के बारे में प्रश्नों के साथ अच्छी तरह से संबंध रखता है।

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

देखें कि क्या वे स्मार्ट पॉइंटर्स के बारे में जानते हैं (फिर से उन्हें एक स्थिति देकर जहां स्मार्ट पॉइंटर्स कहा जाता है, और देखें कि वे समस्या को कैसे हल करेंगे), और शायद टेम्पलेट्स/मेटाप्रोग्रामिन (बाद के मामले में, शायद अगर वे जानते हैं कि फोन पर वास्तविक मेटाप्रोग्राम कोड करने की आवश्यकता के बजाय यह संभव है)

आप अपरिभाषित व्यवहार के कुछ सामान्य क्षेत्रों के बारे में भी पूछना चाहेंगे (निष्पादन के बाद ए और बी के मूल्य क्या हैं a = b++ + b++??), या 10 तत्वों की एक सरणी आवंटित करें, और सरणी सूचक में 10 या 11 जोड़ें, और पूछें कि प्रत्येक मामले में परिणाम क्या है (+ = 10 कानूनी है, आपको एक अतीत-अंत-सूचक सूचक देता है, + = 11 अपरिभाषित है)। या उन्हें एक परिदृश्य दें जहां उन्हें बहुत सारी वस्तुओं की प्रतिलिपि बनाने की आवश्यकता है, और पूछें कि वे ऐसा कैसे करेंगे (सादे फॉर-लूप एक समय में प्रत्येक तत्व की प्रतिलिपि बनाते हैं, memcpy या std :: copy स्पष्ट उत्तर हैं। Memcpy के साथ चेतावनी नोट करें , यह गैर-पीओडी ऑब्जेक्ट्स के लिए सुरक्षित नहीं है)

या सामान्य रूप से उनकी कोडिंग शैली के बारे में पूछें। वे इटरेटर के बारे में कैसा महसूस करते हैं? क्या वे सादे पुराने लूप पसंद करते हैं? क्या वे जानते हैं कि std :: for_each या std :: transform का उपयोग कैसे करें?

संपादित करें: लगता a = b++ + b++ (उत्तर अपरिभाषित व्यवहार, btw है) विशेष रूप से सुझाव टिप्पणियों का एक बहुत उत्पन्न। शायद लोग इसमें बहुत ज्यादा पढ़ते हैं। चूंकि ओपी ने कहा कि वह कंक्रीट (अमूर्त नहीं, और फोन पर व्याख्या/उत्तर/चर्चा करने में आसान) प्रश्न पूछना पसंद करते हैं, जो साक्षात्कारकर्ता के सी ++ कौशल के बारे में थोड़ा सा खुलासा करते हैं, और यह एक सरल है (और हाँ, शायद नाइटपीकी) इसका उदाहरण। इसके पीछे तर्क यह है कि 1) इसका एक सहज अर्थ है, जो गलत है, और 2) आपको यह समझने से पहले सी ++ के साथ अनुभव का एक निश्चित स्तर होना चाहिए। और निश्चित रूप से 3), फोन पर पूछना बहुत आसान और आसान है। किसी को भी कोड लिखने की आवश्यकता नहीं है। नहीं, यह प्रकट नहीं करेगा कि उम्मीदवार एक "महान प्रोग्रामर" है, लेकिन जैसा कि मैंने सवाल समझा, वह लक्ष्य भी नहीं था। अगर किसी को यह गलत लगता है, तो इसका मतलब यह नहीं है कि, लेकिन अगर वे इसे सही मानते हैं, तो आप निश्चित रूप से सुनिश्चित हो सकते हैं कि वे थोड़ा सी ++ जानते हैं। लेकिन अगर आप फिर से मेरा जवाब पढ़ते हैं, तो आप देखेंगे कि यह उन प्रश्नों की एक श्रेणी का एक त्वरित उदाहरण था जिसे मैंने माना जाना चाहिए। सी ++ अपरिभाषित व्यवहार से भरा है, यहां तक ​​कि कोड में जो पूरी तरह से हानिरहित और सहज दिखता है। उम्मीदवार से को पहचानने के लिए कहा जा रहा है इसका उदाहरण उपयोगी हो सकता है, भले ही यह "उसी अभिव्यक्ति में दो बार समान चर को संशोधित करें" उपरोक्त उदाहरण, या कुछ अलग है।

+0

Re_each और ट्रांसफॉर्म करें: मुझे कुछ कोडर पता हैं जो इससे बचते हैं क्योंकि उन्हें लगता है कि एक मजेदार कक्षा बनाना बहुत गड़बड़ है। सी ++ 0 एक्स बंद होने के साथ (या बूस्ट.लैम्ब्डा, हालांकि जब मैं इस चर्चा में था तब नई तकनीक वापस थी), वह स्थिति बहुत अधिक होगी। –

+0

मुझे लगता है कि फोन स्क्रीन का हिस्सा हो सकता है कि वे Boost.Lambda या बंद का उल्लेख करते हैं या नहीं! :-P –

+0

शायद यह उन प्रश्नों में से एक नहीं है जिन्हें आपको एक सही उत्तर मिलता है, लेकिन मुझे आपकी बहुत पसंद है, यह फोन पर कोडिंग की कठिनाई से संबंधित है। – ApplePieIsGood

5

मुझे यह पता लगाना पसंद है कि क्या लोग वास्तव में उन उपकरणों के बारे में कुछ जानते हैं जो वे उपयोग कर रहे हैं। और मुझे यह भी पता चलता है कि "वरिष्ठ" डेवलपर्स को उनके ज्ञान में गंभीर अंतर हो सकता है।

आप

  • क्या एक vtable है पूछ पर विचार कर सकते।
  • टेम्पलेट्स कैसे काम करते हैं
  • ढेर और ढेर के बीच क्या अंतर है। इस के जवाब की गहराई काफी रोशनी हो सकती है! सीमा, का उपयोग-मामलों, विफलता मोड, दक्षता, संसाधन सफाई, विनाशकर्ता
  • ढेर कॉल -

पिछले सवाल का जवाब

  • आवंटन को कवर किया जाएगा "क्या तुम सच में मुझे साक्षात्कार के लिए की जरूरत है" -फ्रेम - एक फ़ंक्शन कहलाता है, पैरामीटर, बैकट्रैस
+0

निश्चित रूप से ढेर/ढेर सवाल की तरह। आप उस पर चर्चा करने में उचित समय व्यतीत कर सकते हैं। – ApplePieIsGood

+0

सच है, ढेर/ढेर एक अच्छा सवाल है। ढेर बनाम ढेर * आवंटन * को भी लाता है, और उन लोगों के लिए अलग-अलग अर्थशास्त्र (ढेर वस्तुएं गुंजाइश से बाहर जाती हैं, विनाशक को बुलाया जाता है और इसी तरह) – jalf

+0

हालांकि उम्मीदवारों को चुनने के लिए सावधान रहें कि वे प्रश्न के लिए कितनी अच्छी तरह से तैयार हैं, तकनीकी विवरणों को कितनी अच्छी तरह से जानते हैं इसके बजाए। "ढेर और ढेर के बीच मतभेद क्या हैं" के लिए एक उचित प्रारंभिक प्रतिक्रिया, "एक दूसरे पर लटका है, * समानताएं * क्या हैं?" –

1
  • डिजाइन पैटर्न
  • C/C++
  • आभासी कार्य
  • पाली आकारिता स्कॉट मेयर की श्रृंखला
  • बारे खाके से
  • अवधारणाओं की मूल बातें। (विशेष क्रम में नहीं)

अंतिम लेकिन कम से कम नहीं। मैं कक्षाओं को डिजाइन करने के लिए उन्हें कुछ नमूना समस्या दूंगा। बस इंटरफेस। यह आश्चर्यजनक है कि कई कई लोगों को वरिष्ठ सी ++ devs पहचान नहीं कर सकते हो होने का दावा

+0

मुझे आपका ऑर्डर यहां नहीं मिला है। डिजाइन पैटर्न आपकी सूची में सबसे अधिक "उच्च स्तर" बिंदु नहीं हैं, और "सी" की मूल बातें "निम्न स्तर" हैं? – Svante

+0

ठीक है, अब मैं "विशेष क्रम में नहीं" देखता हूं, लेकिन क्या यह आपकी पहली वाक्य और स्पष्ट संख्या के विपरीत नहीं है? – Svante

+0

अंतिम लेकिन कम से कम शायद यह कहने वाला नहीं है क्योंकि वह इसे अपने सिर से सूचीबद्ध कर रहा है, ताकि वह प्रश्न पूछ सके। – ApplePieIsGood

3

सी ++ पदों के लिए एक फोन स्क्रीन के भाग के रूप में मैं 'पूछ कौन Bjarne Stroustrup है "करने के लिए लिया है।

मैं पाते हैं। अंग्रेजी बोलने वालों के लिए संकेत: अपने एफएक्यू पर जाएं और प्रश्न पूछने से पहले सही उच्चारण सुनें।

संबंधित मुद्दे