2010-08-15 16 views
5

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

Bubblesort:

procedure bubbleSort(A : list of sortable items) defined as: 
    do 
    swapped := false 
    for each i in 0 to length(A) - 2 inclusive do: 
     if A[i] > A[i+1] then 
     swap(A[i], A[i+1]) 
     swapped := true 
     end if 
    end for 
    while swapped 
end procedure 

Insertion sort:

insertionSort(array A) 
begin 
    for i := 1 to length[A]-1 do 
    begin 
     value := A[i]; 
     j := i - 1; 
     done := false; 
     repeat 
      if A[j] > value then 
      begin 
       A[j + 1] := A[j]; 
       j := j - 1; 
       if j < 0 then 
        done := true; 
      end 
      else 
       done := true; 
     until done; 
     A[j + 1] := value; 
    end; 
end; 

Binary search:

BinarySearch(A[0..N-1], value, low, high) { 
     if (high < low) 
      return -1 // not found 
     mid = low + ((high - low)/2) 
     if (A[mid] > value) 
      return BinarySearch(A, value, low, mid-1) 
     else if (A[mid] < value) 
      return BinarySearch(A, value, mid+1, high) 
     else 
      return mid // found 
    } 

उदाहरण के लिए, कुछ आम लोगों मैं पाया है मुख्य रूप से छंटाई और खोज तकनीक से संबंधित हैं

यदि हम कई लोग अपने विचार और अनुभव साझा करते हैं, तो हम छद्म कोड एल्गोरिदम और समस्याओं की एक सभ्य सूची बनाने में सक्षम हो सकते हैं।

मैं प्रैक्टिस के रूप में खुद को स्यूडोकोड प्रतिनिधित्व के साथ आने के लिए देख रहा हूं। तो यहां तक ​​कि यदि आपको छद्म कोड उदाहरण नहीं मिल रहा है, लेकिन आपको लगता है कि यह इस तरह से प्रतिनिधित्व करने के लिए एक आदर्श अवधारणा होगी, इससे भी मदद मिलेगी।

  • कौन सा स्यूडोकोड तुम से पहले एक साक्षात्कार में लिखने के लिए कहा गया है:

    मैं भी भी विषय से संबंधित कुछ प्रश्न हैं?

  • क्या ये प्रश्न छोटे, सरल एल्गोरिदम से संबंधित हैं जो एक या दो कार्य लंबे हैं?
  • छद्म कोड लिखते समय भाषा विशिष्ट संरचनाओं से बचा जाना चाहिए? चूंकि प्रतिनिधित्व भाषा अज्ञेयवादी होने के लिए है, क्या यह निपटान और भविष्यवाणी जैसी शर्तों का उपयोग करना सुरक्षित नहीं है जो प्रत्येक भाषा में मौजूद नहीं हैं?

धन्यवाद


संपादित करें:

के कुछ उदाहरण कुछ और मैं पाया है, मैं संपादन रखेंगे के रूप में मैं और अधिक जानें:


एक समारोह लिखें जो वाक्य के शब्दों के क्रम को उल्टा करने के लिए एक स्ट्रिंग लेता है, शब्दों को उलट नहीं:

इनपुट: "बिल्ली एक और बिल्ली के साथ चटाई पर बैठे!"

आउटपुट: "बिल्ली चटाई के साथ एक और, पर बिल्ली बैठे थे"


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

इनपुट: "बिल्ली एक और बिल्ली के साथ चटाई पर बैठी थी!"

आउटपुट:


एक समारोह लिखें चरित्र एक निश्चित स्ट्रिंग के भीतर आवृत्तियां की सबसे बड़ी संख्या है, मामले की अनदेखी कर लगाने के लिए अगर वहाँ है बराबर उच्चतम आवृत्तियां, वापसी के साथ एक से अधिक चरित्र। चरित्र है कि स्ट्रिंग के भीतर पहली बार दिखाई दिया

इनपुट:। "वर्ण"

आउटपुट: ग


एक समारोह है कि एक स्ट्रिंग

इनपुट पराजयों लिखें: "रिवर्स"

आउटपुट: "esrever"

+0

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

उत्तर

1

मैं अपने आप को कभी एक साक्षात्कार में छद्म कोड लिखने के लिए कहा नहीं किया गया है (अभी भी एक छात्र), लेकिन मेरा एक दोस्त जो ग्रीष्मकालीन नौकरी के लिए Google पर लागू हुआ था, उसे रेगेक्सप पार्सर लिखने के लिए कहा गया था जो रेगेक्सप्स के एक सबसेट (iirc, अल्फान्यूमेरिक इनपुट केवल *, + और {x, y} नोटेशन का उपयोग कर सकता है)। मैं अगले साल ग्रीष्मकालीन नौकरी के लिए उन्हें आवेदन करने पर विचार कर रहा हूं और स्पॉट एक्सडी पर कुछ लिखने की कोशिश करने के विचार से डरता हूं।

मुझे विश्वास है कि उन्होंने इसे दो कार्यों का उपयोग करके हल किया है जो एक दूसरे से दूर हो गए हैं। सुनिश्चित नहीं है कि कैसे।

ओह, उसे सिर्फ इसके लिए छद्म कोड लिखने के लिए नहीं कहा गया था, बीटीडब्ल्यू। उसे वास्तविक सी ++ कोड लिखने के लिए कहा गया था, जो संकलन करेगा। (Google डॉक्स दस्तावेज़ में भी)।

3

मुझे अभी तक यह नहीं पूछा गया है, लेकिन क्लासिक FizzBuzz प्रश्न है।

एक प्रोग्राम लिखें जो संख्याओं को 1 से 100 तक प्रिंट करता है। लेकिन संख्या के बजाय तीन प्रिंट "फिज" के गुणकों के लिए और पांच प्रिंट "बज़" के गुणकों के लिए। संख्याओं के लिए जो तीन और पांच प्रिंट "FizzBuzz" दोनों के गुणक हैं।

रूप http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

में पाया यह एक सरल स्क्रीनिंग प्रश्न के रूप में होती है, और यहां तक ​​कि बहुत ही नया प्रोग्रामर करने के लिए किसी भी महत्वपूर्ण कठिनाई पैदा करने के लिए नहीं।

1

मैं कुछ साल पहले एक इंटर्नशिप के लिए एक साक्षात्कार के दौरान इस बात के लिए एक छद्म कोड समाधान लिखने के लिए कहा गया था:

एक एल्गोरिथ्म है कि, एक निर्देशिका पथ को देखते हुए फ़ाइलों की कुल संख्या भरोसा कर सकते हैं लिखें कि उस निर्देशिका और सभी उपनिर्देशिकाओं के अंतर्गत आते हैं।

इसे हल करने में सक्षम होने से पेड़ के ट्रैवर्सल की समझ प्रदर्शित होती है।

+0

अच्छा एक। मुझे छोटी रिकर्सन समस्याओं के अधिक उदाहरण चाहिए – fletcher

0

मुझे इसे समझने में काफी समय लगा, लेकिन यहां मेरी एक्सेल वीबीए समाधान वाक्य को उलटने की समस्या है।

Public Sub SentenceReverse() 

Dim InSentence As String 'Input sentence string 
Dim OutSentence As String 'Output sentence string 
Dim p As Integer 'Word Start 
Dim q As Integer 'Word length 

p = 1 

InSentence = ActiveSheet.Range("A1").Value 'Assign the sentence to a string 

For i = 2 To Len(InSentence) + 1 'Loop through all the characters of the input sentence 
    If (Mid(InSentence, i, 1) = " " Or i = Len(InSentence) + 1) Then 'This character is a space or this is the the end of the sentence 
     q = i - p 'Set the word length to the number of this position minus the position of the start of this word 
     OutSentence = Mid(InSentence, p, q) & " " & OutSentence 'Add this word to the start of the output string 
     p = i + 1 'Set the start of the next word as the position of this space + 1 
    End If 
Next i 

MsgBox (OutSentence) 

End Sub 
0

मुझे नहीं पता कि यह सबसे सुंदर दृष्टिकोण है, लेकिन यहां अक्सर ऐसा शब्द ढूंढने का एक समाधान है। यहां बताया गया है कि मैंने इसका कैसे संपर्क किया।

  1. वाक्य के माध्यम से लूपिंग करके शब्दों की संख्या पाएं और यदि आप कोई स्थान पाते हैं या आप वाक्य के अंत तक पहुंचते हैं तो शब्द गणना चर को बढ़ाएं। इस लंबाई का एक शब्द सरणी बनाएँ।
  2. प्रत्येक शब्द की शुरुआत के लिए एक चर का उपयोग करना और प्रत्येक शब्द की लंबाई के लिए एक अन्य चर, वाक्य को फिर से लूप करें और पिछले वर्णों को शब्द सरणी के तत्व में असाइन करें।
  3. प्रत्येक शब्द सरणी तत्व के लिए, शब्द सरणी के प्रत्येक तत्व के माध्यम से लूप, और इसकी तुलना करें (नेस्टेड पाश)। यदि कोई मिलान है, तो गिनती सरणी की उस स्थिति के लिए मान बढ़ाएं जो दिखाता है कि प्रत्येक शब्द कितनी बार प्रकट होता है।
  4. गिनती सरणी के माध्यम से लूप करें और प्रत्येक फ़ील्ड में मान को अधिकतम मूल्य तक तुलना करें। यह अधिकतम संख्या और इसलिए सबसे आम शब्द देता है। उस शब्द को आउटपुट करें।

    सार्वजनिक उप FindCommonWord()

    मंद Insentence स्ट्रिंग मंद WordArray() स्ट्रिंग मंद CountArray के रूप में() पूर्णांक मंद पी पूर्णांक 'शब्द प्रारंभ मंद क्ष पूर्णांक के रूप में' शब्द की लंबाई मंद w के रूप में के रूप में के रूप में पूर्णांक के रूप में 'शब्द गणना मंद tw स्ट्रिंग के रूप में है, इस दुनिया मंद आर सबसे आम शब्द के पूर्णांक' स्थिति के रूप में

    पी = 1 w = 1

    प्रेरणा = सक्रियशीट। श्रेणी ("ए 1")।मूल्य सभी पात्रों के माध्यम से लूप 'वाक्य एक स्ट्रिंग के लिए

    निरुपित' और ((इनपुट वाक्य हैं के सभी पात्रों के माध्यम से शब्द = 2 लेन (Insentence) + 1 'लूप करने के लिए ज के लिए की संख्या की गणना मिड Insentence, ज, 1) = "" या एच = लेन (Insentence) + 1) फिर 'यह चरित्र एक जगह नहीं है या इस वाक्य w का अंत है = +1 अंत तो अगला ज

    w

    w = डब्ल्यू - 1

    ReDim WordArray (डब्ल्यू) ReDim CountArray (डब्ल्यू)

    डब्ल्यू = 1 'सभी अक्षरों के माध्यम से लूप और एक सरणी के तत्वों को शब्दों को असाइन करें इनपुट = के सभी अक्षरों के माध्यम से लेन = (प्रेरणा) + 1' लूप के लिए (मध्य (प्रेरणा, मैं , 1) = "" या मैं = लेन (पर्सेंटेंस) + 1) फिर 'यह वर्ण एक स्थान है या यह वाक्य q = i - p' शब्द का अंत है इस शब्द की लंबाई से शब्द लंबाई को सेट करें इस शब्द की शुरुआत की स्थिति WordArray (डब्ल्यू) = मध्य (Insentence, पी, क्यू) पी = i + 1 'अगले शब्द w की स्थिति = w + 1' अगला शब्द अंत तो अगला मैं w = w - 1 'अंतिम शब्द

    पर पहुंचा

    सरणी के माध्यम से पाश 'सरणी के माध्यम से लूप = 1 डब्ल्यू करने के लिए प्रत्येक शब्द जे के लिए पर काम करने' और बात की गणना इस शब्द प्रकट होता है कश्मीर के लिए = 1 करने के लिए डब्ल्यू तो UCase (WordArray (के)) = UCase (WordArray (जे)) फिर CountArray (जे) = CountArray (जे) + 1 अगला कश्मीर अगला जे

    आर = 1

    'गिनती सरणी n के लिए में अधिकतम मूल्य का पता लगाएं = 1 से यदि काउंटरएरे (एन)> आर फिर आर = एन अगला एन संदेश बॉक्स ("मस्जिद टी आम शब्द "& WordArray (आर) &" स्थिति में है "& आर &"। ")

    End Sub

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