Die meisten Biggie-Tech-Unternehmen wie Microsoft konzentrieren sich hauptsächlich auf Datenstrukturen. Es scheint, als ob Datenstrukturen das einzige sind, was sie von einem Absolventen erwarten.
Nein, da ist noch mehr. Zum Beispiel erwarten wir auch, dass Sie ein schneller Lerner sind, der in kurzer Zeit neue Frameworks, APIs oder sogar Programmiersprachen erlernen kann. Das ist ein Minimum an Bar. Wer lange braucht, um ein neues Framework, eine neue API oder eine neue Sprache zu erlernen, wird in den meisten Teams von Microsoft kein erfolgreicher Entwickler sein.
Und natürlich gibt es noch viel mehr Aspekte, auf die wir uns in Interviews konzentrieren, als nur Rohwissen über Datenstrukturen. Fähigkeit, mit mehrdeutigen Spezifikationen umzugehen oder Codierungsmuster zu erkennen, die unsicheren Code erzeugen, oder ein Dutzend anderer Dinge. Die Fähigkeit, Datenstrukturen zu verstehen, ist jedoch mit Sicherheit sehr groß.
Es ist insbesondere der Fall, dass die Befragung darauf abzielt, Kenntnisse über Datenstrukturen für neuere CS-Absolventen zu testen. Von jüngeren Absolventen, von denen die meisten nicht viel Erfahrung in der Praxis haben, wird nicht erwartet, dass sie in den gleichen Dingen gut sind, in denen jemand mit fünfzehnjähriger Branchenerfahrung gut sein würde.
Ich muss gestehen, dass ich in Datenstrukturen nicht so stark war
Es ist gut, dass du das über dich selbst weißt. Wenn Sie nicht in der Lage oder nicht bereit sind, dies zu ändern, empfehle ich, dass Sie sich nicht für eine Stelle bewerben, die eine Einrichtung mit Datenstrukturen erfordert.
Es gibt die allgemeine Sichtweise, dass ein guter Programmierer notwendigerweise ein Mensch mit guten Kenntnissen über Datenstrukturen ist.
Es ist tautologisch, dass ein guter Programmierer ein Programmierer ist, der gut darin ist, die Art von Programmen zu erstellen, die erstellt werden müssen. Viele Programmierer arbeiten an Aufgaben, die keine umfassenden Kenntnisse der Datenstrukturen erfordern. Einige von ihnen arbeiten beispielsweise an Aufgaben, die ein tiefes Wissen über das Design von Benutzeroberflächen erfordern. Oder Datenbanknormalisierung. Oder Wasauchimmer. Diese Leute können immer noch "gute Programmierer" in ihren Domänen sein.
warum all diese Betonung auf Datenstrukturen?
Ich stelle Interviewfragen zu Datenstrukturen, weil die Entwickler in meinem Team jeden Tag komplexe Datenstrukturen entwerfen, implementieren und manipulieren. Gestern hatten wir vier Stunden Meetings, in denen ein halbes Dutzend Entwickler die Vor- und Nachteile des Hinzufügens eines einzelnen Booleschen Felds zu einem bestimmten Baumknoten diskutierten. In meinem Team gibt es wahrscheinlich keine Fertigkeit, die wichtiger ist als die Fähigkeit, Datenstrukturen auf einer tiefen Ebene zu verstehen. Es wäre dumm, keine Interviewfragen zu stellen, da wir das tun.
Beeinträchtigt das Fehlen von Kenntnissen in Datenstrukturen wirklich die Programmierkarriere?
Nun, es wird Sie sicher davon abhalten, einen Job in meinem Team zu bekommen. Aber wie ich schon sagte, ist das Programmieren ein riesiges Feld. Es gibt viele Arten der Computerprogrammierung, für die keine Kenntnisse über Datenstrukturen erforderlich sind.
Ist das Wissen in diesem Fach wirklich eine ausreichende Grundlage, um einen guten und einen schlechten Programmierer zu unterscheiden?
Nein. Es reicht jedoch fast immer aus, Entwickler zu erkennen, die bei Microsoft wahrscheinlich nicht erfolgreich sind. Da es mir in erster Linie um das Erkennen geht, ist die Kenntnis von Datenstrukturen einer der Faktoren, auf die ich in Interviews teste.