Löse diese häufig gestellten Coding-Probleme, um bei deinen nächsten Vorstellungsgesprächen als Programmierer gut abzuschneiden.
Coding-Interviews sind ein so wichtiger Punkt im Leben eines Programmierers, dass er einfach nicht daran vorbeikommt. Es ist die erste Hürde, die sie nehmen müssen, um den Job als Softwareentwickler zu bekommen, den sie sich während ihrer Schul- und Studienzeit gewünscht haben.
Um die Sache noch schlimmer zu machen, wirst du im Internet so viele Leute finden, die sagen, dass das Vorstellungsgespräch für Programmierer fehlerhaft ist, dass der Einstellungsprozess für Programmierer scheiße ist und so weiter, aber du brauchst ihnen keine Aufmerksamkeit zu schenken, zumindest nicht am Anfang deiner Karriere.
Sie mögen Recht haben, aber sie sitzen in dem Zug, in den du einsteigen willst. Ganz gleich, wie sehr sie die Coding-Interviews und den Einstellungsprozess für Programmierer kritisieren, viele von ihnen haben den gleichen Weg durchlaufen, um dorthin zu gelangen, wo sie jetzt sind.
Wir alle wissen, dass das Coding-Interview-System nicht perfekt ist und viele versuchen, es zu ändern, aber bis es geändert wird, muss man seinen Regeln folgen, um in das System zu gelangen. Das ist etwas, womit sich erfahrene Entwickler auseinandersetzen müssen. Als Nachwuchsentwickler sollte es Ihre Priorität sein, das Coding-Interview zu bestehen und den gewünschten Job zu bekommen.
Als Autor eines Java-Blogs und einer Medium-Publikation erhalte ich viele Anfragen zu Coding-Problemen und wie man mit ihnen umgeht, und deshalb schreibe ich ständig Artikel wie diesen, die vielen Programmierern direkt und indirekt in ihrer Karriere geholfen haben.
In diesem Artikel werde ich Ihnen die 100 wichtigsten Programmierprobleme aus Vorstellungsgesprächen vorstellen, die jeder Programmierer kennen sollte.
Nun, da ich die Verwirrung darüber ausgeräumt habe, dass das Programmierinterview wichtig ist und man sich nicht ablenken lassen sollte, lassen Sie uns zur eigentlichen Arbeit kommen. Die große Frage ist, was man für Coding-Interviews vorbereiten sollte?
Nun, das Wichtigste, was man vorbereiten sollte, sind Datenstruktur-basierte Coding-Probleme wie Array-basierte Coding-Probleme, String-Probleme, Linked-List-Probleme, Binärbaum-Probleme, etc.
Neben datenstrukturbasierten Fragen werden in den meisten Vorstellungsgesprächen auch Fragen zu Algorithmen, Design, Bitmanipulation und allgemeiner Logik gestellt, die ich in diesem Abschnitt beschreiben werde.
Es ist wichtig, dass Sie diese Konzepte üben, denn manchmal sind sie im eigentlichen Vorstellungsgespräch schwierig zu lösen. Wenn man sie vorher geübt hat, ist man nicht nur mit ihnen vertraut, sondern hat auch mehr Selbstvertrauen, dem Interviewer die Lösung zu erklären.
Eines der Hauptprobleme bei Programmierproblemen ist, dass es Hunderte und Tausende von Programmierproblemen bei Interviews gibt, es gibt sogar Websites wie LeetCode, HackerRank, Codewars, Topcoder, freeCodeCamp, HackerEarth, die Programmierer für Programmierinterviews mit vielen schwierigen Fragen trainieren, was einen Anfänger auf der Suche nach einem Job manchmal einfach überfordert.
Ich glaube an Einfachheit und 10 % Aufwand, die 90 % der Ergebnisse bringen, und deshalb habe ich die 100 besten Programmierprobleme gesammelt, die nicht zu schwer sind und auch in echten Vorstellungsgesprächen häufig gestellt werden.
Das Lösen dieser Probleme gibt Ihnen nicht nur Selbstvertrauen, sondern hilft Ihnen auch, einige der häufigsten algorithmischen Muster zu erkennen, die Ihnen auch helfen werden, einige ungesehene Probleme in echten Vorstellungsgesprächen zu lösen.
Ressourcen für Vorstellungsgespräche
Die Auswahl guter Ressourcen ist sehr wichtig für den Erfolg in Ihren Vorstellungsgesprächen. Wenn Sie eine falsche Ressource gewählt haben, dann verlieren Sie nicht nur Geld, sondern auch wertvolle Zeit, die Sie für die Vorbereitung benötigen. Verbringen Sie daher einige Zeit mit der Suche nach einer guten Ressource.
Wenn Sie Empfehlungen benötigen, hier sind einige meiner bewährten Ressourcen, um Datenstrukturen und Algorithmen für Coding-Interviews zu erlernen:
- Data Structures and Algorithms: Deep Dive Using Java für Java-Entwickler. Erfahren Sie mehr über Arrays, Linked Lists, Trees, Hashtables, Stacks, Queues, Heaps, Sortier- und Suchalgorithmen
- Algorithmen und Datenstrukturen in Python für alle, die Python lieben
Ein Leitfaden, um die aktuellsten Algorithmen von Grund auf zu implementieren: Arrays, Linked Lists, Graph-Algorithmen und Sortierung
- JavaScript Algorithms and Data Structures Masterclass von Colt_Steele für JavaScript-Programmierer. The Missing Computer Science and Coding Interview Bootcamp. Lernen Sie alles, was Sie brauchen, um schwierige Vorstellungsgespräche zu bestehen.
- Mastering Data Structures & Algorithms using C and C++ for those who are good at C/C++
- Data Structures in Java: An Interview Refresher von The Educative Team zur Auffrischung wichtiger Datenstruktur- und Algorithmenkonzepte in Java. Dieser Kurs enthält einen detaillierten Überblick über alle gängigen Datenstrukturen und liefert Details zur Implementierung in Java, damit die Leser gut gerüstet sind.
- Grokking the Coding Interview: Patterns for Coding Questions von Fahim ul Haq und The Educative Team
Dies ist so etwas wie der Meta-Kurs für Coding-Interviews, der Ihnen nicht beibringt, wie man ein Coding-Problem löst, sondern Sie stattdessen lehrt, wie man eine bestimmte Art von Coding-Problemen mithilfe von Mustern löst. Beherrschen Sie diese 15 grundlegenden Muster für Vorstellungsgespräche, und Sie werden in der Lage sein, alles zu bewältigen, was Ihnen im Vorstellungsgespräch begegnet
Und wenn Sie Bücher bevorzugen, gibt es nichts Besseres als das Buch Cracking The Coding Interview von Gayle Laakmann McDowell, das 189+ Programmierfragen und Lösungen enthält. Ein gutes Buch, um sich in kurzer Zeit auf Vorstellungsgespräche vorzubereiten. Übrigens werde ich auch etwas Geld verdienen, wenn Sie eine der hier erwähnten Ressourcen kaufen.
Einige Tipps für Coding-Interviews
- Es gibt keinen besseren Weg, in Coding-Interviews gut abzuschneiden, als so viele Coding-Probleme wie möglich zu üben. Das schult nicht nur Ihren Verstand, um algorithmische Muster in Problemen zu erkennen, sondern gibt Ihnen auch das nötige Selbstvertrauen, um ein Problem zu lösen, das Sie noch nie zuvor gesehen haben.
- Mein zweiter Tipp ist, so viele Datenstrukturen und Algorithmen wie möglich zu lernen. Dies ist eine Erweiterung des vorigen Tipps, aber auch hier geht es um Lesen und nicht nur um Üben. Wenn du zum Beispiel die Hashtabelle kennst, kannst du auch viele Array- und Zähler-basierte Probleme leicht lösen. Dasselbe gilt für Bäume und Graphen.
- Die Wahl der richtigen Datenstruktur ist ein sehr wichtiger Teil der Softwareentwicklung und des Codierungsinterviews, und wenn Sie sie nicht kennen, werden Sie nicht in der Lage sein, sie zu wählen.
- Timing yourself – Kandidaten, die Interview-Probleme innerhalb des Zeitlimits und schnell lösen, sind eher in der Lage, im Interview gut abzuschneiden, also sollten Sie sich auch Zeit nehmen.
- Think of edge cases and run your code through them. Einige gute Randfälle könnten eine leere Eingabe, eine seltsame Eingabe oder eine wirklich große Eingabe sein, um die Randbedingungen und Grenzen zu testen.
- Nach dem Lösen des Problems versuchen Sie, es einem Freund oder Kollegen zu erklären, der sich auch für Programmierprobleme interessiert. So kannst du feststellen, ob du das Problem wirklich verstanden hast oder nicht. Wenn Sie es leicht erklären können, haben Sie es verstanden. Außerdem regt die Diskussion Ihren Verstand an und Sie könnten eine alternative Lösung finden und in der Lage sein, einige Fehler in Ihren bestehenden Algorithmen zu finden.
- Ein weiterer nützlicher Tipp, um bei Coding-Interviews zu glänzen, ist die Teilnahme an Coding-Interviews und zwar an vielen. Du wirst feststellen, dass du nach jedem Interview besser wirst, und das hilft dir auch, mehrere Angebote zu bekommen, die es dir ermöglichen, besser zu verhandeln und diese zusätzlichen 30.000 bis 50.000 zu bekommen, die du normalerweise auf dem Tisch liegen lässt, wenn du nur ein Angebot in der Hand hast.
- Btw, wenn du bereit für ein Coding-Interview bist, dann kannst du auch das Quiz von TripleByte machen und direkt in die letzte Runde der Interviews mit Top-Tech-Unternehmen wie Coursera, Adobe Acrobat, Dropbox, Grammarly, Uber, Quora, Evernote, Twitch und vielen anderen gehen. Ich kannte Triplebyte vorher nicht, aber sie bieten einen großartigen Service für Jobsuchende. Ein großes Dankeschön an sie.
Top 100 Coding Problems from Programming Job interviews
Ohne noch mehr Ihrer Zeit zu verschwenden, hier ist meine Liste der 100 häufig gestellten Coding Problems from programming job interviews. Um das meiste von dieser Liste zu bekommen, schlage ich vor, das Problem tatsächlich zu lösen.
Tun Sie es selbst, egal ob Sie stecken bleiben, denn das ist der einzige Weg, um zu lernen. Nachdem du ein paar Probleme gelöst hast, wirst du Vertrauen gewinnen. Ich schlage auch vor, dass du dir die Lösung ansiehst, wenn du nicht weiterkommst oder nachdem du das Problem gelöst hast. Auf diese Weise lernst du, verschiedene Lösungen zu vergleichen und ein Problem aus einem anderen Blickwinkel zu betrachten.
- Wie ist ein Bubble-Sort-Algorithmus implementiert? (Lösung)
- Wie ist ein Merge-Sort-Algorithmus implementiert? (Lösung)
- Wie zählt man das Vorkommen eines bestimmten Zeichens in einer Zeichenkette? (Lösung)
- Wie gibt man das erste nicht wiederholte Zeichen einer Zeichenkette aus? (Lösung)
- Wie konvertiert man einen gegebenen String in int wie atoi()? (Lösung)
- Wie implementiert man einen Bucket Sort Algorithmus? (Lösung)
- Wie implementiert man einen Zählsortieralgorithmus? (Lösung)
- Wie entfernt man Duplikate aus einem Array an Ort und Stelle? (Lösung)
- Wie kehrt man in Java ein Array an Ort und Stelle um? (Lösung)
- Wie werden Duplikate aus einem Array entfernt, ohne eine Bibliothek zu verwenden? (Lösung)
- Wie wird ein Radix-Sortieralgorithmus implementiert? (Lösung)
- Wie tauscht man zwei Zahlen aus, ohne die dritte Variable zu verwenden? (Lösung)
- Wie prüft man, ob sich zwei Rechtecke überschneiden? (Lösung)
- Wie konstruiert man einen Verkaufsautomaten? (Lösung)
- Wie findet man die fehlende Zahl in einer gegebenen ganzzahligen Anordnung von 1 bis 100? (Lösung)
- Wie findet man die doppelte Zahl in einer gegebenen ganzzahligen Anordnung? (Lösung)
- Wie findet man die doppelten Zahlen in einem Array, wenn es mehrere Duplikate enthält? (Lösung)
- Was ist der Unterschied zwischen einem stabilen und einem instabilen Sortieralgorithmus? (Antwort)
- Wie ist ein iterativer Quicksort-Algorithmus implementiert? (Lösung)
- Wie findet man die größte und kleinste Zahl in einem unsortierten Integer-Array? (Lösung)
- Wie kehrt man eine verknüpfte Liste an Ort und Stelle um? (Lösung)
- Wie fügt man ein Element in der Mitte der verknüpften Liste hinzu? (Lösung)
- Wie sortiert man eine verknüpfte Liste in Java? (Lösung)
- Wie findet man alle Paare eines Integer-Arrays, deren Summe gleich einer bestimmten Zahl ist? (Lösung)
- Wie implementiert man einen Einfügungssortieralgorithmus? (Lösung)
- Wie werden in Java Duplikate aus einem gegebenen Array entfernt? (Lösung)
- Wie entfernt man das doppelte Zeichen aus einem String? (Lösung)
- Wie findet man das maximal vorkommende Zeichen in einer gegebenen Zeichenfolge? (Lösung)
- Wie wird ein Integer-Array mit Hilfe des Quicksort-Algorithmus an Ort und Stelle sortiert? (Lösung)
- Wie kehrt man eine gegebene Zeichenkette an Ort und Stelle um? (Lösung)
- Wie druckt man doppelte Zeichen aus einer Zeichenkette? (Lösung)
- Wie prüft man, ob zwei Zeichenketten Anagramme voneinander sind? (Lösung)
- Wie findet man alle Permutationen einer Zeichenkette? (Lösung)
- Wie kann man eine gegebene Zeichenkette durch Rekursion umkehren? (Lösung)
- Wie kann man prüfen, ob eine gegebene Zeichenkette ein Palindrom ist? (Lösung)
- Wie findet man die Länge der längsten Teilzeichenkette ohne Wiederholung von Zeichen? (Lösung)
- Wie findet man bei einer gegebenen Zeichenkette str die längste palindromische Teilzeichenkette in str? (Lösung)
- Wie prüft man, ob eine Zeichenkette nur Ziffern enthält? (Lösung)
- Wie entfernt man den N-ten Knoten vom Ende einer verknüpften Liste? (Lösung)
- Wie fügt man zwei sortierte verknüpfte Listen zusammen? (Lösung)
- Wie kann man eine sortierte Liste in einen binären Suchbaum umwandeln? (Lösung)
- Wie findet man doppelte Zeichen in einer gegebenen Zeichenkette? (Lösung)
- Wie zählt man die Anzahl der Vokale und Konsonanten in einer gegebenen Zeichenkette? (Lösung)
- Wie kehrt man Wörter in einem gegebenen Satz um, ohne eine Bibliotheksmethode zu verwenden? (Lösung)
- Wie prüft man, ob zwei Zeichenketten eine Rotation voneinander sind? (Lösung)
- Wie konvertiert man ein Byte-Array in einen String? (Lösung)
- Wie entfernt man ein bestimmtes Zeichen aus einem String? (Lösung)
- Wie findet man das mittlere Element einer einfach verknüpften Liste in einem Durchgang? (Lösung)
- Wie prüft man, ob eine gegebene verknüpfte Liste einen Zyklus enthält? Wie findet man den Anfangsknoten des Zyklus? (Lösung)
- Wie kann man eine verknüpfte Liste umkehren? (Lösung)
- Wie kehrt man eine einfach verknüpfte Liste ohne Rekursion um? (Lösung)
- Wie werden doppelte Knoten in einer unsortierten verketteten Liste entfernt? (Lösung)
- Wie findet man die Länge einer einfach verketteten Liste? (Lösung)
- Wie findet man in einer einfach verketteten Liste den dritten Knoten vom Ende her? (Lösung)
- Wie findet man die Summe von zwei verknüpften Listen mit Hilfe von Stack? (Lösung)
- Was ist der Unterschied zwischen einem Array und einer verknüpften Liste? (Antwort)
- Wie entfernt man Duplikate aus einer sortierten verknüpften Liste? (Lösung)
- Wie findet man den Knoten, an dem die Schnittmenge von zwei einfach verketteten Listen beginnt? (Lösung)
- Geben Sie eine verknüpfte Liste und einen Wert x an und partitionieren Sie sie so, dass alle Knoten, die kleiner als x sind, vor den Knoten kommen, die größer oder gleich x sind. (Lösung)
- Wie kann man prüfen, ob eine gegebene verknüpfte Liste ein Palindrom ist? (Lösung)
- Wie entfernt man alle Elemente aus einer verknüpften Liste von ganzen Zahlen, die mit einem gegebenen Wert übereinstimmen? (Lösung)
- Wie ist ein binärer Suchbaum implementiert? (Lösung)
- Wie führt man in einem gegebenen Binärbaum eine Traversierung vor der Reihenfolge durch? (Lösung)
- Wie durchläuft man einen gegebenen Binärbaum in Vorordnung ohne Rekursion? (Lösung)
- Wie führt man in einem gegebenen Binärbaum eine Traversierung in Reihenfolge durch? (Lösung)
- Wie druckt man alle Knoten eines gegebenen Binärbaums mit Inorder-Traversal ohne Rekursion? (Lösung)
- Wie implementiert man einen Postorder-Traversal-Algorithmus? (Lösung)
- Wie durchläuft man einen Binärbaum im Postorder-Traversal ohne Rekursion? (Lösung)
- Wie werden alle Blätter eines binären Suchbaums ausgedruckt? (Lösung)
- Wie zählt man eine Anzahl von Blattknoten in einem gegebenen Binärbaum? (Lösung)
- Wie führt man eine binäre Suche in einem gegebenen Array durch? (Lösung)
- Wie tauscht man zwei Zahlen aus, ohne die dritte Variable zu verwenden? (Lösung)
- Wie prüft man, ob sich zwei Rechtecke überschneiden? (Lösung)
- Wie konstruiert man einen Verkaufsautomaten? (Lösung)
- Wie implementiert man einen LRU-Cache in seiner bevorzugten Programmiersprache? (Lösung)
- Wie prüft man, ob eine gegebene Zahl ein Palindrom ist? (Lösung)
- Wie prüft man, ob eine gegebene Zahl eine Armstrong-Zahl ist? (Lösung)
- Wie findet man alle Primfaktoren einer gegebenen Zahl? (Lösung)
- Wie kann man in Java prüfen, ob eine gegebene Zahl positiv oder negativ ist? (Lösung)
- Wie findet man den größten Primfaktor einer gegebenen ganzen Zahl? (Lösung)
- Wie kann man alle Primzahlen bis zu einer bestimmten Zahl ausgeben? (Lösung)
- Wie druckt man das Floydsche Dreieck? (Lösung)
- Wie druckt man das Pascalsche Dreieck? (Lösung)
- Wie berechnet man die Quadratwurzel aus einer gegebenen Zahl? (Lösung)
- Wie prüft man, ob die gegebene Zahl eine Primzahl ist? (Lösung)
- Wie addiert man in Java zwei Zahlen, ohne den Plus-Operator zu verwenden? (Lösung)
- Wie prüft man, ob eine gegebene Zahl gerade/ungerade ist, ohne den Arithmetikoperator zu verwenden? (Lösung)
- Wie kann man eine gegebene Pyramidenstruktur ausdrucken? (Lösung)
- Wie findet man die höchste sich wiederholende Welt aus einer gegebenen Datei in Java? (Lösung)
- Wie kann man eine gegebene Ganzzahl in Java umkehren? (Lösung)
- Wie kann man in Java eine Dezimalzahl in eine Binärzahl umwandeln? (Lösung)
- Wie kann man in Java prüfen, ob ein gegebenes Jahr ein Schaltjahr ist? (Lösung)
- Kann man einen binären Suchalgorithmus ohne Rekursion implementieren? (Lösung)
- Unterschied zwischen einem stabilen und einem instabilen Sortieralgorithmus? (Antwort)
- Was ist der Depth First Search Algorithmus für einen Binärbaum? (Lösung)
- Wie ist ein iterativer Quicksort-Algorithmus implementiert? (Lösung)
- Wie implementiert man einen Insertion-Sort-Algorithmus? (Lösung)
- Wie wird ein Merge-Sort-Algorithmus implementiert? (Lösung)
- Was ist der Unterschied zwischen Vergleichs- und Nicht-Vergleichssortieralgorithmen? (Antwort)
- Wie implementiert man den Sieve of Eratosthenes Algorithmus für Primzahlen? (Lösung)
Diese vielen Fragen sollten ausreichen, aber wenn du mehr solcher Programmierfragen brauchst, kannst du Hilfe aus Büchern wie Cracking The Code Interview, von Gayle Laakmann McDowell nehmen, das 189+ Programmierfragen und Lösungen präsentiert. Ein gutes Buch, um sich in kurzer Zeit auf Vorstellungsgespräche vorzubereiten.
Jetzt sind Sie bereit für das Coding-Interview
Dies sind einige der häufigsten Fragen außerhalb von Datenstrukturen und Algorithmen, die Ihnen helfen, in Ihrem Vorstellungsgespräch wirklich gut abzuschneiden.
Ich habe viele dieser Fragen auch in meinem Blog veröffentlicht. Wenn Sie also wirklich daran interessiert sind, können Sie jederzeit dorthin gehen und nach ihnen suchen.
Diese häufigen Fragen zu Codierung, Datenstruktur und Algorithmen sind diejenigen, die Sie wissen müssen, um ein erfolgreiches Vorstellungsgespräch mit einem Unternehmen zu führen, egal ob groß oder klein, für jede Art von Programmierjob.
Wenn du 2019 einen Job als Programmierer oder Softwareentwickler suchst, kannst du deine Vorbereitung mit dieser Liste von Programmierfragen beginnen, und wenn du bereit für ein Vorstellungsgespräch bist, kannst du auch das Quiz von TripleByte absolvieren und direkt in die letzte Runde der Vorstellungsgespräche mit Top-Tech-Unternehmen wie Coursera, Adobe, Dropbox, Grammarly und vielen anderen gehen.
Diese Liste bietet gute Themen zur Vorbereitung und hilft auch dabei, Ihre Vorbereitung zu bewerten, um Ihre Stärken und Schwächen herauszufinden.
Gute Kenntnisse von Datenstrukturen und Algorithmen sind wichtig für den Erfolg in Coding-Interviews und darauf sollten Sie sich am meisten konzentrieren.
Weiteres Lernen
Datenstrukturen und Algorithmen: Deep Dive Using Java
10 Bücher zur Vorbereitung auf Vorstellungsgespräche im Bereich technische Programmierung/Codierung
10 Algorithmus-Bücher, die jeder Programmierer lesen sollte
Top 5 Datenstruktur- und Algorithmus-Bücher für Java-Entwickler
Von 0 bis 1: Data Structures & Algorithms in Java
Data Structure and Algorithms Analysis – Job Interview
20+ String based coding problems from interviews
20+ linked list problems from interviews
20+ basic algorithms based problems from interviews
Closing Notes
Danke, Sie haben es bis zum Ende des Artikels geschafft … Viel Glück bei Ihrem Programmierinterview! Es wird sicher nicht einfach werden, aber wenn Sie diese Fragen zum Such- und Sortieralgorithmus befolgen, sind Sie schon einen Schritt weiter als andere. Übrigens, je mehr Fragen Sie in der Praxis lösen, desto besser wird Ihre Vorbereitung sein.
So, wenn Sie denken, dass 100 Programmierprobleme nicht genug sind und Sie mehr brauchen, dann schauen Sie sich diese zusätzlichen 50 Programmierfragen für Telefoninterviews und diese Bücher und Kurse für eine gründlichere Vorbereitung an.
Alles Gute für Ihr Programmierinterview.
Weitere Artikel, die Ihnen gefallen könnten: