Осы билеттерден біртұтас, үздіксіз маршрут құрастыруға болады. Маршрутта қайталанулар мен қайталамалар жоқ. Сізге осы билеттердің объектілерін маршрут бойынша ретімен қайтаратын бағдарлама жазу керек. ```javascript function getRoute(tickets = []) { const cities = new Map(); for (const ticket of tickets) { cities.set(ticket.from, ticket); } const result = []; let currentCity = startcity; while (cities.has(currentCity)) { const next = cities.get(currentCity); result.push(next); currentCity = next.to; } return result; } console.clear() console.log(getRoute([ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'Spb' }, ])); ```
Frontend
Жүйенің жүктемесін RPS-те анықтадыңыз ба? Қанша болды? Техникалық кезеңдерді лайв-кодинг форматында өту тәжірибеңіз бар ма?
Қолданба, код немесе қызмет қауіпсіздігімен айналысқан кезіңіз болды ма?
Біздің чат қолданбамыз серверден келетін жаңа хабарламаларды мүмкіндігінше тезірек көрсетуі керек. Хабарламаның форматы: interface Message { id: number text: string } Ең алғашқы хабарламаның id-і 1-ге тең, ал келесі хабарламаның id-і алдыңғысының 1-ге артық. Біз хабарламаларды дұрыс тәртіпте көрсетуіміз керек, бірақ сервер жіберілетін хабарламалардың дұрыс тәртібін кепілдік бермейді. Уақыт сызығы: // (келеді) [phone] // (суреттеу) . 1 2 3 . . 4 5 6 7 8 Хабарламаларды көрсету үшін render функциясын пайдалану керек: render(message)
Node.js-пен жұмыс тәжірибеңіз туралы қандай да бір жобаның мысалы арқылы айтып беріңіз, нақты не жасадыңыз?
/** * Белгілі бір миллисекундтар санында "ұйықтайтын" асинхронды функция жазу керек, * және содан кейін сәтті аяқталуы керек */
JavaScript-тің жалпы түсінігі: параметрлерді беру, асинхронды жұмыс, прототиптер, қателерді өңдеу.
// Мәселені екі сервисте тексеру үшін шақыру керек: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Егер екі сұрау да true қайтарса - success деп жазу // - Егер біреуі false қайтарса - fail деп жазу // - Егер біреуі жауап бермесе - error деп жазу // - Егер біреуі 1 секундтан ұзақ жауап берсе - timeout деп жазу
Рөлдер бойынша — басқару жолына ма, әлде техникалық бағытқа ма барғыңыз келеді?
Atwint-те жұмыс тәжірибеңіз туралы айтып беріңіз: жобалар, міндеттер, команда, процестер.
API жобалауына қатыстым ба?
/** * Бұл массивте бүтін сандармен берілген нүктелер бар (x, y). * Түзу бар-жоғын анықтау керек, * ол нүктелерді осы түзумен симметриялы екі топқа бөледі. * Ескерту: Ыңғайлылық үшін нүктені [x, y] массиві ретінде емес, {x, y} объектісі ретінде көрсетуге болады. */ isVertSym([[0, 0], [0, 0], [1, 1], [2, 2], [3, 1], [4, 0], [4, 0]]) // true isVertSym([[0, 0], [0, 0], [1, 1], [2, 2], [3, 1], [4, 0]]) // false isVertSym([]) // true isVertSym([[0, 0]]) // true isVertSym([[0, 0], [10, 0]]) // true isVertSym([[0, 0], [11, 1]]) // false isVertSym([[0, 0], [1, 0], [3, 0]]) // false function isVertSym(list) { // код осында }
/** * `asyncAuth(callback)` функциясы callback-ты қабылдайды, оған * қате (бірінші аргумент ретінде) және * бэкендтен алынған деректер (екінші аргумент ретінде) берілуі мүмкін. * asyncAuth((қате, деректер) => {}); * * Сіз `auth()` функциясын жүзеге асыруыңыз керек, * ол `asyncAuth()`-ты шақырады, бірақ Promise қайтарады. * * @returns {Promise} */ export function auth() { // asyncAuth((қате, деректер) => {}); }
Қолданбаны орналастыру, CI/CD және конфигурациямен айналыстыңыз ба?
/ ** * Массив берілген. Сан мәні бойынша тақ сандарды өсу ретімен сұрыптау керек, * ал жұп сандар өз орындарында қалуы керек * / export function oddSort(numbers) { // кодты осында жазыңыз } console.log(oddSort([2, 3, 7, 4, 6, 1, 5, 8, 9])); // [2, 1, 3, 4, 6, 5, 7, 8, 9] console.log(oddSort([2, 4, 6, 8])); // [2, 4, 6, 8] console.log(oddSort([3, 7, 1, 5, 9])); // [1, 3, 5, 7, 9] // Бұл тапсырманы екі сервисте тексеру керек, шақыру арқылы: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Егер екі сұрау да true қайтарса, console.log() ішінде success деп шығарыңыз // - Егер біреуі false қайтарса, fail деп шығарыңыз // - Егер біреуі жауап бермесе, error деп шығарыңыз // - Егер біреуі 1 секундтан ұзақ жауап берсе, timeout деп шығарыңыз import { checkResult } from '...'; export async function checkResults() { const solution = 'Any answer'; const url1 = 'yandex.ru'; const url2 = 'google.com'; checkResult(url1, solution); checkResult(url2, solution); }
Үш бөлімнен тұратын код берілген. Әрбір 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); console.log(obj); // ??
/** * `tryAuth()` функциясы `auth()`-ты пайдаланады және қате болған жағдайда, * N қосымша әрекеттер жасайды. * Барлық әрекеттер сәтсіз болса - соңғы қатені шығарады * * @returns {Promise} */ export function tryAuth(n) { }
// groupBy әдісін жүзеге асырыңыз, стандартты массив әдістерін кеңейтіңіз. // Бұл әдіс массивтің топтастырылған нұсқасын қайтаруы керек – объект, // оның әр кілті fn(arr[i]) функциясының нәтижесі, // ал әр мәні – сол кілтпен барлық бастапқы массив элементтерін қамтитын массив.
Соңғы жобада өзара әрекеттесу қалай ұйымдастырылды? Ол Agile ме, әлде басқа бір нәрсе ме?
Сіз мақтан тұтатын шешім немесе жақсарту қандай? Мүмкін, өте күрделі немесе маңызды тапсырма шығар?