Συχνές ερωτήσεις ψευδοκώδικας, γρίφους και προκλήσεις

ψήφοι
5

Ψάχνω για παραδείγματα προβλημάτων ψευδοκώδικα που μπορεί να έχει ζητηθεί σε μια συνέντευξη ή να κληθεί να εκπροσωπήσει ως μέρος της εργασίας ή την εκπαίδευση σας. Δεν ψάχνω για παραδείγματα από κάθε τομέα ειδικότερα, έτσι ώστε να μπορεί να σχετίζονται με το σχεδιασμό μοντέλων, αλγορίθμων, δομές δεδομένων, στρατηγικές caching, οτιδήποτε έχει να κάνει με την Τεχνολογία Λογισμικού και Ανάπτυξης, απλή ή σύνθετη.

Για παράδειγμα, ορισμένα κοινά που έχω βρεθεί σχετίζονται κυρίως με τη διαλογή και την αναζήτηση τεχνικές:

ταξινόμηση φυσαλίδας :

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

Εισαγωγή ταξινόμησης :

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;

Δυαδική αναζήτηση :

   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
   }

Μπορεί να είμαστε σε θέση να δημιουργήσουν μια αξιοπρεπή λίστα των αλγορίθμων ψευδοκώδικα και τα προβλήματα, αν πολλοί άνθρωποι μοιράζονται τις σκέψεις και τις εμπειρίες τους.

Ψάχνω να επανέλθει με την εκπροσώπηση ψευδοκώδικα τον εαυτό μου, ως πρακτική. Έτσι, ακόμη και αν δεν μπορείτε να βρείτε ένα ψευδοκώδικα παράδειγμα, αλλά νομίζετε ότι θα ήταν μια ιδανική ιδέα για να αντιπροσωπεύσει με αυτόν τον τρόπο, που θα βοηθήσει πάρα πολύ.

Έχω επίσης μερικές ερωτήσεις που σχετίζονται με το θέμα πάρα πολύ:

  • Ποια pseudocode σας έχει ζητηθεί να γράψετε σε μια συνέντευξη πριν;
  • Μήπως αυτά τα ερωτήματα έχουν την τάση να συνδέονται με λίγα λόγια, απλά αλγόριθμους που είναι μακριά το ένα ή δύο λειτουργίες;
  • Θα πρέπει να αποφεύγεται γλώσσα ειδικές κατασκευές όταν γράφετε ψευδοκώδικα; Καθώς η παράσταση είναι γραφτό να γίνει γλώσσα αγνωστικιστής, είναι ασφαλέστερο να μην χρησιμοποιούν όρους όπως απόρριψη και foreach που δεν υπάρχουν σε κάθε γλώσσα;

Ευχαριστώ


Επεξεργασία:

Μερικά παραδείγματα λίγο περισσότερο που έχω βρεθεί, εγώ θα κρατήσω την επεξεργασία, όπως μπορώ να βρω περισσότερες πληροφορίες:


Γράψτε μια συνάρτηση που παίρνει μια χορδή να αντιστραφεί η σειρά των λέξεων μέσα σε μια πρόταση, δεν αντιστρέφοντας τις λέξεις:

Είσοδος: «Η γάτα κάθισε στο χαλί, με άλλη γάτα!»

Έξοδος: «! Γάτα άλλο με ματ, η σε κάθισε γάτα Η»


Γράψτε μια συνάρτηση που παίρνει μια χορδή που θα επιστρέψει τη λέξη που εμφανίζεται πιο μέσα στην κλωστή, αγνοώντας την περίπτωση και τα σημεία στίξης. Αν περισσότερες από μία λέξη έχει τον ίδιο αριθμό των περιστατικών επιστρέψει αυτό που συνέβη πρώτη:

Είσοδος: «Η γάτα κάθισε στο χαλί, με άλλη γάτα!»

Έξοδος: η


Γράψτε μια λειτουργία για να βρει το χαρακτήρα που έχει τον υψηλότερο αριθμό περιστατικών μέσα σε ένα συγκεκριμένο string, αγνοώντας την περίπτωση. Αν υπάρχουν περισσότερα από ένα χαρακτήρα με την ίδια την υψηλότερη εμφανίσεις, επιστρέφει το χαρακτήρα που εμφανίστηκε για πρώτη φορά στο πλαίσιο της συμβολοσειράς.

Είσοδος: «χαρακτήρα»

Έξοδος: γ


Γράψτε μια λειτουργία που αντιστρέφει μια σειρά

Είσοδος: «αντίστροφη»

Έξοδος: esrever

Δημοσιεύθηκε 15/08/2010 στις 11:54
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
1

Δεν έχω τον εαυτό μου ζητήθηκε ποτέ να γράψω ψευδο-κώδικα σε συνέντευξή του (ακόμα φοιτητής), αλλά ένας φίλος μου ο οποίος εφαρμόζεται στο Google για μια δουλειά για το καλοκαίρι κλήθηκε να γράψει ένα πρόγραμμα ανάλυσης κανονικής έκφρασης που θα μπορούσε να ασχοληθεί με ένα υποσύνολο των regexps ( IIRC, μόνο αλφαριθμητικούς εισόδου και χρησιμοποιώντας τα *, + και {x, y} σημειογραφία). Σκέφτομαι να ισχύουν γι 'αυτούς το επόμενο έτος για μια δουλειά για το καλοκαίρι τον εαυτό μου και είμαι τρομοκρατημένος από την ιδέα της προσπαθώντας να γράψω κάτι τέτοιο από την XD τόπου.

Πιστεύω ότι θα λυθεί με τη χρήση δύο λειτουργίες που recursed μακριά από το ένα το άλλο. Δεν είστε σίγουροι για το πώς.

Ω, δεν ήταν μόνο ζήτησε να γράψω ψευδο-κώδικα για το σκοπό αυτό, btw. Του ζητήθηκε να γράψει πραγματική C ++ κώδικα, επί τόπου, που θα συγκεντρώνει. (Σε ένα έγγραφο το Google Docs, καθώς και).

Απαντήθηκε 15/08/2010 στις 11:57
πηγή χρήστη

ψήφοι
3

Δεν το έχουν ζητήσει ακόμα, αλλά υπάρχει το κλασικό FizzBuzz ερώτηση.

Γράψτε ένα πρόγραμμα που να τυπώνει τους αριθμούς από το 1 έως το 100. Αλλά για πολλαπλάσια των τριών εκτύπωσης «Fizz» αντί για τον αριθμό και τα πολλαπλάσια του πέντε εκτύπωσης «Buzz». Για τους αριθμούς που είναι πολλαπλάσια των δύο τριών και πέντε εκτύπωσης «FizzBuzz».

όπως βρίσκεται στο http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

Νοείται ως μια απλή ερώτηση ελέγχου, και να μην δημιουργούν σημαντικές δυσκολίες στην εξισορρόπηση πολύ νέα προγραμματιστές.

Απαντήθηκε 15/08/2010 στις 11:58
πηγή χρήστη

ψήφοι
1

Μου ζητήθηκε να γράψω μια λύση ψευδο-κώδικα για το σκοπό αυτό κατά τη διάρκεια μιας συνέντευξης για ένα οικοτροφείο πριν από λίγα χρόνια:

Γράψτε έναν αλγόριθμο που, δίνεται μια διαδρομή καταλόγου, μπορεί να υπολογίζει το συνολικό αριθμό των αρχείων που εμπίπτουν αυτόν τον κατάλογο και όλους τους υποκαταλόγους.

Να είσαι σε θέση να λύσει αυτό αποδεικνύει την κατανόηση της διάσχισης δέντρο.

Απαντήθηκε 20/08/2010 στις 13:22
πηγή χρήστη

ψήφοι
0

Μου πήρε πολύ χρόνο για να το καταλάβω, αλλά εδώ είναι η λύση μου Excel VBA στην πρόταση αντιστροφή πρόβλημα.

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
Απαντήθηκε 12/07/2015 στις 18:22
πηγή χρήστη

ψήφοι
0

Δεν ξέρω αν αυτή είναι η πιο κομψή προσέγγιση, αλλά εδώ είναι μια λύση για να βρείτε τη λέξη που εμφανίζεται πιο συχνά. Εδώ είναι πώς θα το προσεγγίσει.

  1. Βρείτε τον αριθμό των λέξεων από τη μεταγωγή της πρόταση και αυξάνει μια λέξη μετράνε μεταβλητή αν βρείτε ένα χώρο ή να φτάσετε στο τέλος της πρότασης. Δημιουργήστε μια λέξη φάσμα αυτού του μήκους.
  2. Χρησιμοποιώντας μία μεταβλητή για την έναρξη της κάθε λέξης και ενός άλλου μεταβλητή για το μήκος της κάθε λέξης, βρόχο μέσω της ποινής πάλι και να εκχωρήσει τα προηγούμενα χαρακτήρες σε ένα στοιχείο της συστοιχίας λέξης.
  3. Για κάθε λέξη στοιχείο του πίνακα, βρόχο μέσα από κάθε στοιχείο της συστοιχίας λέξη, και να το συγκρίνει (ένθετα βρόχο). Αν υπάρχει ένας αγώνας, αυξάνει την τιμή για αυτή τη θέση ενός πίνακα μέτρηση που δείχνει πόσες φορές εμφανίζεται κάθε λέξη.
  4. Βρόχο μέσω της συστοιχίας μέτρηση και να συγκρίνετε την τιμή σε κάθε τομέα με τη μέγιστη τιμή που βρέθηκε μέχρι σήμερα. Αυτό δίνει το μέγιστο αριθμό και ως εκ τούτου η πιο συνηθισμένη λέξη. Έξοδος αυτή η λέξη.

    Δημόσια Sub FindCommonWord ()

    Dim Insentence Όπως String Dim WordArray () As String Dim CountArray () As Integer Dim ρ Όπως Integer 'Λόγο Έναρξη Dim q Όπως Integer' μήκος λέξεων Dim w Όπως Integer 'Word Count Dim tw As String' αυτή τη λέξη Dim R Όπως Θέση Integer» των πιο κοινών λέξεων

    ρ = 1 w = 1

    Insentence = ActiveSheet.Range ( "A1"). Value «Ανάθεση της ποινής σε μια σειρά

    'Βρόχο μέσω όλων των χαρακτήρων και να μετρήσει τον αριθμό των λέξεων Για h = 2 Για να Len (Insentence) + 1' Loop με όλους τους χαρακτήρες της ποινής εισόδου Αν (Mid (Insentence, η, 1) = "" Ή h = Len ( Insentence) + 1) Στη συνέχεια «ο χαρακτήρας αυτός είναι ένας χώρος ή αυτό είναι το το τέλος της πρότασης w = w + 1 End If Επόμενη h

    w = w - 1

    ReDim WordArray (νν) ReDim CountArray (νν)

    w = 1 «βρόχο μέσω όλων των χαρακτήρων και να εκχωρήσει λόγια σε στοιχεία ενός πίνακα Για i = 2 Για να Len (Insentence) + 1» βρόχο μέσω όλων των χαρακτήρων της ποινής εισόδου Εάν (Mid (Insentence, i, 1) = “” ή i = Len (Insentence) + 1) στη συνέχεια, «ο χαρακτήρας αυτός είναι ένας χώρος ή αυτό είναι το το τέλος της πρότασης q = i - σ» Ρυθμίστε το μήκος λέξης με τον αριθμό της θέσης μείον τη θέση της στην αρχή αυτού του λέξη WordArray (w) = Mid (Insentence, p, q) ρ = i + 1 'Θέση της επόμενης λέξης w = + 1 w' επόμενη λέξη End If επόμενο iw = w - 1 «Τελευταία λέξη έφθασε

    «Βρόχο μέσω της συστοιχίας να εργαστεί για κάθε λέξη Για j = 1 έως W» βρόχο μέσω της συστοιχίας και μετρήστε τον αριθμό των φορών που αυτή η λέξη εμφανίζεται Για k = 1 έως νν Εάν UCase (WordArray (k)) = UCase (WordArray (j )) Στη συνέχεια CountArray (ι) = CountArray (j) + 1 Επόμενη k Επόμενη j

    R = 1

    «Βρείτε τη μέγιστη τιμή του πίνακα καταμέτρηση Για n = 1 Για w Αν CountArray (n)> R Τότε R = n Επόμενο n MsgBox ( "Η πιο συνηθισμένη λέξη είναι" & WordArray (R) & "στη θέση" & R & "")

    End Sub

Απαντήθηκε 12/07/2015 στις 19:58
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more