Sobes.tech

Frontend

Jeśli funkcja logHello jest napisana jako funkcja strzałkowa i jest wywoływana przez fn.call(this, ...args) wewnątrz runOnce, co się stanie z kontekstem this? Co należy zmienić w funkcji logHello, aby kontekst był poprawnie przekazywany?

228

Napisz funkcję konwersji ciągu z camelCase na snake_case. Nie można używać wyrażeń regularnych, kodów znaków ani sztywno zdefiniowanej listy symboli; rozwiązanie musi być uniwersalne. Oceń złożoność czasową i pamięciową.

215

Dlaczego przy dwóch wywołaniach sleep(2000) i sleep(1000) najpierw wyświetla się log o 1 sekundzie, a potem o 2? Wyjaśnij działanie Event Loop, mikro- i makro-zadań.

211

/** * Funkcja `asyncAuth(callback)` przyjmuje callback, do którego * można przekazać błąd (pierwszy argument) i dane * z backendu (drugi argument). * asyncAuth((error, data) => {}); * * Musisz zaimplementować funkcję `auth()`, * która wywołuje `asyncAuth()`, ale zwraca Promise. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * Funkcja `tryAuth()` korzysta z `auth()` i, w przypadku błędu, * wykonuje N dodatkowych prób. * Jeśli wszystkie się nie powiodą, zwraca ostatni błąd. * * @returns {Promise} */ function tryAuth(n) { }

199

/* Mamy zestaw biletów w następującym formacie: [ { from: 'Londyn', to: 'Moskwa' }, { from: 'NY', to: 'Londyn' }, { from: 'Moskwa', to: 'Sankt Petersburg' }, ... ] Z tych biletów można zbudować jedną, nieprzerwaną trasę. Na trasie nie ma pętli ani powtórzeń. Należy napisać program, który zwróci te same obiekty biletów w kolejności zgodnej z trasą. */ function getRoute(tickets = [], startCity) { // Twój kod tutaj } console.clear() console.log(getRoute([ { from: 'Londyn', to: 'Moskwa' }, { from: 'NY', to: 'Londyn' }, { from: 'Moskwa', to: 'Sankt Petersburg' }, ], 'NY')); /* [ { from: 'NY', to: 'Londyn' }, { from: 'Londyn', to: 'Moskwa' }, { from: 'Moskwa', to: 'Sankt Petersburg' }, ] */

199

/** * Funkcja 'asyncAuth(callback)' przyjmuje callback, do którego * można przekazać błąd (pierwszy argument) i dane * z backendu (drugi argument). * asyncAuth((error, data) => {}); * * Musisz zaimplementować funkcję 'auth()', * która wywołuje 'asyncAuth()', ale zwraca Promise. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * Funkcja 'tryAuth()' korzysta z 'auth()' i, w przypadku błędu, * wykonuje N dodatkowych prób. * Jeśli wszystkie zawiodą, zwraca ostatni błąd. * * @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); }); }

186

Na czym jeszcze musiałeś pisać w swoim doświadczeniu zawodowym, oprócz TypeScript i JavaScript?

185

Co należy dodać do metody times, jeśli musimy uwzględnić liczby ułamkowe?

181

/* Potrzebny jest polyfill dla Array.prototype.some Parametry - callback - funkcja sprawdzająca każdy element, przyjmuje trzy argumenty: - element - Aktualny element przetwarzany w tablicy. - index (Opcjonalny) - Indeks aktualnie przetwarzanego elementu. - array (Opcjonalny) - Tablica, po której odbywa się iteracja. - thisArg (Opcjonalny) - Wartość używana jako this podczas wywoływania funkcji callback. Wartość zwracana true, jeśli funkcja sprawdzająca zwraca wartość truthy dla przynajmniej jednego elementu tablicy. W przeciwnym razie 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; }

180

W jakim zespole pracujesz i nad jakim projektem?

174

Czy można rozwiązać zadanie sumowania promes bez użycia statycznych metod Promise? Czym różni się wykonanie promes w pętli od Promise.all — równolegle czy kolejno?

170

Na drzewie siedzą wiewiórki i wrony. Należy napisać funkcję, która znajdzie wszystkie wiewiórki na drzewie i zwróci ich imiona. Oczekiwany wynik: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

161

Określ kolejność wyświetlania w konsoli i wartości zmierzonego czasu w przykładzie z sleep, timerami, Promise i kolejkami zadań; wyjaśnij, dlaczego rzeczywiste opóźnienie może być większe niż ustawione.

161

Zaimplementuj dekorator callLimit(fn, limit, callback), który ogranicza liczbę wywołań funkcji. Przyjmuje: funkcję do dekorowania, maksymalną liczbę wywołań, callback wywoływany przy ostatnim wywołaniu (opcjonalnie). Zwracana funkcja powinna mieć metodę reset do zresetowania licznika do stanu początkowego.

160

Co jest lepsze do przechowywania danych po kluczu: Map czy zwykły obiekt? Jakie są zalety Map?

159

Rozszerz Array.prototype metodą, który grupuje elementy tablicy według klucza obliczanego za pomocą przekazanej funkcji, i zwraca obiekt, w którym każdemu kluczowi odpowiada tablica elementów. Wyjaśnij, co się stanie, jeśli funkcja obliczająca klucz zwróci coś, co nie jest stringiem ani liczbą.

155

// Dana jest linia składająca się z liter łacińskich, spacji i znaków interpunkcyjnych. // Linia nazywa się pangramem, jeśli zawiera co najmniej raz każdą z 26 liter. Określ, czy linia jest pangramem. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // twoj kod tutaj } 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.'))

153

/** * Należy napisać asynchroniczną funkcję, * która będzie "spać" określoną liczbę milisekund, * a następnie pomyślnie się zakończy */ function sleep(duration) { } // Przykład const startTime = Date.now(); console.log("Rozpoczęcie snu..."); sleep(2000).then(() => { console.log("Obudziłem się po 2 sekundach!"); console.log("Czas upłynął: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("Obudziłem się po 1 sekundzie!"); console.log("Czas upłynął: ", Date.now() - startTime); });

153

/** * Zaimplementuj funkcję opakowującą runOnce, która przyjmuje * funkcję i zwraca nową funkcję. Nowa funkcja * może być wywołana tylko raz, wszystkie kolejne * wywołania zwracają undefined. * * Opakowana funkcja może przyjmować argumenty * i zwracać wynik. */ function runOnce(fn) { // twój kod } const logHello = (name) => { console.log(`cześć, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'cześć, Oleg!' logHelloOnce('Olga'); // undefined

153
/6