2009-11-07 19 views
6

मैं हाल ही में नौकरी पोस्टिंग देख रहा था और एक आवश्यकता यह थी कि एक व्यक्ति एसटीएल के अपने ज्ञान में 9/10 हो।एसटीएल में किसी विशेषज्ञ को उत्तर देने की उम्मीद की जानी चाहिए, एक साक्षात्कार में

जब मैं अपने कौशल का न्याय करता हूं, तो मेरे लिए कोई ऐसा व्यक्ति होता है जो इस विषय पर उन्नत पुस्तकें लिखता है, जैसे कि जॉन स्कीट (सी #), जॉन रेसिग (जावास्क्रिप्ट) या मार्टिन ओडर्स्की (स्कैला)।

तो, 9/10 मूल रूप से 10 है, इसलिए मुझे यकीन नहीं है कि उस स्तर पर क्या अपेक्षा की जाएगी।

कुछ सवाल का एक उदाहरण में पाया जा होगा: http://discuss.joelonsoftware.com/default.asp?joel.3.414500.47

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

कुछ मामलों में बूस्ट लाइब्रेरी एसटीएल का विस्तार करते हैं, इसलिए यह उम्मीद की जानी चाहिए कि मैं बूस्ट का भी उपयोग करूँगा, क्योंकि मैं कभी-कभी भ्रमित कर सकता हूं कि कौन सा फ़ंक्शन दो पुस्तकालयों में से आया था।

मैं एक विचार प्राप्त करने की कोशिश कर रहा हूं यदि मैं एसटीएल विशेषज्ञ से अपेक्षित प्रश्नों का उत्तर दे सकता हूं, हालांकि यह अजीब बात है कि सी ++ विशेषज्ञ होने की आवश्यकता नहीं थी।

अद्यतन

मेरे सवाल के जवाब को दर्शाती के बाद ऐसा लगता है कि, जिसकी उन्हें तलाश किया जा सकता है किसी को उस एसटीएल की सीमा को देखते हैं और पुस्तकालय है, जो कुछ मैं नहीं किया है है का विस्तार कर सकते है । मुझे एसटीएल और बूस्ट ने मुझे दी और लाइनों के भीतर रहने की सीमाओं के भीतर सोचने के लिए उपयोग किया जाता है। मुझे यह देखना शुरू करना पड़ सकता है कि यह बहुत सीमित है या नहीं कि मैं बॉक्स के बाहर जा सकता हूं या नहीं। मुझे उम्मीद है कि उनका मतलब 9 नहीं है क्योंकि Google करता है। :)

+8

रिकॉर्ड के लिए; 9/10 "मूल रूप से" 10 नहीं है। यह 9 है। –

+0

मुझे यकीन नहीं है कि 9 और 10 के बीच क्या अंतर होगा, क्योंकि ऐसा लगता है कि 9 9 किताबें लिख सकते हैं, लेकिन शायद तीनों के रूप में तकनीकी नहीं। सूचीबद्ध। –

+0

मैं इन प्रमाण-पत्रों के साथ किसी को किराए पर लेगा, जब तक कि वे मुझे बता सकें कि एसटीएल _actually_ क्या है। –

उत्तर

11

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

for(std::vector<int>::iterator it = intVect.begin(); it != intVect.end(); ++i) 
    std::cout << *it; 
बल्कि स्पष्ट से

:

std::copy(intVect.begin(), intVect.end(), std::ostream_iterator<int>(std::cout)); 

या पसंद है ?! मेरे लिए, उस तरह का सुझाव है कि वे के बारे में std::ostream_iterator पता नहीं है - विशेष रूप से अगर वे अपने एसटीएल ज्ञान दिखावा होना चाहिए रहे हैं, वे इसे क्यों दिखावा नहीं होता? -)

मेरे वर्तमान पर नियोक्ता, एक प्रौद्योगिकी में योग्यता के बारे में उम्मीदवारों की आत्म-दर में मदद करने के लिए, हम एक सहायक मार्गदर्शिका प्रदान करते हैं - "10: मैंने उस तकनीक का आविष्कार किया; 9: मैंने इसके बारे में पुस्तक लिखी" और इसी तरह से। तो, उदाहरण के लिए, मैं पाइथन में 9/10 होगा - केवल मेरे सहयोगी और दोस्त ग्विडो काफी हद तक एक 10/10 का दावा कर सकते हैं। एसटीएल एक दिलचस्प मामला है: जबकि स्टेपानोव ने डिजाइन को चलाया, जबकि मेरे सहयोगी मैट ऑस्टर्न ने पहला कार्यान्वयन किया और ने इसके बारे में "पुस्तक" भी लिखा, (this one) - इसलिए मुझे लगता है कि वह दावा करेगा, अगर नहीं 10, 9.5। उस मानक से, मैं कहीं और 7 के बीच हो सकता हूं अगर मुझे रीफ्रेश करने में एक घंटा लग सकता है (कस्टम आवंटकों और लक्षण हमेशा मुश्किल होते हैं, या कम से कम मैं उन्हें कैसे याद करता हूं! -)।

तो, यदि आप किसी ऐसे व्यक्ति की जांच कर रहे हैं जो 9 का दावा करता है, तो उन्हें कस्टम आवंटकों और लक्षणों जैसे वास्तव में कठिन भागों पर ग्रिल करें - संभवतः वे सभी कंटेनर, एल्गोरिदम और विशेष इटरेटर्स पर एक हरा नहीं चूकेंगे , इसलिए उन पर अधिक साक्षात्कार का समय बर्बाद न करें (यदि आप 7 या 7.5 के लिए जांच कर रहे थे तो यह महत्वपूर्ण होगा)। हो सकता है कि उन्हें वास्तविक जीवन उदाहरण देने के लिए कहें जहां उन्होंने कस्टम लक्षणों और/या आवंटकों का उपयोग किया, और कार्यान्वयन के सभी विवरणों के साथ-साथ कुछ नमूना उपयोगों को भी कोड किया।

BTW, अगर आप सी ++ पर रटना करने की जरूरत के एक हैं 'एक उन्नत स्तर पर मानक पुस्तकालय, मैं जानकार और गैर जंग लगी मित्र ने कहा रहा है कि Josuttis' book आजकल भी मेरे दोस्त की तुलना में अधिक उपयोगी है मैट (दुर्भाग्य से, मैंने जोसुटिस को गहराई से कभी नहीं पढ़ा है, इसलिए मैं इसकी पुष्टि या इनकार नहीं कर सकता - मुझे लगता है कि पुस्तक में अमेज़ॅन पर पांच सितारे हैं, जो प्रभावशाली ;-) है।

+0

जीत चुके हैं तो आपकी समझ 10 से अधिक है, जो मुझे अधिक चिंता का कारण बनती है, लेकिन आवेदन करने से पहले, मुझे लगता है कि पहला सवाल यह है कि 9 और 10 के बीच का अंतर क्या है। मुझे एक ऐसी कंपनी याद है जिसने मुझे 0-5 से कौशल के 3 पृष्ठों पर खुद को रेट किया था, लेकिन उनमें से प्रत्येक के लिए उदाहरणों के साथ वास्तव में एक कुंजी थी। –

+1

मुझे एहसास नहीं हुआ कि उत्तर अन्य लोगों के उत्तरों पर झुकाव के लिए थे, मुझे लगता है कि टिप्पणियां वास्तव में स्पष्ट नहीं हैं कि वे उन्हें खराब दिखने की कोशिश करें। मेरे _sample_ के पीछे पूरा विचार एक प्रश्न पूछना था जिससे यह महसूस हो सके कि व्यक्ति को पता था कि इटेटरेटर का सही तरीके से उपयोग कैसे किया जाए। निश्चित रूप से यदि आप केवल एक साधारण int आउटपुट कर रहे थे तो मेरा निर्माण सबसे अच्छा समाधान नहीं है। यहां तक ​​कि यदि आप कुछ और जटिल बनाते हैं तो आप for_each का उपयोग कर सकते हैं, लेकिन मुझे नहीं लगता कि मैंने जो लूप उदाहरण दिया है, वह 0 मामलों में बेकार है। केवल मेरे पिता ओबी वान कहते थे, केवल सिथ सौदा करते थे। – joshperry

+0

@ जेम्स, अगर आप जिन साक्षात्कार के लिए साक्षात्कार कर रहे हैं, वे यह नहीं बताते कि उनका मूल्यांकन क्या है, यह एक बुरा संकेत है और आप अपनी व्याख्या करने के अपने अधिकारों के भीतर पूरी तरह से हैं - यह 10/10 की व्याख्या करना पूरी तरह से उचित होगा, साक्षात्कारकर्ताओं/संभावित नियोक्ताओं से व्याख्या दिशानिर्देशों से दूर रहना, "चिकित्सकों के शीर्ष 10% में" का मतलब है, उदाहरण के लिए, _my नियोक्ता की व्याख्या में आसानी से 8-10 की सीमा का विस्तार करना होगा! –

0

ठीक है, आप साक्षात्कार में जा सकते हैं और कह सकते हैं "मैंने देखा है कि आपकी पोस्टिंग ने किसी को एसटीएल में जानकारियों के लिए कहा है, लेकिन उस शब्द का कभी-कभी इसका अर्थ होता है: (1) सी ++ मानक पुस्तकालय; (2) लाइब्रेरी स्टेपानोव एचपी में डिजाइन किया गया; (3) [1] के आधार पर [1] के हिस्सों [4]; (4) या तो [1], [2], या [3]; (5) के विशिष्ट विक्रेता कार्यान्वयन [2] इस तरह, शब्द अत्यधिक संदिग्ध है, और अत्यधिक सावधानी के साथ प्रयोग किया जाना चाहिए। यदि आपका मतलब था [1] और संक्षेप में जोर देते हैं, "stdlib" एक बेहतर विकल्प है। "*

ईमानदारी से हालांकि यह एक लाइब्रेरी यह कुछ हद तक सीमित है और संभावित रूप से एक भाषा की तरह infinitum को रोकने के लिए composeable नहीं है। तो मैं कुछ सवाल कहूंगा कि उन्हें कुछ stdlib एल्गोरिदम का उपयोग करने के लिए प्रभावी होगा यह देखने के लिए प्रभावी होगा कि वे उन्हें अच्छी तरह से जानते हैं या नहीं।

iterators stdlib का एक अभिन्न हिस्सा होने के साथ ही मैं उन्हें "वेक्टर में सभी पूर्णांक को मानक आउट करने के लिए कहूंगा।" मैं की तरह कुछ उम्मीद करेंगे:

for(int i = 0; i < vec.size(); ++i) 
    std::cout << vec[i]; 

इसके अलावा एक दिलचस्प देखने के लिए बात करता है, तो वे कम से using namespace std करना है:

// thanks to onebyone 
std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "); 

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

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

template<typename InputIter> 
void Output(InputIter it, InputIter end) { 
    while(it != end) 
     std::cout << *it++; 
} 

ये शायद सवाल नहीं 9/10 हैं, लेकिन दिलचस्प लोगों को मुझे लगता है कि एक 2-3/10 को पता होना चाहिए: मैं की तरह कुछ देखने की उम्मीद करेंगे।

एक 9/10 कठिनाई मैं कहूंगा कि बूस्ट स्ट्रीम बेस क्लास का उपयोग किए बिना व्युत्पन्न Iostream ठीक से लिखना है। लेकिन वहाँ शायद stdlib और का उपयोग कर इसे विस्तार के बीच काफी अंतर ...

* (धन्यवाद उद्धरण के लिए freenode ## सी ++ पर nolyc करने के लिए)

+0

nolyc एक बॉट है, इसलिए किसी भी व्यक्ति को बॉट में उस उद्धरण को रखने के लिए धन्यवाद ... – joshperry

+5

"सभी पूर्णांक को वेक्टर में मानक आउट करने के लिए रखें।" मैं 'std :: copy (vec.begin(), vec.end(), std :: ostream_iterator (std :: cout," ") की अपेक्षा करता हूं;'।एसटीएल एक अपरिपक्वता में, एक लूप लिखना कमजोरी का संकेत है ;-) –

+0

लॉल, मैं बस अपने सवालों के वैकल्पिक उत्तरों की प्रतीक्षा कर रहा था :) मुझे आउटपुट इटरेटर पसंद है, और वे निश्चित रूप से 6-7 +/10! – joshperry

2

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

एसटीएल के साथ ज्ञान/परिचितता/आदि की अपेक्षा करने के लिए, इस दिन और उम्र में उचित होगा। लेकिन जब तक नौकरी एसटीएल को फिर से लागू नहीं किया जाता है, आपको 9/10 की आवश्यकता नहीं होती है। यहां तक ​​कि यदि नौकरी है, तो भी आपको अभी भी एक महान प्रोग्रामर की आवश्यकता है जिसमें टेम्पलेट्स (केवल उपयोग नहीं कर रहे हैं) के साथ बहुत सारे अनुभव हैं।

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

किसी भी तरह, बस इसके लिए जाएं। अन्य समस्याओं को हल करने में मदद के लिए एसटीएल का उपयोग करने के लिए तैयार रहें। और कुछ नहीं।

(असल में, मेरे द्वारा किए गए अधिकांश साक्षात्कारों के लिए, आवश्यकता एसटीएल का उपयोग नहीं करना था। यानी - एक स्ट्रिंग को उलटाने वाला एक फ़ंक्शन लिखें। मेरा पहला जवाब यह है कि शायद std में कुछ है lib जो ऐसा करेंगे। फिर वे कहते हैं, सही, ज़ाहिर है, लेकिन अगर आपको इसे खुद लिखना है ...)

+0

ऐसा लगता है कि उनके पास एक तकनीकी परीक्षण है जो एसटीएल का भारी उपयोग करता है, और ऐसा लगता है कि उनका निर्णय यह है कि यदि आप एसटीएल में विशेषज्ञ हैं तो आपको सी ++ में होना चाहिए। तो एक विशेषज्ञ ऐसा व्यक्ति हो सकता है जो सी ++ को स्क्रैच से एसटीएल को फिर से लागू करने के लिए पर्याप्त जानता हो, लेकिन जरूरत पड़ने पर एसटीएल का उपयोग कर सकता है। –

2

मुझे यह नोट करके यह प्रस्ताव देना चाहिए कि मुझे लगता है कि वही मानदंड न केवल लागू किया जाना चाहिए एसटीएल (चाहे आप किस परिभाषा को पसंद करते हैं), लेकिन कई अन्य प्रकार की चीजों के साथ भी।

मेरे परिप्रेक्ष्य से, केवल मौजूदा एसटीएल घटकों को जानना और उन्हें अच्छी तरह से लागू करने में सक्षम होने के कारण शायद 9/10 के रूप में योग्य नहीं होना चाहिए। इसके बजाय, मैं उस स्तर को लगभग 7/10 मानता हूं। 8/10 वह व्यक्ति है जब व्यक्ति एसटीएल को अपने घटकों का पालन करने वाले नए घटकों को प्रदान करके और स्वाभाविक रूप से और आसानी से मौजूदा घटकों के साथ फिट करने में सक्षम है।

9/10 तक, मैं किसी ऐसे व्यक्ति को देखने की उम्मीद करता हूं जो न केवल नया घटक प्रदान कर सके, लेकिन बूस्ट :: बाइंड जैसे मौजूदा कुछ में सुधार करने में सक्षम है। 10/10 के लिए, मैं उम्मीद करता हूं कि यह 9/10 की स्थानीयकृत सुधार, और अधिक वास्तुशिल्प स्तर की ओर बढ़ने की ओर बढ़ रहा है, जैसे व्यक्तिगत इटरेटर्स की बजाय श्रेणियों का उपयोग करना। एक ठोस उदाहरण के लिए, सीमाओं के लिए बूस्ट की श्रेणियों और आंद्रेई अलेक्जेंड्रेस्कू के विचारों के बीच अंतर पर विचार करें। बूस्ट की श्रेणियां आसान, उपयोगी और सुविधाजनक हैं, लेकिन वे आपके द्वारा टाइप की जाने वाली चीज़ों को बदलते हैं, न कि आप कैसे सोचते हैं। एंड्रॉइड के श्रेणियों का संस्करण बहुत अधिक समेकित है - एक वास्तुशिल्प समाधान जो बदलता है कि आप कोड के बारे में कैसे सोचते हैं और सोचते हैं, न कि आप इसे कैसे टाइप करते हैं।

1

9/10 काफी व्यक्तिपरक है। मुझे एसटीएल के बारे में अच्छे प्रश्न पूछे गए हैं।

  • जब आप एक वेक्टर बनाम एक Deque का उपयोग करना चाहिए (कि वे किस तरह आंतरिक रूप से लागू किया जाता है के ज्ञान उपयोगी है)
  • अमान्य संदर्भ का उपयोग करता है, या अमान्य संदर्भ का उपयोग करते हुए अंत में कर सकते हैं एसटीएल कोड पहचानो: ये उदाहरण हैं।
  • विभिन्न कंटेनर पर सरल संचालन को लागू करें, और पता लगाएं कि कंटेनर के सदस्य कार्यों के std :: एल्गोरिदम बनाम कहां और कब उपयोग करें।
+0

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

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