Kas jums patinka ir kas nepatinka jūsų darbe įmonėje?
Frontend
Kaip galima optimizuoti sankirtos algoritmą?
/** * Įgyvendinkite times metodą skaičiaus objektui. * Funkcija turi priimti callback ir jį iškviesti * nurodytu kartų skaičiumi su einamojo iteracijos indeksu. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Pavyzdžiai console.clear(); (3).times(console.log) // 0 // 1 // 2
Yra medis, kuriyə siçanlar və qarqalar otururlar. Lazımdır yazmaq bir funksiya, hansı tapır bütün siçanlar ağacda və geri qaytarır onların adlarını. Gözlənilən nəticə: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].
Kiek laiko dirbate įmonėje?
/** * Reikia parašyti funkciją strjoin, * kuri sujungia eilutes per skiriamąjį ženklą. */ function strjoin() { // kodas čia } console.log(strjoin('a', 'b', 'c')) // 'a.b.c' console.log(strjoin('a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'
/* Dvi surūšiuotos sąrašai su intervalais, kai vartotojai buvo prisijungę per dieną. Intervalio pradžia yra griežtai mažesnė už pabaigą. Reikia apskaičiuoti intervalus, kai abu vartotojai buvo prisijungę. Intervalai nurodyti valandomis, laikant, kad jie gali būti nuo 0 iki 24. */ sankirta( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] sankirta( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function sankirta(vartotojas1, vartotojas2) { // įrašykite savo kodą čia }
/* Du skirtingi kodo skyriai. Reikia užrašyti kiekvieno console.log rezultatą. */ 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);
Perrašykite funkciją strjoin be rest parametrų naudojimo, vietoje jų naudodami arguments objektą.
Kaip pasikeis asimptotinė sudėtingumas ir atminties suvartojimas užduotyje camelCase → snake_case, jei rezultatas yra sukurtas sujungiant eilutes vietoj simbolių masyvo?
Kodėl for...of pažymėtas raudona TypeScript'e, o įprastas for — ne?
// Reikia įgyvendinti groupBy metodą, kuris išplečia standartinius masyvų metodus. // Šis metodas turėtų grąžinti grupuotą masyvo versiją - objektą, // kuriame kiekvienas raktas yra funkcijos fn(arr[i]) vykdymo rezultatas, // o kiekviena reikšmė yra masyvas, kuriame yra visi pradinio masyvo elementai su šiuo raktu. // čia rašykite kodą // Pavyzdys 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 }] // } // Pavyzdys 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Pavyzdys 3 const array3 = [3.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 3: [3.3], // 1: [0.5, 1.4] // }
// Jums pateikta eilutė, sudaryta iš lotyniškų raidžių, tarpų ir skyrybos ženklų. // Eilutė vadinama pangramu, jei ji bent kartą turi kiekvieną iš 26 raidžių. Nustatykite, ar eilutė yra pangramas. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // jūsų kodas čia } 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.'))
Reklamos tinklo prototipe, reklamos vietų pardavimas organizuotas taip: pirkėjai iš anksto nurodo savo kainą, ir kiekvienam reklamos vietai atsako, ar jie pasiruošę ją įsigyti ar ne. Reikia įgyvendinti funkciją, kuri prieš parduodant reklamos vietą, lauks sutikimo arba atsisakymo iš pirkėjų su aukščiausia pasiūlymo kaina, ir tada parduos reklamos vietą pirkėjui su aukščiausia pasiūlymo kaina iš tų, kurie sutiko. Funkcijos atsakymas turi būti kuo greitesnis. Reikia grąžinti pirkėjo indeksą. Pavyzdžiai: Pirkėjai siūlo kainas 1, 5, 10 Pirkėjas su pasiūlymu 10 atsakė atsisakymu Pirkėjas su pasiūlymu 1 atsakė sutikimu // Dar laukiame, nes gali atsakyti pirkėjas su kaina 5 Pirkėjas su pasiūlymu 5 atsakė sutikimu // Pasirenkame pirkėją su pasiūlymu 5 ------------ Pirkėjai siūlo kainas 1, 5, 10 Pirkėjas su pasiūlymu 10 atsakė atsisakymu Pirkėjas su pasiūlymu 5 atsakė sutikimu // Ne laukiame atsakymo iš pirkėjo su pasiūlymu 1 - jo tikrai nepasirinksime ------------ Pirkėjai siūlo kainas 1, 2 Pirkėjas su pasiūlymu 1 atsakė atsisakymu Pirkėjas su pasiūlymu 2 atsakė atsisakymu // Nė vienas pirkėjas nepasirenkamas 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; }
// kiekviena reikšmė yra masyvas, kuriame yra visi pirminio masyvo elementai su šiuo raktu. // čia įveskite kodą // Pavyzdys 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 }] // } // Pavyzdys 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));
Parašykite tries(n) funkciją, kuri kviečia funkciją aus iki n kartų: grąžina pirmą sėkmingą rezultatą, o jei visi bandymai nepavyksta — meta paskutinę klaidą.
Kokio apribojimai yra rekursinis medžio apėjimas? Kuo skiriasi gylio (DFS) ir pločio (BFS) apėjimas? Kaip galima įgyvendinti medžio apėjimą be rekursijos?
Kodėl negalima naudoti rodyklės funkcijos groupBy? Kas bus this rodyklėje?
/* Reikia įgyvendinti intersection metodą, kuris išplečia standartinius rinkinių (Set) metodus. Šis metodas priima kitą rinkinį kaip parametrą ir grąžina naują rinkinį, kuris yra pirminio ir perduoto rinkinių sankirta, t.y., turi tik tuos elementus, kurie yra abiejų rinkinių. */ // jūsų kodas 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
function any(promises) { // tavo kodas čia }