Sobes.tech

Frontend

Dacă funcția logHello este scrisă ca o funcție arrow și este apelată prin fn.call(this, ...args) în interiorul runOnce, ce se va întâmpla cu contextul this? Ce trebuie schimbat în funcția logHello pentru ca contextul să fie transmis corect?

231

Scrieți o funcție pentru conversia unui șir de la camelCase la snake_case. Nu se pot folosi expresii regulate, coduri de caractere sau o listă fixă de simboluri; soluția trebuie să fie universală. Evaluați complexitatea temporală și spațială.

217

De ce, atunci când faci două apeluri sleep(2000) și sleep(1000), se afișează mai întâi logul despre 1 secundă și apoi despre 2? Explicați funcționarea Event Loop, micro- și macro-tasks.

213

Cunoștințe despre baze de date și lucru cu API-uri

204

/* Avem un set de bilete în următorul format: [ { from: 'Londra', to: 'Moscova' }, { from: 'NY', to: 'Londra' }, { from: 'Moscova', to: 'Sankt Petersburg' }, ... ] Din aceste bilete se poate construi o singură rută continuă. Nu există bucle sau repetiții în rută. Este nevoie să scrii un program care să returneze aceleași obiecte de bilete în ordinea traseului. */ function getRoute(tickets = [], startCity) { // codul tău aici } console.clear() console.log(getRoute([ { from: 'Londra', to: 'Moscova' }, { from: 'NY', to: 'Londra' }, { from: 'Moscova', to: 'Sankt Petersburg' }, ], 'NY')); /* [ { from: 'NY', to: 'Londra' }, { from: 'Londra', to: 'Moscova' }, { from: 'Moscova', to: 'Sankt Petersburg' }, ] */

202

/** * Funcția `asyncAuth(callback)` acceptă un callback, în care * poate fi transmisă o eroare (ca primul argument) și date * din backend (ca al doilea argument). * asyncAuth((error, data) => {}); * * Trebuie să implementați funcția `auth()`, * care apelează `asyncAuth()`, dar returnează o promisiune. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * Funcția `tryAuth()` folosește `auth()` și, în caz de eroare, * face N încercări suplimentare. * Dacă toate eșuează, returnează ultima eroare. * * @returns {Promise} */ function tryAuth(n) { }

199

Pe ce altceva ați mai fost nevoit să scrieți în experiența dvs. comercială, în afară de TypeScript și JavaScript?

186

/** * Funcția 'asyncAuth(callback)' acceptă un callback, în care * poate fi transmisă o eroare (primul argument) și date * din backend (al doilea argument). * asyncAuth((error, data) => {}); * * Trebuie să implementați funcția 'auth()', * care apelează 'asyncAuth()', dar returnează o Promisiune. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * Funcția 'tryAuth()' folosește 'auth()' și, în caz de eroare, * face N încercări suplimentare. * Dacă toate eșuează, returnează ultima eroare. * * @returns {Promise} */ function tryAuth(n) { return new Promise((resolve, reject) => { function attempt(attemptsLeft) { auth().then(resolve).catch((error) => { if (attemptsLeft <= 0) { reject(error); } else { attempt(attemptsLeft - 1); } }); } attempt(n); }); }

186

Dacă trebuie să luăm în considerare numere fracționare, ce trebuie să adăugăm la metoda times?

182

/* Este nevoie de un polyfill pentru Array.prototype.some Parametri - callback - funcție care verifică fiecare element, acceptă trei argumente: - element - Elementul curent procesat în array. - index (Opțional) - Indicele elementului curent procesat. - array (Opțional) - Array-ul pe care se face iterația. - thisArg (Opțional) - Valoarea utilizată ca this în timpul executării funcției callback. Valoare de întoarcere true, dacă funcția de verificare returnează o valoare truthy pentru cel puțin un element din array. Altfel, false. */ Array.prototype.some = function (callback, thisArgs) { const array = this; for (let i = 0; i < array.length; i++) { if (!(i in array)) continue; const result = callback.call(thisArgs, array[i], i, array); if (result) return true; } return false; }

180

În ce echipă lucrați și la ce proiect?

174

Se poate rezolva o problemă de sumare a promisiunilor fără a folosi metode statice Promise? Cu ce diferă executarea promisiunilor în interiorul unui ciclu față de Promise.all — în paralel sau în serie?

170

Implementați un decorator callLimit(fn, limit, callback), care limitează numărul de apeluri ale funcției. Primește: funcția de decorat, numărul maxim de apeluri, un callback, apelat la ultima apelare (opțional). Funcția returnată trebuie să aibă o metodă reset pentru a reinițializa contorul la poziția inițială.

161

Există un copac pe care stau veverițe și corbi. Este necesar să scriem o funcție care găsește toate veverițele din copac și le returnează numele. Rezultatul așteptat: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

161

Stabilește ordinea de afișare în consolă și valorile timpului măsurat în exemplul cu sleep, temporizatoare, Promise și cozi de sarcini; explică de ce întârzierea reală poate fi mai mare decât cea setată.

161

Ce este de preferat pentru stocarea datelor după cheie: Map sau un obiect obișnuit? Care sunt avantajele Map?

159

/** * Este necesar să scrieți o funcție asincronă, * care va "doar" pentru numărul specificat de milisecunde, * și apoi se va încheia cu succes */ function sleep(duration) { } // Exemplu const startTime = Date.now(); console.log("Începem să dormim..."); sleep(2000).then(() => { console.log("S-a trezit după 2 secunde!"); console.log("Timpul trecut: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("S-a trezit după 1 secundă!"); console.log("Timpul trecut: ", Date.now() - startTime); });

155

Extindeți Array.prototype cu o metodă care grupează elementele array-ului după o cheie calculată de o funcție transmisă, și returnează un obiect în care fiecărei chei îi corespunde un array de elemente. Explicați ce se va întâmpla dacă funcția de calcul al cheii va returna ceva care nu este string sau număr.

155

// Ți se dă un șir format din litere latine, spații și semne de punctuație. // Un șir se numește pangram dacă conține cel puțin o dată fiecare dintre cele 26 de litere. Determină dacă șirul este pangram. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // codul tău aici } console.log(isPangram(`A pangram or holoalphabetic sentence is a using every letter of a given alphabet at least once.`)); // => console.log(isPangram('Waltz, bad nymph, for quick jigs vex.'))

153

/** * Implementați funcția wrapper runOnce, care acceptă * o funcție și returnează o funcție nouă. Funcția nouă * poate fi apelată o singură dată, toate apelurile * ulterioare returnează undefined. * * Funcția încapsulată poate accepta argumente * și returna un rezultat. */ function runOnce(fn) { // codul dvs. } const logHello = (name) => { console.log(`salut, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'salut, Oleg!' logHelloOnce('Olga'); // undefined

153
/6