Sobes.tech

Frontend

Intersection algoritmini qanday optimallashtirish mumkin?

172

Kompaniyada ishingizda nima yoqadi va nima yoqmaydi?

172

/** * Raqamli ob'ekt uchun times metodini amalga oshiring. * Funksiya callbackni qabul qilishi va uni chaqirishi kerak * belgilangan marta joriy iteratsiya indeks bilan. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Misollar console.clear(); (3).times(console.log) // 0 // 1 // 2

171

Daraxtda yong'oqchilar va qora qushlar o'tiradi. Daraxtdagi barcha yong'oqchilarni topadigan va ularning ismlarini qaytaradigan funktsiya yozish kerak. Kutilyotgan natija: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

171

Kompaniyada qancha vaqtdan beri ishlayapsiz?

169

/* Uchta kod bo'lagi berilgan. Har bir console.log natijasini yozish kerak. */ 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);

168

/** * Stringlarni ajratkich bilan birlashtiradigan strjoin funksiyasini yozish kerak. */ function strjoin() { // kod bu yerda } console.log(strjoin('a', 'b', 'c')) // 'a.b.c' console.log(strjoin('a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'

168

/* Ikki tartiblangan foydalanuvchilarning kun davomida onlayn bo'lish intervallarini ko'rsatuvchi ro'yxatlar berilgan. Intervallarning boshlanishi qat'iy ravishda tugashidan kichik. Ikkala foydalanuvchi ham onlayn bo'lgan intervallarni hisoblash kerak. Intervallar soatlarda ko'rsatilgan bo'lib, 0 dan 24 gacha bo'lishi mumkin. */ kesishma( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] kesishma( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function kesishma(foydalanuvchi1, foydalanuvchi2) { // kodingizni shu yerga yozing }

168

Rest parametrlarini ishlatmasdan, o'rniga arguments obyekti yordamida strjoin funksiyasini qayta yozing.

166

CamelCase → snake_case vazifasida, natijani belgilardan iborat massiv o'rniga satrlarni birlashtirish orqali yig'ish natijasida asymptotik murakkablik va xotira iste'moli qanday o'zgaradi?

165

Nega TypeScript'da for...of qizil rangda ajralib turib, oddiy for esa emas?

164

Array.prototype.groupBy metodini amalga oshiring, bu metod obyektlar massivining tuzilmalangan versiyasini qaytaradi, bunda har bir kalit o'tkazilgan funktsiyaning chaqirilishi natijasidir va qiymat bu kalitga mos keladigan elementlar massividir.

164

// Array metodlarini kengaytiradigan groupBy metodini amalga oshirish kerak. // Bu metod massivning guruhlangan versiyasini qaytarishi kerak - obyekt, // unda har bir kalit fn(arr[i]) bajarilishining natijasi bo'lishi kerak, // va har bir qiymat bu kalit bilan bog'liq bo'lgan barcha elementlarni o'z ichiga olgan massiv bo'lishi kerak. // kod bu yerda // Misol 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 }] // } // Misol 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Misol 3 const array3 = [3.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 3: [3.3], // 1: [0.5, 1.4] // }

162

tries(n) funksiyasini yozing, u aus funksiyasini n marta chaqiradi: birinchi muvaffaqiyatli natijani qaytaradi va agar barcha urinishlar xato bilan tugasa, oxirgi urinish xatosini tashlaydi.

161

// Sizga lotin harflari, bo'sh joylar va tinish belgilaridan iborat satr berilgan. // Satr har bir 26 harfni kamida bir marta o'z ichiga olgan bo'lsa, pangram deb ataladi. Satr pangram yoki yo'qligini aniqlang. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // kodingizni bu yerga yozing } 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

Reklama tarmogʻi prototipida, reklama joylarini sotish quyidagicha tashkil etilgan: xaridorlar oldindan o'z narxlarini aytadilar, va har bir reklama joyiga ular uni sotib olishga tayyormisiz yoki yo'qmi, javob beradilar. Reklama joyini sotishdan oldin, yuqori taklif qilgan xaridorlarning roziligi yoki rad etishini kutish va keyin rozilik berganlar orasidan eng yuqori taklif qilgan xaridorga sotish kerak. Funktsiyaning javobi imkon qadar tezroq bo'lishi kerak. Xaridorning indeksini qaytarish kerak. Misollar: Xaridorlar 1, 5, 10 narxlarni taklif qiladilar 10 narxdagi xaridor rad javobini berdi 1 narxdagi xaridor rozilik bildirdi // Hali kutmoqdamiz, chunki 5 narxdagi xaridor javob berishi mumkin 5 narxdagi xaridor rozilik berdi // 5 narxdagi xaridorni tanlaymiz ------------ Xaridorlar 1, 5, 10 narxlarni taklif qiladilar 10 narxdagi xaridor rad javobini berdi 5 narxdagi xaridor rozilik berdi // 1 narxdagi xaridor javobini kutmaymiz - uni tanlamaymiz ------------ Xaridorlar 1, 2 narxlarni taklif qiladilar 1 narxdagi xaridor rad javobini berdi 2 narxdagi xaridor rad javobini berdi // Hech qanday xaridorni tanlamaymiz 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

Nima uchun groupBy uchun arrow funktsiya ishlatilmaydi? Arrow ichida this nima bo'ladi?

159

// va har bir qiymat, bu kalit bilan asl massivning barcha elementlarini o'z ichiga olgan massiv. // kod bu yerda // Misol 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 }] // } // Misol 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));

159

Daraxtni rekursiv tarzda o'rganishning qanday cheklovlari bor? DFS (chuqurlik bo'yicha) va BFS (kenglik bo'yicha) o'rganish qanday farq qiladi? Daraxtni rekursiyasiz qanday amalga oshirish mumkin?

157

/* Standart to'plam metodlarini kengaytiradigan intersection metodini amalga oshirish kerak. Ushbu metod boshqa to'plamni qabul qiladi va yangi to'plamni qaytaradi, bu asl to'plam va uzatilgan to'plamning kesishmasi, ya'ni, faqat ikkala to'plamda mavjud bo'lgan elementlarni o'z ichiga oladi. */ // kodingiz 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

155
/7