Компанияда жұмыс істеудегі ұнайтын және ұнамайтын нәрселер қандай?
Frontend
Ағашта сілеусіндер мен қарғалар отыр. Барлық сілеусіндерді табатын және олардың аттарын қайтаратын функция жазыңыз. Күтілетін нәтиже: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].
/ ** * Сандық объект үшін times әдісін жүзеге асыру. * Бұл функция callback-ты қабылдап, оны * берілген қайталану саны бойынша шақырады, * ағымдағы итерация индексімен. * / Number.prototype.times = function (args) { const n = Number(this); } // Мысалдар console.clear(); (3).times(console.log) // 0 // 1 // 2
Intersection алгоритмін қалай оңтайландыруға болады?
Компанияда қанша уақыт жұмыс істейсіз?
/** * Стрингтерді бөлгіш арқылы біріктіру үшін strjoin функциясын жазу керек. */ function strjoin() { // код осында } console.log(strjoin('a', 'b', 'c')) // 'a.b.c' console.log(strjoin('a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'
/\*\nБерілген екі сұрыпталған тізімдерде күн ішінде онлайн болған пайдаланушылардың интервалдары бар. Интервалдың басы міндетті түрде соңынан кіші.\nЕкі пайдаланушы да онлайн болған интервалдарды есептеу керек.\nИнтервалдар сағаттарда көрсетілген, 0-ден 24-ке дейінгі сағаттар болуы мүмкін деп есептейміз.\*/\n\nintersection(\n [[8, 12], [17, 22]],\n [[5, 11], [14, 18], [20, 23]]\n)// [[8, 11], [17, 18], [20, 22]]\n\nintersection(\n [[9, 15], [18, 21]],\n [[10, 14], [21, 22]]\n)// [[10, 14]]\n\nfunction intersection(user1, user2) {\n // мұнда код жазу керек\n}
/* Үш бөлімнен тұратын код берілген. Әрбір 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);
rest параметрлерін қолданбай, arguments объектісін пайдаланып, strjoin функциясын қайта жазыңыз.
CamelCase → snake_case тапсырмасында асимптотикалық күрделілік пен жад тұтыну қалай өзгереді, егер нәтижені таңбалар массиві орнына жолдарды біріктіру арқылы жинаса?
Неліктен TypeScript-те for...of қызыл түспен көрсетіледі, ал кәдімгі for көрсетілмейді?
// Сізге латын әріптері, бос орындар және тыныс белгілерінен тұратын жол берілді. // Жол панограмм деп аталады, егер ол кемінде бір рет барлық 26 әріпті қамтыса. Жолдың панограмма екенін анықтаңыз. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // сіздің кодыңыз мұнда } 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.'))
Жарнама желісінің прототипінде жарнама орындарын сату келесідей ұйымдастырылған: сатып алушылар алдын ала өз бағаларын айтады, ал әрбір жарнама орнына олар оны сатып алуға дайын ба, жоқ па, жауап береді. Сату алдында, жоғары баға ұсынған сатып алушылардан келісім немесе бас тарту күтетін функцияны жүзеге асыру керек, содан кейін келісім бергендердің ішінен ең жоғары баға ұсынған сатып алушыға жарнама орнын сатады. Функциядан жауапты мүмкіндігінше тез қайтару керек.
// Массивтердің стандартты әдістерін кеңейтетін groupBy әдісін жүзеге асыру қажет. // Бұл әдіс массивтің топтастырылған нұсқасын қайтаруы керек - объект, // оның әр кілті берілген функцияны орындау нәтижесі болып табылады fn(arr[i]), // ал әр мәні - осы кілтпен барлық элементтерді қамтитын массив. // код осында // Мысал 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 }] // } // Мысал 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Мысал 3 const array3 = [3.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 3: [3.3], // 1: [0.5, 1.4] // }
aus функциясын n рет шақыратын tries(n) функциясын жазыңыз: бірінші сәтті нәтижені қайтару керек, ал барлық әрекеттер сәтсіз болса, соңғы қателікті лақтыру керек.
// әр мән — бұл кілті бар бастапқы массивтің барлық элементтерін қамтитын массив. // код мұнда // Мысал 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 }] // } // Мысал 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));
GroupBy үшін стрелка функциясын қолдануға бола ма? Стрелкада 'this' не болады?
Рекурсивті ағашты обходудың қандай шектеулері бар? Тереңдікке бірінші іздеу (DFS) кеңдікке бірінші іздеу (BFS)-тен қалай ерекшеленеді? Ағашты обходты рекурсиясыз қалай жүзеге асыруға болады?
/* Қажет болған жағдайда, жиындардың стандартты әдістерін кеңейтетін intersection әдісін жүзеге асыру керек. Бұл әдіс басқа жиынтыны қабылдайды және жаңа жиынтыны қайтарады, ол бастапқы және берілген жиындардың қиылысуы болып табылады, яғни екі жиынтықта да бар элементтерді ғана қамтиды. */ // кодты өзіңіз жазыңыз 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
/** * Promise.any() сияқты жұмыс істейтін any функциясын жүзеге асырыңыз. * Бұл функция промистердің массивін қабылдайды (бос емес деп есептеледі) және промис қайтару керек. * Егер кез келген промис орындалса (сәтті түрде), * онда қайтарылатын промис сол мәнмен орындалады. * Егер бірнеше промис сәтті болса, * онда қайтарылатын промис * бірінші сәтті мәнмен орындалады, кез келген тәртіпте. * Егер барлық промистер қате болса, * онда қайтарылатын промис AggregateError-мен қате тастайды, * ол барлық қателерді топтастырады, промис тәртібін ескере отырып. * * AggregateError келесідей жасалуы мүмкін: * new AggregateError(errors, 'Ешқандай Promise орындалмады') */ function any(promises) { // кодты өзіңіз жазыңыз }