Interviewfragen und Übungen zu CSS

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Wenn Sie jemanden zu seinen CSS-Kenntnissen und -Fähigkeiten interviewen müssen, kann es schwierig sein, spontan Fragen zu finden. Ich dachte, ich würde ein paar Ideen zum Nachschlagen zusammentragen.

Übungen zum Selbermachen

Die tatsächliche Arbeit der Leute zu sehen, ist genauso wichtig wie das, was sie sagen. Den Leuten beim Durcharbeiten von Übungen live zuzusehen, ist möglicherweise sogar noch wichtiger. Dies sind einige Übungen, die nicht besonders schwierig sind und von jedem mit CSS-Erfahrung durchgeführt werden können. Es kann von unschätzbarem Wert sein, ihnen dabei zuzusehen/zuzuhören. Der Collab-Modus auf CodePen ist dafür perfekt (nur so am Rande).

Diesen Button erstellen

Ich habe diese Idee auf dem CodePen-Account von Mobify gesehen. Zeigen Sie den Leuten ein Bild eines Buttons und sagen Sie ihnen:

Erstellen Sie diesen Button nur mit CSS-Eigenschaften neu.

Dies wäre ein großartiger Test für die CSS3-Fähigkeiten des Kandidaten. Dieser Button steckt voller solcher Dinge. Dinge, auf die ich achten würde:

  • Wie sind sie mit mehreren Rahmen umgegangen? box-shadow ist hier wahrscheinlich der beste Weg.
  • Haben sie text-transform: uppercase; für den Text verwendet? Das wäre am besten.
  • Wie sind sie mit den Sternen umgegangen? Pseudo-Elemente wären dort ein guter Kandidat. Haben sie Unicode verwendet? Icon-Font?
  • Haben sie den subtilen text-shadow bemerkt?
  • Wie haben sie den Hintergrund im Hauptteil des Buttons aufgeteilt? Ein linear-gradient ohne Überblendung wäre dort eine gute Technik. Oder box-shadow.
  • Haben sie beim verschachtelten border-radius aufgepasst?

Ich hoffe, ich habe Mobifys Einstellungsprozess nicht ruiniert! Aber ehrlich gesagt, ich denke, so etwas ist schwer vorzutäuschen. Entweder man kann es und kann darüber reden, oder man kann es nicht.

Sidebar reparieren

Die rechte Sidebar ist hier unter den Inhalt gerutscht. Zeigen Sie mir einige verschiedene Möglichkeiten, wie Sie das beheben könnten.

Obwohl die beiden Spalten 75 % und 25 % breit sind und in entgegengesetzte Richtungen gefloatet sind, ist die Sidebar gefallen. Der Grund dafür ist, dass die Spalten aufgrund des Paddings nicht wirklich 100 % ergeben – sie addieren sich zu mehr als 100 %. Es gibt eine Reihe von Möglichkeiten, dies zu beheben:

  • Die Verwendung von box-sizing: border-box; für die entsprechenden Elemente ist die effizienteste Lösung.
  • Die Verwendung von calc() für die Breiten, um das 1rem Padding zu entfernen, ist eine weitere Möglichkeit.
  • Das Padding auf ein hinzugefügtes internes Wrapper-Element anstelle der Spalten zu legen, ist eine Lösung, die mit sehr tiefer Browserunterstützung funktioniert.
  • Das Anpassen der Zahlen, um die Rechnung zu korrigieren, ist eine weitere Möglichkeit. Zum Beispiel die Breiten der Spalten um 4 % schmaler zu machen und stattdessen 2 % für das Padding zu verwenden.

Es gibt noch andere Möglichkeiten. Je mehr Lösungen sie sich einfallen lassen, desto kreativer und vielseitiger sind sie als Problemlöser.

Machen Sie dieses Design mit fester Breite fluid.

Hier ist ein Design. Es hat eine feste Breite von 800px. Versuchen Sie Ihr Bestes, um es für jede Bildschirmgröße passender auf dem Bildschirm darzustellen.

Dies ist nur ein Bestandteil von responsivem Design (mit dem sie wahrscheinlich zumindest vertraut sein sollten), aber es ist ein wichtiger. Es kann beweisen, dass sie räumlich denken und begründete Entscheidungen über das Layout treffen können. Ich würde auf Folgendes achten:

  • Ändern der Pixelbreiten in Prozentsätze (wie sind sie mit der Mathematik umgegangen?)
  • Haben sie etwas Besonderes für große Bildschirme oder nur für kleine getan?
  • Haben sie versucht, eine Lösung für responsive Bilder zu verwenden?
  • Behält das neue Design die dem Original innewohnende Hierarchie der Wichtigkeit bei?
  • Haben sie mit Fragen auf Sie zurückgekommen? (Hier gibt es viele Fragen zu stellen, einschließlich der Frage, welche anderen Ressourcen verfügbar sein könnten.)
  • Haben sie es getestet? (Um sicherzustellen, dass es tatsächlich funktioniert, und um Dinge wie fehlende Meta-Tags zu finden.)

Ersetzen Sie dieses Logo-Markup durch ein Bild.

<a href="/" class="logo">Company</a>

Barrierefreier und semantischer Bildersatz ist seit vielen Jahren ein CSS-Thema und der „beste Weg“ hat sich im Laufe der Jahre gewandelt. Sie zu bitten, Ihnen zu zeigen, wie es auf verschiedene Arten gemacht werden könnte, wäre eine Möglichkeit, Einblick zu gewinnen, wie lange sie wirklich schon mit CSS arbeiten. Es ist nicht nur direkt wichtig zu wissen, wie man es macht, sondern zu wissen, wie man es auf mehrere Arten macht, demonstriert die Tiefe ihres internen Werkzeugkastens.

Suchen Sie mit Google, wie Sie herausfinden würden, was der Standardwert für backface-visibility ist.

In der Lage zu sein, etwas schnell und effizient zu googeln, ist ein wichtiger Bestandteil der Arbeit eines jeden Entwicklers. Sind sie geschickt darin? Haben sie die richtige Antwort gefunden? Haben sie auf der Ergebnisseite eine bestimmte vertrauenswürdige Quelle aufgesucht?

Formulieren Sie die Frage vielleicht ohne „Google“ und sehen Sie, welche Suchmaschine sie verwenden. Hier gibt es keine besondere Voreingenommenheit, aber wenn es nicht Google ist, sind sie dann so effizient, wie Sie es von der anderen Suchmaschine erwarten würden?

Fragen zum Stellen

Darcy Clarke hat vor ein paar Jahren den Stein ins Rollen gebracht. Ich werde einige davon aktualisieren und einige eigene hinzufügen und etwas ausführen.

Was ist das „Box Model“ in CSS? Welche CSS-Eigenschaften sind Teil davon?

Das CSS Box Model ist fundamental für das Verständnis von Layout und Größenbestimmung und dergleichen. Es besteht aus:

  • Breite und Höhe (oder in deren Abwesenheit, Standardwerte und der Inhalt darin)
  • Füllung
  • Border

Margin ist verwandt, aber technisch gesehen kein Teil davon. Ich würde zusätzliche Punkte für das Wissen/Erwähnen vergeben, aber keine Punkte abziehen, wenn es enthalten ist.

Was sind Sass, Less und Stylus? Warum werden sie verwendet? Wie verhält sich etwas wie Compass zu Sass?

Sie sind CSS-Präprozessoren. Sie sind eine Abstraktionsschicht über CSS. Sie sind eine spezielle Syntax/Sprache, die zu CSS kompiliert wird. Sie erleichtern die Verwaltung von CSS mit Dingen wie Variablen und Mixins zur Handhabung von Herstellerpräfixen (neben anderen Dingen). Sie erleichtern die Einhaltung von Best Practices, wie das Verketten und Komprimieren von CSS.

Bonuspunkte für das Wissen, wie sie sich unterscheiden und/oder für Erfahrung im Umgang mit ihnen. Mehr Bonuspunkte für das Wissen, was Dinge wie Compass, Bourbon, LESSHat, Nib usw. sind und wie sie zusammenhängen.

Nennen Sie einige Online-Ressourcen, die Sie bei CSS-Problemen heranziehen.

Gut darin zu sein, Probleme, die Sie haben, zu googeln, ist eine wertvolle berufliche Fähigkeit. Es ist keine Schande. Es ist eine Schande, sich im Kreis zu drehen, weil „man das wissen sollte“. Wenn Sie keine Zeit für die Google-Übung oben haben, kann das bloße Fragen nach Ressourcen aufschlussreich sein.

Google ist eine ziemlich gute Antwort (da es wahr ist und wir es alle wissen). Aber in der Lage zu sein, einige spezifische Websites zu nennen, ist ein guter Indikator dafür, dass sie es oft getan haben und mit den Orten vertraut sind, auf denen sie landen, und ihre Favoriten kennen. Dinge wie MDN (Mozilla Developer Network) sind eine gute Antwort.

Beschreiben Sie, was eine „Reset“-CSS-Datei bewirkt und wie nützlich sie ist. Sind Sie mit normalize.css vertraut? Verstehen Sie, wie sie sich unterscheiden?

Resets sind in CSS so weit verbreitet, dass jeder, der ein Frontend-Entwickler ist, sie mit Sicherheit verwendet hat. Tun sie dies blindlings oder wissen sie warum? Der Grund ist im Wesentlichen, dass verschiedene Browser unterschiedliche Standard-Styles für Elemente haben, und wenn Sie sich überhaupt nicht damit befassen, riskieren Sie, dass Designer in verschiedenen Browsern unnötig unterschiedlich aussehen und möglicherweise dramatischere Probleme auftreten.

Normalize könnte man als eine CSS-Reset-Alternative bezeichnen. Anstatt alle Stile zu löschen, liefert es eine Reihe vernünftiger Standardwerte. Es setzt keine Dinge zurück, die bereits browserübergreifend konsistent und vernünftig sind (z. B. fettgedruckte Überschriften). In dieser Hinsicht leistet es weniger als ein Reset. Es leistet auch etwas mehr als ein Reset, da es Macken behebt, die Sie vielleicht nie in Betracht ziehen würden, wie Inkonsistenzen bei HTML5-Audio-Elementen oder Zeilenhöhen-Inkonsistenzen bei der Verwendung von sub- und sup-Elementen.

Was sind die verschiedenen Techniken zum Clearen von Floats?

Floats sind immer noch unglaublich verbreitet. Zum Zeitpunkt der Veröffentlichung wahrscheinlich immer noch die browserübergreifend konsistenteste Methode zum Erstellen von Layouts und Grids. Jeder, der damit gearbeitet hat, ist sich des Float-Kollaps bewusst. Das heißt, gefloatete Elemente erhöhen die Höhe eines übergeordneten Elements nicht. Wenn beispielsweise ein übergeordnetes Element nur gefloatete Elemente enthielte, würde es auf Nullhöhe kollabieren. Sie können damit wie folgt umgehen:

  • Verwenden Sie einen Clearfix (Bonuspunkte für Micro Clearfix).
  • Floaten Sie auch das übergeordnete Element.
  • Verwenden Sie eine andere Overflow-Eigenschaft als „visible“ für das übergeordnete Element (Bonuspunkte für das Auflisten von Nachteilen wie dem Abschneiden von Schatten).

Bonuspunkte für „einen neuen Block-Formatierungskontext erstellen“. Möglicherweise Minuspunkte für etwas wie <br style="clear: both;">

Verstehen sie das richtungsabhängige Clearen?

Als Bonusfrage könnten Sie sie bitten, die Verwendung von inline-block und floats zum Erstellen eines Grids zu vergleichen. Gute Antwort: In beiden Fällen gibt es Probleme. Bei inline-block müssen Sie sich mit dem Leerzeichenproblem befassen. Bei floats müssen Sie sich mit dem Clearen befassen.

Was sind Sprites und warum sollte man sie verwenden? Wie erstellt man sie? Welche möglichen Alternativen zu Sprites gibt es?

Sprites sind im Wesentlichen mehrere Bilder, die zu einem kombiniert werden. Leistung ist der Grund, warum sie verwendet werden. Im Allgemeinen ist das Langsamste, was eine Website tun kann, eine Ressource anzufordern. Je weniger Anfragen eine Website stellen muss, desto schneller ist sie. Schnell = gut. Das Kombinieren vieler Anfragen zu einer = gut.

Die Frage, wie sie Sprites erstellen, würde nur bestätigen, dass sie tatsächlich sehr damit vertraut sind. Das manuelle Erstellen von Sprites ist sicherlich eine Möglichkeit, aber es ist nicht sehr effizient. Es gibt Helfer-Tools wie SpriteCow und SpriteMe, Spriting mit Compass oder Grunticon. Es ist immer interessant, einen echten Workflow-Ansatz zu hören.

Sprites sind Rasterbilder. Wenn man nach Alternativen fragt, könnten gute Antworten damit zusammenhängen, dass Sprites oft für Icons verwendet werden und Icons oft nicht gerastert werden müssen. SVG Stacks, Icon Fonts, Unicode

Welche Bedenken hinsichtlich der Barrierefreiheit ergeben sich bei CSS?

Verborgener Inhalt ist hier ein großes Thema. Es ist nur akzeptabel, display: none; zu verwenden, wenn Sie sowohl versuchen, Dinge visuell als auch den Inhalt selbst auszublenden.

CSS steuert Farben, daher ist die Barrierefreiheit von Farben relevant. Fokusstile sind ebenfalls wichtig und werden direkt von CSS gesteuert.

Es gibt noch viel mehr Dinge zur Barrierefreiheit, die mit HTML und JavaScript zusammenhängen, daher ist es großartig, diese Dinge zu erwähnen, aber ich finde es interessant, die Frage nur auf CSS zu richten, um fokussiertes Denken zu erzwingen.

Was ist der Unterschied zwischen inline, inline-block und block?

Bonuspunkte für das Ansprechen spezifischer Details wie der Tatsache, dass man Inline-Elemente nicht transformieren kann.

Welche Tools verwenden Sie für Cross-Browser-Tests?

Sie sollten eine Art Strategie haben. Vielleicht ein webbasiertes Tool wie BrowserStack. Vielleicht ein VM-basiertes Tool wie Virtual Box. Vielleicht verschiedene tatsächliche Computer.

Ein Teil der Aufgabe beim Frontend-Design besteht darin, sicherzustellen, dass die Dinge überall funktionieren, wo sie können (basierend auf der festgelegten Unterstützung). Man muss es nicht lieben, aber man darf es nicht hassen. „Das hier, das ist der Job. Welche Art von Arbeit haben Sie erwartet?“

Welche sind Ihre bevorzugten Workflow-Tools für Webdesign?

Welchen Code-Editor mögen sie? Woher holen sie Inspiration? Welche Erfahrung haben sie mit Versionskontrolle? Wie sah die Qualitätssicherung an den Orten aus, an denen sie gearbeitet haben? Support? Mit welchen verschiedenen Bereitstellungsmethoden haben sie gearbeitet? Kennen sie Photoshop oder eine andere Alternative zu visueller Designsoftware? Sind sie mit dem Terminal vertraut?

Das sind nur einige Beispiele, es ist interessant, etwas über jede Software zu hören, die sie verwenden, um die Arbeit zu erledigen. Ein Gefühl dafür zu bekommen, welche Tools sie verwenden (und besser noch, welche Tools sie mögen), ist interessant. Bonuspunkte: ein Gefühl der Begeisterung für einige der Tools.

Angenommen, Sie haben ein Rendering-Problem auf einer Ihrer Websites in Internet Explorer 8 gefunden, das Sie unterstützen möchten. Wie würden Sie vorgehen, um es zu beheben?

Dies wäre eine alternative Frage zur allgemeinen Frage nach Cross-Browser-Tests. Spezifischer. Vielleicht wäre eine schwierigere alternative Frage, IE 8 durch etwas wie „Ein Google Nexus mit Android 2.3“ zu ersetzen. Würden sie einen Simulator finden? Würden sie ein Designlabor aufsuchen? Würden sie das Unternehmen um eine Freigabe für Geräte zum Testen bitten, mit einer Art intelligentem Plan? Würden sie einen Freund mit einem finden?

Worum geht es bei responsivem Design?

Es geht darum, Websites überall dort funktionsfähig zu machen, wo das Web ist. Verschiedene Geräte mit unterschiedlichen Größen und unterschiedlichen Funktionen. Responsive Design bedeutet, eine Codebasis zu verwenden und sie für alle funktionsfähig zu machen. Ein Teil davon sind Medienabfragen und unterschiedliche Visualisierungen. Ein Teil davon sind unterschiedliche Ressourcen (z. B. unterschiedliches JavaScript zur Verarbeitung von Touch vs. Klick oder unterschiedliche Bilder zur Anpassung an den Bildschirm).

Haben Sie schon einmal mit einem Grid-Layout gearbeitet? Was denken Sie darüber?

Warum brauchten sie ein Grid? Wie haben sie das Grid aufgebaut? War es selbstgemacht oder haben sie ein Grid-Tool verwendet? Hat ihnen das Grid-Tool gefallen? Welche Art von Klassennamen haben sie verwendet? Haben sie Mobile-First oder Desktop-First gearbeitet? War es eine Hilfe oder ein Hindernis? Greifen sie bei jedem Projekt automatisch zum Grid?

Welche Vorteile bietet SVG?

SVG ist ein Vektor-basiertes Bildformat. Es ist ein effizientes Format dafür (kleine Dateigrößen). Man kann sie skalieren und sie behalten ihre Schärfe bei jeder Größe bei (Bonuspunkte für das Erwähnen, dass Raster bei winzigen Größen die Oberhand haben könnten). Man kann Teile davon mit CSS und JavaScript sowie mit SVG-spezifischen Filtern bearbeiten, die Dinge wie Unschärfe erzeugen können.

Haben Sie schon einmal ein Print-Stylesheet für eine Website erstellt?

Ein Indikator dafür, dass sie sich schon einmal „die Extrameile“ für Websites gemacht haben. Welchen Ansatz haben sie verfolgt? Wie haben sie es getestet?

Angenommen, Sie hätten die Aufgabe, ein Design zu codieren, das nicht standardmäßige Webfonts verwendet. Wie würden Sie vorgehen?

Eine nicht-leitende Möglichkeit, sie dazu zu bringen, über @font-face und dessen Funktionsweise zu sprechen. Es ist großartig, darüber zu sprechen, wie es als Kern-CSS-Technologie funktioniert, und auch über Dienste, die die Schriftarten bereitstellen und es einfacher machen können, z. B. Google Fonts, Typekit, Font Deck, Cloud Typography usw.

Bonuspunkte für obskures Wissen wie die Geschichte der @font-face-Syntax oder Firefox’ Problem mit Cross-Origin-Schriftarten.

Erklären Sie mir, was in diesem CSS-Selektor vor sich geht

[role=navigation] > ul a:not([href^=mailto]) {

}

Dies wählt Anker-Links aus, die keine E-Mail-Links sind, die Nachfahren einer ungeordneten Liste sind, die das direkte Kind eines Elements mit dem Role-Attribut „navigation“ ist.

In der Lage zu sein, einen Selektor zu verbalisieren, ist der Beweis dafür, dass Sie ihn verstehen, und ein Beweis dafür, dass sie komplexe technische Themen kommunizieren können.

Ihre Ideen

Welche Fragen wurden Ihnen bei Vorstellungsgesprächen für einen CSS-bezogenen Job gestellt? Oder die Sie Ihren Kandidaten stellen? Oder die Sie im Allgemeinen für gute Fragen halten?