Sobes.tech

Frontend

/** * On vajalik kirjutada asünkroonne funktsioon, * mis "magab" määratud millisekundite arv ning * seejärel edukalt lõpetab */ function sleep(duration) { } // Näide const startTime = Date.now(); console.log("Alustame magamist..."); sleep(2000).then(() => { console.log("Tõusin pärast 2 sekundit!"); console.log("Aeg läks: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("Tõusin pärast 1 sekund!"); console.log("Aeg läks: ", Date.now() - startTime); });

171

/** * Rakenda times metodi numbrilisele objektile. * Funktsioon peab vastu võtma callback ja kutsuma seda * määratud arv kordi koos jooksva iteratsiooni indeksiga. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Näited console.clear(); (3).times(console.log) // 0 // 1 // 2

171

Kuidas saab optimeerida intersection algoritmi?

171

On puu, millel istuvad pähklid ja korvid. On vaja kirjutada funktsioon, mis leiab kõik pähklid puu otsas ja tagastab nende nimed. Oodatav tulemus: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

171

Kui kaua te olete ettevõttes töötanud?

169

/* Kaks järjestatud nimekirja kasutajate online-oleku intervallidest päeva jooksul. Intervalli algus on rangelt väiksem lõppudest. Vajalik on arvutada intervallid, millal mõlemad kasutajad olid online. Intervallid on näidatud tundides, eeldades, et need võivad olla vahemikus 0 kuni 24. */ lõikumine( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] lõikumine( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function lõikumine(kasutaja1, kasutaja2) { // kirjuta oma kood siia }

168

/** * Vajadzētu uzrakstīt funkciju strjoin, * kas apvieno virknes ar atdalītāju. */ function strjoin() { // kods šeit } console.log(strjoin('a', 'b', 'c')) // 'a.b.c' console.log(strjoin('a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'

166

Kirjutage funktsioon strjoin ümber ilma rest-parameetrite kasutamiseta, selle asemel kasutades arguments objekti.

166

/* Kolm koodilõiku on antud. Tuleb kirjutada iga console.log tulemused. */ 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);

166

Kuidas muutub asümptootiline keerukus ja mälu kasutus ülesandes camelCase → snake_case, kui tulemus koostatakse stringide ühendamise teel selle asemel, et kasutada tähemärgi massiivi?

163

// On vaja rakstīt groupBy metodi, kas paplašina standartmetodes masīviem. // Metode jāatgriež grupētās masīva versiju - objektu, // kur katrs atslēga ir fn(arr[i]) funkcijas rezultāts, // un katra vērtība ir masīvs, kas satur visus sākotnējā masīva elementus ar šo atslēgu. // šeit rakstiet kodu // Piemērs 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 }] // } // Piemērs 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Piemērs 3 const array3 = [3.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 3: [3.3], // 1: [0.5, 1.4] // }

160

Reklaamivõrgu prototüübis on reklaamikohtade müük korraldatud järgmiselt: ostjad näitavad oma hinda ette ning iga reklaamikoha kohta vastavad nad, kas nad on valmis selle ostma või mitte. Vajalik on rakendada funktsioon, mis enne reklaamikoha müümist ootab kõrgeima pakkumisega ostjatelt nõusolekut või keeldumist ning seejärel müüb reklaamikoha kõrgeima pakkumisega ostjale nende hulgast, kes on nõus. Funktsiooni vastus peab olema võimalikult kiire. Tuleb tagastada ostja indeks. Näited: Ostjad pakuvad hindu 1, 5, 10 Ostja pakkumisega 10 vastas keeldumisega Ostja pakkumisega 1 vastas nõusolekuga // Me veel ootame, kuna võib vastata ostja pakkumisega 5 Ostja pakkumisega 5 vastas nõusolekuga // Valime ostja pakkumisega 5 ------------ Ostjad pakuvad hindu 1, 5, 10 Ostja pakkumisega 10 vastas keeldumisega Ostja pakkumisega 5 vastas nõusolekuga // Ei oota vastust ostjalt pakkumisega 1 - teda kindlasti ei valita ------------ Ostjad pakuvad hindu 1, 2 Ostja pakkumisega 1 vastas keeldumisega Ostja pakkumisega 2 vastas keeldumisega // Ei valita ühtegi ostjat type 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; }

160

// Teile antakse string, mis koosneb ladina tähtedest, tühikutest ja kirjavahemärkidest. // Stringi nimetatakse pangrammiks, kui see sisaldab vähemalt korra iga 26 tähe. Määrake, kas string on pangramm. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // teie kood siin } 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.'))

160

Kirjutage tries(n) funktsioon, mis kutsub välja funktsiooni aus kuni n korda: tagastab esimese edukat tulemuse ja kui kõik katsed ebaõnnestuvad, viskab välja viimase vea.

159

// iga väärtus on massiiv, mis sisaldab kõiki algse massiivi elemente selle võtme alusel. // siia sisestage kood // Näide 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 }] // } // Näide 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));

159

Miks ei saa kasutada noolefunktsiooni groupBy jaoks? Mis saab olema this noolel?

157

Miks on for...of TypeScriptis punane, kuid tavaline for mitte?

156

Millised on rekursiivse puu läbimise piirangud? Kuidas erineb sügavus- (DFS) ja laiendusläbimine (BFS)? Kuidas saab puu läbimise ilma rekursioonita rakendada?

155

function any(promises) { // sinu kood siin }

153

/* On vaja implementerida meetod intersection, mis laiendab standardseid kogude (Set) meetodeid. See meetod võtab sisendiks teise kogumi ja tagastab uue kogumi, mis on algse ja antud kogumi lõike, tähendab, sisaldab ainult neid elemente, mis on mõlemas kogumis. */ // sinu kood 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

153
/7