क्या मुझे बुनियादी प्रोग्रामिंग अवधारणाओं से परिचित होने वाली हाल की कब्रों की अपेक्षा करनी चाहिए? [बन्द है]


9

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

मुझे ऐसा नहीं लग रहा है कि मैं इंटरव्यू में ओवरकंप्लीट प्रश्न पूछ रहा हूं। मेरे कुछ सामान्य प्रश्न हैं:

  • एक संदर्भ प्रकार और एक मूल्य प्रकार के बीच अंतर क्या है?

    अगर ऐसा लगता है कि साक्षात्कारकर्ता वास्तव में अपने स्वयं के उत्तर को नहीं समझता है, या यदि वह मेरे द्वारा उपयोग की जा रही शब्दावली को नहीं जानता है, तो मैं उसे यह बताने के लिए कहकर और अधिक जानकारी प्राप्त करता हूं कि जब मैं int i = 0 लिखता हूं तो क्या होता है; एक विधि में, ऑब्जेक्ट ओ = 0, ऑब्जेक्ट ओ = नया मायक्लास (), आदि के बारे में क्या ...

    असल में, मैं सब कुछ करता हूं जो मुझे साक्षात्कारकर्ता को कॉलस्टैक, ढेर आदि के बारे में बताने के लिए छल कर सकता है, और मैं भाषा-अज्ञेय अवधारणाओं में रहने की कोशिश करता हूं। यदि साक्षात्कारकर्ता मुझे बताता है कि उसने बहुत सी, या सी ++, या सी # किया, तो मैं विशिष्ट भाषा में गहराई से गोता लगाता हूं, और संभवतः कार्यान्वयन विवरण में।

    यदि आवश्यक हो, तो मैं साक्षात्कारकर्ता से पूछता हूं कि कॉलस्टैक क्या है, या जहां उसकी पसंद की अनिवार्य भाषा में एक फ़ंक्शन को दिए गए तर्क संग्रहीत हैं।

    अधिकांश साक्षात्कारकर्ताओं को इस बात का कोई अंदाजा नहीं है कि कॉलस्टैक क्या है, अकेले बॉक्सिंग के बारे में विचार करें, आदि।

  • अमूर्त वर्ग और इंटरफ़ेस के बीच क्या अंतर है। किन मामलों में आपको एक के ऊपर एक का उपयोग करना चाहिए?

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

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

हालांकि, मैं पहले से ही सीवी स्क्रीन करता हूं, यहां तक ​​कि जटिल आर्किटेक्चर वाले वास्तविक जीवन परियोजनाओं में 5 साल के अनुभव वाले लोगों के लिए, मैं कहूंगा कि मेरे सभी साक्षात्कारकर्ताओं में से 25% से कम उन दो सवालों का ठीक से जवाब दे सकते हैं। और जब मैं ठीक से कहता हूं, तो मेरा मतलब 'इन-इन-डेप्थ' नहीं है ... बस एक अनुमानित विचार है कि अवधारणा क्या है।

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

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


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


4
बस एक छोटी सी टिप्पणी लेकिन मुझे नहीं पता होगा कि आपके पास एक तात्कालिक प्रकार के साथ क्या मतलब है, दूसरी तरफ मूल्य प्रकार मैं आपको समझा सकता हूं। हालाँकि मुझे लगता है कि सीएस डिग्री के साथ स्नातक करने वाले सभी को उन दो प्रश्नों के उत्तर देने में सक्षम होना चाहिए। अपने प्रश्न को बेहतर बनाने के लिए शायद आप इस बात का उदाहरण दे सकते हैं कि आपके द्वारा अपेक्षित उत्तर कितने संपूर्ण होने चाहिए।
sebastiangeiger

विश्वविद्यालय में 2+ साल के लिए एक भाषा का अध्ययन करना, अन्य विषयों के साथ प्रतियोगिता करना छात्रों को उनके परीक्षण समाप्त होने के बाद केवल नंगे न्यूनतम के साथ छोड़ देता है। केवल एक चीज जिस पर आप यकीन कर सकते हैं, वह यह है कि वे उस जानकारी को सीख सकते हैं, या वे एक बार यह जान गए थे। केवल व्यावहारिक अनुभव ही उन्हें ज्ञान स्थायित्व दे सकता है। जोएल स्पॉल्स्की इस बात का एक शानदार उदाहरण देता है कि छात्रों को कैसे और क्यों कई क्षमताओं की कमी होती है, जिसकी हमें अपने ब्लॉग लेख में प्रोग्रामर से अपेक्षा करनी चाहिए - http://www.joelonsoftware.com/items/2009/10/26.html
जस्टिन शील्ड

@sebastiangeiger; आप सही अद्यतन कर रहे हैं!
Bran

2
उसे पता होना चाहिए कि वह लगभग कुछ भी नहीं जानता है। समय के साथ बेहतर होने के लिए यह महत्वपूर्ण बिंदु है।
deadalnix

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

जवाबों:


15

साक्षात्कार की स्थिति में शब्दावली सामान्य गिरावट है।

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

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

हो सकता है कि आपको बहुत सारी परिस्थितियां मिलें जहां साक्षात्कारकर्ता अचानक क्लिक करता है और 'ओह - यह वही है जो आप बात कर रहे हैं' - और फिर काफी पर्याप्त रूप से बताते हैं।

यह एक कठिन संतुलन है क्योंकि विश्वविद्यालय से बाहर के प्रोग्रामर को विविध अनुभव नहीं होने वाले हैं जो टीम के माहौल में वास्तविक विश्व विकास उन्हें देता है। इस बीच अनुभवी डेवलपर्स काफी अक्सर याद रखने वाले होते हैं (या यहां तक ​​कि रुचि रखने वाले) वे सभी सामान जो वे विश्वविद्यालय में सीखते हैं क्योंकि यह उनके दिन-प्रतिदिन के उपयोग के लिए अप्रासंगिक है।

इन दो प्रकार के लोगों (हां - कि साक्षात्कारकर्ता और साक्षात्कारकर्ता) को एक-दूसरे के बारे में जानने से पहले एक-दूसरे के साथ संवाद करने का तरीका सीखने की जरूरत है । यह सुनिश्चित करने के लिए व्यक्ति अधिक अनुभव (साक्षात्कारकर्ता) के साथ होता है।

इस तथ्य का उल्लेख नहीं करने के लिए कि कुछ लोगों को साक्षात्कार में पूर्ण स्मृति विफलता मिलती है। खुद को शामिल किया। मुझे याद है कि मुझे C में एक कार्यक्रम लिखने के लिए कहा गया था और मैं अपने जीवन के लिए याद नहीं रख सकता था कि एक पॉइंटर (->) से किसी सदस्य तक पहुंचने के लिए इस्तेमाल किए गए प्रतीक को किसी से पूछना था। यह मेरी पहली नौकरी के लिए भी नहीं था। लड़का है कि पल मुझे पिछले 15 वर्षों के लिए त्रस्त कर दिया है :-)

मेरी राय में बहुत अधिक उपयोगी संवाद करने की क्षमता है, समस्याओं को कुशलतापूर्वक और पूरी तरह से हल करने में सक्षम हो; जल्दी से चीजों को उठाओ; सकारात्मक उत्सुक रवैया दिखाएं; अन्य लोगों, और अन्य मुख्य मूल्यों के साथ अच्छी तरह से बातचीत करें।

साक्षात्कारकर्ताओं को मत छोड़ना क्योंकि वे नहीं जानते कि एक तत्काल प्रकार क्या है। आगे बढ़ो।


@ ब्रैन - तत्काल प्रकार -> मूल्य प्रकार। विख्यात
रोजर एट्रील

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

"कदम पर" बात के बारे में, यही मैं आमतौर पर करता हूं। लेकिन मेरे अनुभव में, जब एक साक्षात्कारकर्ता को पता नहीं है कि एक मूल्य प्रकार क्या है, तो वह थ्रेड सिंक्रोनाइज़ेशन के बारे में नहीं जानता है, और न ही जेनेरिक क्या हैं, आदि के बारे में, इसलिए कुछ सवालों के बाद, जब यह स्पष्ट नहीं हो जाता है कि उम्मीदवार isn नौकरी के लिए फिट नहीं है, मैं आमतौर पर उसे तकनीकी सलाह में बेहतर प्रदर्शन करने के लिए क्या सीखना है और इसके बारे में कुछ सलाह देता हूं ... अगले उम्मीदवार के साथ आगे बढ़ें :)
Brann

12

आप भाषा-विशिष्ट ज्ञान के लिए पूछ रहे हैं, और आपके द्वारा उपयोग किए जाने वाले शब्द सभी भाषाओं में 100% समान नहीं हैं। मैं - एक के लिए - कोई विचार नहीं है कि "तत्काल प्रकार" क्या है।

इसके अलावा, इस बात पर विचार करें कि किसी विश्वविद्यालय में सिखाई गई बातें एक्स में मानक कोड को क्रैंक करने के लिए नहीं है, लेकिन कई अंतर्निहित अवधारणाओं को सीखा है और विभिन्न प्रोग्रामिंग प्रतिमानों को देखा है। दूसरे शब्दों में, यह एक ड्राइवर लाइसेंस की तरह है - भले ही आपको मूल सिद्धांत पता हो, फिर भी आपको वास्तविक अभ्यास की बहुत आवश्यकता है।


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

मुझे लगता है कि "कॉलस्टैक" अवधारणा उन सामान्य अवधारणाओं में से एक है, जिनके बारे में आप बात कर रहे हैं। यह सुनिश्चित करने के बाद भी कि साक्षात्कारकर्ता यह सुनिश्चित करने के लिए दस अलग-अलग तरीकों से प्रश्न पूछ रहा है कि मैं उससे स्मृति आवंटन, कॉलस्टैक, मूल्य प्रकारों आदि के बारे में बताने की उम्मीद कर रहा हूं, मैं अभी भी, अधिक बार नहीं, रिक्त तारों को प्राप्त करता हूं ...
Brann

यदि मैं आपको सही तरीके से समझता हूं, तो आप यह जानना चाहते हैं कि क्या डेवलपर संकेत देता है और जानता है कि वे क्या करते हैं और उनका उपयोग कैसे करते हैं?

नहीं, मैं नहीं। मैं यह सुनिश्चित करना चाहता हूं कि डेवलपर के पास दृश्य के पीछे कम से कम एक मोटा विचार है जब वह अपनी पसंद की भाषा के फीचर x या y का उपयोग करता है। उसे पॉइंटर्स के बारे में पूछना सिर्फ एक तरीका है जिससे वह बात कर सके कि उसे मेमोरी आवंटन के बारे में क्या पता है।
Brann

3
@ ब्रैन, कॉल स्टैक, हीप इत्यादि के बारे में सभी विस्तृत सामान अनिवार्य रूप से सिर्फ पॉइंटर्स लगाए गए हैं ।

3

"मैं सुनता हूं और मैं भूल जाता हूं। मैं देखता हूं और मुझे याद है। मैं करता हूं और मैं समझता हूं।" (और, मेरी राय में, समझ बेहतर स्मृति प्रतिधारण की ओर ले जाती है।)

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

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

आपने फ्रेंच में साक्षात्कार करने का उल्लेख किया है, जिससे यह स्पष्ट होता है कि हम विभिन्न देशों में हैं, इसलिए आपका माइलेज अलग-अलग हो सकता है, लेकिन यहां अमेरिका में, कॉलेजों के समय में प्रौद्योगिकी के क्षेत्र में आने के पीछे कुख्यात हैं। इसलिए, जब तक आप परिपक्व भाषाओं (C / C ++, COBOL, आदि) के साथ काम नहीं कर रहे हैं, यह भी काफी संभावना है कि जो आप वर्षों से उपयोग कर रहे हैं वह उस संस्करण में उपलब्ध नहीं हो सकता है जिस पर छात्रों ने सीखा है। उदाहरण के लिए, .Net 3.0 ने एंटिटी फ्रेमवर्क, WPF, WCF और अन्य शांत चीजों की मेजबानी की शुरुआत की, लेकिन यहां तक ​​कि मेरा स्कूल अभी भी .Net 1.1 और 2.0 पर अटका हुआ था (जिसका मतलब ADO.NET के साथ अटका हुआ था और ऑब्जेक्ट के बारे में सीखना भी नहीं था। -राष्ट्रीय मानचित्रण)। एक स्कूल जो PHP का उपयोग करता है, वह (गैर-ओओपी) PHP 4 पर अटक सकता है।

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

अमेरिका में, कम से कम, हाल ही में एक ग्रेड को अक्सर सामान्य बुनियादी बातों से परे कुछ भी जानने के लिए माना जाता है (मूल्य से गुजरने और संदर्भ से गुजरने के बीच का अंतर, हो सकता है), क्योंकि यह समझा जाता है कि सामान्य सिद्धांत और समस्या को सुलझाने का मुख्य हिस्सा है स्कूल, दी गई भाषा के इन्स और बहिष्कार को न सीखना।

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


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

@ ब्रैन - कंप्यूटर विज्ञान क्या है (इस पर मेरी पिछली समझ के अनुसार) मेरे (त्वरित) शोध के अनुसार, सीएस एक प्रोग्रामिंग प्रमुख नहीं है। हां, इसमें प्रोग्रामिंग है, लेकिन यह जरूरी नहीं कि इसका मुख्य फोकस है। उस मामले के लिए, "कंप्यूटर विज्ञान" इतना व्यापक और बल्कि अस्पष्ट है, कि यह स्कूल से स्कूल तक भिन्न हो सकता है। स्टैनफोर्ड यूएस के शीर्ष सीएस स्कूलों में से है, और इसके पतन और शीतकालीन पाठ्यक्रम चयन सूचियों ( www-cs.stanford.edu/courses ) के लिए, इसमें आधा दर्जन से कम पाठ्यक्रम हैं जो वास्तविक प्रोग्रामिंग पर ध्यान केंद्रित करते हैं (केवल नहीं कार्यक्रम सिद्धांत), लगभग 50 वर्गों में से।
शौना

इसका मतलब है कि किसी छात्र को किसी भी सेमेस्टर या दो के लिए किसी भी भाषा का उपयोग करने की संभावना है, फिर उसे अपने छात्र के बाकी करियर के लिए स्पर्श न करें। इसके शीर्ष पर, वह रोबोटिक्स और जेनेटिक प्रोग्रामिंग के बारे में भी सीख रहा है, जो मानक डेस्कटॉप / एम्बेडेड सिस्टम / फ़र्मवेयर प्रोग्रामिंग से बहुत अलग हैं।
शौना

आप एक गणित के छात्र के बारे में क्या सोचेंगे जो यह नहीं जानता कि एक श्रृंखला क्या है? - यह इस बात पर निर्भर करता है कि छात्र किस प्रकार के मैथ में विशिष्ट है और वह वास्तव में किस पर काम कर रहा है। फिर, यह पूरी तरह से संभव है कि छात्र ने इसे सीखा है (और इसलिए, तकनीकी रूप से यह जानता है कि यह क्या है), लेकिन बस इसे भूल गया है, क्योंकि वह कभी भी क्रिप्टोग्राफी या असतत गणित के साथ अपने रोजमर्रा के काम में इसका उपयोग नहीं करता है। गणित और प्रोग्रामिंग को आमतौर पर उपयोग-इट-या-हार-इट विषय माना जाता है।
शौना

3

आपके पास काफी संकीर्ण विचार हैं और आप उन्हें अंतर्निहित रूप से मानते हैं।

  • ऐसा लगता है कि विश्वविद्यालय में कुछ वर्षों तक प्रोग्रामिंग का अध्ययन करने वाले किसी व्यक्ति से मैं क्या उम्मीद करता हूं, और जो वास्तव में जानता है, उसके बीच एक बड़ी विसंगति है।

    मेरी जानकारी में कोई विश्वविद्यालय नहीं है, जहाँ लोग कुछ वर्षों तक प्रोग्रामिंग का अध्ययन करते हैं। विश्वविद्यालय कंप्यूटर विज्ञान में पाठ्यक्रम प्रदान करते हैं, जिसमें प्रोग्रामिंग एक पहलू है।

  • एक संदर्भ प्रकार और एक मूल्य प्रकार के बीच अंतर क्या है?

    अंगूठे का नियम: यदि लिस्प भेद के बिना कर सकता है, तो यह केवल अव्यवस्था है;)

  • मूल रूप से, मैं साक्षात्कारकर्ता को कॉलस्टैक, हीप इत्यादि के बारे में बताने के लिए सब कुछ कर सकता हूं, और मैं भाषा-अज्ञेय अवधारणाओं में बने रहने की कोशिश करता हूं।

    भाषा-अज्ञेय अवधारणाओं के बारे में बात करना एक अच्छा विचार है। हालांकि न तो ढेर और न ही ढेर भाषा-अज्ञेयवादी हैं।

  • अगर साक्षात्कारकर्ता मुझे बताता है कि उसने बहुत सी, या सी ++, या सी # किया, तो मैं विशिष्ट भाषा में गहराई से गोता लगाता हूं, और संभवतः कार्यान्वयन विवरण में।

    इन सभी भाषाओं में विनिर्देश हैं। कार्यान्वयन भाषा द्वारा अपरिभाषित है। फ़्लैश प्लेयर या किसी जावास्क्रिप्ट रनटाइम पर चलने के लिए LLVM का उपयोग करके C और C ++ को क्रॉस-संकलित किया जा सकता है। यह ढेर और स्टैक आवंटन शून्य के बारे में आपकी धारणा बनाता है।
    C # के साथ, यह बहुत समान है। C # बहुत सारे अनुकूलन के साथ निष्पादन से पहले JITed है, जो किया जा सकता है। स्थानीय चर, जिन्हें क्लोज़र द्वारा कैप्चर किया जाता है, अंततः ढेर के बजाय ढेर पर हवा करेंगे, जबकि एस्केप विश्लेषण गुंजाइश-स्थानीय वस्तुओं (जो आमतौर पर ढेर में जाना चाहिए) को स्टैक में संग्रहीत करने की अनुमति देता है। उचित रजिस्टर आवंटन से स्टैक आवंटन की आवश्यकता भी बहुत कम हो जाएगी।

  • यदि आवश्यक हो, तो मैं साक्षात्कारकर्ता से पूछता हूं कि कॉलस्टैक क्या है, या जहां उसकी पसंद की अनिवार्य भाषा में एक फ़ंक्शन को दिए गए तर्क संग्रहीत हैं।

    आप किसी ऐसे व्यक्ति से क्या पूछेंगे जो केवल व्यापक प्रोग्रामिंग अनुभव हास्केल के साथ है? : पी

  • अधिकांश साक्षात्कारकर्ताओं को इस बात का कोई अंदाजा नहीं है कि कॉलस्टैक क्या है, अकेले बॉक्सिंग पर विचार करें, आदि।

    ऑटोबॉक्सिंग के पीछे मूल विचार यह है, कि आदिम वस्तुओं को भी वस्तुओं के रूप में माना जा सकता है (या कम से कम मूल्यों के प्रकार जिन्हें रनटाइम पर खोजा जा सकता है)। उस अमूर्त के संबंध में, तीन प्रकार की भाषाएँ हैं:

    1. जहां यह मौजूद नहीं है। मुझे लगता है कि ऑब्जेक्टिव-सी तोप का उदाहरण है।
    2. वे जहां यह वास्तव में रखती है
    3. जहां यह मौजूद है, लेकिन पकड़ नहीं है। मुझे लगता है कि जावा सबसे अच्छा उदाहरण है (मुझे लगता है कि यह अब तक तय हो गया है)।

    मैं यह नहीं देखता कि लोगों को श्रेणी 1 की भाषाओं का उपयोग क्यों नहीं करना चाहिए (वास्तव में यह एक अच्छा विचार है)। मैं यह नहीं देखता कि श्रेणी 2 की भाषाओं का उपयोग करने वाले लोग वास्तव में क्यों परेशान हों। और मुझे लगता है कि हर कोई जो श्रेणी 3 की भाषा का उपयोग करता है, यानी एक जहां एक मूल अर्थ सुविधा केवल टूटी हुई है, गलत भाषा का उपयोग कर रही है।

  • अमूर्त वर्ग और इंटरफ़ेस के बीच क्या अंतर है। किन मामलों में आपको एक के ऊपर एक का उपयोग करना चाहिए?

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

    अंतत: यह एक कठिन और कठिन विषय है। एक साक्षात्कार शायद ही इस सवाल को हल करने के लिए सही जगह है और मैं वास्तव में मुझे एक अच्छा जवाब नहीं देने पर किसी भी जूनियर पद के लिए आवेदन करने के लिए नाखून देगा।

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

    ऑब्जेक्ट ओरिएंटेड भाषाओं की संख्या है, जो इनहेरिटेंस या क्लासिक vtables का उपयोग नहीं करते हैं।

मेरी सलाह:

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

असली सवाल करने के लिए:

और क्या आपको लगता है कि मेरी कंपनी में प्रतिभाशाली लोगों को आकर्षित करने का मुद्दा हो सकता है, या क्या आप अपनी खुद की भर्ती प्रक्रिया में उसी तरह के मुद्दों का अनुभव करते हैं?

सभी कंपनियों में कुशल लोगों को आकर्षित करने के मुद्दे हैं, शायद बड़े खिलाड़ियों को छोड़कर। ऐसा इसलिए है क्योंकि उनमें से कुछ ही हैं। और इस धारणा के कारण, यह विश्वविद्यालय लोगों को कुशल बनाता है। यह नहीं है यह उन्हें ज्ञान प्रदान करता है (छात्र और विश्वविद्यालय दोनों को सौदेबाजी के अपने हिस्से तक पकड़ना)। अनुभव वही है जो लोगों को कुशल बनाता है।

कुछ हैं जिन्होंने विश्वविद्यालय में प्रवेश करने से पहले अनुभव एकत्र किया है और जो अपनी पढ़ाई के दौरान ऐसा करते हैं। क्योंकि वे प्रोग्रामिंग पसंद करते हैं और क्योंकि जब वे किसी कोर्स के दौरान कुछ नया विचार उठाते हैं, तो वे यह देखने की कोशिश करेंगे कि वे इसे कैसे उपयोग करने के लिए रख सकते हैं, पहली चीज जो वे घर वापस लाते हैं। इस तरह के लोग हैं जिन्हें आप किराए पर लेना पसंद करेंगे। लेकिन उनमें से कुछ ही हैं।
यह प्रोग्रामिंग और आत्म-सुधार और इसकी खोज के लिए जुनून है जो प्रोग्रामर को अच्छा बनाते हैं। समय के भीतर।

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

अपनी रेसिंग टीम के लिए ड्राइवर बनने के लिए एक ताजा खून को काम पर रखने के बारे में सोचें: एक अच्छे ड्राइवर को अपनी कार का सबसे अच्छा उपयोग करने के लिए यांत्रिकी की पर्याप्त समझ होती है, लेकिन यह ज्ञान अकेले किसी काम का नहीं है (यह बहुत अधिक नहीं है। शुरू)। आप जिस चीज की तलाश कर रहे हैं, वह अपने स्वयं के सुधार और अपनी टीम के साथ अच्छी तरह से काम करने के लिए तैयार है।


1

"तत्काल प्रकार" शब्द के बावजूद, जिसमें मुझे कोई सुराग नहीं है (मूल्य प्रकार? ठीक है, मुझे यकीन नहीं था, अद्यतन करने के लिए धन्यवाद), मुझे लगता है कि आप अपने प्रश्नों के बारे में सही हैं और पूरी तरह से चरमपंथी नहीं हैं। ये उत्तर देने योग्य प्रश्न हैं यदि कोई स्कूल से बाहर आ रहा है। फिर भी, मैं उम्मीदवारों को तुरंत खारिज नहीं करूंगा, अभी भी कुछ ऐसे हैं जो संभावित हैं क्योंकि वे सीखना चाहते हैं।

ड्राइवर लाइसेंस सादृश्य के साथ जारी रखने के लिए: कुछ लोग परवाह नहीं करते हैं कि क्या होता है जब वे कुंजी डालते हैं (या "स्टार्ट" बटन को धक्का देते हैं)। वे बस करते हैं और ड्राइव करते हैं। इसका मतलब यह नहीं है कि वे बेकार भी हैं, बस यह कि उन्हें स्टारडम तक पहुंचने में समय लगेगा; ;-)

डिग्री / डिप्लोमा पर एक व्यक्तिगत टिप्पणी: मैं वर्तमान में जैव रसायन और औद्योगिक पृष्ठभूमि वाले लोगों के साथ काम कर रहा हूं जिनके पास आईटी क्षेत्र में कुछ वर्षों का अनुभव है और सीएस पृष्ठभूमि वाले कुछ "अनुभवी" लोग हैं, और अनुमान लगाते हैं कि कौन सबसे अधिक जानकार हैं वाहन का इंजन कैसे काम करता है? हाँ, यह सीएस का अध्ययन करने वाले लोग नहीं हैं! तो मैं सिर्फ इस तथ्य का अनुभव कर रहा हूं कि डिप्लोमा हमेशा मायने नहीं रखता है!


2
कुछ लोग इसे अपने वाहन के साथ लंबे समय तक छेड़छाड़ करने के लिए इसे शीर्ष गति तक पहुंचा सकते हैं, जो धीमे से शुरू होने से पहले ही समाप्त हो गए हैं।

काफी उचित :-)
जलयन्

मैं सीएस के अलावा अन्य क्षेत्रों से आने वाले लोगों के बारे में पूरी तरह सहमत हूं। लेकिन किसी के लिए जो वास्तव में एक सीएस की डिग्री का मालिक है, न जाने किस प्रकार के मूल्य को कम से कम कहने के लिए थोड़ा चिंताजनक लगता है ...
ब्रैन

@brann, वे शब्द नहीं जान सकते हैं , लेकिन फिर भी इस बात से अवगत रहें कि चर द्वारा रखे गए डेटा का भौतिक प्लेसमेंट डेटा खंड में रखा गया है, न कि ढेर या स्टैक में। यह महत्वपूर्ण होने के लिए आप किस भाषा का उपयोग करते हैं?

मैं c # का उपयोग कर रहा हूं। और मैं मानता हूं कि इस तरह के कार्यान्वयन के विवरणों को जानना शायद उस संदर्भ में महत्वपूर्ण नहीं है (हालांकि कुछ विशिष्ट स्थितियों में, यह हो सकता है)। बात यह है कि मैं एसी # विशेषज्ञ खोजने की कोशिश नहीं कर रहा हूं। मैं किसी को काफी चालाक खोजने की कोशिश कर रहा हूं और सी # में कोडिंग में वास्तव में अच्छा बनने के लिए प्रेरित किया। अगर किसी ने जानने के लिए / समझने की परवाह नहीं की कि एक मूल्य प्रकार क्या है, तो मुझे लगता है कि (शायद गलत तरीके से) उसे लगता है कि वह दो गुणों में से एक को खो देता है, कम से कम
Brann

1

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

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

आम तौर पर यदि व्यक्ति परियोजना में मृत था, तो वे आम तौर पर मुझे संतोषजनक जवाब नहीं दे सकते हैं, इसलिए आमतौर पर यह बताना बहुत आसान है। बस घबराहट और असंतुष्ट के लिए नर्वस और अंतर्मुखी की गलती न करें।

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


1
 or chose his university very unwisely.

यह बहुत अनुचित है। जब आप एक छात्र होते हैं, तो आप कर सकते हैं सबसे उच्च रैंक वाले विश्वविद्यालय को उठाएं आपके ग्रेड आपको मिल जाएंगे, या शायद वह जो आपको फुटबॉल खेलने वाले रोबोट कुत्तों के साथ खेलने का विज्ञापन देता है। और कुछ नहीं। आप इसे करने के बाद केवल विश्वविद्यालय के पाठ्यक्रम का मूल्यांकन कर सकते हैं, फिर चले गए और कुछ वर्षों तक उद्योग में काम किया और कुछ गैर-तुच्छ परियोजनाओं का निर्माण किया।

यहां तक ​​कि अगर आप हर ऐसे कोर्स पर एक बड़ा नीयन साइन दिखाते हैं, जिसमें कहा गया है, "WE CON’T TEACH THE CALL STACK", तो आप छात्रों से इसके बारे में क्या करने की उम्मीद कर रहे हैं? इसे शोधित करने में महीनों का समय व्यतीत करें ताकि वे वास्तव में समझ सकें कि इसका क्या अर्थ है और उन्हें इसे सिखाने वाले की कितनी आवश्यकता होगी? संकेतों के हर संयोजन के साथ हर कोर्स के लिए?

लोगों को वास्तविक रूप से अपनी शिक्षा का चयन करने के लिए नहीं मिलता है।


0

नए स्नातकों का साक्षात्कार करते समय मैं उनके सीवी में सूचीबद्ध विषयों पर चिपक जाता हूं। यदि वे जावा का उपयोग करते हैं, तो मैं उनसे जावा के बारे में पूछूंगा। यदि वे ब्लब का उपयोग करते हैं, तो मैं आधे घंटे ब्लूब के बारे में पढ़ता हूं, और उनसे उस बारे में पूछता हूं। लेकिन मैं हमेशा भाषा कीवर्ड का उपयोग करके पूछता हूं। यदि यह जावा है, तो मैं "विस्तार" और "लागू करने" के बारे में पूछूंगा, लेकिन "उपवर्ग" और "विरासत" नहीं। मैं उम्मीद करता हूं कि नए स्नातकों को उनके द्वारा लिखे गए कुछ कोड के बारे में बात करने में सक्षम होना चाहिए, जो एक साधारण प्रोग्रामिंग समस्या को हल करने में सक्षम हो, और बुनियादी डेटा संरचनाओं (हैश टेबल और पेड़ों) की समझ हो।


0

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

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


यह किसी को खोजने का सबसे अच्छा तरीका है जो दावा करता है कि वह वास्तव में कुछ जानता है इसका उपयोग करने के लिए इसे अच्छी तरह से जानता है। यह पूछने पर कि एक शब्द का क्या मतलब है, एक कक्षा के बाहर ऐसा कुछ, जो शायद ही कभी इस्तेमाल किया गया हो, व्यर्थ की तरह है। मेरा मतलब है कि पिछले 18 महीनों में मैंने एक बार संदर्भ प्रकारों के बारे में चर्चा नहीं की है, जिसमें कुछ ऐसे बिंदुओं के बारे में शिकायत की गई हो सकती है, जिनमें संकेत शामिल हैं।
रामहाउंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.