Sobes.tech

Frontend

Wenn die Funktion logHello als Pfeilfunktion geschrieben ist und innerhalb von runOnce über fn.call(this, ...args) aufgerufen wird, was passiert mit dem Kontext this? Was muss in der Funktion logHello geändert werden, damit der Kontext korrekt weitergegeben wird?

233

Schreiben Sie eine Funktion, die eine Zeichenkette von camelCase in snake_case umwandelt. Es dürfen keine regulären Ausdrücke, Zeichencodes oder fest codierte Symbollisten verwendet werden; die Lösung muss universell sein. Bewerten Sie die zeitliche und räumliche Komplexität.

219

Warum wird bei zwei Aufrufen von sleep(2000) und sleep(1000) zuerst das Log über 1 Sekunde ausgegeben und dann das über 2 Sekunden? Erklären Sie die Funktionsweise der Event Loop, Mikro- und Makroaufgaben.

216

Kenntnisse in Datenbanken und Arbeit mit APIs

207

/* Wir haben eine Sammlung von Tickets in folgendem Format: [ { from: 'London', to: 'Moskau' }, { from: 'NY', to: 'London' }, { from: 'Moskau', to: 'Sankt Petersburg' }, ... ] Aus diesen Tickets kann man eine einzige, ununterbrochene Route erstellen. Es gibt keine Schleifen oder Wiederholungen in der Route. Es ist notwendig, ein Programm zu schreiben, das diese gleichen Ticket-Objekte in der Reihenfolge der Route zurückgibt. */ function getRoute(tickets = [], startCity) { // dein Code hier } console.clear() console.log(getRoute([ { from: 'London', to: 'Moskau' }, { from: 'NY', to: 'London' }, { from: 'Moskau', to: 'Sankt Petersburg' }, ], 'NY')); /* [ { from: 'NY', to: 'London' }, { from: 'London', to: 'Moskau' }, { from: 'Moskau', to: 'Sankt Petersburg' }, ] */

205

/** * Die Funktion `asyncAuth(callback)` akzeptiert einen Callback, in den * ein Fehler (als erstes Argument) und Daten * vom Backend (als zweites Argument) übergeben werden können. * asyncAuth((error, data) => {}); * * Du musst die Funktion `auth()` implementieren, * die `asyncAuth()` aufruft, aber ein Promise zurückgibt. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * Die Funktion `tryAuth()` nutzt `auth()` und, im Fehlerfall, * führt sie N zusätzliche Versuche durch. * Wenn alle Versuche fehlschlagen, gibt sie den letzten Fehler zurück. * * @returns {Promise} */ function tryAuth(n) { }

200

Worauf mussten Sie in Ihrer Berufserfahrung noch schreiben, neben TypeScript und JavaScript?

189

/** * Die Funktion 'asyncAuth(callback)' akzeptiert einen Callback, in den * ein Fehler (als erstes Argument) und Daten * vom Backend (als zweites Argument) übergeben werden können. * asyncAuth((error, data) => {}); * * Sie müssen die Funktion 'auth()' implementieren, * die 'asyncAuth()' aufruft, aber ein Promise zurückgibt. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * Die Funktion 'tryAuth()' verwendet 'auth()' und, im Fehlerfall, * führt N zusätzliche Versuche durch. * Wenn alle Versuche fehlschlagen, wird der letzte Fehler zurückgegeben. * * @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); }); }

187

Was müssen wir zur Methode times hinzufügen, wenn wir Bruchzahlen berücksichtigen müssen?

183

/* Es muss ein Polyfill für Array.prototype.some geschrieben werden Parameter - callback - Funktion, die jedes Element überprüft, nimmt drei Argumente an: - element - Das aktuell verarbeitete Element im Array. - index (Optional) - Der Index des aktuell verarbeiteten Elements. - array (Optional) - Das Array, über das iteriert wird. - thisArg (Optional) - Wert, der als this verwendet wird, wenn die callback-Funktion ausgeführt wird. Rückgabewert true, wenn die Überprüfungsfunktion für mindestens ein Element im Array einen truthy-Wert zurückgibt. Andernfalls 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; }

181

In welchem Team arbeiten Sie und an welchem Projekt?

174

Kann man eine Aufgabe zur Summierung von Promises ohne die Verwendung statischer Promise-Methoden lösen? Worin besteht der Unterschied zwischen der Ausführung von Promises innerhalb einer Schleife und Promise.all — parallel oder sequenziell?

170

Implementieren Sie einen Decorator callLimit(fn, limit, callback), der die Anzahl der Aufrufe einer Funktion begrenzt. Nimmt: eine zu dekorierende Funktion, die maximale Anzahl der Aufrufe, einen Callback, der beim letzten Aufruf aufgerufen wird (optional). Die zurückgegebene Funktion sollte eine Methode reset haben, um den Zähler auf den Anfangswert zurückzusetzen.

163

Es gibt einen Baum, auf dem Eichhörnchen und Krähen sitzen. Es ist notwendig, eine Funktion zu schreiben, die alle Eichhörnchen im Baum findet und ihre Namen zurückgibt. Erwartetes Ergebnis: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

162

Bestimmen Sie die Ausgabereihenfolge in der Konsole und die Werte der gemessenen Zeit im Beispiel mit sleep, Timern, Promise und Aufgabenwarteschlangen; erklären Sie, warum die tatsächliche Verzögerung größer sein kann als die eingestellte.

161

Was ist besser zum Speichern von Daten nach Schlüssel: Map oder ein normales Objekt? Was sind die Vorteile von Map?

160

/** * Es ist notwendig, eine asynchrone Funktion zu schreiben, * die "schläft" für die angegebene Anzahl von Millisekunden, * und dann erfolgreich endet */ function sleep(duration) { } // Beispiel const startTime = Date.now(); console.log("Schlaf beginnt..."); sleep(2000).then(() => { console.log("Aufgewacht nach 2 Sekunden!"); console.log("Verstrichene Zeit: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("Aufgewacht nach 1 Sekunde!"); console.log("Verstrichene Zeit: ", Date.now() - startTime); });

157

Erweitern Sie Array.prototype mit einer Methode, die die Elemente des Arrays nach einem Schlüssel gruppiert, der durch eine übergebene Funktion berechnet wird, und gibt ein Objekt zurück, bei dem jeder Schlüssel einem Array von Elementen entspricht. Erklären Sie, was passiert, wenn die Schlüsselberechnungsfunktion etwas zurückgibt, das kein String oder keine Zahl ist.

155

// Es wird eine Zeichenkette gegeben, die aus lateinischen Buchstaben, Leerzeichen und Satzzeichen besteht. // Eine Zeichenkette heißt Pangramm, wenn sie mindestens einmal jeden der 26 Buchstaben enthält. Bestimmen Sie, ob die Zeichenkette ein Pangramm ist. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // dein Code hier } 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

/** * Implementieren Sie die Wrapper-Funktion runOnce, die * eine Funktion akzeptiert und eine neue Funktion zurückgibt. * Die neue Funktion kann nur einmal aufgerufen werden, * alle nachfolgenden Aufrufe geben undefined zurück. * * Die eingewickelte Funktion kann Argumente akzeptieren * und ein Ergebnis zurückgeben. */ function runOnce(fn) { // dein Code } const logHello = (name) => { console.log(`hallo, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'hallo, Oleg!' logHelloOnce('Olga'); // undefined

153
/6