Als de functie logHello als pijlfunctie is geschreven en wordt aangeroepen via fn.call(this, ...args) binnen runOnce, wat gebeurt er dan met de context this? Wat moet er worden gewijzigd in de functie logHello zodat de context correct wordt doorgegeven?
Frontend
Schrijf een functie om een string van camelCase naar snake_case te converteren. Gebruik geen reguliere expressies, tekencodes of een vaste lijst symbolen; de oplossing moet universeel zijn. Evalueer de tijd- en ruimtecomplexiteit.
Waarom wordt bij twee oproepen sleep(2000) en sleep(1000) eerst de log over 1 seconde weergegeven, en daarna over 2 seconden? Leg de werking uit van de Event Loop, micro- en macro-taken.
/* We hebben een set tickets in de volgende vorm: [ { from: 'Londen', to: 'Moskou' }, { from: 'NY', to: 'Londen' }, { from: 'Moskou', to: 'Sint-Petersburg' }, ... ] Van deze tickets kan één ononderbroken route worden gebouwd. Er zijn geen lussen of herhalingen in de route. Je moet een programma schrijven dat dezezelfde ticketobjecten in de volgorde van de route teruggeeft. */ function getRoute(tickets = [], startCity) { // jouw code hier } console.clear() console.log(getRoute([ { from: 'Londen', to: 'Moskou' }, { from: 'NY', to: 'Londen' }, { from: 'Moskou', to: 'Sint-Petersburg' }, ], 'NY')); /* [ { from: 'NY', to: 'Londen' }, { from: 'Londen', to: 'Moskou' }, { from: 'Moskou', to: 'Sint-Petersburg' }, ] */
Kennis van databases en werken met API's
/** * De functie `asyncAuth(callback)` accepteert een callback, waarin * een fout (als eerste argument) en gegevens * van de backend (als tweede argument) kunnen worden doorgegeven. * asyncAuth((error, data) => {}); * * Je moet de functie `auth()` implementeren, * die `asyncAuth()` aanroept, maar een Promise retourneert. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * De functie `tryAuth()` gebruikt `auth()` en, in geval van fout, * voert N extra pogingen uit. * Als alle pogingen falen, retourneert het de laatste fout. * * @returns {Promise} */ function tryAuth(n) { }
/** * De functie 'asyncAuth(callback)' accepteert een callback, waarin * een fout (als eerste argument) en gegevens * van de backend (als tweede argument) kunnen worden doorgegeven. * asyncAuth((error, data) => {}); * * Je moet de functie 'auth()' implementeren, * die 'asyncAuth()' aanroept, maar een Promise teruggeeft. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * De functie 'tryAuth()' gebruikt 'auth()' en, in geval van fout, * doet N extra pogingen. * Als alle pogingen falen, geeft het de laatste fout terug. * * @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); }); }
Waarop moest je nog meer schrijven in je commerciële ervaring, naast TypeScript en JavaScript?
Als we breukgetallen moeten overwegen, wat moeten we toevoegen aan de times-methode?
/* Er moet een polyfill geschreven worden voor Array.prototype.some Parameters - callback - functie die elk element controleert, accepteert drie argumenten: - element - Het huidige verwerkte element in de array. - index (Optioneel) - De index van het huidige verwerkte element. - array (Optioneel) - De array waarop wordt geïtereerd. - thisArg (Optioneel) - Waarde die wordt gebruikt als this bij het uitvoeren van de callback-functie. Return-waarde true, als de controlefunctie voor ten minste één element een truthy waarde retourneert. Anders, 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; }
In welk team werk je en aan welk project?
Is het mogelijk om een taak voor het optellen van promises op te lossen zonder gebruik te maken van statische Promise-methoden? Hoe verschilt de uitvoering van promises binnen een lus van Promise.all — parallel of sequentieel?
Er is een boom waarop eekhoorns en raven zitten. Het is nodig om een functie te schrijven die alle eekhoorns in de boom vindt en hun namen teruggeeft. Verwachte resultaat: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].
Implementeer een decorateur callLimit(fn, limit, callback), die het aantal aanroepen van een functie beperkt. Neemt: een functie om te decoreren, het maximale aantal aanroepen, een callback die wordt aangeroepen bij de laatste aanroep (optioneel). De geretourneerde functie moet een reset-methode hebben om de teller terug te zetten naar de beginstand.
Bepaal de uitvoervolgorde in de console en de waarden van de gemeten tijd in het voorbeeld met sleep, timers, Promise en taakwachtrijen; leg uit waarom de werkelijke vertraging groter kan zijn dan ingesteld.
Wat is beter om gegevens per sleutel op te slaan: Map of een gewoon object? Wat zijn de voordelen van Map?
/** * Het is nodig om een asynchrone functie te schrijven, * die "slaapt" voor de opgegeven hoeveelheid milliseconden, * en daarna succesvol eindigt */ function sleep(duration) { } // Voorbeeld const startTime = Date.now(); console.log("Begin met slapen..."); sleep(2000).then(() => { console.log("Wakker na 2 seconden!"); console.log("Verstreken tijd: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("Wakker na 1 seconde!"); console.log("Verstreken tijd: ", Date.now() - startTime); });
Wat vind je leuk en niet leuk aan je werk bij het bedrijf?
Breid Array.prototype uit met een methode die de elementen van de array groepeert op een sleutel die wordt berekend door een meegegeven functie, en retourneert een object waarin elke sleutel overeenkomt met een array van elementen. Leg uit wat er gebeurt als de sleutelberekeningsfunctie iets teruggeeft dat geen string of nummer is.
// Je krijgt een string bestaande uit Latijnse letters, spaties en leestekens. // Een string wordt een pangram genoemd als deze ten minste één keer elke van de 26 letters bevat. Bepaal of de string een pangram is. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // jouw 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.'))