In quale formato ricevi i compiti? Quale grado di autonomia hai?
Frontend
Quali sono i principali tag HTML che conosci?
Parlami un po' di te e della tua esperienza più interessante.
Parlami di te e della tua esperienza lavorativa.
Implementa la funzione debounce(fn, delay), che ritarda la chiamata della funzione fino al termine del tempo di silenzio specificato.
Implementare una classe secondo il pattern Observer (Emitter di Eventi): memorizzazione degli iscritti, iscrizione a eventi, cancellazione dell'iscrizione, notifica agli iscritti.
Hai menzionato i test — hai scritto test presso [azienda] e nel tuo ultimo lavoro?
Implementa la classe EventEmitter: il metodo subscribe(event, handler) per iscriversi a un evento e il metodo emit(event, data) per chiamare tutti gli iscritti. Implementa anche il metodo unsubscribe.
Come hai affrontato il problema della convivenza di un nuovo stack e del codice Legacy in un progetto? Hai considerato micro frontend o componenti web?
Hai esperienza nel partecipare alla migrazione da Vue 2 a Vue 3 — cosa hai fatto esattamente tu stesso?
Implementare la funzione debounce.
Implementare lo scorrimento virtuale: c'è una lunga lista di messaggi (10.000 elementi), bisogna renderizzare solo gli elementi visibili all'interno di un contenitore con altezza fissa di 300px, con un'altezza di riga di 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: rimuovere handler } function emit(event, payload) { // TODO: chiamare tutti gli iscritti all'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);
In quale formato ricevi i compiti? Hai un alto grado di autonomia?
Compito pratico: lavorare con due array di oggetti — confronto per chiave usando strutture Map e attraversamento con due cicli
Hai esperienza nella scrittura di test? Quali test hai scritto e in che quantità?
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) => { // scrivi il codice qui return fn(...args); }; // e qui return wrapped; }
Implementa una lista virtuale (Virtual List): c'è una lunga lista di messaggi, e bisogna renderizzare solo gli elementi visibili all'interno di un contenitore con altezza fissa di 300 pixel. L'altezza di una riga è di 30 pixel.
Perché si è giunti alla conclusione che è necessario un kit UI personalizzato, e non semplicemente utilizzare elementi di un UI pronto?
Parla della tua esperienza lavorativa rilevante.