/* Nepieciešams uzrakstīt funkciju, kas aprēķina visu skaitlisko vērtību summu masīvā. Derīgas skaitliskās vērtības ir arī virknes, kas sākas ar cipariem. Šajā gadījumā jāizmanto šī sākuma ciparu secība kā skaitliskā vērtība. Masīvs var saturēt jebkāda veida datus un nebūt vienkāršs. **Nav atļauts izmantot iebūvētos metodes kā .flat, .flatMap** */ function sum(arr) { // ... } console.log(sum([1, 'x', '2x', ['3', ['x2', '5']]]));
Frontend
Katram no trīs JavaScript koda fragmentiem nosakiet, kas tiks izvadīts konsolē, un paskaidrojiet primitivu, objektu un atsauču pārrakstīšanas uzvedības atšķirības.
/** * Nepieciešams uzrakstīt asīnhronu funkciju, * kura "gulēs" norādīto milisekunžu skaitu, * un pēc tam veiksmīgi noslēgs darbu * / function sleep(duration) { } // Piemērs const startTime = Date.now(); console.log("sāk gulēt..."); sleep(2000).then(() => { console.log("Pamodos pēc 2 sekundēm!"); console.log("Laiks paiet: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("Pamodos pēc 1 sekundes!"); console.log("Laiks paiet: ", Date.now() - startTime); });
Dota sinhroniska funkcija un laiks milisekundēs. Jāatgriež šīs funkcijas jauna versija, kuras izpilde ir ierobežota ar norēķināto laiku. Ja funkcija izpildās noteiktajā laikā, solījums tiek izpildīts ar iegūtajiem datiem. Ja nē, solījums tiek noraidīts ar virkni 'time limit exceeded'.
/** * Ieviesiet runOnce ietvara funkciju, kas * pieņem funkciju un atgriež jaunu funkciju. Jaunā * funkcija var tikt izsaukta tikai vienu reizi, visi * nākamie izsaukumi atgriež undefined. * * Ietvertā funkcija var pieņemt argumentus * un atgriezt rezultātu. */ function runOnce(fn) { // jūsu kods } const logHello = (name) => { console.log(`sveiki, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'sveiki, Oleg!' logHelloOnce('Olga'); // undefined
/** * Izpildiet funkciju sumPromises, kas * pieņem solījumus kā argumentus un * atgriež to rezultātu summu. * * Funkcija var pieņemt jebkādu argumentu skaitu. * Jūs varat izmantot jebkādu solījumu API. */ // Kods šeit // Piemērs lietošanai const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); sumPromises(promise1, promise2).then(console.log); // 3
Vai ir problēmas ar jaunu metožu pievienošanu iebūvēto objektu prototipiem?
/** * Trīs koda daļas ir dotas. Jāuzraksta katras console.log rezultāts. */ 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);
[vārds] jautāja: Cik ilgs laiks bija nepieciešams, lai īstenotu spēlētāja MVP versiju?
/** * `asyncAuth(callback)` funkcija pieņem callback, kurā * var tikt nodota kļūda (pirmais arguments) un dati * no backend (otrais arguments). * asyncAuth((error, data) => {}); * * Jums jāievieš `auth()` funkcija, * kas izsauc `asyncAuth()`, bet atgriež Promise. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * `tryAuth()` funkcija izmanto `auth()` un, ja ir kļūda, * veic N papildu mēģinājumus. * Ja visi mēģinājumi neizdodas, atgriež pēdējo kļūdu. * * @returns {Promise} */ function tryAuth(n) { }
Kuras no ES6 standarta jauninājumiem tiek izmantots rakstītajā kodā? Kas ir arguments objekts un kā tas atšķiras no rest parametriem?
Kā pārvērst arguments masīvā vecajā veidā (ES5), bez Array.from un spread operatora?
Vai jūs varat pastāstīt par arhitektūras pieejām, kuras izmantojāt projektā? Vai jūs esat iepazinies ar Feature-Sliced Design (FSD)?
[vārds] jautāja: Vai tu kādreiz pats uzrakstīji papildu darbus pipeline'ā?
[vārds] jautāja: Vai jūs kādreiz esat strādājis pie pakalpojumu ātruma metriku optimizēšanas?
[vārds] jautāja: Kā kopumā tika organizēts darbs pie konkrētas uzdevuma: kas to ieviesa un sagatavo, kā notika apstiprināšanas process, kādi jautājumi radās realizācijas laikā un kā jūs tos risinājāt?
Kas notiks, ja pēc funkcijas veiksmīgas izpildes netiks notīrīts timeout? Kā to labot un kura solījuma metode būtu piemērota timeout notīrīšanai jebkurā gadījumā (panākums un kļūda)?
Izpildiet withTimeout funkciju, kas pieņem funkciju un laiku (milisekundēs) un atgriež jaunu funkciju. Ja sākotnējā funkcija netiek izpildīta noteiktajā laikā, solījumam jābūt noraidītam.
Izpildiet asyncAuth funkciju ar callback saskarni, kas atgriež Promise. Tad izpildiet tryAuth(n) funkciju, kas izmanto asyncAuth un gadījumā kļūdas veic n papildu mēģinājumus. Ja visi mēģinājumi neizdodas, atgriež pēdējo kļūdu.
/** * `asyncAuth(callback)` funkcija pieņem callback, kurā * var tikt nodota kļūda (kā pirmais arguments) un dati * no backend (kā otrais arguments). * asyncAuth((error, data) => {}); * * Jums jāievieš funkcija `auth()`, * kas izsauc `asyncAuth()`, bet atgriež Promise. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * `tryAuth()` funkcija izmanto `auth()` un, gadījumā, ja ir kļūda, * veic N papildu mēģinājumus. * Ja visi mēģinājumi neizdodas, atgriež pēdējo kļūdu. * * @returns {Promise} */ function tryAuth(n) { }