Frontend
Ist drzewo z interfejsem INode (value: number, left?: INode, right?: INode). Napisz funkcję, która przechodzi przez drzewo i zwraca sumę wszystkich wartości.
Jak dokładnie typować listę z paginacją? Jak używać przecięcia typów dla różnych opcji odpowiedzi?
Czy używasz jakichś konfiguracji w aplikacji? Linters, style kodu — czy dzielisz się nimi między projektami (np. przez prywatny npm)?
Z jakimi trudnymi przypadkami musiałeś się zmierzyć w swojej ostatniej pracy (RTK)?
Wymień znane Ci zasady tworzenia oprogramowania.
Mamy bardzo duży front w monorepo, nad którym pracuje wiele różnych zespołów jednocześnie. Nie możemy przejść na mikro-frontendy. Jak zminimalizować ryzyko, że różne zespoły będą wpływać na pracę innych?
Jak w HTML zaimplementować podłączenie różnych formatów i rozmiarów obrazów dla ekranów o różnej gęstości pikseli? Czym jest tag picture i atrybut srcset?
Czy można używać metod HTTP niezgodnie z ich przeznaczeniem, na przykład GET do usuwania lub aktualizacji danych?
Zadanie z JavaScript: określić typ (typeof) dla różnych wyrażeń — new Array(), obiekt, Map, liczba, Infinity, wynik konkatenacji łańcuchów i liczb.
Czym są composables i do czego służą?
Dlaczego React potrzebuje wirtualnego drzewa DOM? Dlaczego nie można bezpośrednio modyfikować rzeczywistego DOM? Jakie są zalety i wady różnych podejść?
Jeśli nowa makrotaska jest tworzona podczas wykonywania pętli Event Loop, jak i kiedy zostanie przetworzona?
Jakie są sposoby zapobiegania wyciekom pamięci w aplikacjach JavaScript?
Co zrobić, jeśli Redis się przepełni przy dużym obciążeniu?
Wyjaśnij, jak Promise.all oczekuje na wykonanie wszystkich zapytań w Twoim rozwiązaniu z rekurencją. Dlaczego obecna implementacja może zwrócić niepełny wynik?
Jak React porównuje dwa drzewa (bieżące i w trakcie)? Jaki algorytm jest używany?
Jak zapobiec migotaniu interfejsu spowodowanemu przez useEffect?
/** * Implementuj funkcję, która wykona callback z danymi * i zwróci tablicę odpowiedzi Response[]. * Rozwiązanie powinno wykonywać wszystkie żądania równolegle * ale nie więcej niż [limit] żądań może być wykonywanych jednocześnie. * Celem jest minimalizacja całkowitego czasu wykonania. */ type Props<RequestData, Response> = { callback: (args: RequestData) => Promise<Response>; data: Array<RequestData>; limit: number; }; export async function runWithLimit<RequestData, Response>({ callback, data, limit, }: Props<RequestData, Response>): Promise<Response[]> { // POCZĄTEK ROZWIĄZANIA TUTAJ if (limit < 1 || data.length === 0) { return Promise.resolve([]); } if (limit >= data.length) { return Promise.all(data.map(callback)); } const result: Response[] = new Array(data.length); let index = 0; const run = async () => { if (index >= data.length) return; const elem = data[index]; try { result[index] = await callback(elem); } catch (err) { result[index] = (err) as Response; // obsługa błędu } index++; run(); }; const startPack = Array.from({ length: limit }, run); await Promise.all(startPack); return result; }
Czym jest błąd CORS?
Wyjaśnij, co się stanie z opakowaniem Promise, jeśli asyncCall przez pomyłkę wywoła przekazany callback kilka razy: najpierw z błędem, potem z danymi, a następnie ponownie z błędem.