Quelle: https://ressourcen.workable.com/
Wir alle haben uns irgendwann in unserem Leben auf ein Programmierinterview vorbereitet. Wenn du diesen Beitrag heute liest, meistens bald ein Interview geben. Viel Glück! Möge die Macht mit dir sein!
Was ist ein Codierungstest? Wenn Sie zum ersten Mal einen Codierungstest machen, lass mich dir sagen, was dich erwartet. Der Codierungstest besteht im Allgemeinen aus algorithmischen Fragen, die Ihre Fähigkeiten in den Bereichen Datenstrukturen und Codeoptimierung testen.
Die in diesem Segment gestellten Fragen stehen möglicherweise nicht in direktem Zusammenhang mit Ihrer Tätigkeit.. In Wirklichkeit, Sie werden mit ziemlicher Sicherheit niemals Codes schreiben, um zu überprüfen, ob eine Zahl eine Primzahl ist, ein Code zum Auffinden des Palindroms oder ein Code zum Auffinden der längsten gemeinsamen Teilzeichenfolge von 1000 Laufketten. Der Zweck dieses Tests ist es, Ihre Denkweise und Ihr Programmierniveau zu messen.
Denken Sie an eine Sache, bevor Sie einen Codierungstest starten. Dieser Vorschlag gilt in Fällen, in denen Ihr Interviewer während des Tests anwesend ist oder die Kontaktdaten Ihres Interviewers hat.
Für den unglücklichen Fall, dass Sie einen Algorithmus im Sinn hatten, das Programm aber nicht schreiben konnten, Erkläre deinen Gedankengang (Algorithmus) zu deinem Gesprächspartner. Es ist keine Schwarz-Weiß-Situation. Lautes Denken oder Äußern Ihrer Ideen gegenüber dem Interviewer könnte dem Interviewer ein besseres Verständnis Ihrer Fähigkeiten vermitteln.
So bereiten Sie sich auf den Codierungstest vor?
Viele erfahrene Programmierer schlagen vor, dass das Üben vieler Probleme dazu beiträgt, Intuition zu entwickeln und Ihnen Werkzeuge zur Lösung neuer Probleme an die Hand zu geben.. Auf vielen Websites wie HackerRank und LeetCode können Sie Ihren Code üben und verstehen, wie optimiert Ihre Lösung ist..
Jetzt wissen Sie, was Sie von dieser Phase des Einstellungsprozesses erwarten können, und kennen einige Websites, die Ihnen auf Ihrem Weg helfen.. Trotz dieses, Wie werden diese Probleme gelöst? Ich werde die Schritte erklären, die mir persönlich geholfen haben.
Es ist unmöglich, sich auf ein Coding-Interview vorzubereiten und diese Problemstellung nicht zu testen.
„Gegeben eine ganze Zahl x, Zurückkehren true und x ist eine Palindrom-Ganzzahl.„
Ich bin auf dieses Problem gestoßen, als ich für eines meiner Programmierinterviews mit LeetCode geübt habe. hier. Ich werde dieses Problem verwenden, um die Schritte zu erklären.
Wie ich beim Programmieren Spaß haben wollte, Ich beschloss, mit Listen zu experimentieren. Ich weiß nicht, ob dieser Code schon einmal geschrieben wurde, trotz dieses, das war mein persönlicher Versuch.
Nachdem Sie sich einige Videos angesehen und den Ansatz einiger Programmierer verstanden haben, um diese algorithmischen Probleme zu beheben, Ich habe die folgenden Schritte konsolidiert, um dieses Problem zu beheben. Die unten aufgeführten Schritte können für jedes algorithmische Problem verwendet werden. Das Palindromproblem wird nur als Beispiel verwendet, um die Schritte zur Lösung eines Codierungsproblems zu zeigen.
1. Verstehe ich die Frage – Was ist ein Palindrom??
Laut Merriam-Webster, ein Palindrom wird wie folgt angelegt:
ein Wort, Vers oder Satz (Was „Ich könnte da sein, bevor ich Elba gesehen habe“) oder eine Zahl (Was 1881) das liest sich rückwärts oder vorwärts gleich
Wir betrachten in diesem Problem nur ganze Zahlen.
Beispiele: 12321, 22, 56877865
2. Welche Einschränkungen sind zu beachten, bevor Sie mit dem Schreiben des Codes beginnen??
Die Einschränkungen hier beziehen sich auf die Annahmen, die wir vor dem Schreiben des Codes treffen. Wir werden nicht prüfen, ob diese Bedingungen erfüllt sind. Es wird davon ausgegangen, dass die an die Funktion übergebenen Argumente die folgenden Bedingungen erfüllen. Einschränkungen variieren je nach Problembeschreibung. Ich habe die folgenden Einschränkungen reduziert, um mich auf das Hauptthema der Diskussion zu konzentrieren: Verwenden einer Liste in diesem Problem.
ich. Als Argumente werden nur ganze Zahlen übergeben.
ii. Negative ganze Zahlen werden nicht als Palindrome betrachtet.
3. Brute-Force-Methode
Der Brute-Force-Ansatz ist bei Merriam-Webster as etabliert-
vertrauen oder durch Gewaltanwendung erreichen, Aufwand oder Leistung im Allgemeinen in großen Mengen statt effizienterer Methoden, sorgfältig geplant oder zielgenau
Der Brute-Force-Ansatz ist normalerweise der erste Ansatz, der einem in den Sinn kommt, wenn man ein Programmierproblem angeht..
Hier, Der Ansatz, den ich in Betracht gezogen habe, bestand darin, die ganze Zahl zu invertieren und mit der ursprünglichen ganzen Zahl zu vergleichen.
#Brute-Force-Ansatz
def isPalindrom(x):
#Stellen Sie zunächst sicher, dass das Ergebnis False ist, wenn die ganze Zahl negativ ist
wenn x<0:
falsch zurückgeben
#Initialisierung der umgekehrten Zeichenfolge zu 0
Umdrehung = 0
#Zuweisen von x zum Original, da wir x in den folgenden Schritten ändern werden
ursprünglich = x
#Diese while-Schleife wird verwendet, um die Umkehrung einer ganzen Zahl zu erhalten.
während x>0:
# x (Erinnerung, wenn x durch geteilt wird 10) gibt die letzte Ziffer von x
Umdrehung = Umdrehung*10 + x%10
#Remove the last digit from x to use if for the next step of the while loop
x = int(x/10)
#Prüfen Sie, ob die umgekehrte ganze Zahl gleich der ursprünglichen ganzen Zahl ist
wenn int(Rev) == original:
true zurückgeben
anders:
falsch zurückgeben
Der Code kann wie folgt erklärt werden:
ich. Wenn die ganze Zahl negativ ist, gibt false zurück.
II. Eine ganze Zahl initialisieren (Rev) ein 0. ist VariableIn Statistik und Mathematik, ein "Variable" ist ein Symbol, das einen Wert darstellt, der sich ändern oder variieren kann. Es gibt verschiedene Arten von Variablen, und qualitativ, die nicht-numerische Eigenschaften beschreiben, und quantitative, numerische Größen darstellen. Variablen sind grundlegend in Experimenten und Studien, da sie die Analyse von Beziehungen und Mustern zwischen verschiedenen Elementen ermöglichen, das Verständnis komplexer Phänomene zu erleichtern.... se utilizará para guardar el reverso del entero que se va a chequear.
III. Starte eine while-Schleife. In der while-Schleife, wir erhalten die Umkehrung der ursprünglichen ganzen Zahl
NS. Überprüfen Sie, ob die in Schritt II und III erstellte Liste identisch ist. Wenn ja, die nummer ist ein palindrom.
Dieser Code ist von zeitlicher Komplexität OR (Log-Nr).
4. Der Spaß beginnt hier
Der vierte Schritt ist die Optimierung. Trotz dieses, Ich habe mich entschieden, Listen dafür zu verwenden und deren Ergebnis zu überprüfen.
Mein Code war folgender:
#Lösung mit Listen
def isPalindrom(x):
#Stellen Sie zunächst sicher, dass das Ergebnis False ist, wenn die ganze Zahl negativ ist
wenn x<0:
falsch zurückgeben
#Konvertieren Sie die ganze Zahl in eine Liste : 123 wird [1, 2, 3]
lst_int = [int(Auf eins) für num in str(x)]
#Kehren Sie die Liste um : [1,2,3] wird [3,2,1]
reverse_lst = lst_int[::-1]
#Überprüfen Sie, ob die umgekehrte Liste mit der ursprünglichen Liste übereinstimmt
if lst_int == reverse_lst:
true zurückgeben
anders:
falsch zurückgeben
Der Code kann wie folgt erklärt werden:
ich. Wenn die ganze Zahl negativ ist, gibt false zurück
II. Wandeln Sie die ganze Zahl x in eine Liste um: 123 wird [1,2,3]
III. Invertieren Sie die Liste: [1,2,3] wird [3,2,1]
NS. Überprüfen Sie, ob die in Schritt II und III erstellte Liste identisch ist. Wenn ja, die nummer ist ein palindrom.
Es könnte so aussehen, als hätten wir die String-Funktion direkt für die Ganzzahl verwenden und den String umkehren können, anstatt die Liste zu verwenden. Trotz dieses, wenn Sie die Frage in LeetCode sehen, Würfel: speichere die ganze Zahl nicht als String. Daher die Antwort.
Jede Zeile dieses Codes hat die Komplexität ODER (n). Fügen Sie mehrere Komplexitätsanweisungen hinzu ODER (n) erhöht nicht die Komplexität des Algorithmus. Deswegen, das ist die Antwort ODER (n).
Deutlich, diese Lösung ist schlechter als die Brute-Force-Methode mit einer Komplexität von O (Log-Nr). Dieser Schritt ist nicht ohne Grund der schwierigste. Weil wir hart nachdenken müssen, um sicherzustellen, dass wir die Dinge nicht noch schlimmer machen, als sie ohnehin schon sind.. Schritt vier ist ein iterativer Schritt, der wiederholt wird, bis eine gewisse Verbesserung der zeitlichen oder räumlichen Komplexität des Codes beobachtet wird..
Besuch hier um die Diskussionen Ihrer Programmierkollegen zu verfolgen und sich inspirieren zu lassen, das Beste aus dem obigen Code zu machen
Fazit
Dies ist nicht die optimierte Antwort, die Sie in Ihrem nächsten Vorstellungsgespräch ausprobieren sollten.. Es ist nur ein Sprungbrett, um dir zu sagen, wie du denkst. Ich lerne wie du und lerne jeden Tag etwas Neues. Zur selben Zeit, Ich möchte nicht warten, um ein Experte zu werden, um zu teilen, was ich lerne.
Ich fordere Sie auf, alle Ideen auszuprobieren, die Ihnen in den Sinn kommen. Vielleicht haben Sie die nächste tolle Idee!!
Viel Spaß beim Codieren!
Die in diesem Beitrag gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.



