Ja funkcija logHello irrakstīta kā bultiņas funkcija un tiek izsaukta caur fn.call(this, ...args) iekšā runOnce, kas notiks ar this kontekstu? Ko vajag mainīt logHello funkcijā, lai konteksts tiktu pareizi pārsūtīts?
Frontend
Uzrakstiet funkciju, kas pārvērš virkni no camelCase uz snake_case. Nedrīkst izmantot regulāras izteiksmes, rakstzīmju kodus vai stingri noteiktu simbolu sarakstu; risinājumam jābūt universālam. Novērtējiet laika un atmiņas sarežģītību.
Kāpēc, veicot divas izsaukšanas sleep(2000) un sleep(1000), vispirms tiek parādīts 1 sekundes logs, bet pēc tam 2? Izskaidrojiet Event Loop, mikro- un makro uzdevumu darbību.
Zināšanas par datu bāzēm un darbu ar API
/* Mums ir komplekts biļešu šādā formātā: [ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'Saint Petersburg' }, ... ] No šiem biļetiem var uzbūvēt vienu nepārtrauktu maršrutu. Maršrutā nav loku vai atkārtojumu. Jāuzraksta programma, kas atgriež šos pašus biļešu objektus saskaņā ar maršruta secību. */ function getRoute(tickets = [], startCity) { // jūsu kods šeit } console.clear() console.log(getRoute([ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'Saint Petersburg' }, ], 'NY')); /* [ { from: 'NY', to: 'London' }, { from: 'London', to: 'Moscow' }, { from: 'Moscow', to: 'Saint Petersburg' }, ] */
/** * `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ārealizē 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) { }
/** * Funkcija 'asyncAuth(callback)' pieņem callback, kurā * var tikt nodota kļūda (kā pirmais arguments) un dati * no backend (kā otrais arguments). * asyncAuth((error, data) => {}); * * Jums jārealizē funkcija 'auth()', * 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) } }); }) } /** * Funkcija 'tryAuth()' 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) { return new Promise((resolve, reject) => { function attempt(attemptsLeft) { auth().then(resolve).catch((error) => { if (attemptsLeft <= 0) { reject(error); } else { attempt(attemptsLeft - 1); } }); } attempt(n); }); }
Par ko vēl jums nācās rakstīt savā komerciālajā pieredzē, papildus TypeScript un JavaScript?
Ja mums jāņem vērā daļskaitļi, ko vajadzētu pievienot metodei times?
/* Nepieciešams uzrakstīt polyfill funkcijai Array.prototype.some Parametri - callback - funkcija, kas pārbauda katru elementu, pieņem trīs argumentus: - element - Pašreizējais apstrādātais elements masīvā. - index (Neobligāti) - Pašreizējā apstrādātā elementa indekss. - array (Neobligāti) - Masīvs, uz kura tiek veikta iterācija. - thisArg (Neobligāti) - Vērtība, kas tiek izmantota kā this funkcijas callback izpildes laikā. Atgriežamā vērtība true, ja pārbaudes funkcija atgriež truthy vērtību vismaz vienam masīva elementam. Pretējā gadījumā - 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; }
Kādā komandā jūs strādājat un pie kā projekta?
Vai ir iespējams atrisināt solījumu summēšanas uzdevumu bez statisko Promise metožu izmantošanas? Kā atšķirsies solījumu izpilde ciklā no Promise.all — paralēli vai secīgi?
Ir koks koks, kurā sēž peles un vārnas. Ir nepieciešams uzrakstīt funkciju, kas atrod visus peles kokā un atgriež to vārdus. Sagaidāmais rezultāts: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].
Noteikt konsoles izvades kārtību un mērītā laika vērtības piemēram ar sleep, taimeriem, Promise un uzdevumu rindām; izskaidrojiet, kāpēc faktiskā aizkave var būt lielāka par iestatīto.
Izstrādājiet callLimit(fn, limit, callback) dekoratoru, kas ierobežo funkcijas izsaukšanas skaitu. Pieņem: funkciju dekorēšanai, maksimālo izsaukumu skaitu, callback, kas tiek izsaukts pēdējā izsaukumā (neobligāti). Atgrieztajai funkcijai jābūt reset metodam, kas atiestatīs skaitītāju uz sākotnējo stāvokli.
Ko labāk izmantot datu glabāšanai pēc atslēgas: Map vai parasts objekts? Kādas ir Map priekšrocības?
Paplašiniet Array.prototype ar metodi, kas grupē masīva elementus pēc atslēgas, kas aprēķināta ar nodoto funkciju, un atgriež objektu, kur katrai atslēgai atbilst elementu masīvs. Izskaidrojiet, kas notiks, ja atslēgas aprēķina funkcija atgriezīs kaut ko, kas nav virkne vai skaitlis.
// Jums ir dota rinda, kas sastāv no latīņu burtiem, tukšumiem un pieturzīmēm. // Rinda tiek saukta par pangramu, ja tā satur vismaz vienu reizi katru no 26 burtiem. Nosakiet, vai rinda ir pangramma. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // jūsu kods šeit } 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.'))
/** * Nepieciešams uzrakstīt asīnhronu funkciju, * kas "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ākam 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); });
/** * Ieviesiet runOnce ietvara funkciju, kas pieņem * funkciju un atgriež jaunu funkciju. Jaunā funkcija * var tikt izsaukta tikai vienu reizi, visi turpmākie * izsaukumi atgriež undefined. * * Ietinētā 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