ამ ბილეთებიდან შეიძლება შექმნას ერთი, შეუფერხებელი მარშრუტი. მარშრუტში არ არის ბრუნვები ან განმეორებები. თქვენ უნდა დაწეროთ პროგრამა, რომელიც ამავე ბილეთების ობიექტებს დააბრუნებს მარშრუტის მიხედვით თანმიმდევრობით. ```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 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 in console.log() // - თუ ერთი მაინც false-ს - გამოიტანეთ fail in console.log() // - თუ ერთი მაინც პასუხს არ გასცემს - გამოიტანეთ error in console.log() // - თუ ერთი მაინც პასუხობს მეტი 1 წამით - გამოიტანეთ timeout in console.log()
მონაწილეობდით API-ის პროექტირებაში?
სამი კოდის სექციაა მოცემული. აუცილებელია დაწეროთ თითოეული 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); // ??
/** * `asyncAuth(callback)` ფუნქცია callback-ი кабыл алат, анын ичинде * ката (биринчи аргумент катары) жана маалыматтар * backendтен (экинчи аргумент катары) өткөрүлүшү мүмкүн. * asyncAuth((error, data) => {}); * * Сиз `auth()` функциясын ишке ашырышыңыз керек, * ал `asyncAuth()` чакырып, бирок Promise кайтарат. * * @returns {Promise} */ export function auth() { // asyncAuth((error, data) => {}); }
გააზიარეთ თქვენი სამუშაო გამოცდილება Atvint-ში: პროექტები, პასუხისმგებლობები, გუნდი, პროცესები.
/** * `tryAuth()` ფუნქცია იყენებს `auth()`-ს და, თუ შეცდომა მოხდება, * ახორციელებს N დამატებით მცდელობას. * თუ ყველა მცდელობა წარუმატებელია, ის აგდებს ბოლო შეცდომას. * * @returns {Promise} */ export function tryAuth(n) { }
აპლიკაციების განთავსება, CI/CD, კონფიგურაცია ხომ არ გითამაშიათ?
როლების მხრივ, გსურთ მენეჯმენტის მიმართულებით წასვლა თუ ტექნიკური მიმართულებით?
როგორ იყო თქვენი ურთიერთქმედება ბოლო პროექტში? იყო თუ არა ის Agile-ის ან სხვა მეთოდით?
/** * მოცემულია მთელი რიცხვებით წარმოდგენილი წერტილების მასივი (x, y). * განსაზღვრეთ, არსებობს თუ არა ვერტიკალური სწორი, * რომელიც ნაწილებს წერტილებს ორ სითმეტრიულ ჯგუფად ამ სწორის მიმართ: * შენიშვნა: მოსახერხებლობისთვის, წერტილი შეიძლება წარმოდგენილი იყოს არა როგორც მასივი [x, y], არამედ როგორც ობიექტი {x, y} */ isVertSym([[0, 0], [0, 0], [1, 1], [2, 2], [3, 1], [4, 0], [4, 0]]) // ჭეშმარიტი isVertSym([[0, 0], [0, 0], [1, 1], [2, 2], [3, 1], [4, 0]]) // მცდარი isVertSym([]) // ჭეშმარიტი isVertSym([[0, 0]]) // ჭეშმარიტი isVertSym([[0, 0], [10, 0]]) // ჭეშმარიტი isVertSym([[0, 0], [11, 1]]) // მცდარი isVertSym([[0, 0], [1, 0], [3, 0]]) // მცდარი function isVertSym(list) { // კოდი აქ }
გვითხარით თქვენი გამოცდილების შესახებ ტესტების დაწერაში
// Array-ების სტანდარტული მეთოდების გაფართოებისთვის აუცილებელია groupBy მეთოდის განხორციელება. // ეს მეთოდი უნდა აბრუნებდეს მასივის დაჯგუფებულ ვერსიას – ობიექტს, // სადაც თითოეული გასაღები არის გადაცემული ფუნქციის fn(arr[i]) შესრულების შედეგი, // ხოლო თითოეული მნიშვნელობა არის მასივი, რომელიც შეიცავს ყველა ელემენტს ორიგინალ მასივში ამ გასაღებით.
გაქვს გამოცდილება სერვისის ან მისი ნაწილის არქიტექტურის დამოუკიდებლად დაგეგმვაში?