Эмне форматта келип жатат? Канча өз алдынчасыз?
Frontend
Кайсы негизги HTML тегдерин билесиз?
Өзүңүз жана эң кызыктуу тажрыйбаңыз жөнүндө бир аз айтып бериңиз.
debounce(fn, delay) функциясын ишке ашырыңыз, ал эми алгашкы убакыт бүтүп, функция чакыруусун кечеңдетет.
Observer / Event Emitter үлгүсү боюнча класс түзүңүз: жазылуучуларды сактоо, окуяга жазылуу, жазылуудан чыгуу, жазылуучуларга кабар берүү.
Өзүңүз жана иш тажрыйбаңыз жөнүндө айтып бериңиз.
Сиз тесттерди эске алдыңыз — [компания] жана акыркы жумуш ордуңузда тесттер жаздыңызбы?
EventEmitter классын ишке ашырыңыз: event жана handler үчүн subscribe ыкмасын жазылуу үчүн жана emit(event, data) ыкмасын бардык жазылуучуларды чакыруучу. Ошондой эле unsubscribe ыкмасын да ишке ашырыңыз.
Жаңы стек жана Legacy-коддун бир долбоордо биргелешип иштеши маселесин кантип чечтиңиз? Микро-фронтенддер же веб-компоненттерди карап чыктыңызбы?
Debounce функциясын ишке ашырыңыз.
Vue 2 дан Vue 3 га өтүүдө тажрыйбаң барбы — өзүң эмне кылдың?
Виртуал сыргытууну ишке ашыруу: узун билдирүүлөрдүн тизмеси бар (10 000 элемент), тек гана көрүнүп турган элементтерди 300px бийиктиктеги контейнер ичинде, 30px саптын бийиктигинде көрсөтүү керек.
function createEmitter() { const events = new Map(); function on(event, handler) { if(!events.has(event)) { events.set(event, [handler]) return } events.get(event).push(handler) } function off(event, handler) { // TODO: handler'ды алып салуу } function emit(event, payload) { // TODO: бардык жазылуучуларды чакырыңыз } return { on, off, emit }; } const bus = createEmitter(); const unsub1 = bus.on("order:created", (payload) => { console.log("handler1:", payload.id); }); const handler2 = (payload) => { console.log("handler2:", payload.id); } bus.on("order:created", handler2);
Эмне форматта келет сениң тапшырмаларың? Жогорку өз алдынчалык даражасың барбы?
Тесттер жазуу боюнча тажрыйбаң барбы? Кантип тесттер жаздың жана канча көлөмдө?
Практикалык тапшырма: эки объект массивдери менен иштөө — ачкыч боюнча салыштыруу Map түзүмдөрүн колдонуп жана эки цикл аркылуу өтүү
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; }
Виртуал тизмени (Virtual List) ишке ашырыңыз: узун билдирүүлөрдүн тизмеси бар, жана гана көрүнүп турган элементтерди 300 пиксель бийиктиктеги бекитилген контейнер ичинде көрсөтүү керек. Бир саптын бийиктиги 30 пиксель.
Неге жеке UI-кит керек деген ойға келдіңіз, ал жай ғана дайын UI элементтерін пайдаланбай?
Маңызы бар иш тажрыйбаңыз жөнүндө айтып бериңиз.