Pytania rekrutacyjne Svelte z odpowiedziami
Svelte 5 i runy ($state, $derived, $effect, $props), szablony i snippety, reaktywność bez wirtualnego DOM, SvelteKit: routing, load, form actions i SSR.
226 pytań na rozmowę rekrutacyjną z tematu Svelte z odpowiedziami i wyjaśnieniami - poziomy Junior, Middle i Senior. Przykładowe pytania, testy online i zadania z kodu.
- Runes
- Reactivity
- Snippets
- SvelteKit
- SSR
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.
Svelte · Junior
- Czym jest Svelte?
Poprawna odpowiedź: Frameworkiem UI, który jest głównie kompilatorem: komponenty zamieniają się w JavaScript bezpośrednio aktualizujący DOM
Svelte wykonuje większość pracy podczas budowania. Wynikiem jest zwięzły kod, który zmienia dokładnie te węzły DOM, które zależą od zmienionego stanu, bez wirtualnego DOM.
- Czym jest SvelteKit?
Poprawna odpowiedź: Oficjalnym frameworkiem aplikacji dla Svelte: routing, ładowanie danych, SSR, formularze i adaptery wdrożeń, zbudowanym na Vite
Svelte to warstwa komponentów, a SvelteKit dodaje wszystko, czego potrzebuje pełna aplikacja, podobnie jak Next.js dla Reacta czy Nuxt dla Vue.
- Jaki jest zalecany sposób utworzenia nowego projektu SvelteKit?
Poprawna odpowiedź:
npx sv create my-appsvto oficjalne CLI Svelte. Tworzy projekt i potrafi dodać integracje: TypeScript, ESLint, Vitest, Playwright. - Co może zawierać plik
.svelte?Poprawna odpowiedź: Blok
<script>, znaczniki i blok<style>, wszystko opcjonalnieKomponent może mieć kilka elementów najwyższego poziomu. Jest też
<script module>, który wykonuje się raz przy ładowaniu modułu, a nie dla każdej instancji.
Svelte · Middle
- Czym różni się
$effectod$effect.pre?Poprawna odpowiedź:
$effect.predziała przed aktualizacją DOM (np. by zapisać pozycję przewinięcia);$effectpo niej$effect.prezastępujebeforeUpdateze Svelte 4, a$effectzastępujeafterUpdate. - Dlaczego
items.set(k, v)nie aktualizuje UI, gdyitemsto zwykłyMapw$state?Poprawna odpowiedź:
$stateproxuje tylko zwykłe obiekty i tablice; użyjSvelteMapzsvelte/reactivitysvelte/reactivityma teżSvelteSet,SvelteDate,SvelteURL,SvelteURLSearchParamsiMediaQuery. Ich wartości nie stają się głęboko reaktywne. - W czym pomaga
$inspect.trace()?Poprawna odpowiedź: Umieszczony w pierwszej linii
$effectlub$derived.byloguje, która zależność wywołała ponowne uruchomieniePrzydaje się, gdy coś aktualizuje się za często albo wcale. Jak
$inspect, na produkcji nic nie robi. - Jaka jest przewaga snippetów nad slotami Svelte 4?
Poprawna odpowiedź: To wartości: można im przekazywać parametry, przekazywać je jako propsy, typować przez
Snippet<[T]>i używać wielokrotnie w tym samym komponencieDo snippetów najwyższego poziomu można odwoływać się nawet w
<script>, a eksportować je z<script module>, jeśli nie używają stanu komponentu.
Svelte · Senior
- Na jakim modelu opiera się reaktywność Svelte 5?
Poprawna odpowiedź: Na sygnałach: odczyt stanu w efekcie lub derived rejestruje zależność, a zapis planuje tylko dotknięte efekty
Wyrażenia szablonu też są efektami. Runy to składnia nad tym runtime'em; Svelte 4 polegał zamiast tego na instrumentowaniu przypisań przez kompilator.
- Dlaczego Svelte 5 przeszedł z reaktywności
letinstrumentowanej przez kompilator na runy?Poprawna odpowiedź: Reaktywność Svelte 4 działała tylko na najwyższym poziomie komponentów i była trudna do zrozumienia; runy czynią ją jawną i działają w
.svelte.jsi klasachZależności
$:były ustalane statycznie i tylko przy kompilacji; runy śledzą je w czasie działania, także przez wywołania funkcji. - Jak obliczane są wartości
$derived?Poprawna odpowiedź: Leniwie i z memoizacją: przeliczają się tylko przy odczycie po zmianie zależności, a jeśli wynik się nie zmienił, dalsze aktualizacje są pomijane
Svelte używa reaktywności push-pull: zmiany oznaczają zależnych jako nieaktualnych (push), a wartości przeliczają się przy odczycie (pull). Równe wyniki nie są propagowane.
- Jaki jest koszt głębokich proxy
$statei jak go kontrolować?Poprawna odpowiedź: Każdy dostęp do właściwości przechodzi przez proxy, a zagnieżdżone obiekty są opakowywane leniwie; dla dużych niezmiennych danych użyj
$state.rawlub zwykłych zmiennychUżywaj
$statetylko dla wartości, od których zależą efekty, derived lub szablon. Dane niereaktywne mogą zostać zwykłymi zmiennymi.
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: debounce, throttle, deepClone, Promise.all, EventEmitter, cache LRU i inne.
Otwórz zadania →