Sobes.tech

Frontend

Pentru fiecare dintre cele trei fragmente de cod JavaScript, determinați ce va fi afișat în consolă și explicați diferențele în comportamentul primitivelor, obiectelor și reasignărilor de referințe.

141

/** * Este necesar să scrieți o funcție asincronă, * care să "doarmă" timpul specificat în milisecunde, * și apoi să se încheie cu succes * / function sleep(duration) { } // Exemplu const startTime = Date.now(); console.log("încep să dorm..."); 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); });

141

Dată fiind o funcție sincronă și un timp în milisecunde. Este necesar să returnați o versiune nouă a acestei funcții, a cărei execuție este limitată de timpul specificat. Dacă funcția se execută în timpul stabilit, promisiunea se rezolvă cu datele obținute. Dacă nu, promisiunea este respinsă cu șirul 'time limit exceeded'.

141

/** * Implementați funcția sumPromises, care acceptă * promisiuni ca argumente și returnează suma * rezultatelor lor. * * Funcția poate accepta orice număr de argumente. * Se pot folosi orice API-uri de promisiuni. */ // Cod aici // Exemplu de utilizare const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); sumPromises(promise1, promise2).then(console.log); // 3

140

/** * Implementați funcția 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 tău } const logHello = (name) => { console.log(`salut, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'salut, Oleg!' logHelloOnce('Olga'); // undefined

140

/* Este necesar să scrieți o funcție pentru a calcula suma tuturor valorilor numerice dintr-un array. Valori numerice valide sunt, de asemenea, șiruri, care încep cu cifre. În acest caz, trebuie să folosiți această secvență inițială de cifre ca valoare numerică. Array-ul poate conține orice tipuri de date și nu trebuie să fie plat. **Nu trebuie să folosiți metode încorporate precum .flat, .flatMap** */ function sum(arr) { // ... } console.log(sum([1, 'x', '2x', ['3', ['x2', '5']]]));

140

Există probleme în adăugarea de noi metode la prototipurile obiectelor încorporate?

139

[nume] a întrebat: Cât timp a durat implementarea versiunii MVP a player-ului?

137

/** * Funcția `asyncAuth(callback)` acceptă un callback, în care pot fi * transmise 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) { }

135

Cum se transformă arguments într-un array în mod vechi (ES5), fără Array.from și operatorul spread?

134

Ce noutăți ale standardului ES6 sunt utilizate în codul scris? Ce este obiectul arguments și în ce se diferențiază de parametrii rest?

134

/** * Sunt trei secțiuni de cod date. Este necesar să scrieți rezultatul fiecărui console.log. */ var n = 1; function F(n) { n = 3; } F(n); console.log(n); var obj = { a: 1 }; function F1(o) { o.a = 5; } F1(obj); console.log(obj); var obj = { a: 1 }; function F2(o) { o = { hello: 1 }; } F2(obj); console.log(obj);

133

Puteți să ne vorbiți despre abordările arhitecturale pe care le-ați folosit în proiect? Sunteți familiarizat cu Feature-Sliced Design (FSD)?

133

[nume] a întrebat: Ai lucrat vreodată la optimizarea metricilor de viteză ale serviciilor?

130

[nume] a întrebat: Ai scris vreodată singur joburi suplimentare în pipeline?

130

[nume] a întrebat: Cum era în general organizat munca asupra unei sarcini specifice: cine o aducea și o pregătea, cum era procesul de aprobare, ce întrebări apăreau în timpul implementării și cum le rezolvați?

128

Ce se întâmplă dacă nu se curăță timeout-ul după executarea cu succes a funcției? Cum se poate remedia acest lucru și ce metodă de promisiune ar fi potrivită pentru a curăța timeout-ul în orice caz (și la succes, și la eroare)?

128

Implementați funcția withTimeout, care acceptă o funcție și un timp (în milisecunde) și returnează o funcție nouă. Dacă funcția inițială nu se execută în timpul stabilit, promisiunea trebuie să fie respinsă.

128

Implementați funcția asyncAuth cu o interfață de callback care returnează o Promisiune. Apoi, implementați funcția tryAuth(n), care folosește asyncAuth și, în caz de eroare, face n încercări suplimentare. Dacă toate încercările eșuează, returnează ultima eroare.

128

/** * 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() { // 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) { }

128
/7