Frontend
За начало, бихте ли ми разказали малко за опита ви в писането на автоматизирани тестове, особено единични и интеграционни тестове? Благодаря, че споделихте това. Работили ли сте също с тестови рамки като Playwright?
Какви инструменти за профилиране използваш? Имаш ли опит с изтегляне на паметови дампов?
Използването на Webpack беше съзнателно решение или вече съществуваше?
Поставете числата вместо знаците за въпрос, така че в конзолата да се изведе в ред 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (задача за Event Loop, Promise, setTimeout)
Как си представяте работата на ново място? Как бихте се включили в проект, където фронтендът в момента е без фреймуърк?
Има ли стойността [обект] прототип? Как се различава __proto__ от prototype? Къде сочи __proto__ на обекта? Вярно ли е, че __proto__ съществува при всички стойности?
Кои етапи на рендериране на браузъра могат да бъдат оптимизирани, за да се избегнат излишни пресмятания, и как да го направите?
Реализирайте виртуален списък (Virtual List): има дълъг списък с съобщения, трябва да рендерирате само видимите елементи вътре в контейнер с фиксирана височина 300 пиксела. Височината на един ред е 30 пиксела.
Какви са вариантите за позициониране на елементите на страницата (CSS position)?
Обяснете какво се случва със старите заявки при смяна на потребител и как `AbortController` предотвратява състезателни условия (race condition).
Как може да се анализира JSON потоково, разделяйки обработката на части, за да не блокира основния поток? С какво може да се стартира обработката на следващата част, за да не забави страницата (например, requestIdleCallback, генератори)?
Какво представляват useMemo, useCallback и React.memo? Кога е по-добре да ги използвате?
Каква е разликата между ChangeDetectorRef.markForCheck() и detectChanges()?
Как бихте оптимизирали повтарящия се код на обработчиците onChange за полетата за имейл и парола?
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) => { // напиши код тут return fn(...args); }; // и тут return wrapped; }
Кои са основните принципи на ООП, които знаете? Разкажете за всеки.
От какво зависи единицата EM — от най-близкия REM или от родителския размер на шрифта?
За какво се използва ключовата дума infer в TypeScript?
Знаеш ли какво е повдигане на състоянието (lifting state up)?
Каква е разликата между display flex и display grid? Как да подравните елементите във flex?