वैकल्पिक FizzBuzz प्रश्न [बंद]


88

किसी के पास कोई अच्छा FizzBuzz प्रकार के प्रश्न हैं जो FizzBuzz समस्या नहीं है?

मैं किसी का साक्षात्कार कर रहा हूं और एफबी अपेक्षाकृत अच्छी तरह से जाना जाता है और याद रखना मुश्किल नहीं है, इसलिए विचारों की खोज में मेरा पहला पड़ाव मेरी नई लत एसओ है।

जवाबों:


104

मैंने अपेक्षाकृत सरल प्रोग्रामिंग समस्याओं की एक छोटी सूची देखी है जिसका उपयोग उम्मीदवारों के लिए किया गया है, जैसे कि FizzBuzz। बढ़ती कठिनाई के क्रम में मैंने कुछ समस्याएं देखी हैं:

  1. एक तार उल्टा
  2. एक वाक्य उल्टा ("बॉब कुत्तों को पसंद करता है" -> "कुत्तों को बॉब पसंद है")
  3. सूची में न्यूनतम मान ज्ञात कीजिए
  4. किसी सूची में अधिकतम मान ज्ञात कीजिए
  5. शेष की गणना करें (एक अंश और हर दिया जाता है)
  6. डुप्लिकेट (यानी "1 3 5 3 7 3 1 1 5" -> "1 3 5 7" सहित एक सूची से अलग मान लौटाएं)
  7. अलग-अलग मान और उनकी गिनती लौटाएं (अर्थात ऊपर दी गई सूची "1 (3) 3 (3) 5 (2) 7 (1)"))
  8. अभिव्यक्तियों की एक स्ट्रिंग (केवल चर, + और -) और चर / मान जोड़े का एक सेट (यानी a = 1, b = 7, c = 3, d = 14) अभिव्यक्ति का परिणाम लौटाता है ("a +" b + c -d "-3 होगा)।

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

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

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


आइटम 8 के लिए, JSR-223 (javax.script) पर आधारित एक समाधान स्वीकार किया जाएगा? :-P (माना जाता है कि इसका उपयोग पूरी तरह से खत्म हो गया है, लेकिन कुछ लोग इसका उपयोग करने के बजाय कहेंगे, java.util.Scanner।)
क्रिस जस्टर-यंग

4
यह सवाल की भावना के बारे में मेरे विचार के भीतर नहीं है, लेकिन अगर आप प्रस्ताव करने के लिए पर्याप्त जानते हैं, तो आप निश्चित रूप से FizzBuzz प्रश्नों को पारित करने के लिए पर्याप्त जानते हैं, इसलिए मैं इसे आपके खिलाफ नहीं रखूंगा। यह आपके पक्ष में प्लस भी हो सकता है। मैं अब भी शायद पूछना चाहता हूँ कि आप इसे javax.script के बिना कैसे करेंगे।
MBCook

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

1
संख्या 8 के लिए नमूना समाधान देखना पसंद करेंगे। पहले 7 एक हवा हैं, लेकिन 8 (मेरे लिए) बाकी की तुलना में थोड़ा अधिक जटिल लगता है। मैं इसे पायथन 3.x में काम कर रहा हूं और यह एक अलग गेम है। शायद बस कुछ मैं अनजान हूँ।
डोनटस्यूटेव

31

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

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


7
बहुत बढ़िया जवाब। "FizzBuzz आसान है और यह बात है ... कोई भी जो कोडिंग हॉरर को पढ़ने के लिए समय लेता है वह आगे साक्षात्कार के लायक है" QFT। मैं अक्सर उम्मीदवारों से पूछता हूं "आप प्रोग्रामिंग के बारे में पढ़ने के लिए कहां जाते हैं?" मुझे हमेशा आश्चर्य होता है कि कितने लोग एक भी ब्लॉग, वेब साइट या पुस्तक का उल्लेख नहीं कर पा रहे हैं।
नूह ससमान

1
मैं असहमत हूं। हमने पिछले सप्ताह किसी का साक्षात्कार लिया, और हमने उन्हें स्वीकृत उत्तर से # 3 पूछा। उन्होंने सचमुच कहा "ओह, मुझे फ़िज़बज़्ज़ की उम्मीद थी" और फिर हमारे सवाल का जवाब देने में सक्षम नहीं थे।
१६:०५ पर frandroid

23

प्रोजेक्ट यूलर में से कोई भी शुरुआती अच्छा होगा।

उदाहरण के लिए:

समस्या 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 अंकों वाले फाइबोनैचि अनुक्रम में पहले शब्द का सूचकांक क्या है?


14

मैं एक स्ट्रिंग की जाँच कर रहा हूँ अगर यह एक palindrome एक बहुत ही सरल है जो एक सभ्य वीडर हो सकता है।


मैं कहूंगा कि यह भाषा पर निर्भर करता है। सी में यह दिलचस्प हो सकता है, पर्ल में यह साथ है scalar(reverse 'foo') == 'foo'
jkramer

3
सच है, लेकिन एक ही समय में, सरल समाधान को देखने में सक्षम होना मूल्यवान है ... तो आप कहते हैं, "ठीक है, अब दिखाओ कि आपके पास रिवर्स फ़ंक्शन नहीं है।"
माइक स्टोन

1
C ++ में, मैं किसी भी "कार्यात्मक" समाधान के लिए बोनस अंक दूंगा जिसमें हाथ से लिखे गए लूप शामिल नहीं हैं। उदाहरण के लिए, "वापसी बराबर (str.begin (), str.end (), str.rbegin ());" या (गति शैतान के लिए) "बराबर (str.begin (), str.begin () + str.size () / 2, str.rbegin ());"
क्रिस जस्टर-यंग

1
निश्चित रूप से, इस तरह के जवाब को देखने के बाद, मैं उम्मीदवार से कोड के काम की व्याख्या करने के लिए भी कहूंगा। वे केवल मेरे उत्तर की नकल करके एक पैर नहीं उठा सकते हैं! :-P
क्रिस जस्टर-यंग

10

मैं एक FizzBuzz सवाल है कि modulo ऑपरेटर शामिल नहीं करना चाहता था। खासकर जब से मैं आमतौर पर वेब डेवलपर्स के लिए साक्षात्कार कर रहा हूं जिनके लिए मॉडुलो ऑपरेटर बस अक्सर नहीं आता है। और अगर यह कुछ ऐसा नहीं है जिसे आप नियमित रूप से चलाते हैं, तो यह उन चीजों में से एक है जिन्हें आप कुछ समय के लिए देखते हैं।

(दी, यह एक अवधारणा है, आदर्श रूप से, आपको रास्ते में कहीं गणित के पाठ्यक्रम में सामना करना चाहिए था, लेकिन यह एक अलग विषय है।)

तो, जो मैं लेकर आया था, जिसे मैं अकल्पनीय रूप से कहता हूं, थ्रीस इन रिवर्स । निर्देश है:

एक प्रोग्राम लिखें, जो रिवर्स ऑर्डर , 1 और 200 के बीच 3 में से हर एक को प्रिंट करता है ।

इसे सामान्य क्रम में करना आसान है: लूप इंडेक्स को 3 से गुणा करें जब तक आप एक संख्या तक नहीं पहुंचते हैं जो 200 से अधिक है, फिर छोड़ दें। आपको इस बात की चिंता करने की ज़रूरत नहीं है कि कितने पुनरावृत्तियों को समाप्त करने के बाद, आप बस तब तक चलते रहेंगे जब तक आप पहले मूल्य तक नहीं पहुँच जाते।

लेकिन पीछे की ओर जाते हुए, आपको यह जानना होगा कि कहां से शुरू करना है। कुछ लोग सहज रूप से महसूस कर सकते हैं कि 198 (3 * 66) 3 में से सबसे अधिक है, और इस तरह, हार्ड-कोड 66 लूप में है। अन्य लोग उस संख्या का पता लगाने के लिए एक गणितीय ऑपरेशन (200 और 3 के फ्लोटिंग पॉइंट डिवीजन पर एक पूर्णांक विभाजन या एक फर्श) का उपयोग कर सकते हैं, और ऐसा करने में, कुछ और अधिक उदारतापूर्वक लागू करते हैं।

अनिवार्य रूप से, यह FizzBuzz (मानों के माध्यम से लूपिंग और उन्हें एक मोड़ के साथ प्रिंट करना) के समान समस्या है। यह एक हल करने के लिए एक समस्या है जो मॉडुलो ऑपरेशन के रूप में काफी (अपेक्षाकृत) गूढ़ के रूप में कुछ भी उपयोग नहीं करता है।


2
मैं जिज्ञासु सेना हूं: आपके वेब डेवलपर बिना मॉडुलो के ग्रीन-बैरिंग / वैकल्पिक पंक्तियों जैसी चीजें कैसे करते हैं?
एंड्रयू बर्न्स

4
ठीक है, यदि आप CSS3 के nth-child selector का उपयोग करके, पंक्तियों को वैकल्पिक पंक्तियों में लागू करने की कोशिश कर रहे हैं। jQuery ने जेएस के माध्यम से ऐसी चीजों को करने के लिए चयनकर्ताओं को बारी-बारी से तैयार किया है। लेकिन अपने बड़े बिंदु पर बोलते हुए, जैसे मैंने ऊपर कहा, यह ऐसा कुछ है जो ऊपर देखा जाता है, इस्तेमाल किया जाता है, और फिर जल्दी से भूल जाता है क्योंकि इसे खोजने में सभी 15 सेकंड लगते हैं। मैं यह नहीं कह रहा हूं कि मुझे यह पसंद है या मंजूर है, लेकिन विशेष रूप से प्रवेश स्तर पर, ऐसा होता है। :)
सेना

1
यहाँ मेरा php समाधान है :) ideone.com/BnJQ3 3 मिनट :)
Trufa

निम्न-स्तरीय भाषाओं में यह अधिक कठिन होना चाहिए, क्योंकि रूबी में यह संख्याओं (क्रम में) को एक सरणी में धकेलने के रूप में आसान है, फिर पूरे सरणी को उलट देना। ideone.com/MKKb6
Kerrick

अजगर: print [x for x in xrange(3, 200, 3)][::-1]
बीटगैमिट

8

फाइबोनैचि, एक स्ट्रिंग को उल्टा, एक बाइट में सेट बिट्स की संख्या अन्य सामान्य हैं। प्रोजेक्ट यूलर में बढ़ती कठिनाई का एक बड़ा संग्रह भी है।


Fibonaaci, हालांकि थोड़ा और अधिक उन्नत है, एक अच्छा एक है, मैं पूरा नौसिखिया हूँ और यह मुझे 20-25 मिनट ले लिया ताकि आपके संदर्भ :) :)
Trufa

मैं फिबोनाची, FizzBuzz के साथ मारा गया था, और एक सरणी में डुप्लिकेट पूर्णांकों को हटा - एक साक्षात्कार में आज (4 घंटे)
IAbstract

8

वास्तव में सुपर-सरल कुछ के लिए जो 10 सेकंड में किया जा सकता है, लेकिन उन लोगों को हटा देगा जो सचमुच कुछ भी नहीं कर सकते हैं , इसे आज़माएं:

पूछो: मुझे दिखाओ (कागज पर, लेकिन एक व्हाइटबोर्ड पर बेहतर) आप दो चर के मूल्यों को कैसे स्वैप करेंगे।

यह मेरा विचार नहीं था, लेकिन याकूब नामक एक व्यक्ति द्वारा टिप्पणी में पोस्ट किया गया था मूल फ़िज़बज प्रश्न के बारे में ब्लॉग पोस्ट

जैकब ने कहा:

यदि वे तीसरे चर को बनाने के साथ शुरू नहीं करते हैं , तो आप बहुत अधिक उस व्यक्ति को लिख सकते हैं। मैंने पाया है कि मैं अकेले उस प्रश्न के साथ एक तिहाई से आधे (मेरे पास उस बिंदु पर अनसुना) आवेदकों को काट सकता है।

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

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


1
मुझे लगता है कि यह बहुत अच्छा विचार है। यह निश्चित रूप से लगभग 20 मिनट तक बैठा रहता है, जबकि एक उम्मीदवार दर्द भरे कार्यक्रम को देखकर आश्चर्यचकित हो जाता है कि उन्होंने इसके बजाय फॉरच का उपयोग क्यों किया है और इसे कैसे ठीक किया जाए! (जैसा कि मैंने अभी किया है)
माइक नेल्सन

std :: swap (a, b); मुझे तीसरा चर क्यों बनाना चाहिए जब हर मानक पुस्तकालय के बारे में कभी खुशी से यह मेरे लिए होगा?

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

तो याकूब साक्षात्कारकर्ता को तीसरे चर का उपयोग करने का सुझाव दे रहा है या नहीं? मैंने उस प्रश्न के विकल्प देखे हैं जहां यह डेवलपर से तीसरे चर का उपयोग नहीं करने के लिए कहता है। जिस तरह से उन्होंने अपना जवाब दिया वह बहुत अस्पष्ट है।
theGreenCabbage

1
जैसा कि कोई सोचता है कि वे सिर्फ एक "ठीक" प्रोग्रामर हैं, इससे मुझे डर लगता है। मेरा तत्काल विचार था "प्रिय भगवान मैं एक 3 चर का उपयोग करूंगा लेकिन निश्चित रूप से वह एक के बिना इसे करने के कुछ चतुर तरीके चाहता है!"
डेविल्स एडवोकेट

4

उन्हें दिए गए नंबर के कारकों को वापस करने के लिए एक ऐप लिखने के लिए कहें। कम समय में अच्छा करना और करना आसान है। आप उनकी शैली और उनके द्वारा थोड़े समय में समस्याओं के माध्यम से सोचने के तरीके को देख सकते हैं।


2

स्ट्रिंग Y के भीतर स्ट्रिंग X की पहली घटना का सूचकांक लौटाएं

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


2

यदि यह C / C ++ साक्षात्कार है, तो सुनिश्चित करें कि व्यक्ति संकेत के बारे में जानता है।

सामान्य - सरल एल्गोरिथ्म ([सिंगल / डबल] लिंक्ड सूची)। प्रत्येक मामले में जोड़ने की जटिलता के बारे में पूछें (शुरुआत में, अनुकूलन पर ...)?

(सामान्य) आप केवल 3 * N / 2 तुलनाओं के साथ एक सरणी (N आकार) से न्यूनतम और अधिकतम कैसे प्राप्त कर सकते हैं?

C / C ++: आप बफर करने के लिए कई "स्ट्रैकट" का अनुकूलन कैसे करेंगे?


यह मुझे लगता है कि समस्या के लिए "कैसे आप केवल 3 * एन / 2 तुलना के साथ एक सरणी (एन आकार) से न्यूनतम और अधिकतम पाते हैं?" यह स्पष्ट करना अच्छा है कि संख्या 3 * एन / 2 सरणी के तत्वों की तुलना का एक नंबर है, लेकिन आप उदाहरण के लिए स्वतंत्र रूप से तुलना कर सकते हैं। जैसे (i <array size) छोरों में।
सर्गटेक


0

कैसे के बारे में: मैं कई मूल्यों को संग्रहीत करने के लिए एक पूर्णांक का उपयोग करना चाहता हूं। वर्णन करें कि यह कैसे काम करेगा।

यदि उनके पास बिट मास्क और संचालन के बारे में कोई सुराग नहीं है, तो वे संभवतः अन्य समस्याओं को हल नहीं कर सकते हैं।


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

2
हम्म, तो आपको यह तय करना होगा कि दशमलव 123 में से 1,2 और 3 को एक सही उत्तर के रूप में स्वीकार करते हुए, भले ही गणित केवल 3 चर घोषित करने की तुलना में बदसूरत जटिल हो। या x = 1 लिखकर 1,2,3 जमा करना; एक्स = 2; एक्स = 3; मेरा मतलब है, क्या हमें इन मूल्यों को समकालीन रूप से संग्रहीत करने की आवश्यकता है?
मैथ्मार्टिन

0

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

आपको यह भी आश्चर्य होगा कि मानचित्र / शब्दकोश प्रकार डेटा-संरचना को लागू करने के लिए कितने लोग संघर्ष करते हैं।


0

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

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