Ha a logHello függvény nyílfüggvényként van írva, és a runOnce belsejében fn.call(this, ...args) segítségével hívják, mi lesz a this kontextussal? Mit kell módosítani a logHello függvényben, hogy a kontextus helyesen átadódjon?
Frontend
Írjon egy függvényt, amely egy camelCase sztringet snake_case-re alakít át. Nem szabad reguláris kifejezéseket, karakterkódokat vagy merev kódolt szimbólumlistákat használni; a megoldásnak univerzálisnak kell lennie. Értékelje a idő- és térbeli összetettséget.
Miért jelenik meg először az 1 másodperces log, majd a 2 másodperces, amikor két alkalommal hívjuk meg a sleep(2000) és sleep(1000) függvényeket? Magyarázza el az Event Loop, mikro- és makro-feladatok működését.
Adatbázisok ismerete és API-k használata
/* Van egy jegytömbünk a következő formátumban: [ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'St. Petersburg' }, ... ] Ezekből a jegyekből egyetlen, megszakítás nélküli útvonal építhető fel. Az útvonalon nincsenek körök vagy ismétlések. Írjon egy programot, amely ugyanazokat a jegyobjektumokat visszaadja a útvonal sorrendjében. */ function getRoute(tickets = [], startCity) { // a kódját ide írja } console.clear() console.log(getRoute([ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'St. Petersburg' }, ], 'NY')); /* [ { from: 'NY', to: 'London' }, { from: 'London', to: 'Moscow' }, { from: 'Moscow', to: 'St. Petersburg' }, ] */
/** * Az `asyncAuth(callback)` függvény egy callback-et fogad, amelybe * hibát (első argumentumként) és adatokat * a backend-ről (második argumentumként) lehet átadni. * asyncAuth((error, data) => {}); * * Implementálnod kell az `auth()` függvényt, * amely meghívja az `asyncAuth()`-t, de Promise-t ad vissza. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * A `tryAuth()` függvény az `auth()`-t használja, és hibát esetén * N további próbálkozást tesz. * Ha mindegyik sikertelen, visszaadja az utolsó hibát. * * @returns {Promise} */ function tryAuth(n) { }
/* Szükség van egy polyfill írására az Array.prototype.some-hoz Paraméterek - callback - függvény, amely minden elemet ellenőriz, három argumentumot fogad: - element - A jelenleg feldolgozott elem a tömbben. - index (Opcionális) - A jelenleg feldolgozott elem indexe. - array (Opcionális) - A tömb, amin az iteráció történik. - thisArg (Opcionális) - Az érték, amit this-ként használunk a callback függvény végrehajtásakor. Visszatérési érték true, ha az ellenőrző függvény igaz értéket ad vissza legalább egy elemre a tömbben. Egyébként 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; }
Ha törtrészes számokat kell figyelembe vennünk, mit kell hozzáadni a times módszerhez?
/** * Az 'asyncAuth(callback)' függvény egy callback-et fogad, amelyben * átadható egy hiba (első argumentumként) és adatok * a backend-től (második argumentumként). * asyncAuth((error, data) => {}); * * Implementálnod kell az 'auth()' függvényt, * amely meghívja az 'asyncAuth()'-t, de Promise-t ad vissza. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * Az 'tryAuth()' függvény az 'auth()'-t használja, és hibás esetben * N további próbálkozást tesz. * Ha mind sikeretlen, visszaadja az utolsó hibát. * * @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); }); }
Mire kellett még írnia a kereskedelmi tapasztalatában, a TypeScript és JavaScript mellett?
Milyen csapatban dolgozik és melyik projekten?
Megoldható-e a promise-ok összegzésének feladata Promise statikus metódusok használata nélkül? Miben különbözik a promise-ok cikluson belüli végrehajtása a Promise.all-tól — párhuzamosan vagy sorban?
/** * Valósítsa meg a runOnce nevű wrapper függvényt, amely * egy függvényt fogad és egy újat ad vissza. Az új * függvény csak egyszer hívható meg, minden további * hívás undefined-et ad vissza. * * A becsomagolt függvény argumentumokat fogadhat * és eredményt adhat vissza. */ function runOnce(fn) { // a kódod } const logHello = (name) => { console.log(`szia, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'szia, Oleg!' logHelloOnce('Olga'); // undefined
Határozza meg a kimenet sorrendjét a konzolon, valamint a sleep, időzítők, Promise és feladatok sorai példában mért időértékeit; magyarázza el, miért lehet a tényleges késleltetés nagyobb, mint a beállított.
Mi a jobb az adatok kulcs szerinti tárolására: Map vagy egy szokásos objektum? Milyen előnyei vannak a Map-nek?
Implementáljon egy callLimit(fn, limit, callback) dekorátort, amely korlátozza a függvény hívásainak számát. Elfogad: egy dekorálandó függvényt, a maximális hívásszámot, egy callback-et, amely a legutolsó híváskor hívódik meg (opcionális). A visszatérő függvénynek rendelkeznie kell egy reset nevű módszerrel, amellyel újraindítható a számláló.
Van egy fa, amelyen mókusok és varjak ülnek. Meg kell írni egy függvényt, amely megtalálja az összes mókust a fán, és visszaadja a nevüket. Várt eredmény: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].
Mit szeretsz és mit nem szeretsz a cégnél végzett munkádban?
/** * Szükséges írni egy aszinkron funkciót, * amely a megadott millimásodpercig "alszik", * majd sikeresen befejeződik */ function sleep(duration) { } // Példa const startTime = Date.now(); console.log("Alvás kezdete..."); sleep(2000).then(() => { console.log("Felébredt 2 másodperc után!"); console.log("Eltelt idő: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("Felébredt 1 másodperc után!"); console.log("Eltelt idő: ", Date.now() - startTime); });
Bővítsd az Array.prototype-t egy olyan módszerrel, amely a tömb elemeit egy átadott függvény által számított kulcs szerint csoportosítja, és egy olyan objektumot ad vissza, ahol minden kulcshoz egy elem tömb tartozik. Magyarázd el, mi történik, ha a kulcs számítására szolgáló függvény nem stringet vagy számot ad vissza.