Millises vormingus tulevad sulle ülesanded? Kui iseseisev sa oled?
Frontend
Milliseid põhitegureid HTML-is teate?
Räägi mulle natuke endast ja oma kõige huvitavamast kogemusest.
Rääkige mulle endast ja oma töökogemusest.
Rakenda funktsiooni debounce(fn, delay), mis lükkab funktsiooni kutsumise edasi kuni määratud vaikuse aja möödumiseni.
Rakenda klass vastavalt Observaatori (Observer / Event Emitter) mustrile: tellijate salvestamine, sündmusele tellimine, tellimusest loobumine, tellijate teavitamine.
Sa mainis testidest — kas sa kirjutasid testid [ettevõttes] ja viimases töökohas?
Rakenda EventEmitter klass: meetod subscribe(event, handler) sündmusele tellimiseks ja meetod emit(event, data) kõigi tellijate kutsumiseks. Samuti rakenda meetod unsubscribe.
Kuidas te lahendasite uue stecki ja Legacy-koodi ühise eksistentsi ülesande ühes projektis? Kas kaalute mikrofrontendide või veebikomponentide kasutamist?
Kas sul on kogemusi Vue 2-st Vue 3-ks migratsioonil — mida täpselt sa ise tegid?
Rakendage debounce funktsioon.
Virtuaalse kerimise rakendamine: on pikk sõnumite nimekiri (10 000 elementi), tuleb renderdada ainult nähtavad elemendid konteineris, mille fikseeritud kõrgus on 300px, rea kõrgus on 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: eemalda handler } function emit(event, payload) { // TODO: kutsu kõiki sündmuse tellijaid } 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);
Millises formaadis tulevad sulle ülesanded? Kas sul on kõrge iseseisvuse tase?
Praktiline ülesanne: töötada kahe objektide massiiviga — võrdlus võtme järgi, kasutades Map-struktuure ja kahe tsükli läbimist
Kas sul on kogemusi testide kirjutamisel? Milliseid teste oled kirjutanud ja millises mahus?
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) => { // kirjutage kood siia return fn(...args); }; // ja siin return wrapped; }
Miks te jõudsite järeldusele, et vajalik on kohandatud UI-komplekt ning mitte lihtsalt kasutada valmis UI elemente?
Rakenda virtuaalnime (Virtual List): on pikk sõnumite nimekiri, ja tuleb renderdada ainult nähtavad elemendid 300 pikslise fikseeritud kõrgusega konteineris. Ühe rea kõrgus on 30 pikslit.
Rääkige oma asjakohasest töökogemusest.