Sobes.tech

Frontend

/** * Izpildiet times metodi skaitliskajam objektam. * Funkcija jāņem callback un jāizsauc * noteikts reižu skaits ar pašreizējās iterācijas indeksu. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Piemēri console.clear(); (3).times(console.log) // 0 // 1 // 2

173

Kas jums patīk un kas nepatīk jūsu darbā uzņēmumā?

173

/** * Nepieciešams uzrakstīt funkciju strjoin, * kas savieno 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'

172

Ir koks koks, kurā sēž peles un vārnas. Ir nepieciešams uzrakstīt funkciju, kas atrod visus peles kokā un atgriež to vārdus. Sagaidāmais rezultāts: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

171

/* Trīs koda daļas ir dotas. Jāuzraksta katra console.log rezultāts. */ 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);

170

Kā mainīsies asymptotiskā sarežģītība un atmiņas patēriņš uzdevumā camelCase → snake_case, ja rezultāts tiek veidots, sasaistot virknes vietā, nevis rakstzīmju masīvā?

170

/* Divi sakārtoti saraksti ar intervāliem, kad lietotāji bija tiešsaistē dienas laikā. Intervāla sākums ir stingri mazāks par beigām. Jāskaita intervāli, kad abi lietotāji bija tiešsaistē. Intervāli ir norādīti stundās, pieņemot, ka tie var būt no 0 līdz 24. */ krustojums( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] krustojums( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function krustojums(lietotajs1, lietotajs2) { // ievadiet savu kodu šeit }

170

Pārrakstiet funkciju strjoin bez rest parametru izmantošanas, to vietā izmantojot arguments objektu.

168

Kāpēc for...of ir izcelts sarkanā krāsā TypeScript, bet parasts for — nē?

166

Implementējiet Array.prototype.groupBy metodi, kas atgriež strukturētu masīva objektu versiju, kur katrs atslēga ir rezultāts no piegādātās funkcijas izsaukuma, un vērtība ir masīvs elementu, kas atbilst šai atslēgai.

166

// Nepieciešams īstenot metodi groupBy, kas paplašina standartmetodes masīviem. // Metode jāatgriež grupēta masīva versija - objekts, // kur katrs atslēga ir rezultāts no izpildes funkcijas fn(arr[i]), // 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] // }

164

Reklāmas tīkla prototipā pārdošanas vietu pārdošana ir organizēta šādi: pircēji iepriekš norāda savu cenu, un katram reklāmas vietai atbild, vai viņi ir gatavi to iegādāties vai nē. Ir nepieciešams īstenot funkciju, kas pirms reklāmas vietas pārdošanas gaida augstākās likmes pircēju piekrišanu vai atteikumu, un pēc tam pārdod reklāmas vietu tam pircējam ar augstāko likmi no tiem, kas piekrita. Funkcijas atbilde jābūt pēc iespējas ātrākai. Jāatgriež pircēja indekss. Piemēri: Pircēji piedāvā cenas 1, 5, 10 Pircējs ar piedāvājumu 10 atbildēja ar atteikumu Pircējs ar piedāvājumu 1 atbildēja ar piekrišanu // Mēs vēl gaidām, jo var atbildēt pircējs ar cenu 5 Pircējs ar piedāvājumu 5 atbildēja ar piekrišanu // Izvēlamies pircēju ar piedāvājumu 5 ------------ Pircēji piedāvā cenas 1, 5, 10 Pircējs ar piedāvājumu 10 atbildēja ar atteikumu Pircējs ar piedāvājumu 5 atbildēja ar piekrišanu // Negaidām atbildi no pircēja ar piedāvājumu 1 - viņš noteikti netiks izvēlēts ------------ Pircēji piedāvā cenas 1, 2 Pircējs ar piedāvājumu 1 atbildēja ar atteikumu Pircējs ar piedāvājumu 2 atbildēja ar atteikumu // Neizvēlamies nevienu pircēju 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; }

162

function any(promises) { // tava kods šeit }

161

Uzrakstiet tries(n) funkciju, kas izsauc funkciju aus līdz n reizēm: atgriež pirmo veiksmīgo rezultātu, un ja visi mēģinājumi neizdodas — izmet pēdējo kļūdu.

161

Kāpēc nevar izmantot bultiņas funkciju groupBy? Kas būs this bultī?

161

// Jums ir dota rinda, kas sastāv no latīņu burtiem, tukšumiem un pieturzīmēm. // Rinda tiek saukta par pangramu, ja tā satur vismaz vienu reizi katru no 26 burtiem. Nosakiet, vai rinda ir pangramma. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // jūsu kods šeit } 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

/** * Izpildiet funkciju sumPromises, kas * pieņem solījumus kā argumentus un * atgriež to rezultātu summu. * * Funkcija var pieņemt jebkuru argumentu skaitu. * Jebkuru solījumu API var izmantot. */ // Šeit rakstiet kodu // Piemērs lietošanai const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); sumPromises(promise1, promise2).then(console.log); // 3

159

Uzrakstiet sleep funkciju, kas atgriež Promise un beidz darbu pēc norādītā milisekundu skaita.

159
/7