Kādā formātā tev nāk uzdevumi? Cik neatkarīgs esi?
Frontend
Kādus galvenos HTML tagus jūs zināt?
Pastāsti man mazliet par sevi un savu interesantāko pieredzi.
Realizējiet klasi pēc Observer modeļa (Observer / Event Emitter): abonentu glabāšana, notikuma abonēšana, abonēšanas atcelšana, abonentu informēšana.
Izstrādājiet funkciju debounce(fn, delay), kas atliks funkcijas izsaukšanu līdz norādītā klusuma laika beigām.
Pastāstiet par sevi un savu darba pieredzi.
Jūs pieminējāt testus — vai jūs rakstījāt testus [uzņēmumā] un pēdējā darbā?
Izstrādājiet EventEmitter klasi: metodi subscribe(event, handler) lai abonētos uz notikumu un emit(event, data) lai izsauktu visus abonentus. Tāpat īstenojiet unsubscribe metodi.
Kā jūs risinājāt jauna steka un Legacy koda kopdzīves uzdevumu vienā projektā? Vai apsvērojāt mikro-frontendus vai tīmekļa komponentus?
Īstenojiet debounce funkciju.
Kādā formātā tev nāk uzdevumi? Vai tev ir liels patstāvības līmenis?
Vai tev ir pieredze migrācijā no Vue 2 uz Vue 3 — ko tieši tu pats darīji?
Virtuālas ritināšanas īstenošana: ir garš ziņojumu saraksts (10 000 elementu), jāattēlo tikai redzamie elementi iekšā konteinerā ar fiksētu augstumu 300px, ar rindas augstumu 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: noņemiet handler } function emit(event, payload) { // TODO: izsauciet visus abonentus notikumam } 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);
Praktiska uzdevums: strādāt ar diviem objektu masīviem — salīdzinājums pēc atslēgas, izmantojot Map struktūras un divu ciklu pārbaudi
Vai tev ir pieredze testu rakstīšanā? Kādus testus esi rakstījis un kādā apjomā?
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) => { // rakstiet kodu šeit return fn(...args); }; // un šeit return wrapped; }
Kāpēc nonācāt pie secinājuma, ka nepieciešams pielāgots UI komplekts, nevis vienkārši izmantot gatavus UI elementus?
Realizējiet virtuālo sarakstu (Virtual List): ir garš ziņojumu saraksts, un jāattēlo tikai redzamie elementi iekšā konteinerā ar fiksētu 300 pikseļu augstumu. Vienas rindiņas augstums ir 30 pikseļi.
Pastāstiet par savu atbilstošo darba pieredzi.