Ich war vor langer, langer Zeit einmal ziemlich gut mit Algorithmen und Datenstrukturen. Seitdem habe ich professionell programmiert und dann ein kleines Team geleitet, das meine technischen Fähigkeiten auf diesem Gebiet völlig zurückgeworfen hat.
Ich habe beschlossen, wieder Entwickler zu werden und für Google zu arbeiten. Die Sache ist, ich bin so außer Übung, dass ich, wenn ich jetzt interviewt würde, sicherlich in 10 Minuten durchfallen würde.
Welches Trainingsprogramm würden Sie mir empfehlen, um wieder in Form zu kommen? Ich habe dieses Wochenende bereits damit begonnen, zu den absoluten Grundlagen zurückzukehren und einige Sortieralgorithmen, eine verknüpfte Liste und eine Hash-Tabelle zu implementieren. Als nächstes werde ich das gesamte Kursmaterial über die anderen grundlegenden Datenstrukturen und Graph-Algorithmen lesen. Ich möchte eine Reihe von praktischen Übungen finden, die ich in relativ kurzer Zeit machen kann, um die alten Gehirnzellen zu jonglieren. Ich kenne dieses Zeug - ich muss mich nur daran erinnern, dass ich es weiß.
Antworten:
Es gibt 4 Dinge, die ich Ihnen sagen möchte, und ich habe die Reihenfolge aufgelistet, in der ich Ihnen diese mitteilen muss:
Viel Glück!
quelle
Ich würde vorschlagen, eine echte Datenstruktur oder ein Dateiformat auszuwählen, die gerade verwendet werden, und etwas Cooles daraus zu machen. Das Git-Dateiformat ist zum Beispiel ziemlich gut dokumentiert:
http://book.git-scm.com/1_the_git_object_model.html
Wenn Sie etwas Interessantes mit einem Format machen, das von Menschen verwendet wird, und wenn Sie streng damit umgehen, lernen Sie Unterricht - und - erhalten Sie etwas, an dem die Leute interessiert sein werden.
Oder zumindest etwas mit einem einzigartigen Winkel machen. Als ich mich in einer ähnlichen Position wie Sie befand, schrieb ich eine Antwort auf eine Online-Interviewfrage zum Erstellen eines ungerichteten Diagramms, das das Einfügen von Zyklen erkennen konnte. Es wäre ein einfaches Problem gewesen, wenn ich keine zusätzlichen Einschränkungen hinzugefügt hätte ... aber ich entschied mich dafür, dass es Einfügungen in O (1) ermöglichen könnte. Das Ergebnis war NoCycle:
http://hostilefork.com/nocycle/
quelle
Dies hängt genau davon ab, was Ihr Ziel ist - z. B. ob Algorithmusdesign und -analyse vorhanden sind oder ob Sie sich an die Standardstrukturen und -algorithmen halten? Aber es klingt für mich so, als ob Sie bereits das tun, was Sie tun müssen.
Wenn Sie noch ein altes Lieblingslehrbuch von "vor langer, langer Zeit" haben, schlage ich vor, es noch einmal zu besuchen. Darüber hinaus ist es der Standard-Ratschlag für alles, was Sie noch einmal besuchen sollten. Stellen Sie sich spezifische Fragen, suchen Sie nach Antworten, wenn Ihnen die Fragen ausgehen, überfliegen Sie und stöbern Sie schnell durch alles, was Sie finden können, bis Sie spezifischere Fragen haben.
Algorithmen und Datenstrukturen (Niklaus Wirth) ist ein relativ kurzes Buch über grundlegende Algorithmen und Datenstrukturen ohne das gesamte Design und die Analyse von Algorithmen. Sehr einfach - Listen, verschiedene Bäume, Haufen, aber ich erinnere mich nicht an Digraphen zum Beispiel. Ein Vorteil ist, dass die Oberon-Version - http://www.inf.ethz.ch/personal/wirth/ - kostenlos heruntergeladen werden kann. Suchen Sie nach dem PDF-Link am Ende der Bücherliste. Wikipedia ist eine offensichtliche Ressource, hat aber so viel, dass es eine gute Idee ist, zu entscheiden, was Sie wollen und was nicht, bevor Sie dorthin gehen.
quelle
Auf welche Ressourcen haben Sie zugegriffen, als Sie mit Algorithmen und Datenstrukturen ziemlich gut umgehen konnten?
Wie kurz ist die "relativ kurze Zeit", die Sie benötigen, um Ihr Wissen aufzufrischen?
Ich glaube nicht, dass Wissen, das mit Engagement gewonnen wird, jemals verschwinden wird. Es wird nur ein wenig verblassen, und SIE sind der beste Richter, an welchen Bereichen Sie arbeiten müssen, um Ihre alten Fähigkeiten mit den Themen wiederzugewinnen, die Sie einst geliebt haben.
quelle