आपकी पसंदीदा व्हाइटबोर्ड साक्षात्कार समस्या क्या है? [बन्द है]


52

जैसा कि शीर्षक कहता है, आपकी पसंदीदा व्हाइटबोर्ड साक्षात्कार समस्या क्या है, और यह आपके लिए प्रभावी क्यों साबित हुई है?

जूनियर, सीनियर, जावा, सी, जावास्क्रिप्ट, पीएचपी, एसक्यूएल, छद्म कोड, आदि।


4
एक समस्या जो मुझे पसंद थी वह आइंस्टीन की पहेली थी। stanford.edu/~laurik/fsmbook/examples/Einstein'sPuzzle.html मैं इसे 30 मिनट में नहीं कर सका। लेकिन फिर मैं नाराज हो गया, और यह पाया: games.flowix.com/en/index.html तो मैंने 20 मिनट में औसतन 6 x 6 x 6 समस्या को हल करने के लिए प्रशिक्षित किया। मुझे लगता है कि मैं अब 30 मिनट में 5 x 5 x 5 को संभाल सकता हूं। नियोक्ता मुझ पर जो भी बेवकूफ़ियां करेगा - मैं उन्हें याद रखूंगा और अगली बार उनका समर्थन करूंगा। बहुत सारी अच्छी पहेलियां हैं।
नौकरी

20
@ जॉब: इनमें से कोई भी आपको इस बारे में कुछ नहीं बताएगा कि कर्मचारी काम पर कैसा प्रदर्शन करेगा। जब तक, निश्चित रूप से, आप अपने काम के सभी समय को वास्तविक काम करने के बजाय इस प्रकार की पहेलियों को हल करने में खर्च करते हैं।
रॉबर्ट हार्वे

1
@ रोबर्ट हार्वे का मतलब है कि आप एक ऐसे व्यवसाय में हैं जो पहेली को सुलझाने के अलावा पैसे कमाता है? मुझे पता नहीं था ...;) हालांकि यह पहेली मजेदार है। एक साइड नोट के रूप में, मैं जिस कंपनी में काम करता था वह वास्तविक आईक्यू टेस्ट के लिए उनकी स्क्रीनिंग के पहले चरण के रूप में काम करता था। मैं सर्वश्रेष्ठ उम्मीदवारों को अलग करने के लिए कुछ अच्छे व्हाइटबोर्ड प्रश्न ढूंढना चाहता हूं, न कि उन्हें केवल स्क्रीन करने के लिए।
निकोल

4
@ संदर्भ: एक डेवलपर के रूप में, मैं देख सकता हूं कि एक पहेली को हल करने से समस्या सुलझाने और विश्लेषण कौशल की पहचान कैसे होती है, लेकिन डेवलपर्स को यह भी पता होना चाहिए कि कोड में उस समाधान का अनुवाद कैसे किया जाए। एक पहेली को हल करना उस निष्पादन का आधा हिस्सा दिखाता है। यह एक Rubix क्यूब को हल करने और एक Rubix क्यूब को हल करने के लिए एक एल्गोरिथ्म लिखने के बीच का अंतर है।
रॉबर्ट हार्वे

@ रॉबर्ट हार्वे मैं सहमत हूं, मैं विशेष रूप से कोडिंग समस्याओं की तलाश कर रहा हूं, न कि केवल समस्याओं को सोचकर।
निकोल

जवाबों:


22

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

मैं मूल्यांकन करने की कोशिश करता हूं कि क्या हम एक दूसरे को समझने में सक्षम हैं, और क्या हम भ्रम के बिना एक तकनीकी समस्या के बारे में बात कर सकते हैं।

ठोस उदाहरण

(जावा डेस्कटॉप डेवलपर के लिए)

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

मुझे यह पसंद है, क्योंकि यह काफी सरल है, यह वर्णन करना आसान है, इसे चरण दर चरण हल किया जा सकता है (अतिरिक्त व्यवहार को जोड़कर सब कुछ तोड़ने के बिना), यह किनारे के मामलों और त्रुटि से निपटने के बारे में बात करने की अनुमति देता है, और यह डेटा के बारे में बात करने की भी अनुमति देता है संरचनाओं।


40

मैंने यह पाया है कि उम्मीदवारों का साक्षात्कार करते समय और बिना किसी व्यवसाय वाले लोगों को फ़िल्टर करने के दौरान यह बहुत ही रोशन होता है। यह Fizz Buzz की जटिलता के समान है, लेकिन डेटाबेस कौशल पर केंद्रित है।

Assuming the following basic  table structure
Documents (DocID, DocDate)
Keywords (KeyWordID, KeyWord)
DocumentKeywords (DocID,KeywordID)

Write a query to return the following:
Part 1: Documents with a DocDate after 4/1/1995  
Part 2: Documents that contain the keyword "Blue"  
Part 3: Documents that contain the either the keyword "Blue" or "Yellow"
Part 4: Documents that contain the both the keywords "Blue" and "Yellow"

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

अधिकांश उम्मीदवार भाग 3 के माध्यम से बिना किसी समस्या के प्राप्त कर सकते हैं। आप आश्चर्यचकित होंगे कि कितने लोग सोचते हैं कि भाग 4 का उत्तर ऑपरेटर को OR से AND में बदलने के लिए है, जहां खंड में है।


2
आह, मैं इस मुद्दे को w / # 4 देखता हूं। अपने दस्तावेज़ों केवल प्रति पंक्ति एक कीवर्ड है, तो आप एक सेल बराबर दोनों "ब्लू" और "पीला" नहीं हो सकता नल जानबूझकर जानता है
glasnt

8
ओह! मैं एक साक्षात्कार में (4) के लिए खुद को गिरते हुए देख सकता हूं। @ जोब: साक्षात्कारकर्ता के रूप में , मैं उम्मीद करता हूं कि उम्मीदवार को क्वेरी की व्याख्या करने के लिए कहेंगे, यह उम्मीद करते हुए कि वह अपनी समस्या पर ठोकर खाता है यह देखने के लिए कि वह उसके साथ कैसे व्यवहार करता है। (जो आम तौर पर आपको पहले प्रयास में आपके सवालों के जवाब देने वाले उम्मीदवार से अधिक बताता है।)
पेट्रिचेन

3
@ उत्पत्ति, मुझे यकीन नहीं है कि यह वास्तव में गहरी खुदाई है। यह पता लगाने के लिए बहुत अच्छा लगता है कि क्या किसी के पास मूल SQL क्वेरी कौशल है। मैं वास्तव में हैरान हूं कि इन दिनों कुछ डेवलपर्स के पास बुनियादी कौशल कैसे हैं।
मार्क फ्रीडमैन

2
@ jk01, शायद मेरा इस बारे में एक पुराना स्कूली रवैया है, लेकिन IMO एक अच्छी तरह से विकसित डेवलपर के पास कुछ DB ज्ञान होना चाहिए, अगर कोड के माध्यम से नहीं, लेकिन कम से कम प्रश्नों के साथ प्रयोग करके डोमेन को समझना चाहिए। इसके बिना, एक डेवलपर के पास एक बहुत महत्वपूर्ण अंधा स्थान है। यह सिस्टम की सहायता और समस्या निवारण के लिए भी उपयोगी है। अमूर्त विकास को आसान बनाने और उत्पादकता बढ़ाने में मदद करने के लिए ठीक है, लेकिन मैंने कई तरह की धारणाएं बनाई हैं, क्योंकि यह अक्सर दूर होता है। मैं आगे बढ़ सकता हूं, लेकिन यह पूरी तरह से एक और बहस हो सकती है, मुझे यकीन है कि कहीं और जगह ले रहा है;)
मार्क फ्रीडमैन

4
@ back2dos - देखिए, नाराज मत होइए क्योंकि आप इसका जवाब नहीं दे सकते। ऐसी बहुत सी अन्य प्रौद्योगिकियाँ हो सकती हैं जो इसे सरल बनाती हैं, लेकिन हम बहुत सारे SQL डेटाबेस का उपयोग करते हैं और मैं ऐसे लोगों की भर्ती करता हूँ जो जानते हैं कि हम उन तकनीकों का उपयोग कैसे करते हैं, जो इस बात का बहाना नहीं बनातीं कि वे मेरे साक्षात्कार के सवालों का जवाब क्यों न दें। ।
जॉनएफएक्स

20

"मेरे द्वारा काम किए गए अंतिम प्रोजेक्ट के डिज़ाइन को बिना किसी संवेदनशील विवरण के प्रकट किए बिना व्हाइटबोर्ड पर मेरे लिए ड्रा करें।"


आप डिजाइन को कैसे परिभाषित करेंगे? क्या आप एक वर्ग आरेख की तलाश कर रहे हैं? एक और यूएमएल आरेख? टीयर का एक मूल स्केच?
justkt

1
मैं उन्हें बलूनग्राम कहता हूं। ;) बस पुलाव आकर्षित करें, नाम डालें और उन्हें नामित तीरों के साथ जोड़ दें। मुझे उसके आवेदन की परवाह नहीं है, लेकिन इस तथ्य के बारे में वह इसे समझ गया है।
Uberto

5
+1। उन लोगों के लिए, जिनके पास पहले नौकरी थी, यह निश्चित रूप से आपके द्वारा की जाने वाली सबसे अच्छी चीजों में से एक है। अगर वे समझा सकते हैं कि परियोजना को कैसे संरचित किया गया था, तो यह पहले से ही बहुत कुछ है। अगर उन्हें इस बात का अंदाजा है कि इसे उस विशेष तरीके से क्यों संरचित किया गया, या कुछ चीजों को बेहतर तरीके से कैसे किया जा सकता है, तो यह वास्तव में बहुत बड़ा धन है।
back2dos

3
@ अन्याय: महत्व यह है, कि साक्षात्कारकर्ता को जानकारी प्राप्त होती है। यह बहुत कम मायने रखता है। मैं ऐसे लोगों से मिला हूं, जो वास्तव में यूएमएल को जानते हैं, जो इसके साथ एक बात नहीं समझा सकते हैं, और लोग, जो कुछ स्क्वीजीली लाइनों के साथ जटिल प्रणालियों की व्याख्या कर सकते हैं।
back2dos

2
किसी भी संवेदनशील विस्तार को प्रकट किए बिना किसी परियोजना के डिजाइन को तैयार करने के लिए पृथ्वी पर किसी को कैसे माना जाता है?
नेमंजा ट्रिफ़ुनोविक

14

लागू करें strcpy, strcmpऔर दोस्तों।


4
मैं उम्मीदवारों को लागू करने के लिए कहता हूं atoi()
च्रिसयॉक

2
आप आश्चर्यचकित होंगे कि कितने लोग इसे लागू नहीं कर सकते हैं strdup()
टिम पोस्ट

10
यह तभी उचित है जब सी प्रोग्रामर के लिए जॉब ओपनिंग हो।

मेरी वर्तमान नौकरी के लिए साक्षात्कार में, साक्षात्कारकर्ता ने मुझे strrev()फ़ंक्शन को लागू करने या स्ट्रिंग को उलटने के लिए कहा । मेरे व्हाइट-बोर्ड समाधान ने उन्हें प्रभावित किया और मैं अब नौकरी कर रहा हूं।
गुलशन

@ क्राइसेकॉक अटोई () आसान है। itoa () कुटिल है
माइकल ब्राउन

14

मेरा पसंदीदा जो कुछ विषयों को समाहित करता है, एक बाइनरी ट्री में दिए गए नोड की संख्या को इंटरफ़ेस में गिनना है (C # में):

public interface IBinaryTree<T>
{
    IBinaryTree<T> Left
    {
        get;
    }

    IBinaryTree<T> Right
    {
        get;
    }

    T Data
    {
        get;
    }

    // Other properties and methods not germane to this problem.
}

और सिर्फ मनोरंजन के लिए, यहाँ कार्यान्वयन है, हालांकि साक्षात्कारकर्ता को यह देखने की आवश्यकता नहीं है।

public sealed class BinaryTree<T> : IBinaryTree<T>
{
    private readonly IBinaryTree<T> left;

    private readonly IBinaryTree<T> right;

    private readonly T data;

    public BinaryTree(
        IBinaryTree<T> left,
        IBinaryTree<T> right,
        T data)
    {
        this.left = left;
        this.right = right;
        this.data = data;
    }

    public IBinaryTree<T> Left
    {
        get
        {
            return this.left;
        }
    }

    public IBinaryTree<T> Right
    {
        get
        {
            return this.right;
        }
    }

    public T Data
    {
        get
        {
            return this.data;
        }
    }

    // Other properties and methods not germane to this problem.
}

और सहायक वर्ग:

public static class BinaryTreeNodeCounter
{
    public static int CountNodes<T>(this IBinaryTree<T> tree)
    {
        // TODO: What goes here?
    }
}

इसका समाधान मुझे देखना है:

public static class BinaryTreeNodeCounter
{
    public static int CountNodes<T>(this IBinaryTree<T> tree)
    {
        return tree == null
            ? 0
            : 1 + tree.Left.CountNodes() + tree.Right.CountNodes();
    }
}

के रूप में यह का ज्ञान प्रदर्शित करता है:

  • एक पेड़ (विशेष रूप से बाइनरी ट्री) कैसे काम करता है
  • एक द्विआधारी पेड़ की पुनरावर्ती परिभाषा
  • पुनरावर्ती तरीके और कैसे आधार मामले पुनरावृत्ति को रोकते हैं
  • एक नोड का अर्थ क्या है
  • एक अनुबंध के रूप में इंटरफेस
  • (कम महत्वपूर्ण) सी # सिंटैक्स का ज्ञान:
    • जेनरिक
    • विस्तार के तरीके
    • टर्नरी ऑपरेटर

क्या यह एक विस्तार विधि हो सकती है?
गुलशन

इस दिन और उम्र में, हाँ। हम उस समय वीएस 2005 में कोडिंग कर रहे थे, इसलिए विरल सिंटैक्स।
जेसी सी। स्लाइसर

जब आप मूल वर्ग के लिए स्रोत कोड प्राप्त करते हैं तो एक्सटेंशन विधि का उपयोग क्यों करें? विस्तार विधियों के लिए यह नहीं है।
बटिबिक्स

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

पवित्र बकवास जो जावा की तरह दिखता है!
टेस्ट

12

मेरे लिए दिलचस्प व्हाइटबोर्ड चर्चाओं से जुड़े दो प्रश्न हैं

  1. "कृपया आप उतना ही विस्तार से बता सकते हैं, जैसे कि आप वेब ब्राउज़र को जनरेट किया गया पेज कैसे बनाते हैं"
  2. "कृपया समझाएं कि जावा हाइबरनेट कैसे काम करता है"

वे सरल शुरू करते हैं और फिर उत्तरोत्तर अधिक जटिल हो जाते हैं।


31
एहि, मैं जवाबों को जज करने के लिए भी योग्य नहीं हूँ ... मुझे लगता है कि दूसरे के लिए आपको 12 काली मोमबत्तियाँ और एक बकरी चाहिए ...
Uberto

4
दूसरा आसान है, आपका ओएस प्रोसेसर कैश और स्टैक और आपके रैम की सामग्री को हार्ड ड्राइव में सहेजता है, और फिर कंप्यूटर को वापस चालू करने पर इसे पुनर्स्थापित करता है।
मालफिस्ट

हालाँकि, पहले प्रश्न को समझाने में कुछ दिन लग सकते थे।
मलफिस्ट

@ मालफिस्ट I का मतलब जावा हाइबरनेट दृढ़ता वाला ढांचा है।
गैरी रोवे

2
@Paul स्टीफेंसन हाँ, लेकिन सिर्फ यकीन के लिए ...
गैरी रोवे

8

मुझे व्हाइटबोर्ड प्रश्न के रूप में एक पहेली या डिज़ाइन प्रश्न का उपयोग करना पसंद नहीं है। मैं सीधा, सरल, प्रश्न पसंद करता हूं, जो कुछ कोड लिखने के लिए उम्मीदवार की क्षमता का परीक्षण करता है। मेरा पसंदीदा हैं:

1) एक एकल लिंक की गई सूची को उलटने के लिए एक फ़ंक्शन लिखें। (इससे पहले कि वे महसूस करते हैं कि उन्हें 3 पॉइंटर्स की आवश्यकता है, कुछ समय लगता है।)

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

3) बाइनरी के लिए एक प्रक्रिया लिखें पूर्णांक की एक सरणी की खोज। (जैसे कि जॉन बेंटले कहते हैं (प्रोग्रामिंग पर्ल में), बहुत से लोग द्विआधारी खोज लिखने में गलती करते हैं। एक तो बग ढूंढने, परीक्षण मामलों को लिखने, कोड के माध्यम से चलाने, आदि के साथ पालन किया जा सकता है।)


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

मुझे प्रश्नों का डिज़ाइन करने में कोई आपत्ति नहीं है, लेकिन मैंने एक बार एक ऐसे व्यक्ति के साथ साक्षात्कार किया था जिसका शौक पहेलियां कर रहा था, और उसके कुछ डरावने प्रश्न थे। यह मेरे जैसा था कि किसी ने मार्शल आर्ट के सवाल पूछे।
बॉब मर्फी

शायद लोगों को यह पता होना चाहिए कि आप (3) सही में "क्रमबद्ध सरणी" का मतलब जानते हैं?
हैवगुएस

7

हमने इसका इस्तेमाल एक कंपनी में किया जिसके लिए मैंने काम किया था।

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

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


6

मैं एक समस्या का उपयोग करता हूं जो मेरे प्रोग्रामिंग डोमेन के लिए प्रासंगिक है।

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

मेरा कोई पसंदीदा नहीं है। मेरे द्वारा चुनी गई समस्या नौकरी के आधार पर बहुत भिन्न होगी।

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


2
+1 अंतिम पैराग्राफ के लिए, जो सभी महत्वपूर्ण है। आमतौर पर यह जवाब नहीं है जो ऐसी चीजों में मायने रखता है, लेकिन वहां पहुंचने के लिए लिया गया रास्ता। जैसा कि मेरे सभी गणित शिक्षकों ने कभी कहा था "अपने काम को दिखाएं!"
परिक्रमा

4

मेरा पसंदीदा मेरा एक दोस्त था जो मेरा इस्तेमाल करता था।

मुझे पहले "n" अभाज्य संख्याओं को जनरेट / प्रिंट / स्टोर करने के लिए एक फ़ंक्शन लिखें और फिर समझाएँ कि यह कैसे काम करता है और यह कितना कुशल है।

यह अच्छी तरह से काम करता है क्योंकि:

  1. यह एक एल्गोरिदमिक प्रश्न है, इसलिए इसमें साक्षात्कारकर्ता को सोचने में सक्षम होने और फिर उनकी सोच को समझाने की आवश्यकता है - ताकि आप देख सकें कि उनका मस्तिष्क कैसे काम करता है।

  2. यह भाषा स्वतंत्र है।

  3. शायद ही किसी को यह पूरी तरह से सही लगता है (सामान्य रूप से एक किनारे का मामला वे याद करते हैं (1 या 2 सामान्य रूप से), या वे नकारात्मक संख्याओं को नहीं संभालते हैं, इसलिए आपको यह देखने को मिलता है कि वे बग को कैसे संभालते हैं और कहा जा रहा है कि वे गलत हैं।

  4. अधिकांश इसे एक सरल लेकिन बहुत धीमी छलनी के रूप में करते हैं (उदाहरण के लिए 80% लोग n की जाँच करेंगे जो n को सभी पूर्णांकों को n से कम पर विभाजित करके एक प्रमुख है), जो आपको वार्तालाप के लिए बहुत गुंजाइश देता है कि वे एल्गोरिथ्म को कैसे बेहतर बना सकते हैं। पर अंतरिक्ष / समय व्यापार बंद उदाहरण के लिए "यदि आप पहले से ही 2 से विभाज्य नहीं है, तो आप 4 की संख्या को 4 से क्यों विभाजित कर रहे हैं?" या "आपने यह काम किया है कि आपको केवल sqrt (n) से कम सभी अभाज्य संख्याओं को विभाजित करने की आवश्यकता है, लेकिन इसके लिए आपको उन संख्याओं को कहीं स्टोर करना होगा, इसलिए इसके क्या निहितार्थ हैं?"

उत्तर सही पाने के लिए उनकी कोई आवश्यकता नहीं है। अगर कोई सोच सकता है और अपनी सोच को समझा सकता है तो वे एक अच्छे उम्मीदवार होने के लिए एक लंबा रास्ता तय करते हैं।


मुझे एक बार एक साक्षात्कार प्रश्न मिला, जहां मुझे सी कोड का एक बहुत ही अस्पष्ट ब्लॉक दिया गया था, और यह पता लगाने के लिए कहा कि उसने क्या किया। जिस तरह से यह हर दूसरे प्राइम नंबर को प्रिंट करता है उसके बारे में बहुत ही दौर में। 300 लोगों ने आवेदन किया और उन्होंने मुझे नौकरी की पेशकश की क्योंकि मैं एकमात्र उम्मीदवार था जिसने उन्हें बताया था कि इसका उद्देश्य क्या है, क्योंकि मूल्यों को प्राप्त करने का विरोध किया गया था। तो हाँ, +1, primes एक अच्छी जाँच है। विशेष रूप से अगर वे एक छलनी के साथ आते हैं, हालांकि यह अंतरिक्ष जटिलता के लिए कम्प्यूटेशनल जटिलता से ट्रेड करता है।
परिक्रमा

1
1 प्राइम नहीं है ..

2
@ Thorbjørn - स्पष्ट रूप से, लेकिन दिनचर्या का एक अच्छा प्रतिशत मैंने इस समस्या को हल करने के लिए लिखा है मुझे बताया है कि यह है
Rhys गिब्सन

फिर उनके पास एक बग है :)

3

कुछ को aff_z कहा जाता है, जो मेरे इंजीनियरिंग स्कूल की सी परीक्षाओं का हिस्सा था और छुट्टियों से वापस आने पर छात्रों को फेल करने के लिए "डमी" परीक्षा के रूप में उपयोग किया जाता था (हमारा अंकन प्रणाली का अर्थ था कि एक परीक्षा में असफल होने से अंकन बंद हो जाता है, इसलिए "डमी टेस्ट" विफल हो जाएगा अपने पूरे परीक्षण को अमान्य करें। आपको नैतिक विवरणों पर ध्यान देने के लिए मजबूर करता है)। मैंने साक्षात्कार के दौरान एक या दो बार इसका पुन: उपयोग किया।

वैसे भी ... मैं सटीक सूत्रीकरण भूल गया, लेकिन यह कुछ इस तरह था ...

Write a function taking a single char parameter named c and returning nothing (void).
You function must satisfy the following requirements:

 - if c is bigger or equal to 0, then print 'z' to standard output
 - if c is stricly smaller than 0 , then print 'z' to standard output
 - in any other case, print the letter 'z' to standard output

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

और मानो या न मानो, यह साक्षात्कार के दौरान भी हुआ।

साक्षात्कार में इसे चलाना काफी मजेदार था, क्योंकि कुछ आवेदक संभावित शाखाओं को लिखना शुरू कर देंगे और फिर महसूस करेंगे कि क्या गलत है (जाहिर है, अगर आप केवल उनसे मौखिक रूप से पूछें, तो यह काफी समझ में आता है कि वे ऐसा करते हैं जैसे आप बोलते हैं ... लेकिन अगर आप इसे लिखित रूप में दें, मुझे यह अजीब लगता है ...)

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


1
क्या आपने कभी साक्षात्कार में अभ्यर्थियों का अपमान किया है? या लगता है कि आप एक गंभीर साक्षात्कार आयोजित करने के बजाय बस अपने खर्च पर मज़े कर रहे थे?
निकोल

@ रेनेसिस: मैं पहले एक मुस्कुराहट के साथ मुझे देख रहा था। जिसमें से कुछ टेस्ट में फेल हो गए। सामान्य तौर पर अच्छे उम्मीदवार अगर हँसते हैं। उदाहरण के लिए, जेएस प्रोग्रामर के लिए, मेरे पास बहुत से ऐसे उम्मीदवार थे जो एक "डुह" के साथ साक्षात्कार के उत्तर को विफल कर देते थे, variablename = variablevalue;जबकि अच्छे लोग सिर्फ फोन पर या व्यक्तिगत रूप से हंसते थे और सीधे मुझे बताते थे कि क्या अलग होगा या बुद्धि के साथ var)।
ज्येष्ठ माह

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

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

व्यक्तिगत रूप से, मुझे पढ़ने के दौरान एक मानसिक चेहरा मिलेगा और आश्चर्य होगा कि किसी और ने साक्षात्कारकर्ता के लिए सवाल किया कि वह उसका मजाक उड़ाए।
Wildpeaks

3

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

उन्नत उम्मीदवारों के लिए, मैं कभी-कभी निम्नलिखित प्रश्न देता हूं:

यह छवि एक अर्धचंद्राकार चाँद दिखाती है। बी से डी तक वर्धमान की चौड़ाई 9 सेमी और ई और एफ के बीच, 5 सेमी है। C बड़े वृत्त का केंद्र है।

क) कृपया अर्धचंद्र के क्षेत्र की गणना करें। क्रिसेंट मून मैथ्स प्रश्न

बी) किसी भी आकार से आंतरिक सर्कल में फिट होने के लिए एक छवि का आकार बदलने के लिए आवश्यक गणनाओं का वर्णन करें, और केंद्र बिंदु ज्ञात होने पर इसे सर्कल के भीतर स्थिति दें।

एक आसान सवाल के लिए, मैं आमतौर पर एक ही तरह का प्रश्न देता हूं, लेकिन "एक वर्ग के भीतर एक वर्ग में" उदाहरण का उपयोग करें। हालांकि यह बहुत आसान है, इसलिए मैं इस पर सही बीजगणित की उम्मीद करूंगा।

एक वर्ग के अंदर एक वर्ग के अंदर वर्ग

उस पर और ऊपर, मैं उन्हें चर लंबाई डेटा सेट के सभी संयोजनों को उत्पन्न करने के लिए एक एल्गोरिथ्म खंगालने के लिए कहता हूं।


1
A) का उत्तर 128.75 है? (मुझे नहीं पता कि मैंने कोई गलती की है)। मुझे यह पसंद है, लेकिन यह ज्यामिति के बारे में अधिक है।
लंबे समय तक

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

7
-1 क्योंकि ज्यामिति जस्ट इन टाइम लर्निंग के लिए एक अच्छा उम्मीदवार है, और गुणवत्ता सॉफ्टवेयर बनाने की मेरी क्षमता पर प्रतिबिंबित नहीं करता है।
मालफिस्ट

2
मुझे इस समस्या में मज़ा आया। मुझे उम्मीद है कि आप मेरे समाधान का हिस्सा (ए) साझा करने से मुझे गुरेज नहीं करेंगे। व्यास 9 सेमी से भिन्न होते हैं, इसलिए यदि आंतरिक सर्कल में त्रिज्या आर है, तो बाहरी सर्कल में त्रिज्या आर + 4.5 है। अर्धचन्द्राकार का क्षेत्रफल वृत्तों के क्षेत्रों में अंतर है: pi (r + 4.5) ^ 2 - pi * ^ ^ 2। जो कुछ बचा है वह आर खोज रहा है। बिंदु (0,0) के रूप में सी को परिभाषित करें, फिर बिंदु E पर (0, r - 0.5) है (क्योंकि CE बड़े त्रिज्या से 5 सेमी कम है)। आंतरिक सर्कल को सही 4.5cm पर स्थानांतरित किया जाता है, इसलिए इसका समीकरण (x - 4.5) ^ 2 + y ^ 2 = r ^ 2 है। (X, y) = (0, r - 0.5) में प्लग करें और r के लिए हल करें।
टिम गुडमैन

2
+1 क्योंकि मुझे लगता है कि यह एक नौकरी के लिए एक अच्छा सवाल है जिसके लिए ज्यामिति की आवश्यकता होती है। इसमें बहुत सारे तर्क शामिल हैं, न कि केवल एक सूत्र में प्लग करना। उस ने कहा, मैं कुछ अच्छे प्रोग्रामर्स को जानता हूं, जिन्हें सिर्फ इसलिए ट्राई किया जाएगा क्योंकि उन्हें 10 साल में सर्किल के बारे में इतना सोचना नहीं था - लेकिन सवाल किसी भी डेवलपर के इंटरव्यू के लिए उपयुक्त सवाल नहीं पूछते । वर्तमान में शीर्ष-मतदान वाले SQL प्रश्न (जो मुझे भी पसंद है) कम से कम नौकरी-विशिष्ट के रूप में है।
टिम गुडमैन

3

मैंने देखा है सबसे अच्छा FizzBuzz उत्तर हैं:

SQL सर्वर 2008

;WITH mil AS (
 SELECT TOP 100 ROW_NUMBER() OVER ( ORDER BY c.column_id ) [n]
 FROM master.sys.all_columns as c
 CROSS JOIN master.sys.all_columns as c2
)                
 SELECT CASE WHEN n  % 3 = 0 THEN
             CASE WHEN n  % 5 = 0 THEN 'FizzBuzz' ELSE 'Fizz' END
        WHEN n % 5 = 0 THEN 'Buzz'
        ELSE CAST(n AS char(6))
     END + CHAR(13)
 FROM mil

सी # (सरल)

foreach (int number in Enumerable.Range(1, 100))
{
    bool isDivisibleBy3 = (number % 3) == 0;
    bool isDivisibleBy5 = (number % 5) == 0;

    if (isDivisibleBy3)
         Console.Write("Fizz");

    if (isDivisibleBy5)
         Console.Write("Buzz");

    if (!isDivisibleBy3 && !isDivisibleBy5)
         Console.Write(number);

    Console.WriteLine();
}

सी # (चालाक)

 Enumerable
  .Range(1, 100)
  .Select(i =>
    i % 15 == 0 ? "FizzBuzz" :
    i % 5 == 0 ? "Buzz" :
    i % 3 == 0 ? "Fizz" :
    i.ToString())
  .ToList()
  .ForEach(s => Console.WriteLine(s));

1
आप यह जानना चाहते हैं कि यह किस विशेष बोली को लिखा जा सकता है।

कार्यात्मक शैली के साथ अच्छा लग रहा है।
23

2

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

  • डिजाइन के बारे में जागरूकता।

    "मुझे पता पुस्तिका कार्यक्रम के लिए तालिका संरचना दिखाएं जिसमें पहले और अंतिम नामों के साथ संपर्क हैं जो संख्या (सेल / घर / काम / आदि) के विवरण के साथ कई फोन नंबर हो सकते हैं।"

    मैं यहाँ UML 2.0 स्पेक आरेख की तलाश नहीं कर रहा हूँ, यहाँ एक साधारण बबल आरेख ठीक है। जब तक यह उचित है।

  • डेटाबेस (यानी SQL) के साथ काम करने का ज्ञान

    1. अंतिम नाम "स्मिथ" वाले लोगों के लिए सभी फोन नंबर प्राप्त करने के लिए एक प्रश्न लिखें
    2. डेटाबेस में सभी ग्राहकों को प्राप्त करने के लिए एक क्वेरी लिखें, और अंतिम नाम "स्मिथ" वाले लोगों के लिए फोन नंबर।
  • परीक्षण का ज्ञान

    मान लें public IEnumerable<PhoneNumber> GetPhoneNumbers(string lastName)कि हस्ताक्षर के साथ एक विधि मौजूद है जो पहले से आपकी क्वेरी के परिणाम लौटाती है। मान लें कि यदि आप विधि में एक अशक्त पारित करते हैं, तो यह एक NullReferenceException फेंकता है। इस कार्यक्षमता को प्रदर्शित करने के लिए एक परीक्षण लिखें।

    एक परीक्षण लिखें जो दर्शाता है कि GetPhoneNumbers अंतिम नाम "स्मिथ" वाले किसी व्यक्ति के लिए (a123)456-7890 का एक घर फोन नंबर लौटाएगा।

  • कुछ कोड लिखने का ज्ञान

    एक विधि लागू करें जो आपके द्वारा लिखे गए परीक्षणों की आवश्यकताओं को पूरा करेगी।


हमारे द्वारा प्राप्त आवेदकों की संख्या और गुणवत्ता को ध्यान में रखते हुए, मैंने उन सभी का साक्षात्कार लिया है जिन्होंने कभी गंभीरता से आवेदन किया है। मैंने नो-हायर किया है।


SQL # 2 में, क्या आप यह सब एक क्वेरी में करने की बात कर रहे हैं? क्या उद्देश्य सिर्फ बाएं / दाएं या भीतर के जुड़ाव को समझने का है?
निकोल

@ संदर्भ: हाँ यह है।
स्टीवन एवर्स

2

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


2

निम्नलिखित समस्या के लिए एक एल्गोरिथ्म लिखें: एक संख्या n को देखते हुए , कुल संख्या के (अद्वितीय) बाइनरी पेड़ों में n नोड होते हैं।

इस प्रकार, n = 0 और n = 1 के लिए, उत्तर है 1. n = 2 के लिए, आपके पास 2: रूट नोड है, और फिर दूसरा नोड या तो बाईं या दाईं ओर है।

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

[ संबंधित, लेकिन अलग-अलग, बाइनरी-सर्च पेड़ों के मामले के लिए यह स्टैकऑवरफ्लो चर्चा भी देखें ।]


तो एक यूआई प्रोग्रामर जो डायनेमिक प्रोग्रामिंग नहीं जानता है वह एक खराब प्रोग्रामर है? इसके लिए किसी भी व्यावसायिक प्रोग्रामर जो गतिशील प्रोग्रामिंग को याद नहीं कर सकता है वह बुरा है? टॉपकोडर में बहुत सारे किशोर एक गतिशील प्रोग्रामिंग समस्या से गुजरेंगे, लेकिन कृपया उनके द्वारा लिखे गए कोड पर एक नज़र डालें।
गीकुं

@ गीक: याद रखें कि "व्हाइटबोर्ड" समस्याएं किसी की विचार प्रक्रिया को देखने का एक तरीका है। डायनेमिक प्रोग्रामिंग समस्याओं को इस चर्चा में होना चाहिए, क्योंकि वे Google के साथ अन्य लोगों के बीच बहुत लोकप्रिय हैं।
मैक्नील

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

मैं जरूरी नहीं कि एक इंटरव्यू लेने वाले से यह सही होने की उम्मीद करूं, हालांकि, कुछ कंपनियां।
मैकनील

@ गीक: "ए ... प्रोग्रामर जो गतिशील प्रोग्रामिंग नहीं जानता है, एक बुरा प्रोग्रामर है?" - हाँ । उस ने कहा, मैं मानता हूं कि जब आप इसका उपयोग नहीं कर रहे हैं तो गतिशील प्रोग्रामिंग में सोच तुच्छ नहीं है। लेकिन इसे जानना नितांत आवश्यक है।
कोनराड रुडोल्फ

2

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

मुझे लगता है कि यह एक छोटी सी चुनौतीपूर्ण समस्या है, कई कंप्यूटिंग क्षेत्रों में आवेदक के ज्ञान और क्षमताओं को प्रकट करता है।


2

Implement function/method(on c/c++/c# whatever), which calculates n-th item of Fibonacci sequence

कई लोग इस पर अटक सकते थे। यदि कुछ समाधान दिया जाता है - आमतौर पर यह पुनरावृत्ति का उपयोग करता है। उसके बाद:

Implement the same via 'for'-loop

आपको यह नहीं बता सकता है कि दोनों कार्यों को पूरा करने में कितने फेलो हैं - 50% उम्मीदवार।
इसलिए मुझे यह पसंद है :)


क्या होगा यदि पहला कार्यान्वयन लूप के लिए किया जाता है?
डार्क

2
पुनरावर्ती संस्करण को लागू करने का प्रस्ताव है। आमतौर पर लूप के बाद लोग पुनरावर्ती संस्करण को सफलतापूर्वक लागू करते हैं।
एलेक्स डेब

या आप इसे एक ही कथन के रूप में लागू कर सकते हैं fib(n)=round(power(PHI,n)/SQRT5):। PHI और SQRT5 क्रमशः सुनहरे अनुपात (1.618 ...) और 5 के वर्गमूल का प्रतिनिधित्व करते हैं।
oosterwal

2

उन डेटाबेस के लिए जिनके साथ मैं जाता हूं:

टेबल: चीजें

आईडी का नाम
1 बोडकिन वान हॉर्न
2 होस-फूंस
3 होस-फूंस
4 हॉट-शॉट
5 मारविन ओ'ग्रेवल बैलून फेस
6 सूंघना
7 मारविन ओ'ग्रेवल बैलून फेस
8 मारविन ओ'ग्रेवल बैलून फेस
९ दवे

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

टेबल: चीजें

आईडी का नाम
1 बोडकिन वान हॉर्न
2 होस-फूंस
4 हॉट-शॉट
5 मारविन ओ'ग्रेवल बैलून फेस
6 सूंघना
९ दवे

क्योंकि मुझे यह पसंद है:

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

(यह वह जगह है जहां मुझे लगता है कि ऐसा करने का कुछ पूरी तरह से तुच्छ तरीका है और मैं इन सभी वर्षों में इसे जटिल कर रहा हूं)।


1
मुझे लगता है मुझे नहीं पता कि "पूरी तरह से तुच्छ" के रूप में क्या मायने रखता है ... कुछ SELECT min(ID), Name FROM Things GROUP BY Nameऐसा काम करेगा, है ना?
टिम गुडमैन

@ समय - जो आपको सब कुछ के लिए गिनती देता है। मैं केवल डुप्लिकेट वाले उन्हें चाहता हूं। मैन्युअल रूप से संपादित किए गए परिणाम गिनती नहीं करते हैं, मान लें कि यह लाखों पंक्तियों में स्केलिंग है। यह एक आसान समस्या है, लेकिन मेरे अनुभव में 80% लोगों को यह जानने का दावा है कि एसक्यूएल आपके पहले स्टैब से भी नहीं मिल सकता है।
जॉन हॉपकिंस

@Jon: यकीन नहीं है कि आप क्या मतलब है "कि सब कुछ के लिए गिनती देता है"। आपके उदाहरण समाधान से, यह दिखता है कि आप जो चाहते हैं वह प्रत्येक अलग नाम के लिए एक पंक्ति है। आपकी टिप्पणियों से ऐसा लगता है कि शायद आपको कुछ पसंद है HAVING count(Name) > 1, लेकिन फिर मुझे लगता है कि आपके नमूना उत्तर में बोडकिन वान हॉर्न, हॉट शॉट, स्निम और डेव को छोड़ देना चाहिए।
टिम गुडमैन

@ समय - तुम सही हो, यह वास्तव में अस्पष्ट है। जब मुझे कुछ मिनट मिलेंगे तो मैं उसे संपादित करूँगा।
जॉन हॉपकिंस

1
मुझे लगता है कि मैं यह करूँगा DELETE FROM Things WHERE ID NOT IN (SELECT MIN(ID) FROM Things GROUP BY Name):। क्या आपके पास एक पसंदीदा समाधान है?
टिम गुडमैन

2

मेरी पसंदीदा C ++ व्हाइटबोर्ड समस्या उम्मीदवार को लागू करने की है

Vector3 a(1, 0, 0), b(0, 1, 0); // Mathematical 3D vectors
double c = 7.0;
double d = a * c;
Vector3 e = a * b;

इससे मैं सीख सकता हूं

  • यदि उम्मीदवार पहचानता है कि आप रिटर्न प्रकार (जूनियर्स-स्तरीय C ++ का संकेत) पर अधिभार नहीं लगा सकते हैं
  • यदि उम्मीदवार जानता है कि कैसे अस्थायी लौटें और कास्टिंग ऑपरेटरों को लागू करें (मध्यवर्ती स्तर C ++ का संकेत)
  • यदि उम्मीदवार बुनियादी वेक्टर गणित (हमारे आवेदन डोमेन के लिए महत्वपूर्ण) कर सकता है

2

आप मानक 52 कार्ड डेक का प्रतिनिधित्व कैसे करेंगे? कोई भी प्रोग्रामिंग भाषा ठीक है। आप कार्डों में फेरबदल कैसे करेंगे?


वेक्टर <कार्ड> C ++ 'फेरबदल फ़ंक्शन के साथ :)
गुना

1

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


मुझे "स्टैक सीपीयू का हिस्सा नहीं है" चीज़ नहीं मिलती।
बड़जक

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

@aufather: अगर मुझे सही से याद है, तो आपको फोन करना होगा varargs()या कुछ फंक्शन करना होगा। क्या मैं सही हूँ? मैंने केवल यह कहने के लिए एक बार किया है कि मैंने इसे थोड़ी देर पहले किया था।
माइकल के

@barjak - एक बार जब आप प्रिंटफ़ को लागू करना शुरू करते हैं, तो आपको अपने स्टैक तक पहुँचने की आवश्यकता होगी, और मुझे जवाब मिला है कि स्टैक सीपीयू में है।
3

@ मिचेल - एम्बेडेड दुनिया में, आपको अपने मंच वास्तुकला को वास्तव में अच्छी तरह से जानने की आवश्यकता है। तो यह सवाल जल्दी से अज्ञानी बहुत जल्दी मातम करता है।
aufather

1

आपके पास इसमें 200 मछली के साथ एक कटोरा है। इन मछलियों में से 99% अपराधी नहीं हैं। आपको कितनी मछलियाँ निकालनी चाहिए ताकि जो बचता है उसका 2% गप्पे हों। अपना काम दिखाओ।

यह भ्रामक आवश्यकताओं के बारे में है। यह एक ही सवाल के दौरान कई बार दृष्टिकोण बदलने के लिए इस तरह से कहा जाता है। यह देखने के लिए है कि क्या वे यह पता लगा सकते हैं कि वास्तव में क्या चल रहा है।

आपको आश्चर्य होगा कि कितने लोगों को यह गलत लगता है।


4
कटोरे में दो 12 इंच ऑस्कर जोड़ें वे 98% गपियों को बहुत जल्द हटा देंगे।
Geek

यदि आप एक गप्पी को हटा दें तो क्या होगा?

1
1% guppies, = 200 x 1% = 2 (200-2 = 198 अन्य मछली), जहां 2 = 2%, शेष मछली = 98% = 98 (1: 1)। 98 = 198 - 100 => answer = 100। [मान लें कि आप चुनिंदा अन्य मछलियों को चुन सकते हैं। यदि अपराधियों को हटा दिया जाता है, तो अन्य उत्तर हैं।] अच्छा सवाल, आपको आश्चर्य होगा कि कुछ लोग उस कुएं को कैसे संभालते हैं, हालांकि यह एक प्रोग्रामर के लिए बच्चे का खेल होना चाहिए।
परिक्रमा

1

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

1) एक बुनियादी साझा सूचक को लागू करना, जहां उनके कार्यान्वयन में tr1 या बढ़ावा के साझा बिंदुओं की तुलना में कमियां हैं, इसका स्पष्टीकरण, इसका उपयोग कैसे किया जाना चाहिए आदि।

2) एक कोड की समीक्षा। अनुभवी किराए के लिए हम उम्मीद करते हैं कि वे डिज़ाइन समस्याओं, त्रुटियों, कोडिंग भयावहता और संभावित रखरखाव समस्याओं के लिए कुछ प्रदान किए गए कोड की आत्मविश्वास से समीक्षा करने में सक्षम होंगे। इसके अलावा, निश्चित रूप से, वे इसे कैसे ठीक करेंगे; और कभी-कभी वे उस संदेश को कनिष्ठ डेवलपर को कैसे देते हैं जिसकी वे नीचे शूटिंग कर रहे हैं।


1

एक प्रश्न जो मैं तब से इस्तेमाल कर रहा हूं जब वह मुझ पर इस्तेमाल किया गया था वह निम्नलिखित है:

1 और 100 के बीच सभी संख्याओं को मुद्रित करने के लिए एक फ़ंक्शन लिखें।

मेरे द्वारा उपयोग किए जा रहे कारण का एक बड़ा हिस्सा इस तथ्य के कारण है कि आप तब समाधान ले सकते हैं और विभिन्न दिशाओं में आगे बढ़ सकते हैं:

आप 1 और 1000, 10000, या n के बीच सभी संख्याओं को प्रिंट करने के लिए फ़ंक्शन को कैसे संशोधित करेंगे ?

इन सवालों के उनके जवाब आपको अंतर्दृष्टि दे सकते हैं कि वे बदलती आवश्यकताओं के साथ-साथ प्रदर्शन के विचारों को कैसे पहचान सकते हैं। एक मजबूत उम्मीदवार एक सवाल के साथ जवाब दे सकता है कि फ़ंक्शन को कितनी बार कहा जाता है के लिए आवश्यक है।

एक अलग दिशा में आगे बढ़ना:

यदि आप जानते हैं कि यह फ़ंक्शन मिनट में कई बार कहा जा रहा है और प्रदर्शन एक चिंता का विषय है तो आप चीजों को कैसे बदलेंगे?

मैं इसका उपयोग उनकी पार्श्व सोच की जाँच करने के तरीके के रूप में करता हूँ। चूंकि प्रधान संख्याओं की गणना धीमी हो सकती है क्योंकि अधिकतम मूल्य बड़ा हो जाता है यह कभी-कभी अधिक समझ में आता है कि किसी प्रकार की गणना की गई या पूर्व-गणना की गई लुक-अप तालिका का उपयोग करें जिसे उस समस्या के आधार पर समायोजित किया जाता है जिसे आप हल करने की कोशिश कर रहे हैं।


1

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

एक प्रोग्राम (या प्रक्रिया) लिखें जो पूर्णांक X, Y की एक जोड़ी को इनपुट के रूप में लेता है और निर्धारित करता है कि क्या X * Y समान रूप से विभाज्य है 10. महत्वपूर्ण नोट: X और Y काफी बड़े हो सकते हैं कि X * Y सबसे बड़ा पूर्णांक उपलब्ध कराता है। आपकी मशीन पर।


नमूना समाधान:


T_BOOL MultipleOfTen(int x, int y)
{
    return((x%2==0 || y%2==0) && (x%5==0 || y%5==0));
}

0

निम्नलिखित विधि भरें: पीएस संख्या का एक मोड संख्या (सूची में) है जिसमें सबसे अधिक घटनाएं होती हैं।

public int getMode(List<Integer> numberList) {


}

यह देखने के लिए है effecient आपका कोड है।


-2

आप एक अतिरिक्त मैट्रिक्स का प्रतिनिधित्व कैसे करेंगे जो अपेक्षाकृत बड़ा है ... 1000x1000 का कहना है लेकिन इसमें अधिकतम 100 गैर-शून्य प्रविष्टियाँ हैं?

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