किसी के पास कोई अच्छा FizzBuzz प्रकार के प्रश्न हैं जो FizzBuzz समस्या नहीं है?
मैं किसी का साक्षात्कार कर रहा हूं और एफबी अपेक्षाकृत अच्छी तरह से जाना जाता है और याद रखना मुश्किल नहीं है, इसलिए विचारों की खोज में मेरा पहला पड़ाव मेरी नई लत एसओ है।
किसी के पास कोई अच्छा FizzBuzz प्रकार के प्रश्न हैं जो FizzBuzz समस्या नहीं है?
मैं किसी का साक्षात्कार कर रहा हूं और एफबी अपेक्षाकृत अच्छी तरह से जाना जाता है और याद रखना मुश्किल नहीं है, इसलिए विचारों की खोज में मेरा पहला पड़ाव मेरी नई लत एसओ है।
जवाबों:
मैंने अपेक्षाकृत सरल प्रोग्रामिंग समस्याओं की एक छोटी सूची देखी है जिसका उपयोग उम्मीदवारों के लिए किया गया है, जैसे कि FizzBuzz। बढ़ती कठिनाई के क्रम में मैंने कुछ समस्याएं देखी हैं:
ये जावा के लिए थे, और आप मानक पुस्तकालयों का उपयोग कर सकते हैं, इसलिए उनमें से कुछ बेहद आसान हो सकते हैं (जैसे 6)। लेकिन वे FizzBuzz की तरह काम करते हैं। यदि आपके पास प्रोग्रामिंग के बारे में कोई सुराग है, तो आपको सबसे जल्दी काम करने में सक्षम होना चाहिए। यहां तक कि अगर आप अच्छी तरह से भाषा नहीं जानते हैं, तो आपको कम से कम कुछ करने के पीछे विचार देने में सक्षम होना चाहिए।
इस परीक्षण का उपयोग करते हुए मेरे पिछले मालिकों में से एक ने उन लोगों से सब कुछ देखा, जिन्होंने इसे बहुत जल्दी किया, उन लोगों को, जो एक आदमी को एक घंटे के बाद एक भी जवाब नहीं दे सकते थे।
मुझे यह भी ध्यान देना चाहिए: उन्होंने लोगों को अपने कंप्यूटर का उपयोग करने दिया, जबकि उन्हें ये कार्य दिए गए थे। उन्हें विशेष रूप से निर्देश दिया गया था कि वे Google और इस तरह का उपयोग कर सकते हैं।
शायद यह सीधे आपके सवाल का जवाब नहीं देता है, लेकिन मुझे यकीन नहीं है कि आपको एक और समस्या के साथ आने की जरूरत है। "याद रखने में आसान" होने के अलावा, FizzBuzz सवाल सिर्फ सादा "आसान" है, और यही बात है। यदि आप जिस व्यक्ति का साक्षात्कार ले रहे हैं, वह उन लोगों की श्रेणी में है, जिनके लिए फ़िज़बज़ "अच्छी तरह से जाना जाता है", तो वे लोगों के वर्ग में हैं कि फ़िज़बज़-प्रकार का प्रश्न फ़िल्टर नहीं होगा। इसका मतलब यह नहीं है कि आप उन्हें मौके पर किराए पर लेते हैं, लेकिन इसका मतलब यह है कि वे इसके माध्यम से हवा देने और साक्षात्कार के मांस पर उतरने में सक्षम होना चाहिए।
इसे दूसरे तरीके से रखने के लिए, जो भी कोडिंग हॉरर को पढ़ने के लिए समय लेता है, वह आगे के साक्षात्कार के लायक है। बस उन्होंने समाधान को वास्तव में जल्दी से लिख दिया है, इसे संक्षेप में चर्चा करें (उदाहरण के लिए, आप यह कैसे परीक्षण करते हैं?), और फिर अगले प्रश्न पर आगे बढ़ें। और जैसा कि लेख कहता है, "यह वास्तव में आश्चर्यजनक है कि कितने उम्मीदवार सरलतम प्रोग्रामिंग कार्यों में असमर्थ हैं।"
प्रोजेक्ट यूलर में से कोई भी शुरुआती अच्छा होगा।
उदाहरण के लिए:
समस्या 25
फिबोनाची अनुक्रम को पुनरावृत्ति संबंध द्वारा परिभाषित किया गया है:
Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
इसलिए पहले 12 शब्द होंगे:
F1 = 1 F2 = 1 F3 = 2 F4 = 3 F5 = 5 F6 = 8 F7 = 13 F8 = 21 F9 = 34 F10 = 55 F11 = 89 F12 = 144
12 वां शब्द, F12, तीन अंकों को शामिल करने वाला पहला शब्द है।
1000 अंकों वाले फाइबोनैचि अनुक्रम में पहले शब्द का सूचकांक क्या है?
मैं एक स्ट्रिंग की जाँच कर रहा हूँ अगर यह एक palindrome एक बहुत ही सरल है जो एक सभ्य वीडर हो सकता है।
scalar(reverse 'foo') == 'foo'
।
मैं एक FizzBuzz सवाल है कि modulo ऑपरेटर शामिल नहीं करना चाहता था। खासकर जब से मैं आमतौर पर वेब डेवलपर्स के लिए साक्षात्कार कर रहा हूं जिनके लिए मॉडुलो ऑपरेटर बस अक्सर नहीं आता है। और अगर यह कुछ ऐसा नहीं है जिसे आप नियमित रूप से चलाते हैं, तो यह उन चीजों में से एक है जिन्हें आप कुछ समय के लिए देखते हैं।
(दी, यह एक अवधारणा है, आदर्श रूप से, आपको रास्ते में कहीं गणित के पाठ्यक्रम में सामना करना चाहिए था, लेकिन यह एक अलग विषय है।)
तो, जो मैं लेकर आया था, जिसे मैं अकल्पनीय रूप से कहता हूं, थ्रीस इन रिवर्स । निर्देश है:
एक प्रोग्राम लिखें, जो रिवर्स ऑर्डर , 1 और 200 के बीच 3 में से हर एक को प्रिंट करता है ।
इसे सामान्य क्रम में करना आसान है: लूप इंडेक्स को 3 से गुणा करें जब तक आप एक संख्या तक नहीं पहुंचते हैं जो 200 से अधिक है, फिर छोड़ दें। आपको इस बात की चिंता करने की ज़रूरत नहीं है कि कितने पुनरावृत्तियों को समाप्त करने के बाद, आप बस तब तक चलते रहेंगे जब तक आप पहले मूल्य तक नहीं पहुँच जाते।
लेकिन पीछे की ओर जाते हुए, आपको यह जानना होगा कि कहां से शुरू करना है। कुछ लोग सहज रूप से महसूस कर सकते हैं कि 198 (3 * 66) 3 में से सबसे अधिक है, और इस तरह, हार्ड-कोड 66 लूप में है। अन्य लोग उस संख्या का पता लगाने के लिए एक गणितीय ऑपरेशन (200 और 3 के फ्लोटिंग पॉइंट डिवीजन पर एक पूर्णांक विभाजन या एक फर्श) का उपयोग कर सकते हैं, और ऐसा करने में, कुछ और अधिक उदारतापूर्वक लागू करते हैं।
अनिवार्य रूप से, यह FizzBuzz (मानों के माध्यम से लूपिंग और उन्हें एक मोड़ के साथ प्रिंट करना) के समान समस्या है। यह एक हल करने के लिए एक समस्या है जो मॉडुलो ऑपरेशन के रूप में काफी (अपेक्षाकृत) गूढ़ के रूप में कुछ भी उपयोग नहीं करता है।
print [x for x in xrange(3, 200, 3)][::-1]
फाइबोनैचि, एक स्ट्रिंग को उल्टा, एक बाइट में सेट बिट्स की संख्या अन्य सामान्य हैं। प्रोजेक्ट यूलर में बढ़ती कठिनाई का एक बड़ा संग्रह भी है।
वास्तव में सुपर-सरल कुछ के लिए जो 10 सेकंड में किया जा सकता है, लेकिन उन लोगों को हटा देगा जो सचमुच कुछ भी नहीं कर सकते हैं , इसे आज़माएं:
पूछो: मुझे दिखाओ (कागज पर, लेकिन एक व्हाइटबोर्ड पर बेहतर) आप दो चर के मूल्यों को कैसे स्वैप करेंगे।
यह मेरा विचार नहीं था, लेकिन याकूब नामक एक व्यक्ति द्वारा टिप्पणी में पोस्ट किया गया था मूल फ़िज़बज प्रश्न के बारे में ब्लॉग पोस्ट ।
जैकब ने कहा:
यदि वे तीसरे चर को बनाने के साथ शुरू नहीं करते हैं , तो आप बहुत अधिक उस व्यक्ति को लिख सकते हैं। मैंने पाया है कि मैं अकेले उस प्रश्न के साथ एक तिहाई से आधे (मेरे पास उस बिंदु पर अनसुना) आवेदकों को काट सकता है।
तीसरे चर की आवश्यकता के बिना इस चर स्वैपिंग को करने के तरीकों के बारे में मूल ब्लॉग पोस्ट पर टिप्पणी के बाद एक और दिलचस्प चर्चा है (जोड़ / घटाना, xor आदि), और निश्चित रूप से, यदि आप इस का समर्थन करने वाली भाषा का उपयोग कर रहे हैं एकल कथन / संचालन में, यह इतनी अच्छी परीक्षा नहीं हो सकती है।
हालांकि मेरा विचार नहीं है, मैं इसे यहाँ पोस्ट करना चाहता था क्योंकि यह इतना सरल, आसान सवाल है, जो (और) को लगभग 10 सेकंड के भीतर किसी ऐसे व्यक्ति द्वारा उत्तर दिया जाना चाहिए जिसने कार्यक्रमों को भी सबसे सरल लिखा है। इसमें मॉडुलो ऑपरेटर जैसे कुछ स्पष्ट रूप से अस्पष्ट ऑपरेटरों के उपयोग की भी आवश्यकता नहीं होती है, जो कि बहुत से लोग, जो अन्यथा काफी सभ्य प्रोग्रामर हैं, वे बस परिचित नहीं हैं (जो मैं अपने अनुभव से जानता हूं)।
उन्हें दिए गए नंबर के कारकों को वापस करने के लिए एक ऐप लिखने के लिए कहें। कम समय में अच्छा करना और करना आसान है। आप उनकी शैली और उनके द्वारा थोड़े समय में समस्याओं के माध्यम से सोचने के तरीके को देख सकते हैं।
यदि यह C / C ++ साक्षात्कार है, तो सुनिश्चित करें कि व्यक्ति संकेत के बारे में जानता है।
सामान्य - सरल एल्गोरिथ्म ([सिंगल / डबल] लिंक्ड सूची)। प्रत्येक मामले में जोड़ने की जटिलता के बारे में पूछें (शुरुआत में, अनुकूलन पर ...)?
(सामान्य) आप केवल 3 * N / 2 तुलनाओं के साथ एक सरणी (N आकार) से न्यूनतम और अधिकतम कैसे प्राप्त कर सकते हैं?
C / C ++: आप बफर करने के लिए कई "स्ट्रैकट" का अनुकूलन कैसे करेंगे?
C ++ FAQ Lite से 6.14 देखें:
कैसे के बारे में: मैं कई मूल्यों को संग्रहीत करने के लिए एक पूर्णांक का उपयोग करना चाहता हूं। वर्णन करें कि यह कैसे काम करेगा।
यदि उनके पास बिट मास्क और संचालन के बारे में कोई सुराग नहीं है, तो वे संभवतः अन्य समस्याओं को हल नहीं कर सकते हैं।
Primes की एक सूची प्राप्त करें एक काफी सामान्य प्रश्न है, लेकिन इसके लिए अभी भी कुछ विचार की आवश्यकता है और लोगों द्वारा दिए जा सकने वाले उत्तरों की अलग-अलग डिग्री हो सकती हैं।
आपको यह भी आश्चर्य होगा कि मानचित्र / शब्दकोश प्रकार डेटा-संरचना को लागू करने के लिए कितने लोग संघर्ष करते हैं।
मैंने अपने उम्मीदवारों से कहा है कि वे अपनी पसंद के किसी भी छद्म भाषा में किसी दिए गए नंबर के भाज्य की गणना के लिए एक कार्यक्रम बनाएं । यह हल करने के लिए एक काफी आसान समस्या है और यह अपने आप को अच्छी तरह से प्राकृतिक अनुवर्ती quistions (जो अक्सर पूछा जा सकता है) के बारे में अच्छी तरह से उधार देता है।