Ich habe in der Schule angefangen, mich zu vernetzen und arbeite seit über 16 Jahren für Geld. Ich habe viele Jobs bekommen, in großen und kleinen Unternehmen, dann habe ich mein eigenes Geschäft eröffnet und regelmäßig selbst Leute eingestellt. Im Laufe der Jahre und Erfahrungen entwickeln ich und viele andere eine Interview-Intuition.
Dies ist der Fall, wenn es keinen klaren Algorithmus gibt. Sie sprechen einfach mit einer Person und verstehen etwas für sich. Sie fragen, was der Kandidat im vorherigen Job getan hat, Sie klammern sich an das Thema - und jetzt diskutieren Sie nur noch über technische Themen, ungefähr auf dem gleichen Niveau wie mit Kollegen. Wenn das Gespräch gut läuft und die Person es mag, ist alles in Ordnung.
Eine solche Intuition kann man kaum aus Büchern und Texten lernen, sie kommt von selbst mit der Erfahrung. Zusammen mit ihr versickern Sätze wie "Ich interessiere mich weniger für spezifisches Wissen als für eine allgemeine Sichtweise, die Fähigkeit, Informationen zu suchen, zu verstehen, ob wir zusammenarbeiten werden" und so weiter in das Denken.
Aber manchmal müssen Sie sich immer noch daran erinnern, über welche Kenntnisse ein Ingenieur verfügen sollte und welche Fragen Sie am objektivsten bewerten können, um die Person zu sehen, die Sie zum ersten Mal in Ihrem Leben sehen.
Zuerst gehe ich schnell alle Lebensläufe durch
Während ich die Antworten durcharbeite, achte ich auf Schlüsselwörter und Arbeitsorte. Ich habe immer das Anschreiben gelesen - viele Bewerber sind zu diesem Zeitpunkt ausgeschieden. Ich poste eine Stellenanzeige über die Suche nach einem DevOps-Ingenieur und erhalte eine Antwort von einem Python-Entwickler, einem Golang-Entwickler oder einem aktuellen Kurier, der "sehr interessiert ist und es versuchen möchte".
Es vergehen Lebensläufe, die auf die Erfahrung der Arbeit in Regierungsbehörden hinweisen, etwas im Sinne von "Administrator der ersten Kategorie in der Zentralbank der Russischen Föderation". All diese ausführlichen Geschichten über die "Verwaltung von Informationssystemen" habe ich ohne zu zögern sofort abgebrochen. Je böswilliger und bürokratischer die Beschreibung des vergangenen Jobs ist, desto höher ist die Wahrscheinlichkeit, dass ein solcher Bewerber in seinem Leben nichts gesehen hat, außer Windows und Backups, die eine grafische Oberfläche verwenden.
Bei einer schnellen Auswahl von Lebensläufen hilft die Regel: Je mehr Technologien ich treffe, desto besser. Wenn im Lebenslauf einer Person MySQL, Linux, Postgres, Apache usw. steht, stehen die Chancen gut. Die Person hat zumindest von Technologie gehört und, wer weiß, vielleicht sogar selbst mit ihnen gearbeitet. Aber seien wir ehrlich - Sie können alles in Ihren Lebenslauf schreiben.
Beim Interview überprüfe ich zuerst die Datenbank
Wenn ich ein gebrechlicher alter Mann werde und dumm zurückgeschlagen werde, fange ich an, mit einem Stock auf den Rücken aller zu hämmern, die das Netz nicht kennen! Dies ist ein Muss für jeden Ingenieur. Wir leben in einer Welt, in der alles in Netzwerken geschieht. Selbst in einem geschlossenen öffentlichen Sektor gibt es eine lokale Kontur. Und da sitzt ein Entwickler, der eine Art Proxy-Service schreibt oder einen Service erstellt, der mit einer API arbeitet und nichts über die API versteht.
Ich benötige keine besonderen Kenntnisse, ich bitte nicht, MPLS für mich zu konfigurieren. Aber was ist eine Subnetzmaske, was ist eine IP-Adresse - im 21. Jahrhundert sollten alle IT-Spezialisten wissen. Ich habe keine Ahnung, was im Kopf eines Menschen vorgeht, wenn er nicht versteht, was 127.0.0.1 ist. Er sitzt auf einem lokalen Computer und hat einen Dienst, der auf einer virtuellen Maschine ausgeführt wird. Der Dienst hat einen Endpunkt 127.0.0.1, eine Verbindung zur Datenbank. Aus Unwissenheit fickt unser Held dasselbe. Als Ergebnis: "Ich kann keine Verbindung zur Basis herstellen." Natürlich, verdammt, es verbindet sich nicht!
Wenn eine Person ein CCNA-Zertifikat hat, okay, auch wenn sie es nicht bestanden hat, es nicht physisch erhalten, sondern vorbereitet hat - diese Tatsache reicht mir.
Hier ist zum Beispiel ein Standard-CCNA-Puzzle, um zu verstehen, wie Netzwerke funktionieren
Es gibt zwei Switches aus verschiedenen Netzwerken, zwischen denen sich ein Router befindet. Computer A möchte Daten an Computer B senden.
Was passiert gerade?: «, , , . , , MAC- , . , , . , ».
Dann frage ich über alle Ebenen des OSI-Modells hinweg
Hat jemand vom Spanning Tree-Protokoll gehört? Über das Root-Protokoll, über die IP-Schicht? Ok, wie funktioniert das alles? Versteht er, wie Routing passiert? Nun, in großen Mengen: Routing-Tabellen, dynamisches Routing-Protokoll, TCP-Transportschicht. Und so weiter und so fort.
Ich möchte den Unterschied zwischen TCP und UDP hören. Ein guter Spezialist wird mir antworten, warum kritische Systeme (z. B. Domain Name System) das Protokoll ohne garantierte Nachrichtenübermittlung (UDP) verwenden.
Die Antwort ist einfach - so geht es schneller. Während Sie eine TCP-Sitzung arrangieren, können Sie dort dreimal ein UDP-Paket senden und es zurückerhalten. Und kein Overhead.
Ich stelle Fragen zu DNS
Was sind die Aufnahmetypen? Weiß mein Gesprächspartner, was ein MX-Datensatz ist, wie SPF funktioniert oder wie DKIM funktioniert?
Ja, dieses Wissen ist bei der Arbeit möglicherweise nicht hilfreich. Für mich ist es jedoch wichtig zu wissen, ob jemand die Essenz der Technologie versteht und ob er daran interessiert war, darüber zu lesen. Hat er dem DNS einige Einträge hinzugefügt und googelt, was ein SPF-Eintrag ist, oder nicht?
Das HTTP-Protokoll wird jetzt absolut überall verwendet, und ich frage danach
Ich beginne mit den Standardfragen zu den Unterschieden zwischen den http-Versionen 1.0, 1.1 und Version zwei. Ich interessiere mich dafür, was Header sind und warum sie benötigt werden. Wie versteht der Webserver, dass er eine Anfrage für einen bestimmten virtuellen Host und nicht für einen anderen erhalten hat? Und ich stelle immer ein paar Fragen zu Nginx.
Dann lenke ich meine Aufmerksamkeit reibungslos auf das TLS-Protokoll
Wie funktioniert SSL \ TLS? Ein Ingenieur muss dies zumindest auf einer grundlegenden Ebene verstehen - es gibt eine Stammzertifizierungsstelle, er hat das Zertifikat signiert und das Zertifikat wird irgendwo verwendet.
In TLS interessiert mich normalerweise der Prozess des Verbindungsaufbaus. Warum brauchen wir private und öffentliche Schlüssel und wie interagieren sie? Wenn eine Person herumfummelt, stelle ich eine Trickfrage: Ist es möglich, mehrere verschiedene Zertifikate auf einem IP-Shnik zu haben?
Antworte unter dem Spoiler, TLS-, HTTP-, - , HTTP-, . Nginx , , . TLS-, , TLS-. . , IP- SSL.
Weiter zu Linux und BASH
Sie müssen alles über Unix wissen, alle Unix-ähnlichen Systeme. Sie müssen in der Lage sein, mit Shell und Bash zu arbeiten und die grundlegenden Befehle zu kennen. ls, mkdir usw.
Wenn der Kandidat ein wenig in BASH schreiben kann, bedeutet dies, dass er versucht hat, diese Geschichte irgendwie zu automatisieren.
Unter Linux werde ich Sie fragen, wie Sie Zeilen in einer Datei durch andere Zeilen ersetzen können. Oder wie man ein access.log in Nginx mit BASH analysiert. Damit eine Person über awk, über Katze, über Sorte, über alles spricht, was zur schnellen Arbeit beiträgt.
Es gibt überall Textdateien, mit denen Sie richtig arbeiten müssen. Wenn der Antragsteller anbietet, sie nach Excel zu kopieren und dort etwas zu tun, wird es mir peinlich sein.
Dann müssen Sie herausfinden, wie es mit der Virtualisierung aussieht.
Konventionelle Virtualisierung, Virtualisierung über den Hypervisor. Wenn ein Kandidat über Paravirtualisierung spricht, bedeutet dies, dass er etwas weiß.
Meine Hauptfrage lautet: Was ist der Unterschied zwischen Containervirtualisierung und normaler Hypervisorvirtualisierung? Es ist gut, wenn eine Person vergleicht, was besser ist, was schlechter ist, wo es angebracht ist, es zu verwenden.
Weiter zu Containern
Finden Sie heraus, ob die Person, mit der Sie sprechen, mit Docker zusammengearbeitet hat? Hat er Bilder kompiliert, Docker-Dateien geschrieben, Docker Compose verwendet und damit bereitgestellt? Warum werden diese Container überhaupt benötigt und wie funktionieren sie? Hat unser Antragsteller das Container-Orchestrierungssystem Swarm oder Kubernetes aufgerufen? Sie können eine ganze Reihe von Fragen stellen, aber die Hauptsache ist zu verstehen, ob die Person die Arbeit mit ihren eigenen Händen mit Behältern erledigt hat oder nicht?
Fragen zur CI / CD-Bereitstellung
Ich interessiere mich für eine riesige Liste von Dingen: Wie richtet er die automatische Bereitstellung ein, wie richtet er die kontinuierliche Integration ein? Bei der Zusammenstellung seiner Anwendungen verwendet er Code-Analysesysteme (PVS-Studio, SonarQube). Wie er Tests schreibt oder wie er von Entwicklern geschriebene Tests integriert.
Führt es eine Art Integrationstest für diese Baugruppen durch? Was passiert als nächstes mit dem, was er gesammelt hat? Fügt es sich irgendwie zu Artefakten zusammen oder ist es in Docker-Containern verpackt, die in die Registrierung verschoben werden? Lassen Sie sich von ihm sagen, auf welchen Systemen er den CI / CD-Prozess eingerichtet hat. Dies können GitLab CI, Circle CI und einige Cloud-Lösungen sein. Vielleicht Jenkins, nun, Sie sollten selbstgeschriebene Skripte in PowerShell nicht vergessen.
Sagen Sie mir, wie eine Person eingesetzt wird, und ich werde alles verstehen. Es kann mit Helm in Kubernetes, Ansible, Skripten oder etwas anderem selbst geschriebenem bereitgestellt werden.
Informationen zum Konfigurationsmanagementsystem
Wir sprechen am häufigsten Ansible. Weil die meisten Leute ihn kennen. Warum brauchen wir Rollen, wie verschlüsselt und speichert man geheime Daten, wie lädt man Passwörter in ein Git-Repository hoch? Und solche Sachen.
Erfahren Sie mehr über die Fähigkeit, Code zu schreiben
Das Verständnis der Entwicklung ist wichtig, um zu verstehen, wie Dienste interagieren, warum APIs, Authentifizierungsprotokolle und Autorisierungen erforderlich sind. Es ist schön, wenn der Kandidat selbst etwas geschrieben hat. Schon grundlegende Skripte in Python oder Shell reichen mir. Was zählt, ist nicht der Code, sondern welche Aufgaben die Person lösen wollte, was sie erreichen wollte.
Codierung ist erforderlich, um die Infrastruktur zu unterstützen, lokale Skripte für Sicherungen zu schreiben, benutzerdefinierte Überwachung durchzuführen und Metriken ruhig abzurufen. Bei der Arbeit kommt es häufig vor, dass es für eine Aufgabe einfach keine Standardlösung gibt.
Die letzten Interviewfragen beziehen sich auf die Datenbankspeicherung
SQL, NoSQL - was sind die Unterschiede, womit haben Sie gearbeitet? Häufiger treffe ich Leute mit PostgreSQL-Erfahrung, seltener - MySQL. Ich stelle Fragen zu Indizes, ob ein Antragsteller ein Replikat einrichten kann, ob er eine logische Replikation zwischen Tabellen oder nur Daten einrichten kann. Und was wird er in diesem Fall überwachen? Wie kann man die Basis beschleunigen?
Das ist übrigens eine gute Frage. Angenommen, die Basis sitzt jetzt und ruht auf der Festplatte. Und damit kann nichts gemacht werden - niemand sonst wird den Server kaufen. Wie lässt du es jetzt schneller arbeiten?
Gerade...: fsync, , . Linux , , . , , . , . . . , .
Um zusammenzufassen -
- Netzwerke
- API-Ebene
- Transportschicht TCP \ UDP
- DNS- und HTTP-Protokolle
- Linux
- Container- und Hypervisor-Virtualisierung
- CI / CD
- Konfigurationsmanagementsystem
- Behälter
- Datenbank
All dies ermöglicht es Ihnen, ein vollständiges Bild einer Person zu machen.
Das Wichtigste auf meiner Liste ist das Grundwissen. Wenn Sie die Basis nicht kennen, ist es Zeit, Ihre soziale Sicherheit zu beenden.
Wenn eine Person mir nicht antworten kann, was eine Subnetzmaske ist, oder nicht versteht, warum Header in HTTP benötigt werden, erhält ein solcher Bewerber in den meisten Fällen das größte Minus in meinem Notizbuch. Warst du nicht neugierig zu wissen, wie all diese Dinge mit der Maus funktionieren?
Es ist sehr schwer, mit Menschen zu arbeiten, die das Gelernte nur mechanisch wiederholen, anstatt herauszufinden, wie alles funktioniert. Ein Anfänger, der Docker nicht kennt, kann es leicht herausfinden, wenn er versteht, was HTTP, TLS und Netzwerke sind.
Aber schließlich der wichtigste Punkt - diese gesamte Liste wird nicht benötigt, um sie in einem echten Interview zu verfolgen. Sie müssen diese Liste selbst durchgehen, bevor Sie Mitarbeiter einstellen.
Und wenn alles klappt, rufen Sie den Kandidaten für ein Interview an und stellen Sie ihm nur eine Frage: Was war der größte Fehler, den Sie bei der Arbeit gemacht haben, wie haben Sie ihn behoben und welche Schlussfolgerungen haben Sie aus Ihren Fehlern gezogen?
Wenn eine Person etwas zu erzählen hat, wird eine solche Sozialversicherungssitzung wie ein freundliches Gespräch zwischen zwei Ingenieuren mit Bier verlaufen.
Aus Tradition lade ich Sie ein, sich unserer Community im Warenkorb anzuschließen. Dort diskutieren wir regelmäßig all diese und viele andere Themen, die sowohl beim Interview als auch bei der Arbeit nützlich sein werden.