Frontend
Na początek, czy mógłbyś opowiedzieć trochę o swoim doświadczeniu w pisaniu testów automatycznych, zwłaszcza testów jednostkowych i integracyjnych? Dziękuję za podzielenie się tym. Czy pracowałeś również z frameworkami testowymi takimi jak Playwright?
Jakie narzędzia profilujące używasz? Czy zdarzyło Ci się robić zrzuty pamięci?
Czy użycie Webpacka było świadomą decyzją, czy już istniało?
Wstaw liczby zamiast znaków zapytania, tak aby w konsoli wyświetliło się w kolejności 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (zadanie na Event Loop, Promise, setTimeout)
Czy JavaScript jest jednordzeniowy czy wielordzeniowy? Jak działa asynchroniczność?
Jakie etapy renderowania przeglądarki można zoptymalizować, aby uniknąć niepotrzebnych przeliczeń, i jak to zrobić?
Jakie są opcje pozycjonowania elementów na stronie (CSS position)?
Czy miałeś kiedyś negatywne doświadczenia w zespole, na przykład intensywne spory podczas przeglądu kodu? Jak byś zareagował w takiej sytuacji?
Czy znasz wzorzec EventEmitter? Zaimplementuj klasę z metodami subscribe, unsubscribe i fire.
class Foo { bar = 1; bla = () => console.log(this.bar); baz = function () {console.log(this.bar);}; } new Foo().bla(); new Foo().baz(); Powiedz to krótko tak: `this` to nie zakres widoczności, lecz kontekst wywołania funkcji. Jest określane nie tam, gdzie funkcja jest zadeklarowana, lecz tam, jak jest wywoływana. Możesz dodać 3-4 zasady: - Normalne wywołanie funkcji — `this` zazwyczaj jest undefined w trybie strict. - Metoda obiektu — `this` wskazuje na obiekt po lewej stronie kropki. - `call / apply / bind` — pozwalają jawnie ustawić `this`. - Funkcje strzałkowe — nie mają własnego `this`, biorą je z kontekstu zewnętrznego.
Opowiedz, co się dzieje ze starymi żądaniami przy zmianie użytkownika i jak `AbortController` zapobiega warunkom wyścigu (race condition).
Jak można analizować JSON strumieniowo, dzieląc przetwarzanie na fragmenty, aby nie blokować głównego wątku? Czym można uruchomić przetwarzanie kolejnego fragmentu, aby nie spowalniać strony (np. requestIdleCallback, generatory)?
Czym są useMemo, useCallback i React.memo? Kiedy lepiej ich używać?
Czy pracowałeś z systemem plików, kamerą lub innymi funkcjami natywnymi w React Native?
Jak zoptymalizowałbyś powtarzający się kod obsługi zdarzeń onChange dla pól email i hasła?
function memoize(fn, options = {}) { const { maxSize = 1000, keyOf = (...a) => JSON.stringify(a), lruTouch = true, } = options; let hits = 0; let misses = 0; const cache = new Map(); const getKey = (...args) => keyOf(...args); const wrapped = (...args) => { // napisz kod tutaj return fn(...args); }; // i tutaj return wrapped; }
Jakie podstawowe zasady OOP znasz? Opowiedz o każdym.
Od czego zależy jednostka EM: od najbliższego REM czy od rozmiaru czcionki rodzica?
Do czego służy słowo kluczowe infer w TypeScript?
Czy wiesz, czym jest podnoszenie stanu?