साक्षात्कार प्रश्न FizzBuzz (1) की रैंकिंग, मालोक को लागू करना (10) [बंद]


10

मैं निम्नलिखित साक्षात्कार प्रश्न की कठिनाई पर आपकी राय लेना चाहता हूं:

O (n) समय में पूर्णांक के एक सरणी में अधिकतम योग के साथ सन्निहित उपखंड का पता लगाएं।

इस तुच्छ लगने वाली समस्या को जॉन बेंटले ने अपने प्रोग्रामिंग पर्ल में प्रसिद्ध किया था जहाँ वह एल्गोरिथम डिजाइन तकनीकों को प्रदर्शित करने के लिए इसका उपयोग करता है।

1-10 के पैमाने पर, 1 को FizzBuzz (या HoppityHop ) टेस्ट और 10 को C stdlib फ़ंक्शन मॉलोक () लागू किया जा रहा है, तो आप उपरोक्त समस्या को कैसे रैंक करेंगे?

मुझे लगता है कि जो लोग इस सवाल का सबसे अच्छा जवाब दे सकते हैं वे हैं जिन्होंने प्रोग्रामिंग पर्ल पढ़े हैं और इस समस्या को अपने दम पर हल करने की कोशिश की है। जो नहीं करते हैं, उन्हें प्रेरित करने के लिए, 'टॉपिंग प्रोग्रामिंग प्रोग्रामिंग' सूची में 'प्रोग्रामिंग पर्ल' को कई बार चित्रित किया गया है।

टिप्पणियों की एक जोड़ी एक बेहतर रेटिंग प्राप्त करने में मदद कर सकती है:

  • मालॉक को लागू करना () उतना आसान नहीं है जितना लगता है। उदाहरण के लिए K & R की C प्रोग्रामिंग भाषा देखें। यह कभी-कभी Microsoft से पूछा जाता है

  • सीएलआरएस समस्या समाधान पर अवलोकन: स्पष्ट रूप से प्रस्तुत समाधान को सत्यापित करने की तुलना में खरोंच से समस्या को हल करना अक्सर अधिक कठिन होता है, खासकर जब समय की कमी के तहत काम करना


12
यहाँ कठिनाई यह है कि पूर्णांक नकारात्मक हो सकता है? (अन्यथा संपूर्ण सरणी हमेशा सबसे बड़ा उपखंड है, इसलिए O (1) :-P)
Macke

4
समस्या को यह कहना चाहिए " सन्निहित
अवगुण का

6
मैं एक साक्षात्कार में "ओ (एन)" एक आवश्यकता नहीं बनाऊंगा। आप एक भोले समाधान के साथ शुरू कर सकते हैं और फिर चाहें तो इसे परिशोधित कर सकते हैं, लेकिन मुझे उम्मीद नहीं होगी कि कोई व्यक्ति इस एल्गोरिथम के पिछले प्रदर्शन के बिना 1 घंटे के साक्षात्कार में ओ (एन) समाधान प्राप्त करने में सक्षम होगा।
डीन हार्डिंग

2
सही। यह एक आसान समस्या है यदि आप O (n an) समाधान की अनुमति देते हैं।
dan04

@ डीन, मुझे उम्मीद है कि वे ओ (1) में लोकेशन j से j + 1 तक रनिंग aveerage टाइप योग को स्थानांतरित करने में सक्षम होंगे। शायद निष्पक्ष होने के लिए, यह संकेत के रूप में प्रदान किया जा सकता है। (मैं यह मान रहा हूं कि उपश्रेणी की लंबाई पूर्व निर्धारित कर दी गई है)
ओमेगा सेंटौरी

जवाबों:


17

यह वास्तव में डेवलपर पर निर्भर करता है।

अगर मॉलॉक 10 था तो मैं इस समस्या को 20 के रूप में बताऊंगा। लेकिन फिर मैंने पहले भी मॉलॉक किया है और शायद फिर से कर सकता हूं।

किसी ने जो इस समस्या को किया है या जानता है कि उनके सिर के शीर्ष का उपयुक्त एल्गोरिदम इसे 5 और मॉलोक () 10 बना देगा।

इस प्रकार के प्रश्न के साथ समस्या यह है कि यदि आपने उन्हें आसान होने से पहले किया है और यह वास्तव में एक परीक्षण है कि क्या आपने इस एल्गोरिथम को पहले देखा है। इस प्रकार मैं उन्हें साक्षात्कार के लिए पसंद नहीं करता।

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


मौसम -> चाहे चौथे पैराग्राफ में (और शोर के लिए खेद है, मुझे टाइपो एड बनाने के लिए प्रतिनिधि नहीं है ...)
मैथ्यू एम।

मार्टिन, मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप किस प्रकार के लोगों के लिए साक्षात्कार कर रहे हैं। सिस्टम प्रकार के लिए मॉलॉक बहुत सरल है। मेरे लिए -मैं अटक गया है, [मैं स्टैक पता और लंबाई आदि को जानबूझकर मुझसे छिपाया गया है] मालॉक के साथ मानता हूं, लेकिन सबरे की समस्या लगभग तुच्छ है। कुंजी नौकरी की जरूरतों के सवालों का मिलान कर रही है।
ओमेगा सेंटौरी

8

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

तो यहाँ है कि मैं इन समस्याओं की व्यवस्था कैसे करूँगा:

यहाँ छवि विवरण दर्ज करें

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


2

मुझे लगता है कि यह FizzBuzz या HoppityHop की तुलना में काफी कठिन है - उन दोनों एक सरल अगर-पाश में या स्विच-केस से ज्यादा कुछ नहीं हैं।

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

आपके 1 से 10 के पैमाने पर मैं शायद इसे 3 और 5 के बीच रेट करूंगा।

* जबकि सर्वर डाउन था, मैंने पाया कि अधिकतम सबअरे समस्या विकिपीडिया पर अपना स्वयं का पृष्ठ है।


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

2
@Ben Voigt: अनुक्रम {+2, -4, +1}, या {+1, +1, -1, -1, -1, -1, +1} का प्रयास करें। दरअसल, कडाने विधि बहुत सरल है - यह केवल एक बार सरणी को स्कैन करता है और डायनामिक प्रोग्रामिंग की शैली में तीन चर अद्यतन करता है।
rwong

@rwong: आह ठीक है, कडाने की आवश्यकता उस स्थिति में होती है जब अधिकतम के बाद न्यूनतम आता है। और मैं 5 चर गिनता हूं, 3 नहीं, लूप इंडेक्स।
बेन वोइगट

@ फिर: आप सही हैं, यह 5 चर और पाश सूचकांक है।
rwong

1

मैं इसे देता हूं 3. मेरे द्वारा साक्षात्कार किए गए अधिकांश प्रोग्रामरों से परे, लेकिन उन लोगों के लिए एक आसान समस्या जो मैंने किराए पर लेने की सिफारिश की थी।

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