Programmierer, gehen Sie zu Interviews



Das Bild stammt aus dem Video des Senders " Militant Amethysts "



. Etwa 10 Jahre lang arbeitete ich als Systemprogrammierer für Linux. Dies sind Kernelmodule (Kernel Space), verschiedene Daemons und arbeiten mit Hardware aus dem User Space (User Space), verschiedenen Bootloadern (U-Boot usw.), Controller-Firmware und vielem mehr. Manchmal ist es sogar passiert, dass das Webinterface abgeschnitten wurde. Aber öfter kam es vor, dass ich mit einem Lötkolben sitzen und mit Designern von Leiterplatten interagieren musste. Eines der Probleme einer solchen Arbeit besteht darin, dass es ziemlich schwierig ist, das Niveau Ihrer Kompetenz einzuschätzen, da Sie eine Aufgabe möglicherweise sehr gut kennen, aber in der Nähe möglicherweise überhaupt nicht. Der einzig angemessene Weg, um zu verstehen, wohin und welche Strömungen es jetzt gibt, besteht darin, zu Interviews zu gehen.



In diesem Artikel möchte ich meine Erfahrungen mit Interviews für die Stelle eines Linux-Systemprogrammierers, die Besonderheiten von Interviews, die Arbeit und die Beurteilung des persönlichen Wissensstands bei der Kommunikation mit dem zukünftigen Arbeitgeber und was davon nicht zu erwarten ist, zusammenfassen.



Der Artikel wird einen kleinen Wettbewerb mit Preisen enthalten.



Merkmale des Berufs



Ein Systemprogrammierer ist in den Einzelheiten, in denen ich gearbeitet habe, ein vollständiger Generalist: Ich musste sowohl Code schreiben als auch Hardware debuggen. Und oft musste etwas selbst gelötet werden. Von Zeit zu Zeit kam es vor, dass meine Hardwarekorrekturen an die Entwickler weitergegeben wurden. Um in diesem Bereich arbeiten zu können, ist daher ein ziemlich guter Wissensspeicher erforderlich, sowohl auf dem Gebiet der digitalen Schaltung als auch auf dem Gebiet der Programmierung. Aus diesem Grund sehen Interviews für einen Job als Systemprogrammierer oft so aus, als würden Sie einen Elektronikspezialisten suchen.





Ein typischer Arbeitsplatz eines Systemprogrammierers.



Das Foto oben ist mein typischer Arbeitsplatz beim Debuggen von Treibern. Der Logikanalysator zeigt die Richtigkeit der übertragenen Signale an, das Oszilloskop überwacht die Form der Signalflanken. Auch der jtag-Debugger, der verwendet wird, wenn Standard-Debugging-Tools nicht mehr funktionieren, ist nicht in den Frame geraten. Und Sie müssen in der Lage sein, mit all diesen Geräten zu arbeiten.



Es kommt häufig vor, dass das erneute Löten einiger Elemente und das Beheben von Topologiefehlern für Sie schneller und einfacher ist als für einen Installateur, der ein Produkt trägt. Und dann setzt sich auch eine Lötstation an Ihrem Arbeitsplatz ab.



Ein weiteres Merkmal der Entwicklung auf Treiber- und Hardwareebene ist, dass Google nicht hilft. Oft müssen Sie nach Informationen zu Ihrem Problem suchen, und es gibt drei Links, von denen zwei Ihre Fragen in einem Forum sind. Oder noch schlimmer, wenn Sie auf eine Frage des gleichen armen Mannes stoßen, der sie vor 5 Jahren auf der Kernel-Mailingliste gestellt hat, aber nie eine Antwort darauf erhalten hat. In dieser Arbeit treten neben Fehlern beim Design von Hardware und Software häufig Dokumentationsfehler auf - dies sind wahrscheinlich die schwerwiegendsten und unangenehmsten Probleme. Manchmal werden Register falsch beschrieben oder es gibt überhaupt keine Beschreibung für sie. Solche Probleme werden nur durch die Methode gelöst, Zufallszahlen in bestimmte Register zu stecken (eine Art Umkehrung). Es kommt oft vor, dass der Prozessor irgendeine Art von Funktionalität hat,und außer Ihnen hat niemand diese Funktionalität implementiert (insbesondere wenn der Prozessor neu ist). Und das geht mit einem Rechen auf dem Feld, von denen 70% Kinder sind. Aber wenn es eine Dokumentation gibt, auch mit Fehlern, ist dies bereits ein Fortschritt. Sehr oft kommt es vor, dass es überhaupt keine Dokumentation gibt, und hier beginnt das Gehen bereits in Minenfeldern, wenn das Eisen brennt. Und ja, ich habe solche Probleme auch erfolgreich gelöst.



Interviews



Meiner Meinung nach lohnt es sich, mindestens alle sechs Monate irgendwo ein Interview zu führen, auch wenn Sie Ihren Job lieben und ihn nicht ändern wollen. Das Interview ermöglicht es Ihnen, Ihr Niveau als Spezialist zu verstehen. Ich denke, die wertvollsten Interviews sind Misserfolge. Sie zeigen am genauesten, welche Engpässe ihres Wissens es wert sind, verschärft zu werden.



Ein weiteres interessantes Merkmal ist die Qualität der Interviews. Dies ist meine Beobachtung, und es ist nicht wahr, ich gebe zu, dass ich einfach so viel Glück hatte. Wenn das Interview mit einem Skript versehen ist:



  • erzählen Sie über sich selbst;
  • wir haben solche Aufgaben;
  • du magst?


Und wenn Sie sich nach diesem Dialog mögen, gehen Sie zur Arbeit, dann erweisen sich das Unternehmen und die Aufgaben in der Regel als sehr angenehm und angemessen. Wenn ein Interview wie ein Durchgang durch die 12 Höllenkreise ist: das erste Interview mit der Personalabteilung, dann ein Interview mit einer Gruppe von Programmierern, dann ein Regisseur, mehr Hausaufgaben usw., dann waren dies in der Regel gescheiterte Organisationen, in denen ich nicht sehr lange gearbeitet habe. Auch dies ist eine persönliche Beobachtung, aber in der Regel zeigen zu viel Bürokratie und ein langwieriger Einstellungsprozess, dass genau dieselben Prozesse im Unternehmen stattfinden. Entscheidungen werden langsam und ineffektiv getroffen. Es gab auch die entgegengesetzten Situationen, in denen es höllisch viele Interviews gab und sich die Firma als großartig herausstellte und als sich die Firma nach einem Schlag auf die Hände als Sumpf herausstellte, aber diese sind selten.



Wenn Sie denken, dass das Szenario: erfüllt, über sich selbst erzählt und eingestellt, nur in kleinen Unternehmen existiert, dann nein. Ich habe dies in sehr großen Unternehmen gesehen, die mehr als Hunderte von Menschen beschäftigen und auf den Weltmärkten vertreten sind. Dies ist ein normaler Mechanismus, insbesondere wenn Sie über eine umfangreiche Erfolgsbilanz verfügen und die Möglichkeit haben, Ihre früheren Arbeitgeber anzurufen und nach Ihnen zu fragen.



Für mich ein sehr guter Indikator für das Unternehmen, wenn ich gebeten werde, Beispiele für seine Projekte und ihren Code zu zeigen. Das Ausbildungsniveau des Bewerbers wird sofort angezeigt. Und was die Auswahl der Kandidaten angeht, ist dies für mich die effektivste Art der Auswahl als protzige Interviews. Tatsächlich kann man bei einem Interview vor Aufregung scheitern oder umgekehrt Adrenalin verbrauchen. Aber in der realen Arbeit kann man echte Aufgaben nicht bewältigen. Und darauf bin ich auch gestoßen, als ich selbst Leute interviewt habe. Ein Spezialist kommt, zeigt sich perfekt, ich mochte es, er mochte uns. Und mit der einfachsten Aufgabe, die ich seit einem Monat hatte, löste ein anderer Programmierer sie in ein paar Tagen. Ich musste mich von diesem Programmierer trennen.



Ich schätze Programmieraufgaben besonders in Interviews. Und diejenigen, die direkt während des Meetings, in Stress und bei den Hausaufgaben gelöst werden müssen. Das erste zeigt, wie bereit Sie sind, Probleme in einer stressigen Situation und in Notsituationen schnell und genau zu lösen. Die zweite zeigt das Niveau Ihrer Kompetenz und Fähigkeit, Informationen zu suchen und aktuelle Probleme zu lösen.



Die interessantesten Jobs, die ich hatte, waren im Verteidigungskomplex unseres Landes. Während der Arbeit musste ich einfach fantastische Probleme lösen, von denen kommerzielle Programmierer nie geträumt hatten. Supercomputer, das Entwerfen von Routern, verschiedene Knotenkampfkomplexe - es ist wahnsinnig aufregend. Wenn Sie während der Parade einen Komplex sehen, in dem Ihr Code in sich selbst gespeichert ist, ist das wirklich schön. Seltsamerweise sind Interviews in solchen Unternehmen in der Regel sehr einfach, kamen buchstäblich, mochten es - akzeptiert (wahrscheinlich werden die Besonderheiten des Militärs, die nicht gerne herumspielen, überlagert). Die Aufgaben, denen ich mich dort stellen musste, sind wirklich interessant und schwierig. Mit der Erfahrung ist es gut, von ihnen zu lernen, um ein Programmierer für Qualitätssysteme zu sein. Es gibt auch Nachteile, und dies sind nicht einmal niedrige Löhne.Im Moment ist das Gehalt im Verteidigungskomplex recht anständig, mit Boni und Brötchen. In der Regel ist dies eine große Bürokratie, unregelmäßige Arbeitszeiten, endlose Eiljobs, Arbeit in großem Stress. In bestimmten Fällen kann eine Geheimhaltung nicht ausgeschlossen werden, was bestimmte Probleme für Reisen ins Ausland mit sich bringt. Und natürlich die Tyrannei der Bossstiefel, und das passiert leider auch. Obwohl die Erfahrung, mit dem Vertreter des Kunden zusammenzuarbeiten, außerordentlich angenehm ist. Dies ist ein kollektiver Eindruck von drei verschiedenen Forschungsinstituten und Unternehmen, die mit der staatlichen Verteidigungsordnung verbunden sind.Natürlich Tyrannei der Häuptlingsstiefel, und das passiert leider auch. Obwohl die Erfahrung, mit dem Vertreter des Kunden zusammenzuarbeiten, außerordentlich angenehm ist. Dies ist ein kollektiver Eindruck von drei verschiedenen Forschungsinstituten und Unternehmen, die mit der staatlichen Verteidigungsordnung verbunden sind.Natürlich Tyrannei der Häuptlingsstiefel, und das passiert leider auch. Obwohl die Erfahrung, mit dem Vertreter des Kunden zusammenzuarbeiten, außerordentlich angenehm ist. Dies ist ein kollektiver Eindruck von drei verschiedenen Forschungsinstituten und Unternehmen, die mit der staatlichen Verteidigungsordnung verbunden sind.





Um Missverständnisse zu vermeiden und die Unternehmen, in denen ich interviewt habe, nicht aufzudecken, werde ich das Schicksal nicht in Versuchung führen und ihre Daten angeben. Aber ich bin dankbar für jedes Interview, für die Zeit, die mir die Leute gegeben haben, für die Gelegenheit, mich von außen zu betrachten. Ich kann nur sagen, dass die Aufgaben für große internationale Unternehmen waren, die in verschiedenen Ländern vertreten sind.



Ich sage Ihnen das Interessanteste: Welche Aufgaben werden in Interviews gegeben? Im Allgemeinen sind die häufigsten Fragen für die Vakanz eines Systemprogrammierers und eines Mikrocontroller-Programmierers Bitoperationen in allen Arten von Variationen. Bereiten Sie sich daher am besten in diese Richtung vor.



Das zweite Thema in Bezug auf die Polarität sind Zeiger, dieser sollte von den Zähnen abprallen. Damit Sie mitten in der Nacht aufgewacht sind und alles erzählen und zeigen können.



Aus mehreren Interviews habe ich die Fragen in meinen Kopf gezogen, und ich werde sie hier geben, da ich sie ziemlich interessant finde. Ich gebe absichtlich keine Antworten auf diese Fragen, damit die Leser diese Fragen in den Kommentaren unabhängig beantworten können, und es gab ein wenig Schießpulver, als sie ein echtes Interview bestanden haben.



Fragen # 1

I. Kenntnis von SI. Was bedeuten die folgenden Einträge:



const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;


Sind alle Einträge korrekt?



II. Warum löst dieses Programm einen Segmentierungsfehler aus?



int main ()
{
       fprintf(0,"hello\n");
       fork();
       return(0);
}


III. .



. , . 1 /. , . , .



Das nächste Interview war ein Fehlschlag für mich und ich finde es am lohnendsten in meiner Programmierpraxis. Es zeigte die Tiefe meiner Inkompetenz. Vor diesem Interview war ich mit jeder dieser Fragen vertraut und sie trafen sich ständig in meiner Praxis, aber irgendwie legte ich nicht viel Wert auf sie und verstand sie dementsprechend nicht für die Top 5. Daher habe ich diese Prüfung in Ungnade gefallen. Und ich bin sehr dankbar, dass ein solcher Fehler passiert ist, er hatte die ernüchterndste Wirkung auf mich. Sie denken, dass Sie ein cooler Spezialist sind, Sie kennen Schaltkreise, Schnittstellen, arbeiten mit dem Kernel. Und dann hast du echte Fragen und bist schwebend. Also mal sehen.



Interviewfragen # 2



Hardwareprobleme.



  • Wie Linux-Systemaufrufe in Assemblersprache auf einem ARM-Prozessor unter x86 angeordnet sind. Was ist der Unterschied?
  • ? , ?
  • i2c spi?
  • i2c ?
  • RS-232 : RX TX? : , , 9600, !!!
  • : ?
  • ? , ? ( ).
  • ?
  • RS-485. . , , . ?
  • ?
  • Wie arbeite ich mit cmake?
  • Fragen zum Erstellen von Yocto Linux.


Ziele für dieses Interview:



1. Schreiben Sie eine Funktion, die uint32_talle Bits invertiert . (Ich empfehle, bei Interviews gerne mit Beats zu arbeiten.)

2.



int32_t a = -200;
uint32_t b = 200;
return *(uint32_t) * (&a)) > b;


Was wird diese Funktion zurückgeben? (Lösung auf Papier, ohne Computer)



3. Die Funktion zur Berechnung des arithmetischen Mittels zweier Zahlen int32_t.



4. Was sind die Ausgabemethoden in Programmen, inkl. in den Strom der Fehler.


Die dritte Auswahl war relativ neu, und ich wäre nicht überrascht, wenn es dort noch einen solchen Fragebogen gibt, daher werde ich das Unternehmen nicht offenlegen, um sie nicht aufzudecken ... Aber im Allgemeinen werde ich ein Beispiel für mögliche Fragen geben, und wenn Sie Ihre Fragen herausgefunden haben, dann sage ich Hallo :).



Interviewfragen # 3

  1. , .
  2. ls. “-l”.
  3. . ?
  4. RS-232? RS-485 RS-232? RS-232 RS-485 ?
  5. USB ( )?
  6. .




Dieses Kapitel richtet sich nicht einmal an Programmierer (obwohl auch für sie), sondern eher an die Personalabteilung. Die am besten geeigneten Unternehmen beobachten die Interviewergebnisse nicht genau. Es ist normal, Fehler zu machen. Meistens schauen sie sich genau an, wie eine Person Probleme und Gründe lösen kann.



Eines der Hauptprobleme ist, dass ein Kandidat Probleme in Interviews erfolgreich löst, sich als exzellenter Spezialist zeigt, sich aber bei der allerersten echten Aufgabe zusammenschließt. Ich werde mich nicht zerstreuen, ich hatte das auch. Er ging erfolgreich durch alle Kreise der Hölle, löste alle Testaufgaben, aber unter realen Bedingungen erwies sich die Arbeit aufgrund banaler Unerfahrenheit als zu schwierig. Einsteigen ist noch nicht die schwierigste Aufgabe. Am schwierigsten ist es, an Bord dieser Firma zu bleiben.



Deshalb vertraue ich mehr Unternehmen, die einfache Interviews mit einem Kandidaten führen und sagen: Nach dem ersten Arbeitsmonat wird klar, ob Sie für uns geeignet sind oder nicht. Dies ist der angemessenste Ansatz, ja, vielleicht ein wenig teuer, aber es ist sofort klar, wer wer ist.



Es gibt noch eine andere Option für Interviews: Wenn Sie es erfolgreich bestehen, aber nach den Ergebnissen des Interviews verstehen Sie, dass der Arbeitgeber völlig unzureichend ist. Ich weigere mich sofort zu arbeiten, wenn mir angeboten wird, als Einzelunternehmer zu arbeiten, was große Einkommen verspricht. Dies ist eine Form der Steuerhinterziehung für die derzeitige Organisation, und warum sollten mich die Probleme des Arbeitgebers als Programmierer beunruhigen? Eine weitere Option sind verschiedene Regierungsbehörden. Ich hatte ein Interview, aufgrund dessen mir ein gutes Gehalt angeboten wurde, aber sie sagten, dass der vorherige Programmierer gekündigt hat, krank geworden ist, gestorben ist, wegen der Arbeitsbelastung in einen Anfall geraten ist und Ihr Arbeitstag um 8 Uhr morgens beginnt. Ich rannte auch von einem solchen Ort weg, so dass meine Absätze funkelten. Ja, die Personalabteilung achtet darauf, dass Programmierer bereit sind, auch die leckersten Stellen aufzugeben, wenn der Arbeitstag früh am Morgen beginnen muss.



Am Ende werde ich ein ausgezeichnetes Video der Auswahl eines Programmierers geben, von dem ein Screenshot am Anfang dieses Artikels gegeben wird. Ich hatte auch mehr als einmal ein solches Interview. Wenn Sie im Stadium der Fragen Tyrannei sehen, dann respektieren Sie sich selbst, stehen Sie auf, nehmen Sie Dinge und gehen Sie - das ist normal. Wenn sich die Personalabteilung und der Manager beim Vorstellungsgespräch auf Ihre Kosten behaupten, deutet dies auf die Toxizität des Unternehmens hin und Sie sollten dort nicht arbeiten, es sei denn, Sie mögen unzureichende Vorgesetzte.





Schlussfolgerungen



Programmierer, machen Sie Interviews! Und versuche immer hoch zu gehen. Wenn Sie beispielsweise N Geld erhalten, gehen Sie zu einem Interview für mindestens N * 1,2 und vorzugsweise N * 1,5. Auch wenn Sie diese Stelle nicht sofort annehmen, werden Sie verstehen, was für dieses Lohnniveau erforderlich ist.

Meine Beobachtungen haben gezeigt, dass gute Kenntnisse der englischen Sprache, eine ziemlich reiche Erfahrung in der Branche und Selbstvertrauen entscheidend sind. Letzteres ist die Hauptqualität, wie auch anderswo im Leben. In der Regel kann ein selbstbewussterer Kandidat ein Interview auch mit mehr Fehlern erfolgreicher bestehen als ein ausgezeichneter, aber schüchterner und proaktiverer Kandidat. Viel Glück bei Ihren Interviews!



P / S-Wettbewerb



Wenn Sie interessante Beispiele für Aufgaben haben, mit denen Sie von der Personalabteilung geladen wurden, begrüßen Sie die Kommentare. Wir haben einen kleinen Wettbewerb vorbereitet - die Bedingungen sind einfach: Sie schreiben die ungewöhnlichste Aufgabe, die Sie in einem Interview hatten, die Leser bewerten sie (plus), und in einer Woche fassen wir die Ergebnisse zusammen und belohnen den Gewinner mit lustigen Leckereien.










All Articles