क्या "RAII मुहावरे की व्याख्या" एक अच्छा C ++ स्क्रीनिंग प्रश्न है? [बन्द है]


13

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

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

यहां तक ​​कि सी ++ डेवलपर्स के एक जोड़े को मैं अच्छी तरह से जानता हूं कि उनकी क्षमता को पहचानने के लिए उन्होंने कहा कि वे इस शब्द को नहीं पहचानते हैं, लेकिन तकनीक का एक सारांश पढ़ने पर कहा, "ओह, हाँ, मुझे नहीं पता था कि मेरा नाम था। मैं बस। उन चीज़ों के बारे में सोचा जो आपको बस करना है । ” मुझे स्ट्रॉन्स्ट्रुप की पुस्तक के दूसरे संस्करण से शब्द याद है, भले ही उस समय पूरा प्रभाव नहीं डूबा था।

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

जोड़ने के लिए संपादन : स्पष्ट करने के लिए, मैं साक्षात्कारकर्ता की तरह नहीं हूं जो लोगों को अयोग्य घोषित करता है क्योंकि वे buzzwords और परिवर्णी शब्द नहीं जानते हैं। हालांकि, मुझे लगता है कि यह उम्मीद करना उचित है कि एक अनुभवी C ++ प्रोग्रामर ने संसाधन प्रबंधन के लिए अच्छे अभ्यासों को आंतरिक रूप दिया है। मुझे यह भी लगता है कि यह सत्यापित करना महत्वपूर्ण है कि एक उम्मीदवार तकनीक के बारे में कुछ "मूल बातें" को समझता है जो वे डिजाइन, समस्या को हल करने के बारे में अधिक दिलचस्प सवालों पर आगे बढ़ने से पहले विशेषज्ञता का दावा करते हैं, आदि मुझे लगता है कि मैं जो देख रहा हूं वह एक अच्छा तरीका है। एक ओपन-एंडेड प्रश्न पूछने के लिए, एक छोटी टेलीफोन स्क्रीनिंग में उपयोग के लिए उपयुक्त, जिसका उपयोग मैं C ++ में अच्छे संसाधन प्रबंधन प्रथाओं के लिए उम्मीदवार की बुनियादी समझ का न्याय करने के लिए कर सकता हूं, इससे पहले कि मैं "कठिन" प्रश्न पूछूं।


3
"सी ++ डेवलपर्स के एक जोड़े को भी मैं उनकी क्षमता का न्याय करने के लिए अच्छी तरह से जानता हूं, उन्होंने कहा कि वे इस शब्द को पहचान नहीं पाए"। ठीक है। "तो," क्या आप मेरे लिए RAII मुहावरे की व्याख्या कर सकते हैं? "एक निष्पक्ष स्क्रीनिंग प्रश्न?" क्यों पूछें? आप उन लोगों को नहीं खोज सकते जो इसके बारे में जानते थे। आपको और क्या जानने की जरूरत है कि आप पहले से ही नहीं जानते हैं? शायद आपको इस विषय को कम करना चाहिए (क्योंकि आप पहले से ही उत्तर जानते हैं) और "क्या बेहतर विकल्प" वीडर "प्रश्न" हैं, जो दिलचस्प हो सकते हैं। सिवाय इसके कि यह शूट आउट राय है, जिसे अच्छी तरह से सहन नहीं किया गया है।
एस.लॉट

9
मुहावरे बदलते हैं, अच्छा अभ्यास नहीं होता है। किसी विशेष मुहावरे के बारे में पूछने के बजाय, कैसे बस के बारे में पूछते हुए, "यह सुनिश्चित करने के लिए कि आप इसे लीक करने के लिए कक्षा को डिजाइन करने में क्या कदम उठाते हैं?"
ब्लरफुल

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

2
आपकी समस्या वह नहीं है जिसकी मुझे उम्मीद थी। मैंने मान लिया कि आपको कोई ऐसा व्यक्ति मिलेगा जो जानता है कि RAII क्या है, काम पर रखा जाता है, और केवल बाद में आपको पता चलता है कि वे अभी भी कोडिंग में चूसते हैं।
केविन

1
@JasonTrue: मुझे लगता है कि एक स्ट्रिंग को उलटने जैसे वास्तविक प्रोग्रामिंग प्रश्न होने चाहिए। लेकिन वैसे भी मुझे लगता है कि यह एक अच्छा सवाल है। आप यह पूछने पर भी विचार कर सकते हैं कि c ++ में क्या विशेषताएं हैं - 0x इंटरव्यू लेने वाले को सबसे रोमांचक या महत्वपूर्ण लगता है। यह थोड़ा कठिन है लेकिन अगर आपको एक अच्छा जवाब मिलता है तो इसका मतलब है कि अच्छी चीजें। और यह सवाल हमेशा वापस आ सकता है, 'यदि खाली स्टेयर मिले तो' लाइब्रेरी किस बूस्ट सबसे महत्वपूर्ण / दिलचस्प हैं '।
केविन

जवाबों:


24

आपको लगता है कि अनुभव से आप जानते हैं कि C ++ डेवलपर्स सक्षम हैं, उस परिचित या पूर्ण अभिव्यक्ति के साथ भी अपरिचित हैं। यह अकेला प्रतीत होता है कि फोन कॉल के दौरान स्क्रीनिंग प्रश्न के रूप में प्रश्न उपयुक्त नहीं है।

दूसरी ओर, आप एक परिदृश्य को प्रस्तुत करके अधिक गोल चक्कर के माध्यम से एक ही बिंदु पर पहुंच सकते हैं। कुछ इस तरह से: "आप एक लॉग क्लास लागू कर रहे हैं जो किसी फ़ाइल में लॉगिंग जानकारी लिखेगा। जाहिर है, आपको एक सदस्य चर की आवश्यकता होगी जो फ़ाइल हैंडल (std :: FILE *) है। आप इस फ़ाइल को कहाँ आवंटित और मुक्त करते हैं। संभाल? " यदि उम्मीदवार कंस्ट्रक्टर में फ़ाइल हैंडल को आवंटित करने के बजाय एक ओपन () और एक करीबी () विधि बनाने के बारे में बात करना शुरू कर देता है और डिस्ट्रक्टर में हैंडल को निपटाने की कोशिश करता है, तो आप उन चीजों के बारे में पूछ सकते हैं जैसे कि उनकी कक्षा कैसे व्यवहार करेगी। कॉलिंग कोड अपवादों को उठाया, आदि।


एक उत्कृष्ट सुझाव। मुझे यह तरीका पसंद है।
जेसनट्र्यू

एक फोन साक्षात्कार में बहुत अधिक समय लेता है।
हेलोवर्ल्ड

15

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


3

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


3

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

मैं इस तरह की बात नहीं कर सकता। मेरा मतलब है, साक्षात्कार के मेरे अंत में, यह सायरन और चेतावनी घंटियाँ हैं। मैं ऐसी जगह पर काम नहीं करना चाहता जहाँ यह वास्तव में मायने रखता है कि मैं विचित्र mnemonics जानता हूँ कि मेरे बॉस को लगता है कि यह "मौलिक" है। मुझे उन लोगों के नामों को जानने के लिए परेशान नहीं किया जा सकता है, जिन्हें मैंने वर्षों से निपटाया है, इसलिए मुझे यकीन है कि नरक के रूप में सबसे अच्छी प्रथाओं का वर्णन करने वाले प्यारे योगों के साथ मस्तिष्क की जगह बर्बाद नहीं होती है।

मेरे कोड को देखो। मुझसे पूछें कि मैं चीजें कैसे करूंगा। मैं एक व्हाइटबोर्ड पर बकवास करूँगा जब तक गाय घर न आ जाए। मैं आपको एक ऐप कोड करूंगा। मुझे बकवास सामान्य ज्ञान प्रश्न न दें। ट्रिविया हमेशा हिट या मिस होता है, और यह कभी मौलिक नहीं होता है।


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

4
@ हसन: ठीक है, मैं शायद कुछ महीनों के लिए आरएआई को संक्षिप्त रूप से याद रखूंगा। क्या उस अल्पकालिक ज्ञान ने मुझे सक्षम बना दिया है, भले ही मैंने वर्षों में C ++ को नहीं छुआ है? यह पिथि ट्रिविया है। उनसे पूछें कि वे ताले को कैसे संभालते हैं, और सुनिश्चित करें कि वे वास्तविक ज्ञान को समझते हैं, न कि अजीब संक्षिप्त विवरण।
शैतानिकपुपी 21

1
@ हसन: मैं सहमत हूँ। मैं सिर्फ इस बात से सहमत नहीं हूं कि मूल बातें इस प्रकार की सामान्य ज्ञान शामिल हैं। एक बेवकूफ यह जान सकता है, और एक विशेषज्ञ नहीं हो सकता है। आप कौशल के लिए अप्रासंगिक कुछ पर अपनी चयन प्रक्रिया को आधार बना रहे हैं।
शैतानिकप्‍पी

5
RAII को क्या कहा जाता है, यह जानना आवश्यक ज्ञान नहीं है। लेकिन पैटर्न के लिए स्वचालित रूप से पहुंचना है।
btilly

2
RAII अच्छे C ++ की एक मूलभूत अवधारणा है, और यह शब्द कम से कम 20 वर्षों से है। मुझे लगता है कि इसे सामान्य ज्ञान के रूप में खारिज करना कुछ अनुचित है। जबकि आपके पास अच्छे सी ++ डेवलपर्स हो सकते हैं, जो शब्द नहीं जानते हैं, मेरे लिए यह किसी ऐसे व्यक्ति की गंध है जो अपने शिल्प पर शोध नहीं करता है।
काज ड्रैगन

1

यदि आपका उद्देश्य कुल अक्षम लोगों को जल्दी से बाहर निकालना है, तो कुछ इस तरह से प्रयास करें:

FizzBuzz टेस्ट

फिर आप C ++ अवधारणाओं का मूल्यांकन करने के लिए बेहतर स्थिति में उन लोगों के लिए C ++ अवधारणाओं और प्रथाओं को छोड़ सकते हैं।


1
मैंने इस प्रश्न का अक्सर उपयोग किया है, और प्राप्त किया है, और अपनी टिप्पणी में इसका उल्लेख ऊपर किया है, लेकिन मुझे 25% फोन पर बातचीत में यह अजीब लगता है।
जेसनट्र्यू

0

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

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