Sobes.tech

Frontend

Ако функцията logHello е написана като стрелкова функция и се извиква чрез fn.call(this, ...args) вътре в runOnce, какво ще се случи с контекста this? Какво трябва да се промени във функцията logHello, за да се предава правилно контекстът?

243

Напишете функция за преобразуване на низ от camelCase в snake_case. Не трябва да се използват регулярни изрази, кодове на символи или строго зададен списък със символи; решението трябва да е универсално. Оценете времевата и пространствената сложност.

237

Защо при два извиквания sleep(2000) и sleep(1000) първо се показва лог за 1 секунда, а след това за 2? Обяснете работата на Event Loop, микро- и макро-задачите.

221

/* Имаме набор от билети във следния формат: [ { from: 'Лондон', to: 'Москва' }, { from: 'NY', to: 'Лондон' }, { from: 'Москва', to: 'Санкт Петербург' }, ... ] От тези билети може да се построи единствен маршрут без прекъсване. В маршрута няма цикли или повторения. Трябва да напишете програма, която връща същите тези обекти билети в реда на маршрута. */ function getRoute(tickets = [], startCity) { // вашият код тук } console.clear() console.log(getRoute([ { from: 'Лондон', to: 'Москва' }, { from: 'NY', to: 'Лондон' }, { from: 'Москва', to: 'Санкт Петербург' }, ], 'NY')); /* [ { from: 'NY', to: 'Лондон' }, { from: 'Лондон', to: 'Москва' }, { from: 'Москва', to: 'Санкт Петербург' }, ] */

217

Знания за бази данни и работа с API

217

/** * Функцията `asyncAuth(callback)` приема callback, в който * може да бъде предадена грешка (като първи аргумент) и данни * от бекенда (като втори аргумент). * asyncAuth((error, data) => {}); * * Трябва да реализирате функцията `auth()`, * която извиква `asyncAuth()`, но връща Promise. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * Функцията `tryAuth()` използва `auth()` и, в случай на грешка, * прави N допълнителни опита. * Ако всички се провалят, връща последната грешка. * * @returns {Promise} */ function tryAuth(n) { }

208

/* Трябва да се напише полифил за 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; }

195

Ако трябва да вземем предвид дробни числа, какво трябва да добавим към метода times?

193

На какво още е трябвало да пишете в своя търговски опит, освен TypeScript и JavaScript?

192

/** * Функцията 'asyncAuth(callback)' приема callback, в който * може да бъде предадена грешка (като първи аргумент) и данни * от бекенда (като втори аргумент). * asyncAuth((error, data) => {}); * * Трябва да реализирате функцията 'auth()', * която извиква 'asyncAuth()', но връща Promise. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * Функцията 'tryAuth()' използва 'auth()' и, в случай на грешка, * прави N допълнителни опита. * Ако всички се провалят, връща последната грешка. * * @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); }); }

192

В коя екип работите и по кой проект?

184

Може ли да се реши задача за сумиране на promises без използване на статични методи Promise? Какво ще се различава изпълнението на promises в цикъл от Promise.all — паралелно или последователно?

177

Определете реда на изход в конзолата и стойностите на измереното време в примера със sleep, таймери, Promise и опашки за задачи; обяснете защо реалната закъснение може да бъде по-голяма от зададената.

169

Има дърво, на което седят катерички и врани. Необходимо е да напишем функция, която намира всички катерички на дървото и връща техните имена. Очакван резултат: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

169

Какво е по-добре да използвате за съхраняване на данни по ключ: Map или обикновен обект? Какви са предимствата на Map?

169

/** * Реализирайте функцията runOnce, която приема * функция и връща нова функция. Новата * функция може да бъде извикана само веднъж, всички * последващи извиквания връщат undefined. * * Обвитата функция може да приема аргументи * и да връща резултат. */ function runOnce(fn) { // вашият код } const logHello = (name) => { console.log(`здравей, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'здравей, Oleg!' logHelloOnce('Olga'); // undefined

167

Реализирайте декоратор callLimit(fn, limit, callback), който ограничава броя на извикванията на функция. Приема: функция за декориране, максимален брой извиквания, callback, извикван при последното извикване (по избор). Връщаната функция трябва да има метод reset за нулиране на брояча в началното състояние.

167

Какво ви харесва и какво не ви харесва в работата ви в компанията?

164

/** * Необходимо да напишете асинхронна функция, * която ще "спи" зададеното количество милисекунди, * а след това успешно ще приключи */ 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); });

160

/** * Трябва да напишете функция strjoin, * която свързва низове чрез разделител. */ function strjoin() { // код тук } console.log(strjoin('.', 'a', 'b', 'c')) // 'a.b.c' console.log(strjoin('-', 'a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'

160
/6