/** * Zaimplementuj funkcję sumPromises, która przyjmuje * obietnice jako argumenty i zwraca sumę * wyników ich realizacji. * * Funkcja może przyjąć dowolną liczbę argumentów. * Możesz używać dowolnego API obietnic. */ // Kod tutaj // Przykład użycia const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); sumPromises(promise1, promise2).then(console.log); // 3
Frontend
/* Należy zaimplementować metodę intersection, rozszerzającą standardowe metody zbiorów (Set). Metoda przyjmuje inny zbiór jako argument i zwraca nowy zbiór, który jest częścią wspólną oryginalnego zbioru i przekazanego, czyli zawiera tylko te elementy, które występują w obu zbiorach. */ // twoj kod const set1 = new Set([1, 2, 3, 4]); const set2 = new Set([3, 4, 5, 6, 7, 8]); console.log(...set1.intersection(set2)) // 3 4 --- Set.prototype.intersection = function (set2) { const result = new Set(); for(const value of this) { if (set2.has(value)) result.add(value); } return result; } const set1 = new Set([1, 2, 3, 4]); const set2 = new Set([3, 4, 5, 6, 7, 8]); console.log(...set1.intersection(set2)) // 3 4
Jakie są ograniczenia rekurencyjnego przeszukiwania drzewa? Czym różni się przeszukiwanie w głębokości (DFS) od przeszukiwania wszerz (BFS)? Jak można zaimplementować przeszukiwanie drzewa bez rekurencji?
Jak jeszcze można uzyskać wartość numeryczną z this (oprócz Number(this))?
Wyjaśnij, co się stanie z opakowaniem Promise, jeśli asyncCall przez pomyłkę wywoła przekazany callback kilka razy: najpierw z błędem, potem z danymi, a następnie ponownie z błędem.
/** * Zaimplementuj funkcję compose, która przyjmuje * dowolną liczbę funkcji i zwraca nową funkcję. * Wynik działania każdej funkcji jest przekazywany do następnej. */ // Kod tutaj const square = (x) => x * x; const times2 = (x) => x * 2; const sum = (a, b) => a + b; console.clear(); console.log(compose(square, times2)(2) === square(times2(2))); console.log(compose(square, times2, sum)(3, 4) === square(times2(sum(3, 4))));
Jak można przekształcić pseudo-tablicę arguments w prawdziwą tablicę? Wymień kilka sposobów.
Jakie inne metody API Promise znasz oprócz Promise.all?
Gdzie w prawdziwej aplikacji mogłaby się przydać funkcja callLimit z możliwością resetowania licznika?
Czym różni się sprawdzanie 'key in result' od 'result.hasOwnProperty(key)'?
Zaimplementuj funkcję sumPromises, która przyjmuje jako argumenty obietnice i zwraca sumę ich wyników. Funkcja może przyjmować dowolną liczbę argumentów, można używać dowolnych API obietnic.
Dlaczego czas wykonania sleep nie jest dokładnie 1000 i 2000 milisekund, lecz nieco dłuższy? Co wpływa na opóźnienie?
9. Kopiowanie Podczas egzaminu profesor Floyd zauważył, że niektórzy studenci wymieniają się notatkami. Na początku chciał wszystkim wystawić dwójki, ale profesor był uprzejmy, więc postanowił podzielić studentów na dwie grupy: tych, którzy pozwalają na kopiowanie, i tych, którym wystawia się tylko dwójki na początku. Profesor zanotował wszystkie pary studentów, którzy wymieniali się notatkami. Należy ustalić, czy można podzielić studentów na dwie grupy tak, aby każda wymiana notatek odbywała się od studenta jednej grupy do studenta drugiej grupy. Format wejścia W pierwszej linii znajdują się dwie liczby N i M — liczba studentów i liczba par studentów wymieniających się notatkami (1 ≤ N ≤ 10^2, 0 ≤ M ≤ N(N-1)/2). Następnie, w M liniach, opisane są pary studentów: dwie liczby odpowiadające numerom studentów wymieniających się notatkami (numeracja studentów zaczyna się od 1, każda para studentów jest wymieniona nie więcej niż raz). Format wyjścia Należy wyświetlić odpowiedź na zadanie profesora Floyd. Jeśli możliwe jest podzielenie studentów na dwie grupy, wypisz YES; w przeciwnym razie, NO.
[imię] zapytał: W przypadku równoległego rozwoju, czy wykonawcy wyjaśniali sami umowy?
Określić, czy ciąg jest 'pangramem' — ciągiem zawierającym każdą literę alfabetu przynajmniej raz.
Dlaczego używa się Array.prototype.slice.call(arguments)? Jak działają call i apply?
/** * Zaimplementuj funkcję isMonotonic, która przyjmuje * tablicę liczb i określa, czy jest ona * monotoniczna (nie rosnąca lub nie malejąca). * * @param {Array<number>} numbers - tablica liczb * @return {boolean} - true, jeśli tablica jest monotoniczna, w przeciwnym razie false */ function isMonotonic(numbers) { // twój kod tutaj }
Opowiedz o swoim obecnym miejscu pracy i projekcie
Przepisz funkcję strjoin na ES5 bez operatora rest
Dana jest funkcja synchroniczna i czas w milisekundach. Należy zwrócić nową wersję tej funkcji, której wykonanie będzie ograniczone określonym czasem. Jeśli funkcja wykona się w wyznaczonym czasie — promesa zostanie rozwiązana z uzyskanymi danymi. Jeśli nie, promesa zostanie odrzucona z tekstem 'time limit exceeded'.