U kom formatu ti stižu zadaci? Koliko si samostalan?
Frontend
Koje osnovne HTML oznake poznajete?
Ispričaj mi malo o sebi i svom najzanimljivijem iskustvu.
Ispričaj mi o sebi i svom radnom iskustvu.
Implementirajte funkciju debounce(fn, delay), koja odlaže poziv funkcije do isteka navedenog vremena tišine.
Implementirajte klasu prema obrascu Observer (Observer / Event Emitter): skladištenje pretplatnika, pretplata na događaj, odjava od događaja, obaveštavanje pretplatnika.
Pomenuli ste testove — da li ste pisali testove u [kompanija] i na poslednjem radnom mestu?
Implementirajte klasu EventEmitter: metod subscribe(event, handler) za pretplatu na događaj i metod emit(event, data) za pozivanje svih pretplatnika. Takođe implementirajte metod unsubscribe.
Kako ste rešavali problem zajedničkog postojanja novog steka i Legacy-koda u jednom projektu? Da li ste razmatrali mikro frontendove ili web-komponente?
Da li imaš iskustva u migraciji sa Vue 2 na Vue 3 — šta si tačno radio sam?
Implementirati funkciju debounce.
Implementirati virtuelno skrolovanje: postoji dugačak spisak poruka (10.000 elemenata), potrebno je renderovati samo vidljive elemente unutar kontejnera sa fiksnom visinom od 300px, sa visinom reda od 30px.
U kom formatu primaš zadatke? Imaš li visok stepen samostalnosti?
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: eliminar handler } function emit(event, payload) { // TODO: llamar a todos los suscriptores del evento } 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 структура и обилазак са два циклуса
Da li imaš iskustva u pisanju testova? Koje testove si pisao i u kojoj količini?
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) => { // napiši kod ovde return fn(...args); }; // i ovde return wrapped; }
Zašto ste došli do zaključka da je potrebna prilagođena UI-kit, a ne da jednostavno koristite elemente gotovog UI-ja?
Implementirajte virtuelni spisak (Virtual List): postoji dugačak spisak poruka, i treba da renderujete samo vidljive elemente unutar kontejnera sa fiksnom visinom od 300 piksela. Visina jednog reda je 30 piksela.
Ispričaj mi o svom relevantnom radnom iskustvu.