/** * Implementeer de methode times voor een numeriek object. * De functie moet een callback accepteren en deze * het opgegeven aantal keren aanroepen met de huidige iteratie-index. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Voorbeelden console.clear(); (3).times(console.log) // 0 // 1 // 2
Frontend
Hoe kan het intersectie-algoritme worden geoptimaliseerd?
Wat vind je leuk en niet leuk aan je werk bij het bedrijf?
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'].
/* Drie code-secties worden gegeven. Schrijf het resultaat van elke console.log. */ var n = 1; function f(n) { n = 3; } f(n); console.log(n); // ?? // ---------------- var obj = { a: 1 }; function f1(o) { o.a = 5; } f1(obj); console.log(obj); // ?? // ---------------- var obj = { a: 1 }; function f2(o) { o = { hello: 1 }; } f2(obj);
/* Twee gesorteerde lijsten met intervallen van aanwezigheid van gebruikers gedurende de dag. Het begin van het interval is strikt minder dan het einde. Het is nodig om de intervallen te berekenen waarin beide gebruikers online waren. De intervallen worden in uren aangegeven, ervan uitgaande dat ze van 0 tot 24 kunnen zijn. */ snijpunt( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] snijpunt( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function snijpunt(gebruiker1, gebruiker2) { // schrijf hier je code }
Hoe lang werk je al in het bedrijf?
Hoe veranderen de asymptotische complexiteit en het geheugenverbruik in de taak camelCase → snake_case als het resultaat wordt opgebouwd door stringconcanatie in plaats van een tekenarray?
Herschrijf de functie strjoin zonder gebruik te maken van rest-parameters, gebruik in plaats daarvan het arguments-object.
/** * Het is nodig om een functie strjoin te schrijven, * die strings samenvoegt met een scheidingsteken. */ function strjoin() { // code hier } console.log(strjoin('a', 'b', 'c')) // 'a.b.c' console.log(strjoin('a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'
Waarom wordt for...of in het rood gemarkeerd in TypeScript, maar de gewone for niet?
Implementeer de methode Array.prototype.groupBy, die een gestructureerde versie van de array van objecten teruggeeft, waarbij elke sleutel het resultaat is van het aanroepen van de meegegeven functie, en de waarde een array van elementen die overeenkomen met die sleutel.
// Het is nodig om de method groupBy te implementeren, die de standaardmethoden van arrays uitbreidt. // De methode moet een gegroepeerde versie van de array teruggeven - een object, // waarin elke sleutel het resultaat is van het uitvoeren van de doorgegeven functie fn(arr[i]), // en elke waarde een array is die alle elementen van de oorspronkelijke array met die sleutel bevat. // code hier // Voorbeeld 1 const array1 = [ { id: 1 }, { id: 1 }, { id: 2 } ]; const fn = (item) => item.id; console.log(array1.groupBy(fn)); // { // 1: [{ id: 1 }, { id : 1 }], // 2: [{ id: 2 }] // } // Voorbeeld 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Voorbeeld 3 const array3 = [3.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 3: [3.3], // 1: [0.5, 1.4] // }
In een prototype van een advertentienetwerk werkt de verkoop van advertentieruimtes als volgt: kopers geven vooraf hun prijs op, en voor elke advertentieruimte antwoorden ze of ze deze willen kopen of niet. Het is nodig om een functie te implementeren die, voordat een advertentieruimte wordt verkocht, de acceptatie of weigering van de kopers met de hoogste biedingen afwacht, en vervolgens de advertentieruimte verkoopt aan de koper met de hoogste bieding onder degenen die hebben geaccepteerd. Het antwoord van de functie moet zo snel mogelijk worden teruggegeven. Het moet de index van de koper retourneren. Voorbeelden: Kopers bieden prijzen 1, 5, 10 De koper met bod 10 heeft geweigerd De koper met bod 1 heeft geaccepteerd // We wachten nog, omdat de koper met bod 5 nog kan antwoorden De koper met bod 5 heeft geaccepteerd // We kiezen de koper met bod 5 ------------ Kopers bieden prijzen 1, 5, 10 De koper met bod 10 heeft geweigerd De koper met bod 5 heeft geaccepteerd // We wachten niet meer op de koper met bod 1 - hij wordt zeker niet gekozen ------------ Kopers bieden prijzen 1, 2 De koper met bod 1 heeft geweigerd De koper met bod 2 heeft geweigerd // We kiezen geen koper interface Buyer { price: number; accepts: () => Promise<boolean>; } async function bestBuyer(buyers) { const sorted = buyers.map((buyer, index) => ({buyer, index})).sort((a, b) => a.buyer.price - b.buyer.price); const promise = sorted.map(({buyer}) => buyer.accepts()); for (let i = 0; i < sorted.length; i++) { const accepted = await promise[i]; if (accepted) { return sorted[i].index; } } if (await buyers[0].accepts()) { return 0; } return -1; }
function any(promises) { // jouw code hier }
Schrijf een functie tries(n), die de functie aus tot n keer aanroept: geeft het eerste succesvolle resultaat terug, en als alle pogingen mislukken, gooit de laatste fout.
Waarom kun je geen pijlfunctie gebruiken voor groupBy? Wat wordt this in de pijl?
// 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.'))
// en elke waarde is een array die alle elementen van de oorspronkelijke array met deze sleutel bevat. // code hier // Voorbeeld 1 const array1 = [ { id: 1 }, { id: 1 }, { id: 2 } ]; const fn = (item) => item.id; console.log(array1.groupBy(fn)); // { // 1: [{ id: 1 }, { id: 1 }], // 2: [{ id: 2 }] // } // Voorbeeld 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));
Wat zijn de beperkingen van de recursieve boomdoorloop? Hoe verschilt diepte-eerst zoeken (DFS) van breedte-eerst zoeken (BFS)? Hoe kun je een boomdoorloop zonder recursie implementeren?