Ako je funkcija logHello napisana kao strelica i se poziva putem fn.call(this, ...args) unutar runOnce, šta će se desiti sa kontekstom this? Šta treba izmeniti u funkciji logHello da bi se kontekst ispravno prosledio?
Frontend
Napišite funkciju za pretvaranje niza iz camelCase u snake_case. Ne sme se koristiti regularni izrazi, kodovi karaktera ili čvrsto definisana lista simbola; rešenje mora biti univerzalno. Procijenite vremensku i prostornu složenost.
Zašto kada se pozivaju sleep(2000) i sleep(1000), prvo se prikazuje log za 1 sekundu, a zatim za 2? Objasnite rad Event Loop-a, mikro i makro zadataka.
Знање база података и рад са API-јима
/* Imamo skup karata u sledećem formatu: [ { from: 'London', to: 'Moskva' }, { from: 'NY', to: 'London' }, { from: 'Moskva', to: 'Sankt Peterburg' }, ... ] Iz ovih karata može se napraviti jedinstvena, neprekinuta ruta. Na ruti nema petlji ili ponavljanja. Potrebno je napisati program koji vraća iste te objekte karata u redosledu po ruti. */ function getRoute(tickets = [], startCity) { // vaš kod ovde } console.clear() console.log(getRoute([ { from: 'London', to: 'Moskva' }, { from: 'NY', to: 'London' }, { from: 'Moskva', to: 'Sankt Peterburg' }, ], 'NY')); /* [ { from: 'NY', to: 'London' }, { from: 'London', to: 'Moskva' }, { from: 'Moskva', to: 'Sankt Peterburg' }, ] */
/** * Funkcija `asyncAuth(callback)` prihvata callback, u koji * može biti prosleđena greška (kao prvi argument) i podaci * sa backend-a (kao drugi argument). * asyncAuth((error, data) => {}); * * Potrebno je implementirati funkciju `auth()`, * koja poziva `asyncAuth()`, ali vraća Promise. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * Funkcija `tryAuth()` koristi `auth()` i, u slučaju greške, * pravi N dodatnih pokušaja. * Ako svi ne uspeju, vraća poslednju grešku. * * @returns {Promise} */ function tryAuth(n) { }
/** * Funkcija 'asyncAuth(callback)' prihvata callback, u koji * može biti prosleđena greška (kao prvi argument) i podaci * sa backend-a (kao drugi argument). * asyncAuth((error, data) => {}); * * Morate implementirati funkciju 'auth()', * koja poziva 'asyncAuth()', ali vraća Promise. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * Funkcija 'tryAuth()' koristi 'auth()' i, u slučaju greške, * pravi N dodatnih pokušaja. * Ako svi ne uspeju, vraća poslednju grešku. * * @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); }); }
На чему још сте морали да пишете у вашем пословном искуству, поред TypeScript и JavaScript?
Šta treba dodati u metodu times ako treba uzeti u obzir razlomke?
/* Потребно је написати polyfill за Array.prototype.some Параметри - callback - функција која проверава сваки елемент, прихвата три аргумента: - element - Текущий обрађени елемент у низу. - index (Опционо) - Индекс тренутног обрађеног елемента. - array (Опционо) - Низ на којем се врши итерација. - thisArg (Опционо) - Вредност која се користи као this приликом извршавања callback функције. Враћена вредност true, ако функција провере врати вредност truthy за бар један елемент у низу. У супротном, 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; }
У коме тиму радите и на ком пројекту?
Da li je moguće rešiti zadatak sabiranja promise-ova bez korišćenja statičkih metoda Promise? Čime će se razlikovati izvršavanje promise-ova unutar petlje od Promise.all — paralelno ili sekvencijalno?
Na stablu sede vjeverice i vrane. Potrebno je napisati funkciju koja pronalazi sve vjeverice na stablu i vraća njihova imena. Očekivani rezultat: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].
Implementirati dekorator callLimit(fn, limit, callback), koji ograničava broj poziva funkciji. Prima: funkciju za dekorisanje, maksimalan broj poziva, callback, koji se poziva pri poslednjem pozivu (opciono). Vraćena funkcija treba da ima metodu reset za resetovanje brojača na početno stanje.
Odredite red izlaza u konzolu i vrednosti izmerenog vremena u primeru sa sleep, tajmerima, Promise i redovima zadataka; objasnite zašto stvarno kašnjenje može biti veće od postavljenog.
Шта је пожељније за чување података по кључу: Map или обичан објекат? Које су предности Map?
Proširite Array.prototype metodom koja grupiše elemente niza po ključu izračunatom pomoću prosleđene funkcije, i vraća objekat gde svakom ključu odgovara niz elemenata. Objasnite šta će se desiti ako funkcija za računanje ključa vrati nešto što nije string ili broj.
/** * Неопходно је написати асинхрону функцију, * која ће "спавати" задати број милисекунди, * а затим успешно завршити */ function sleep(duration) { } // Пример const startTime = Date.now(); console.log("Почетак спавања..."); sleep(2000).then(() => { console.log("Пробудио се после 2 секунде!"); console.log("Прошао време: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("Пробудио се после 1 секунде!"); console.log("Прошао време: ", Date.now() - startTime); });
// Dobijate niz sastavljen od latiničnih slova, razmaka i interpunkcijskih znakova. // Niz se naziva pangram ako sadrži bar jednom svako od 26 slova. Odredite da li je niz pangram. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // vaš kod ovde } 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.'))
/** * Implementirajte funkciju runOnce, koja prihvata * funkciju i vraća novu funkciju. Nova funkcija * može biti pozvana samo jednom, svi sledeći * pozivi vraćaju undefined. * * Uključena funkcija može prihvatiti argumente * i vratiti rezultat. */ function runOnce(fn) { // vaš kod } const logHello = (name) => { console.log(`zdravo, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'zdravo, Oleg!' logHelloOnce('Olga'); // undefined