Pytania rekrutacyjne z przeglądarki i wydajności z odpowiedziami
Jak przeglądarka ładuje i renderuje stronę, Core Web Vitals (LCP, INP, CLS), ładowanie zasobów, cache HTTP, CORS, ciasteczka, XSS, CSP i inne zabezpieczenia przeglądarki.
225 pytań na rozmowę rekrutacyjną z tematu Przeglądarka i wydajność z odpowiedziami i wyjaśnieniami - poziomy Junior, Middle i Senior. Przykładowe pytania, testy online i zadania z kodu.
- Core Web Vitals
- Rendering
- HTTP Cache
- CORS
- XSS
Pytania według poziomu
Junior
Podstawowe pojęcia i składnia · 50 pytań
Middle
Praktyka, niuanse i optymalizacja · 50 pytań
Senior
Architektura, mechanizmy wewnętrzne, przypadki brzegowe · 50 pytań
Przykładowe pytania
Kilka pytań z każdego poziomu z poprawną odpowiedzią i wyjaśnieniem.
Przeglądarka i wydajność · Junior
- Wpisujesz URL i naciskasz Enter. Która kolejność kroków jest najbliższa temu, co przeglądarka robi najpierw?
Poprawna odpowiedź: Zapytanie DNS, połączenie TCP (i TLS), żądanie HTTP, potem parsowanie odpowiedzi HTML
Przeglądarka musi zamienić nazwę hosta na IP, otworzyć połączenie (plus TLS dla HTTPS) i wysłać żądanie, zanim dostanie HTML do parsowania.
- Co przeglądarka buduje z parsowanego HTML?
Poprawna odpowiedź: DOM - drzewo węzłów dokumentu
HTML jest dzielony na tokeny, z których powstają węzły DOM. CSS jest osobno parsowany do CSSOM; później oba są łączone.
- Czym jest render tree?
Poprawna odpowiedź: Połączeniem DOM i CSSOM, zawierającym tylko widoczne węzły z obliczonymi stylami
Elementy z
display: nonei niewizualne węzły jak<head>są pomijane. Render tree to dane wejściowe dla layoutu. - Która kolejność etapów renderowania jest poprawna po zbudowaniu render tree?
Poprawna odpowiedź: Layout, paint, composite
Layout oblicza geometrię, paint wypełnia piksele warstw, a kompozycja rysuje warstwy na ekranie we właściwej kolejności.
Przeglądarka i wydajność · Middle
- Które właściwości CSS zwykle można animować bez wywoływania layoutu ani paint?
Poprawna odpowiedź:
transformiopacityMoże je obsłużyć compositor na już narysowanej warstwie, więc animacje pozostają płynne nawet przy zajętym głównym wątku.
- Jakie jest ryzyko dodania
will-change: transformwielu elementom?Poprawna odpowiedź: Każdy może dostać własną warstwę compositora, co kosztuje pamięć GPU i czasem wszystko spowalnia
will-changeto wskazówka dla elementów, które zaraz będą animowane, a nie ogólne przyspieszenie. Nadużycie prowadzi do eksplozji warstw. - Dlaczego
requestAnimationFramejest lepszy odsetInterval(fn, 16)do aktualizacji wizualnych?Poprawna odpowiedź: Działa tuż przed wyrenderowaniem następnej klatki i wstrzymuje się w kartach w tle
Timery dryfują i nie są zsynchronizowane z klatkami, więc aktualizacje mogą przepaść albo wykonać się dwa razy. rAF dostosowuje się też do ekranów 120 Hz.
- Co robi
content-visibility: auto?Poprawna odpowiedź: Pomija pracę renderowania (layout i paint) dla treści poza ekranem, dopóki nie zbliży się do widocznego obszaru
Na długich stronach może mocno skrócić początkowe renderowanie. Łącz z
contain-intrinsic-size, żeby pasek przewijania nie skakał.
Przeglądarka i wydajność · Senior
- Co gwarantuje Site Isolation w Chromium?
Poprawna odpowiedź: Strony z różnych serwisów są renderowane w różnych procesach systemu
Po Spectre granice procesów stały się główną obroną przed odczytem pamięci jednego serwisu przez inny, także w iframe'ach cross-site.
- Dlaczego przeglądarki domyślnie wyłączyły
SharedArrayBuffer, a potem włączyły go tylko dla stron cross-origin isolated?Poprawna odpowiedź: Umożliwia timery wysokiej rozdzielczości przydatne w atakach Spectre; izolacja gwarantuje, że w procesie nie ma danych cross-origin
Z COOP i COEP strona nie może wciągnąć zasobów cross-origin, które się na to nie zgodziły, więc gadżet Spectre nie ma czego tajnego odczytać.
- Po włączeniu
COEP: require-corpprzestały się ładować obrazy z zewnątrz. Jakie są opcje?Poprawna odpowiedź: Strona trzecia musi wysyłać
Cross-Origin-Resource-Policy: cross-originalbo serwować przez CORS; lub użyjCOEP: credentiallesscredentiallessładuje zasoby cross-origin w trybie no-cors bez ciasteczek, więc nie mogą zawierać sekretów konkretnego użytkownika. - Przed czym, oprócz włączenia izolacji, chroni
Cross-Origin-Opener-Policy: same-origin?Poprawna odpowiedź: Okna cross-origin otwarte przez twoją stronę lub ją otwierające tracą referencję
window.opener, co blokuje wiele XS-Leaks i tabnabbingPopupy w osobnej grupie kontekstów przeglądania nie mogą liczyć twoich ramek, nawigować cię ani mierzyć czasów przez uchwyt okna.
Testy łączone z tym tematem
Pytania z kilku tematów naraz - jak na rozmowie rekrutacyjnej na konkretne stanowisko.
Zadania z kodu
Napisz rozwiązanie prosto w przeglądarce, a testy od razu je sprawdzą. Klasyka rozmów rekrutacyjnych z JavaScriptu (debounce, deepClone, Promise.all, cache LRU) i z Reacta: komponenty i hooki, takie jak lista zadań, zakładki, useDebounce i useInterval.
Otwórz zadania →