Seit ein paar Wochen stelle ich für mein Möbelvermietungsunternehmen, Pabio, einen erfahrenen Full-Stack JavaScript-Entwickler ein. Da wir ein Remote-Team sind, führen wir unsere Vorstellungsgespräche über Zoom durch, und ich habe beobachtet, dass einige Entwickler bei Live-Coding- oder Whiteboard-Interviews nicht besonders gut sind, auch wenn sie gut in ihrem Job sind. Stattdessen führen wir eine einstündige technische Diskussion, bei der ich ihnen Fragen zu Web Vitals, Barrierefreiheit, dem Browserkrieg und ähnlichen Themen rund um das Web stelle. Eine der Fragen, die ich immer gerne stelle, lautet: „Erklären Sie mir die ersten zehn Zeilen des Twitter-Quellcodes.“
Ich denke, es ist ein einfacher Test, der mir viel über die Tiefe der grundlegenden Front-End-Kenntnisse verrät, die sie haben, und dieser Artikel listet die besten Antworten auf.
Zur Veranschaulichung teile ich meinen Bildschirm, öffne Twitter.com und klicke auf Quelltext anzeigen. Dann bitte ich sie, Zeile für Zeile zu gehen, um mir das HTML zu erklären, und sie können so viel oder so wenig sagen, wie sie möchten. Ich vergrößere auch, um den Text leserlicher zu machen, sodass Sie nicht die gesamte Zeile sehen, aber eine Vorstellung bekommen. So sieht es aus

Beachten Sie, dass unsere technische Diskussion ein Gespräch ist. Ich erwarte von niemandem eine perfekte Antwort. Wenn ich einige richtige Schlüsselwörter höre, weiß ich, dass der Kandidat das Konzept kennt, und ich versuche, ihn in die richtige Richtung zu lenken.
Zeile 1: <!DOCTYPE html>
Die erste Zeile des Quellcodes jedes Dokuments ist perfekt für dieses Vorstellungsgespräch, da sie stark davon abhängt, wie viel ein Kandidat über die DOCTYPE-Deklaration weiß, wie viele Jahre Erfahrung er hat. Ich erinnere mich noch gut an meine Dreamweaver-Zeiten mit der langen XHTML DOCTYPE-Zeile, wie Chris in seinem Artikel „The Common DOCTYPES“ aus dem Jahr 2009 aufgeführt hat.
Perfekte Antwort: Dies ist die Deklaration des Dokumententyps (doc-type), die wir immer als erste Zeile in HTML-Dateien einfügen. Man könnte denken, dass diese Information redundant ist, da der Browser bereits weiß, dass der MIME-Typ der Antwort text/html ist; aber in der Netscape/Internet Explorer-Ära hatten Browser die schwierige Aufgabe, herauszufinden, welchen HTML-Standard sie verwenden sollten, um die Seite aus mehreren konkurrierenden Versionen darzustellen.
Dies war besonders ärgerlich, da jeder Standard ein anderes Layout erzeugte, sodass dieser Tag eingeführt wurde, um es den Browsern zu erleichtern. Zuvor waren DOCTYPE-Tags lang und enthielten sogar den Spezifikationslink (ähnlich wie SVGs heute), aber glücklicherweise wurde das einfache <!doctype html> in HTML5 standardisiert und lebt bis heute fort.
Auch akzeptiert: Dies ist der DOCTYPE-Tag, der dem Browser mitteilt, dass es sich um eine HTML5-Seite handelt und diese entsprechend gerendert werden soll.
Zeile 2: <html dir="ltr" lang="en">
Diese Zeile im Quellcode verrät mir, ob der Kandidat etwas über Barrierefreiheit und Lokalisierung weiß. Überraschenderweise wussten in meinen Vorstellungsgesprächen nur wenige Leute etwas über das dir-Attribut, aber es ist ein guter Einstieg in eine Diskussion über Screenreader. Fast jeder konnte das lang="en"-Attribut erklären, auch wenn er es vorher noch nicht benutzt hatte.
Perfekte Antwort: Dies ist das Wurzelelement eines HTML-Dokuments, und alle anderen Elemente sind darin enthalten. Hier hat es zwei Attribute: Richtung und Sprache. Das Richtungsattribut hat den Wert links nach rechts, um Benutzeragenten mitzuteilen, in welcher Richtung der Inhalt ist; andere Werte sind rechts nach links für Sprachen wie Arabisch oder einfach auto, was es dem Browser überlässt, dies herauszufinden.
Das Sprachattribut sagt uns, dass der gesamte Inhalt innerhalb dieses Tags auf Englisch ist; Sie können diesen Wert auf jeden Sprach-Tag setzen, sogar um en-us und en-gb zu unterscheiden, zum Beispiel. Dies ist auch nützlich für Screenreader, um zu wissen, in welcher Sprache sie vorlesen sollen.
Zeile 3: <meta charset="utf-8">
Perfekte Antwort: Das Meta-Tag im Quellcode dient zur Bereitstellung von Metadaten über dieses Dokument. Das Zeichencodierungsattribut (char-set) teilt dem Browser mit, welche Zeichencodierung verwendet werden soll, und Twitter verwendet die Standard-UTF-8-Codierung. UTF-8 ist großartig, da es viele Zeichenpunkte hat, sodass Sie alle möglichen Symbole und Emojis in Ihrem Quellcode verwenden können. Es ist wichtig, dieses Tag früh im Code zu platzieren, damit der Browser nicht bereits zu viel Text geparst hat, wenn er auf diese Zeile stößt; ich glaube, die Regel ist, es in das erste Kilobyte des Dokuments zu stellen, aber ich würde sagen, die beste Praxis ist, es ganz oben im <head> zu platzieren.
Nebenbei bemerkt: Twitter lässt das <head>-Tag aus Performance-Gründen (weniger Code zu laden) weg, aber ich mag es trotzdem explizit zu machen, da es ein klarer Ort für alle Metadaten, Stile usw. ist.
Zeile 4: <meta name="viewport" content="width=device-...
Perfekte Antwort: Dieses Meta-Tag im Quellcode dient dazu, die Webseite auf kleinen Bildschirmen, wie z. B. Smartphones, richtig zu dimensionieren. Wenn Sie sich an die ursprüngliche Keynote des iPhones erinnern, zeigte Steve Jobs die gesamte New York Times-Website auf diesem winzigen 4,5-Zoll-Bildschirm; damals war es eine erstaunliche Funktion, dass man zoomen musste, um tatsächlich lesen zu können.
Da Websites jetzt von Natur aus responsiv sind, weist width=device-width den Browser an, 100 % der Gerätebreite als Viewport zu verwenden, sodass keine horizontale Scrollung entsteht. Sie können jedoch auch spezifische Pixelwerte für die Breite angeben. Die standardmäßige Best Practice ist, die anfängliche Skalierung auf 1 und die Breite auf device-width zu setzen, damit die Leute trotzdem zoomen können, wenn sie möchten.
Der Screenshot des Quellcodes zeigt diese Werte nicht, aber es ist gut zu wissen: Twitter wendet auch user-scalable=0 an, was, wie der Name schon sagt, die Zoom-Möglichkeit deaktiviert. Das ist nicht gut für die Barrierefreiheit, aber es lässt die Webseite mehr wie eine native App wirken. Es setzt auch maximum-scale=1 aus demselben Grund (Sie können minimale und maximale Skalierung verwenden, um die Zoom-Fähigkeit zwischen diesen Werten einzuschränken). Im Allgemeinen reichen die volle Breite und die anfängliche Skalierung aus.
Zeile 5: <meta property="og:site_name" content="Twitt...
Etwa 50 % aller Kandidaten kannten Open-Graph-Tags, und eine gute Antwort auf diese Frage zeigt, dass sie etwas über SEO wissen.
Perfekte Antwort: Dieses Tag ist ein Open-Graph (OG) Meta-Tag für den Seitennamen, Twitter. Das Open Graph-Protokoll wurde von Facebook entwickelt, um das Entfalten von Links zu erleichtern und deren Vorschauen in einem schönen Kartenlayout anzuzeigen; Entwickler können alle Arten von Autoreninformationen und Titelbildern für die schicke Freigabe hinzufügen. Tatsächlich ist es heutzutage sogar üblich, das Open-Graph-Bild mit etwas wie Puppeteer automatisch zu generieren. (CSS-Tricks verwendet ein WordPress-Plugin, das dies tut.)
Eine weitere interessante Nebenbemerkung ist, dass Meta-Tags normalerweise das name-Attribut haben, aber OG verwendet das nicht standardmäßige property-Attribut. Ich nehme an, das ist einfach Facebook, das Facebook ist? Die Titel-, URL- und Beschreibung-Open-Graph-Tags sind irgendwie redundant, da wir bereits reguläre Meta-Tags dafür haben, aber die Leute fügen sie zur Sicherheit hinzu. Die meisten Websites verwenden heutzutage eine Kombination aus Open Graph und anderen Metatags sowie den Inhalt einer Seite, um Rich-Previews zu generieren.
Zeile 6: <meta name="apple-mobile-web-app-title" cont...
Die meisten Kandidaten kannten das nicht, aber erfahrene Entwickler können darüber sprechen, wie man eine Website für Apple-Geräte optimiert, wie apple-touch-icons und Safari-Pinned-Tab-SVGs.
Perfekte Antwort: Sie können eine Website auf dem Homescreen eines iPhones anpinnen, um sie wie eine native App wirken zu lassen. Safari unterstützt keine Progressive Web Apps und Sie können unter iOS keine anderen Browser-Engines verwenden. Daher haben Sie keine anderen Optionen, wenn Sie dieses native Erlebnis wünschen, das Twitter natürlich mag. Deshalb fügen sie dies hinzu, um Safari mitzuteilen, dass der Titel dieser App Twitter ist. Die nächste Zeile ist ähnlich und steuert, wie die Statusleiste aussehen soll, wenn die App gestartet wurde.
Zeile 8: <meta name="theme-color" content="#ffffff"...
Perfekte Antwort: Dies ist das ordnungsgemäße web-standards-ähnliche Äquivalent des Apple-Statusleistenfarb-Meta-Tags. Es weist den Browser an, die umliegende Benutzeroberfläche zu thematisieren. Chrome unter Android und Brave unter Desktop machen beide einen ziemlich guten Job damit. Sie können jede CSS-Farbe im Inhalt angeben und sogar das media-Attribut verwenden, um diese Farbe nur für eine bestimmte Medienabfrage anzuzeigen, zum Beispiel zur Unterstützung eines dunklen Themas. Sie können dies und zusätzliche Eigenschaften auch in der Web-App-Manifestdatei definieren.
Zeile 9: <meta http-equiv="origin-trial" content="...
Niemand, den ich interviewt habe, kannte das. Ich nehme an, man kennt das nur, wenn man tiefgreifende Kenntnisse über alle neuen Dinge hat, die auf dem Standardisierungsweg geschehen.
Perfekte Antwort: Origin Trials ermöglichen es uns, neue und experimentelle Funktionen auf unserer Website zu nutzen, und das Feedback wird vom User Agent verfolgt und der Web-Standards-Community gemeldet, ohne dass sich Benutzer für ein Feature-Flag entscheiden müssen. Zum Beispiel hat Edge eine Origin Trial für Dual-Screen- und faltbare Geräte-Primitive, was ziemlich cool ist, da Sie interessante Layouts erstellen können, je nachdem, ob ein faltbares Telefon geöffnet oder geschlossen ist.
Auch akzeptiert: Das weiß ich nicht.
Zeile 10: html{-ms-text-size-adjust:100%;-webkit-text...
Fast niemand kannte das auch; nur wenn man sich mit CSS-Randfällen und Optimierungen auskennt, kann man diese Zeile entschlüsseln.
Perfekte Antwort: Stellen Sie sich vor, Sie haben keine mobile responsive Website und öffnen sie auf einem kleinen Bildschirm, sodass der Browser den Text vergrößern könnte, um ihn besser lesbar zu machen. Die CSS-Eigenschaft text-size-adjust kann diese Funktion entweder mit dem Wert none deaktivieren oder einen Prozentsatz angeben, bis zu dem der Browser den Text vergrößern darf.
In diesem Fall gibt Twitter an, dass das Maximum 100 % beträgt, sodass der Text nicht größer als die tatsächliche Größe sein sollte; sie tun dies nur, weil ihre Website bereits responsiv ist und sie nicht riskieren möchten, dass ein Browser das Layout mit einer größeren Schriftgröße beschädigt. Dies wird auf das Stammelement HTML angewendet, sodass es für alles darin gilt. Da dies eine experimentelle CSS-Eigenschaft ist, sind Vendor-Präfixe erforderlich. Außerdem fehlt ein <style> vor diesem CSS, aber ich vermute, dass es in der vorherigen Zeile minimiert ist und wir es nicht sehen.
Auch akzeptiert: Ich kenne diese Eigenschaft nicht im Detail, aber -ms und -webkit- sind Vendor-Präfixe, die von Internet Explorer und WebKit-basierten Browsern bzw. für nicht standardmäßige Eigenschaften benötigt werden. Wir benötigten diese Präfixe früher, als CSS3 herauskam, aber wenn Eigenschaften von experimentell zu stabil werden oder in den Standardisierungsprozess übernommen werden, verschwinden diese Präfixe zugunsten einer standardisierten Eigenschaft.
Bonus — Zeile 11: body{margin:0;}
Diese Zeile aus Twitters Quellcode ist besonders unterhaltsam, da man anschließend eine Frage nach dem Unterschied zwischen dem Zurücksetzen und Normalisieren einer Webseite stellen kann. Fast jeder kannte eine Version der richtigen Antwort.
Perfekte Antwort: Da verschiedene Browser unterschiedliche Standardstile (User Agent Stylesheet) haben, möchten Sie diese überschreiben, indem Sie Eigenschaften zurücksetzen, damit Ihre Website auf verschiedenen Geräten gleich aussieht. In diesem Fall teilt Twitter dem Browser mit, den Standardrand des Body-Tags zu entfernen. Dies dient nur dazu, Browserinkonsistenzen zu reduzieren, aber ich bevorzuge es, die Stile zu normalisieren, anstatt sie ganz zurückzusetzen, d. h. die gleichen Standardeinstellungen über Browser hinweg anzuwenden, anstatt sie ganz zu entfernen. Leute haben sogar früher * { margin: 0 } verwendet, was völlig übertrieben und schlecht für die Performance ist, aber jetzt ist es üblich, etwas wie normalize.css oder reset.css zu importieren (oder sogar etwas neueres) und von dort aus zu beginnen.
Mehr Zeilen!
Ich genieße es immer, mit dem Browser-Inspector-Tool herumzuspielen, um zu sehen, wie Websites erstellt werden, und so kam mir diese Idee. Auch wenn ich mich selbst als Experten für semantisches HTML betrachte, lerne ich jedes Mal etwas Neues, wenn ich diese Übung mache.
Da Twitter hauptsächlich eine clientseitige React-App ist, gibt es im Quellcode nur ein paar Dutzend Zeilen. Selbst damit gibt es so viel zu lernen! Es gibt noch ein paar interessantere Zeilen im Twitter-Quellcode, die ich Ihnen, dem Leser, als Übung überlasse. Wie viele davon könnten Sie in einem Vorstellungsgespräch erklären?
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Twitter">
…weist Browser an, dass Benutzer Twitter als Suchmaschine hinzufügen können.
<link rel="preload" as="script" crossorigin="anonymous" href="https://abs.twimg.com/responsive-web/client-web/polyfills.cad508b5.js" nonce="MGUyZTIyN2ItMDM1ZC00MzE5LWE2YmMtYTU5NTg2MDU0OTM1" />
…hat viele interessante Attribute, die diskutiert werden können, insbesondere nonce.
<link rel="alternate" hreflang="x-default" href="https://twitter.com/" />
…für internationale Landingpages.
:focus:not([data-focusvisible-polyfill]){outline: none;}
…zum Entfernen der Fokus-Umrandung, wenn keine Tastaturnavigation verwendet wird (der CSS-Selektor :focus-visible wird hier polyfilled).
Tut mir leid, aber ich werde niemals jemanden einstellen, der WEISS, wie man die ersten 10 Zeilen erklärt.
Ich bevorzuge Menschen. Ich bevorzuge Arbeiter, die sich auf das Wesentliche konzentrieren und wissen, wie sie sich selbst neue Dinge beibringen.
Ich respektiere Ihre Meinung voll und ganz! Meiner Meinung nach bedeutet „sich auf das Wesentliche konzentrieren“ auf jeden Fall zu verstehen, was man tut, und nicht nur Dinge zu kopieren und einzufügen. Ich würde argumentieren, dass fast jeder beim Web-Entwickeln auf die Tags doctype, charset, viewport usw. gestoßen ist, daher ist es für mich ein Warnsignal, wenn man sie nicht erklären kann. Deshalb halte ich dieses schnelle Quiz für einen guten Stellvertreter für das Wissen einer Person. :)
Aber das ist alles ziemlich üblich, ich habe das nicht studiert, um es zu wissen, ich weiß das, weil ich es benutzt habe (außer Origin Trials, aber selbst die kenne ich). Das sind Dinge, auf die ein erfahrener Webanwendungsentwickler irgendwann gestoßen sein sollte und über die er eine vernünftige Unterhaltung führen kann.
Meine einzige Kritik wäre genau das: Anwendungsentwickler, keine Website-Entwickler. Das sind Dinge, mit denen sich Webanwendungsentwickler vertraut machen (außer vielleicht Open Graph, für das ich keine perfekte Antwort hätte geben können).
Wenn ich für eine schicke plattformübergreifende SPA-Webanwendung einstellen würde, könnte ich mir vorstellen, diesen Ansatz zu verwenden. Alles Einfachere als das und ich würde befürchten, dass diejenigen, die bei der Frage gut abschneiden, nicht diejenigen sind, die mit der Position, die ich ihnen geben könnte, glücklich sein werden.
Ja, ich habe Schwierigkeiten zu verstehen, warum das meiste davon in einem Vorstellungsgespräch relevant wäre – das meiste davon ist Boilerplate, das von modernen Entwicklungsframeworks behandelt wird.
Es ist die Art von Dingen, die ein Entwickler in Ihrem Projekt vielleicht einmal nachschlagen muss, aber alle anderen werden sich mehr mit der Implementierung von Funktionen befassen.
Ich meine, ich habe mehrere Jahre Erfahrung als Angular-Entwickler und würde dieses Vorstellungsgespräch wahrscheinlich vermasseln…
@scott, Sie haben Recht, wenn Sie dieses Vorstellungsgespräch nach mehreren Jahren als Angular-Entwickler vermasseln, würde ich Sie wahrscheinlich nicht einstellen (hier ist warum!).
Wenn Sie sagen, dass die meisten Frameworks Boilerplate verarbeiten, verstehe ich, woher Sie kommen; es ist einfach und macht uns schnell und effizient. Aber für mich ist es sehr wichtig zu verstehen, was die Frameworks tun. Tatsächlich ist eine der Fragen im Vorstellungsgespräch: „Wie würden Sie React von Grund auf neu implementieren?“ und das soll die Kandidaten zum Nachdenken über die Funktionsweise von Konzepten wie dem virtuellen DOM und Zustandsaktualisierungen anregen. Für mich ist das Nichtwissen ein Dealbreaker.
Ich denke, wenn wir skalieren und viel spezialisiertere Leute haben, kann es sinnvoll sein, Sie einzustellen, d. h. jemanden, der wahrscheinlich sehr, sehr gut in Angular ist, aber wahrscheinlich nicht „das Web im Allgemeinen“ (nicht wertend, bitte lassen Sie mich wissen, wenn Sie anderer Meinung sind!), aber da wir uns in einem sehr frühen Stadium befinden, stelle ich lieber einen Allrounder mit tiefem Wissen über HTML/CSS/JS als ein bestimmtes Framework ein. Dieser „Twitter-Quellcode“-Test demonstriert genau das.
Ich bin bei Ihnen, @anand.
1) Diese Dinge sind nicht wild komplex und sollten von jedem gewusst werden, der mit dem DOM arbeitet.
2) Wenn jemand eine Komponente nicht kennt, weiß er zumindest jetzt, dass die Erwartung ist, dass er versteht, wie alles zusammenpasst, zumindest auf hoher Ebene.
Jetzt muss ich lernen, was Nonce ist…
Ich bin hier verwirrt, wie das Inline-CSS einfach ohne umgebenden Tag beginnt. Haben Leute das schon erwähnt?
Das öffnende
<style>ist gerade außerhalb des Bildschirms, aber es ist am Ende der vorherigen Zeile vorhanden.Ja, das ist auch neu für mich. Außerdem wird der Head-Tag komplett weggelassen.
Ja, Chris hat Recht – es ist vergrößert, sodass es am Ende der vorherigen Zeile ist. Ich habe geschrieben
Ganz zu schweigen davon, dass kein
<head>vorhanden ist, oder ist das nicht vom Standard erforderlich, wie ich dachte?Einige Top- oder Block-Level-HTML-Elemente haben optionale End-Tags, da sie eindeutige Regeln darüber haben, wo sie hingehören und/oder was sie enthalten können: html, head, body, p, dt, dd, li, option, thead, th, tbody, tr, td, tfoot und colgroup. Und html, head und body haben auch ein optionales Start-Tag, da ihre Position und ihr Inhalt wieder eindeutig sind.
https://html.spec.whatwg.org/multipage/syntax.html#optional-tags
Es gibt keine Möglichkeit, dass Sie die „perfekten Antworten“ für alles selbst wussten, ohne zu recherchieren. Und wenn Sie es taten und über perfektes Wissen verfügen, warum machen Sie den Job nicht selbst?
Vielleicht, weil zwei (oder mehr) Leute mehr Arbeit leisten können als nur einer, und jeder irgendwann einen Tag frei bekommt?
Hallo Emmy, absolut, ich musste recherchieren, um diesen Artikel zu schreiben :)
Aber ehrlich gesagt würde ich mich selbst mit 8/10 bewerten, weil ich alle diese Fragen ziemlich gut aus dem Gedächtnis beantworten könnte, da ich seit über 10 Jahren HTML schreibe und ziemlich tief in die Materie eingetaucht bin! Natürlich habe ich kein „perfektes Wissen“ und hätte diesen Test in jedem anderen Bereich nicht bestanden!
Was die Frage betrifft, warum ich den Job nicht selbst mache, glaube ich, dass die meisten Leute aus zwei Gründen einstellen: (i) Sie brauchen jemanden, der Dinge tun kann, die Sie nicht können, oder (ii) Sie haben nicht genug Stunden am Tag, also brauchen Sie mehr Hände. In der jetzigen Phase meines Unternehmens befinden wir uns bei (ii), daher ist die primäre Motivation für die Einstellung, dass ich als Gründer viele Dinge zu tun habe und das Unternehmen jemanden braucht, der jeden Tag konzentriert Code schreibt. :)
Ich bin selbst nur ein Webentwickler, aber ich bin von den Reaktionen hier super überrascht. Ich würde erwarten, dass jeder Webentwickler, den ich einstelle (zumindest Frontend-Entwickler), weiß, was diese Zeilen bedeuten. Ich verstehe nicht, wie man das nicht wissen kann und trotzdem behauptet, seinen Job zu kennen.
Wir können nie wissen, ob jemand perfekt ist. Wir verwenden dies nur in Bezug auf das, was wir wissen ☺️.
Ich verstehe, dass dies ein ebenso guter Weg ist, Kandidaten auszuwählen, wie jeder andere, aber ich glaube nicht, dass dies viel über einen Kandidaten aussagt.
Einiges davon sind eher obskure Wissensgebiete, ich sage nicht, dass sie wertlos sind (sie sind wichtig), aber wie soll das Ihnen sagen, ob jemand weiß, wie man mit Promises arbeitet? Oder wie man ein Bild verzögert lädt? Oder wie man ein responsives Raster erstellt? Oder welche Aria-Rolle man für ein zugängliches benutzerdefiniertes Dropdown verwendet? Oder ob dieser Kandidat in der Lage ist, ein Mockup in eine tatsächliche Seite umzusetzen?
Ich arbeite seit über 12 Jahren in der Webentwicklung in verschiedenen Unternehmen, Ländern und Projekten und habe diese Zeilen wahrscheinlich ein- oder zweimal geschrieben. Wenn ich sie schreiben müsste, würde ich sie einfach googeln, ich weiß, was sie sind, aber ich würde sie nicht sofort auswendig wissen.
Ich stimme zu 100% zu! Wie ich im Artikel geschrieben habe, „... stelle ich ihnen Fragen zu Web Vitals, Barrierefreiheit, den Browserkriegen und anderen ähnlichen Themen rund ums Web“.
Dieses „Twitter-Quiz“ dauert etwa 10 Minuten in einem 60-minütigen Vorstellungsgespräch, und die restlichen 50 Minuten sind Q&A zu diesen anderen Themen. Tatsächlich stelle ich spezifische Fragen zu zwei von Ihnen genannten Themen – anstelle des verzögerten Ladens eines Bildes frage ich nach dem Entwerfen einer responsiven Bildkomponente; und anstelle von Aria für Dropdowns frage ich nach Aria für Benachrichtigungen.
Dies ist nur ein kleiner Teil des gesamten Prozesses, aber für mich liefert es in kurzer Zeit viele Informationen. Ich erwarte nicht, dass die Leute sich alles sofort merken, aber wenn man keines davon kennt und es aber schon mal kopiert hat, ist das für mich ein Warnsignal, weil man den „Warum“-Grund hinter dem, was man tut, kennen sollte.
Genau auf den Punkt. Dies fühlt sich wie eine sanftere Version von Whiteboarding an, zeigt aber dennoch, was an der Einstellung in der Tech-Branche falsch läuft.
@ShirG Ich glaube, Sie haben den Punkt verpasst?
Jemand, der in der Lage ist, diese Punkte zu erklären, hätte gezeigt, dass er „sich Dinge selbst beibringt“, da diese Punkte kein allgemeines Wissen für alle sind und tiefere Recherche erfordern würden. Es trennt definitiv Junioren von mittleren/erfahrenen Kandidaten.
Jemanden zu einem Gespräch über sein technisches Wissen einzuladen, anstatt ihn Live-Coding-Herausforderungen auszusetzen, ist meiner Meinung nach letztendlich menschlicher.
Der OP sagte nicht, dass er die Zeilen kennen sollte, um sie zu erklären, sondern nur ein Gespräch führen, um zu sehen, ob sie verstehen, was vor ihnen liegt, auf eine menschliche Art und Weise.
@ShirG aus Neugier, sind Sie in einer Managementposition? Wie führen Sie Ihre Interviews? Es wäre toll, Ihre Gedanken und das Unternehmen, für das Sie einstellen, zu hören?
Danke Aaron, die Absicht war tatsächlich, tieferes Wissen zu demonstrieren, ohne eine Live-Coding-Herausforderung machen zu müssen.
Sie haben auch Recht, dass Kandidaten nicht jede Zeile kennen müssen, sondern ein Gespräch führen, das normalerweise zu interessanten Fragen führt, z. B. gehe ich nach der Zeile „margin: 0“ immer auf den Unterschied zwischen Normalisierung und Zurücksetzung in CSS ein.
Und interessanterweise – der Ingenieur, den wir schließlich eingestellt haben, hatte eine angemessene Antwort für alle Zeilen außer
http-equiv="origin-trial", aber das ist natürlich nicht der einzige Grund, warum wir jemanden einstellen (dies ist nur ein kleiner Teil des gesamten Prozesses).Ich stimme dem Autor zu, da die meisten davon ziemlich grundlegend und essentiell sind, insbesondere mit neuen Dingen, die sich schnell entwickeln. Webentwickler müssen neue Tags kennen, zum Beispiel die Konfigurationen für „Zum Startbildschirm hinzufügen“. Insbesondere diese, da fast jeder einige Formate von „Zum Startbildschirm hinzufügen“- oder „Als App installieren“-Benachrichtigungen erlebt hat, unabhängig davon, welchen Browser er verwendet. Es ist notwendig, in allen Bereichen ständig Neues zu lernen, nicht nur im Web. Kluge und nicht faule Leute werden in der Lage sein, einige der Top 10 zu beantworten. Vermutlich hat der Autor nicht erwartet, dass alle von den Interviewten verstanden werden.
Ich bin überrascht über all den Widerstand hier. Als jemand, der sowohl als Einstellender als auch als Eingestellter in diesem Bereich tätig war, halte ich das für fantastisch.
#9 – Akzeptable Antwort
Das ist eine OG-Referenz darauf, wo Computer überhaupt erst anfingen... Auf der Oregon Trail.
Können wir aufhören, HTML und CSS als Coding zu bezeichnen? Es ist Markup und Styling. Keine Programmiersprache, als Nächstes käme dann JSON-Entwickler.
Wie testet man mit dieser Seniorität? Ehrlich gesagt ist das eine 100% spezifische Frage und Leute, die damit nicht gearbeitet haben, werden 0 richtige Antworten haben oder anfangen zu raten. Ich würde von einem Junior mehr erwarten, das zu wissen, als von einem Senior-Entwickler, denn nur wie ein Guru zu codieren, macht einen nicht zu einem Senior-Entwickler.
Ich glaube nicht, dass ich das Wort „Coding“ irgendwo verwendet habe, aber das Schreiben von Markup und Styling ist per Definition Coding. HTML passt vielleicht nicht in die traditionelle Definition von „Programmiersprache“, ich denke, die Art und Weise, wie Sie es formulieren, ist im Grunde Gatekeeping. Ich denke, es spielt keine Rolle, ob HTML oder CSS als Programmiersprachen klassifiziert werden oder nicht (https://css-tricks.de/html-is-not-a-programming-language/).
Zu Ihrem zweiten Punkt stimme ich zu, dass diese sehr spezifisch für die Rolle sind, aber das ist der Punkt – ich wollte Full-Stack-Entwickler einstellen, die HTML und CSS (neben JavaScript) schreiben werden, daher sind dies notwendige Kenntnisse für sie.
Sieht nach einer guten Idee für den technischen Teil eines Vorstellungsgesprächs aus, auch wenn das von 10 Minuten bis 4 Stunden dauern kann.
Allein die Erklärung, was ein Doctype oder eine Zeichenkodierung ist (damit die Leute keine seltsamen Fragezeichen in DB-Datensätzen bekommen), kann zu einer sehr langen Antwort führen.
Im letzten Vorstellungsgespräch, das ich vor Ewigkeiten hatte, wurde ich gebeten, eine Kopie des Google-Taschenrechners in JavaScript zu implementieren.
Das ergibt Sinn! Wir brauchen normalerweise etwa 10 Minuten für diesen Teil des Vorstellungsgesprächs, da ich Kandidaten in die richtige Richtung weisen kann, wenn sie unsicher sind, und ich kann sehr schnell erkennen, ob sie die Antwort tatsächlich wissen, sodass ich sie nicht lange über jedes Thema sprechen lassen muss.
Sofern ich nichts im Artikel übersehen habe, gehe ich davon aus, dass keiner der Kandidaten darauf hingewiesen hat, dass Twitter die Auslassung des
head-Tags verwendet, was zwar eine völlig gültige Praxis ist, wenn bestimmte Bedingungen erfüllt sind, aber auch bemerkenswert genug ist, dass ich dies bei einer Befragung zu den dargestellten Quellzeilen sicherlich hervorheben würde.Das haben Sie verpasst :)
Ich bin neugierig, warum es Sie interessiert, ob jemand dieses Stück historische Information kennt, das heute wenig Relevanz hat, außer als Trivia-Frage
„Aber in den Zeiten von Netscape/Internet Explorer hatten Browser die schwierige Aufgabe, herauszufinden, welchen HTML-Standard sie für das Rendern der Seite aus mehreren konkurrierenden Versionen verwenden sollten.“
PS – Ich fordere Sie nicht heraus, ich möchte nur Ihre Gedanken dazu hören.
Ich schreibe seit über 10 Jahren HTML, damals, als wir (viel) mehr als <!doctype html> als erste Zeile schrieben. Ich habe wirklich zu schätzen gelernt, wie wir hierher gekommen sind, daher der Fokus auf die Geschichte. Ich glaube nicht, dass es notwendig ist, die ganze Geschichte hinter dieser Zeile zu kennen, aber sie zu kennen, sagt mir, dass Sie entweder sehr neugierig oder sehr erfahren sind.
Ausgezeichneter Artikel. Aber ich denke, der Grund, warum Sie möglicherweise Schwierigkeiten haben, für Ihre Stelle einzustellen, ist, dass Sie sie als Senior Full-Stack JavaScript Engineer bezeichnen.
Diese Frage/Diskussion würde viele Leute aussortieren, die JavaScript für Node verwenden, da diese Frage rein Frontend-basiert ist. Wenn Sie die Stellenbezeichnung in Senior Front-End Engineer ändern, würde ich schätzen, dass Sie bessere Kandidaten bekommen, die mit den von Ihnen gesuchten Fähigkeiten übereinstimmen.
Einverstanden!
Also ist Ihr Test, ob jemand ein guter Full-Stack-JavaScript-Entwickler wäre, dass Sie ihn 10 Zeilen erklären lassen, von denen keine JavaScript ist?
Das ist genau richtig ;)
Aber mal im Ernst, das ist eine der Fragen, über die wir zehn Minuten sprechen (von einer einstündigen Unterhaltung), die anderen sind spezifischer für die Rolle (z. B. Entwerfen einer Komponente in einem Frontend-Framework, Entwerfen einer RESTful-API in Node, Barrierefreiheit usw.). Ich denke, ein Full-Stack-JS-Entwickler sollte immer noch genug HTML kennen, um diese Fragen zu beantworten!
Ich meine, diese JS-Codes werden sowieso mit HTML- und CSS-Codes interagieren und diese verändern. Ist es gut, wenn man fließend JS spricht, aber nicht sicherstellen kann, dass sein Code das Richtige mit dem DOM macht, oder nicht sicherstellen kann, dass er die richtigen SEO-Tags ausgibt?
Obwohl einige der in diesem Test enthaltenen Meta-Tags altmodisch klingen, erhalte ich mit einem Bonus 100 von 100 Punkten.
Haha eingestellt! ;)
Viele dieser Kommentare verfehlen meiner Meinung nach den Punkt. Ich denke, der Autor versucht, „unter die Haut“ des Kandidaten zu kommen, um ein Gespräch zu führen und zu sehen, ob die Person passt. Als ich in der Vergangenheit Vorstellungsgespräche geführt habe, zog ich ein Gespräch vor und suchte (in dieser Reihenfolge) nach
1. Begabung (versteht der Kandidat „Softwareentwicklung“). Wenn Sie nicht programmieren können, will ich Sie nicht; ich habe keine Zeit, es Ihnen beizubringen.
Einstellung. Sind sie eifrig, kompetent; das „richtige Zeug“. Wenn jemand faul ist, will ich ihn nicht. Ich suche nach Leidenschaft, Interesse an mehr als nur dem Ausspucken von mehr Mist für ein Gehaltsscheck. Ich möchte wissen, was sie interessiert.
Wissen. Technisches Wissen kann man leicht über Google oder ein Buch lernen, daher steht es wirklich ganz unten auf der Liste. Ich suche eine langfristige Beziehung (Zeit zum Trainieren), keinen kurzen Flirt!
Das ist ein wirklich schöner Beitrag, und als Senior Frontend Engineer freue ich mich, dass ich einige dieser Antworten aus dem Kopf abrufen kann!
Allerdings denke ich, dass die perfekte Antwort darauf nicht so detailliert sein sollte wie die von Ihnen erwähnten Beispiele. Teil des Entwicklungsprozesses ist die Suche, das Lesen und nicht unbedingt das Kopieren, sondern das tatsächliche Verständnis, wie Dinge funktionieren, und selbst wenn man es nicht auswendig gelernt hat, kann man durch einen solchen Prozess immer noch Qualität und Skalierbarkeit gewährleisten. Ich mag die Idee, Kandidaten aufzufordern, diese 10 Codezeilen zu erklären, wirklich. Definitiv etwas, das am Ende diskussionswürdiges Material für Vorstellungsgespräche darstellt!
Hallo Anand.. Deine Antwort für doctype ist etwas unvollständig.
In den Zeiten von Netscape/IE war so viel Browserverhalten nicht spezifiziert. Es ging also nicht darum, „welchen HTML-Standard man verwenden soll“, sondern darum, dass „die HTML-Spezifikation dies nicht abdeckt“. Dazu kamen noch die beiden Lager, die schneller waren als die Standardisierung, was zu allen möglichen Unterschieden führte. Der Doctype diente als Mechanismus, um zu sagen: „Ich möchte das strengste Browserverhalten“ anstatt „Geben Sie mir den Kompatibilitätsmodus“. (Außerdem war er nützlich für diesen ganzen XHTML-Fad ;)
Der „Kompatibilitätsmodus“ wurde als Quirks-Modus kodifiziert und schließlich wurde auch dieser standardisiert: https://quirks.spec.whatwg.org/ Das bedeutet, dass Browser nicht nur ihr „Standardverhalten“ verschärft haben, sondern in den letzten zehn Jahren auch viel getan haben, um im Quirks-Modus konsistent zu sein. Es ist kein rechtsfreier Raum mehr mit unvorhersehbarem Verhalten, sondern eine schöne Liste von etwa 13 kleinen „Fehlern“, die wir auf der Webplattform beibehalten haben (hauptsächlich damit Seiten aus den 90ern immer noch gleich dargestellt werden).
Ich würde sagen, die perfekte Antwort ist: „Die Doctype-Deklaration stellt sicher, dass wir kein Quirks-Mode-Verhalten haben“ oder etwa „vermeidet seltsame Fehler“.
Ich kann Ihnen mit Zuversicht sagen, dass wir, wenn Chris den Doctype einen Tag lang aus Codepen entfernen würde, Tausende von Leuten haben würden, die stundenlang ratlos wären, weil das „einfach keinen Sinn ergibt“. Es ist eine sehr schmerzhafte Auslassung. :)
Und für die HTML-Nerds… wenn Ihnen die Quirks-Mode-Spezifikation nicht ausreicht, dann genießen Sie dieses Meisterwerk: https://hsivonen.fi/doctype/
Wundervoll. Wie immer, danke Paul für das Teilen des Wissens!
Sehr gut geschrieben, ich habe viel gelernt, Mann. Danke!
lang="en"ist bei weitem das Wichtigste in allem Code, und wird in Ihrer perfekten Antwort kaum behandelt. Sie werden nicht eingestellt! :)Das property-Attribut stammt aus der RDFa Core 1.1-Spezifikation. Der „og“-Teil ist ein Präfix, das verwendet wird, um nicht eine längere URI zu wiederholen, die den vollständigen Wert darstellt. Wenn ein übergeordnetes Element (in diesem Fall html) das „og“-Präfix deklariert hätte, könnte der Parser og:site_name der vollständigen URI zuordnen.
Ein Parser sieht das property mit dem Präfix, weiß, dass es nicht auf eine Referenz-URI abgebildet werden kann, und geht heutzutage einfach davon aus, dass es sich um einen Open-Graph-Protokollwert handelt, der hauptsächlich von Facebook verwendet wird.
https://ogp.me/
https://www.w3.org/TR/rdfa-core/#h-s_curies
Ich denke wirklich, dieser Beitrag ist sehr gut geschrieben. Ich denke, dieser Interview-Test ist sehr relativ. Es ist nicht nur ein Test dafür, wie gut der Kandidat HTML schreiben kann. Als jemand, der seit über 8 Jahren HTML schreibt, würde der Interviewer mehr Informationen über mich sammeln als nur meine Fähigkeit, HTML zu schreiben.
Zum Beispiel gibt es einige dieser Tags schon seit Anbeginn und einige sind relativ neu – wenn ich beides erklären kann, zeigt das, dass 1. Ich so viel Erfahrung habe, wie ich behaupte, und 2. Ich achte darauf, das Wissen, das ich behaupte zu haben, immer zu verbessern oder zu „aktualisieren“.
Ein weiteres Beispiel: Wenn ich bemerke, dass kein head-Tag vorhanden ist, aber nicht erklären kann, WARUM, kann der Interviewer erkennen, ob ich nur aus dem Netz kopiere und einfüge oder ob ich fasziniert bin, WARUM kein head-Tag vorhanden ist. Das würde zeigen, wie interessiert oder „motiviert“ ich bin, mehr zu lernen und zu verstehen.
Das ist ziemlich gut, Anand. Sehr befriedigend zu lesen.
Ich frage mich – Manche Leute können Webstandards einzeln aufzählen und zu jedem sprechen und vielleicht sogar etwas Geschichte und den aktuellen Stand der Browserunterstützung für jede Funktion, auch wenn sie ungewöhnlich oder veraltet ist.
Zum Beispiel die ausgelassene Kopfzeile bei Twitter. Sie ist ungewöhnlich, aber nichts Besonderes. Das Verhalten ist in diesem Fall gut dokumentiert und es wird Browser-Konsistenz geben. Es ist nichts Unbekanntes. Es ist nur ungewöhnlich.
Leute, die das können, werden ein neues Problem sehr schnell lösen, weil sie wissen, warum frühere Lösungen verwendet werden, warum einige Funktionen nicht verwendet werden, und anstatt Boilerplate zu verwenden oder einfach zu kopieren, was sie sehen, können sie es jedes Mal von Grund auf neu schreiben.
Nun haben Sie die Kehrseite. Es gibt Leute, die die Informationen nicht auf diese Weise speichern. Sie haben die Bedeutung jeder Funktion proportional in ihrem Kopf skaliert – proportional zu ihrer Vertrautheit und der statistischen Rate, mit der sie ihr bisher in freier Wildbahn begegnet sind.
Das macht sie sehr gut darin, eine Website mit allen gängigen Funktionen zu erstellen, aber sie wissen nicht immer genau, warum das so gemacht wird, und Dinge fallen ihnen aus unterschiedlichen Gründen auf. Wie die ausgelassene Kopfzeile – obwohl das Auslassen der Kopfzeile keinen Unterschied macht, als hätte man sie da (abgesehen von einer Handvoll gesparter Zeichen), überrascht es die Leute vielleicht einfach. Weil sie immer die Kopfzeile sehen, könnten sie (fälschlicherweise) schlussfolgern, dass nur schlampige Leute Tags auslassen, weil alle professionellen Seiten eine Kopfzeile haben. Sie könnten bei Funktionen außerhalb der Kurve des gängigen Wissens stolpern, und selbst wenn die Standards sehr klar darüber sind, wie diese Funktionen behandelt werden, könnten sie sehr seltsame zugrunde liegende Theorien darüber haben, warum sie x mehr als y sehen.
Letztendlich denke ich, dass jeder vom statistischen Ansatz zum Meisterschaftsansatz fortschreitet, bei dem er die Funktionen usw. auflisten kann. Und dieser Artikel zeigt eine großartige Möglichkeit, herauszufinden, welcher Seite dieser Reise Ihr Kandidat näher ist.
DOCTYPE ist nicht notwendig, meta charset ist nicht notwendig, woher weiß ich das? Weil ich Seiten gebaut habe, ohne sie benutzen zu müssen. Wenn ich auf eine Situation stoße, in der ich sie benutzen muss, würde ich sie einfach nachschlagen und lernen, wie man sie benutzt. „Code kopieren und einfügen“ – Sie sagen mir also, Sie hätten lieber jemanden, der sich eine Menge obskure Informationen gemerkt hat, als jemanden, der weiß, wie man Dinge zusammensetzt? Diese Art von Denkweise sollte in keinem Bereich toleriert werden. Sie scheinen sich durch diesen Ansatz als „menschlicher“ oder entgegenkommender auszugeben, aber das ist überhaupt nicht der Fall – Ob sie kompetent sind, spielt für Sie keine Rolle, Sie kümmern sich nur darum, was sie auswendig gelernt haben. Sie sind für Sie wie wandelnde Wissensboxen, und wenn sie zufällig dieses spezielle Wissen nicht kennen, sind sie für Sie nutzlos.
Wirklich schreckliche Lektüre. Ich konnte nicht einmal die „perfekten Antworten“-Segmente lesen, weil sie so romantisch und idealistisch waren, dass wer auch immer sie geschrieben hat, geradewegs aus einem Märchenland gekommen sein muss. Hätte sie einfach wie ein normaler Mensch erklären sollen.
Wow! Das ist eine ziemliche Reaktion auf einen Artikel, der mit
Aber ich schätze, das ist Teil des „schrecklichen“ Zeugs, das es nicht wert ist, gelesen zu werden, oder?
Der Witz hier ist, dass Minifizierung immer den gesamten Code in eine einzige Zeile packt, also bedeutet die Erklärung von 10 Zeilen, die Erklärung des gesamten JavaScript- und CSS-Codes der ganzen Website.
Er hat ziemlich Glück, dass Twitter seine HTML-Vorlagen nicht minifiziert.
Das liest sich alles… komisch.
Die meisten Ihrer perfekten Antworten werfen mehr Fragen auf, als sie beantworten. Antworten, über die es faszinierend wäre, in einem Artikel genau wie diesem zu lesen.
Nehmen Sie zum Beispiel #3.
Sie würden erwarten, dass jeder, der im Bereich Computer tätig ist, die Bedeutung von „meta“, „charset“ und „utf-8“ errät oder kennt. Aber was ist mit Alternativen zu utf-8? Was ist der Unterschied zwischen utf-8 und Unicode? Was ist, wenn die Seite eine andere, absurd obskure Kodierung verwendet? Woher weiß der Browser, wie er das Tag dekodieren soll, das ihm die Kodierung mitteilt, ohne die Kodierung bereits zu kennen? Könnte das bedeuten, dass Charset nur die Kodierung von für den Benutzer lesbarem Klartext regelt, oder von für den Benutzer lesbaren Texten und Attributwerten, aber nicht von HTML-Tags und Attributen, die in einer bestimmten Kodierung vorliegen müssen? Kann man Kodierungen in einem Dokument mischen? Was passiert, wenn es weggelassen wird, was kann kaputt gehen? Welches Problem löst es?
So viele interessante Dinge zu erforschen. In der Zwischenzeit ist die von Ihnen bereitgestellte Antwort langweilig und informativ. Ironischerweise lässt die „perfekte Antwort“ auf Ihre eigene Frage den Eindruck entstehen, dass Sie sich durch Ihr eigenes Vorstellungsgespräch stolpern. Wäre ich der Interviewer, würde ich diese Antwort als Fehlschlag betrachten. Aber selbst wenn der Kandidat nichts wüsste, würde der Beginn der obigen Fragenreihe zeigen, dass er Probleme zerlegen und Wissen suchen und einem logischen Faden folgen kann – wissen Sie, Probleme lösen, was jede technische Aufgabe ist.
Sie haben absolut Recht, der Sinn dieser Übung ist es, von der Frage zur Diskussion zu gelangen. Alle Ihre Fragen zu #3 sind sehr ähnlich zu den Fragen, die ich während der Diskussion stelle… vielleicht habe ich mich schlecht ausgedrückt, aber die Idee ist genau diese – von der Zeile ausgehen und Folgefragen besprechen. Die „perfekten Antworten“ sind eigentlich die Schlüsselwörter, nach denen ich suche, als Indikator dafür, ob sie auf dem richtigen Weg sind.
Wie andere bereits gesagt haben, stellen Sie Dinge, mit denen sich Entwickler, die in der Lage sind, alle Aspekte einer Webanwendung zu erstellen, nur gelegentlich befassen müssen und die sie leicht googeln können, wenn sie sie benötigen.
Gleichzeitig, während Sie dieses Detailwissen als wesentlich ansehen, zeigen Sie einige Beweise dafür, dass Sie das Gesamtbild übersehen – wissen Sie, warum Twitter den HTML-Tag weglässt? Wahrscheinlich nur eine Auslassung, ein Fehler. Es hat keine wirklichen Auswirkungen auf die Leistung der Website (wenn überhaupt, wird es leicht negativ sein und ist sicherlich eine Geisel des Schicksals in Bezug auf zukünftige Browser, die, durchaus vernünftig, darauf ausgelegt sein könnten, dass eine öffnende Kopfzeile vorhanden ist). Schließlich ist die Benutzeroberfläche von Twitter wirklich eine der schlechtesten, die ich kenne, daher würde ich ihre Website nicht als Modell für irgendetwas betrachten.
Ich habe viel aus diesem Artikel gelernt. Danke fürs Teilen. Ich muss sagen, ich verstehe die `http-equiv`-Eigenschaft immer noch nicht, selbst nachdem Sie sie erklärt haben. Hahaha
Das sind grundlegende Informationen, die jeder wissen sollte, der Webentwicklung betreibt. Allerdings ist es manchmal nicht so einfach in einem Vorstellungsgespräch, wenn einem der Kopf leer wird.
Wie andere bereits erwähnt haben, gibt es zahlreiche und komplexe Möglichkeiten, diese Fragen zu beantworten. Was Paul Irish und Quirks Mode betrifft, so arbeitete ich im Jahr 2001 als Webentwickler, als NN4 noch ein Browser mit nennenswerter Nutzung war.
Viele Leute verlassen sich vielleicht zu sehr auf Copy-Paste oder Frameworks und ich stimme zu, dass mangelndes Tiefenwissen nicht gerade ermutigend ist.
Ein weiterer Punkt ist dieser: Manche Leute haben Zeit, viel zu lesen und zu lernen, für andere ist die Zeit durch familiäre Verpflichtungen und sogar die Pflege eines geliebten Menschen oder Familienmitglieds nach der Arbeit eingeschränkt.
Was Sie suchen, ist jemand mit einer Leidenschaft dafür, jemand, der dies auch als Hobby lernt, nicht nur für die Arbeit.
Es ist auch etwas unfair gegenüber denen, die sich nicht die Mühe gemacht haben, über Dinge zu lesen und zu lernen, die sie selten wegen Frameworks schreiben, aber Experten in anderen spezifischen Bereichen sind, vielleicht Datenbankdesign, UI/UX, PHP oder Python.
Ich würde Fragen zum Einsatz von Webp im Terminal und zur Automatisierung von Bash-Skripten usw. sowie zum Verständnis von Lighthouse etc. stellen.