Из ових карата може се изградити један јединствени, непрекинути пут. У путу нема петљи или понављања. Потребно је написати програм који враћа исте објекте карата у редоследу кретања. ```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
Da li ste ikada morali da se bavite sigurnošću aplikacije, koda ili usluge?
Da li ste definisali opterećenje na sistemu u RPS? Koliko? Da li imate iskustva u prolasku tehničkih faza u formatu live-kodinga?
Naša aplikacija za chat treba da prikazuje nove poruke koje dolaze sa servera što je brže moguće. Poruka ima sledeći format: interface Message { id: number text: string } ID prve poruke je 1, a ID svake sledeće poruke je za 1 veći od prethodnog. Moramo prikazivati poruke u ispravnom redosledu, ali server ne garantuje ispravan redosled poruka koje se šalju našoj aplikaciji. Vremenska linija: // (stigne) [telefon] // (crtajmo) . 1 2 3 . . 4 5 6 7 8 Za prikaz poruka koristite funkciju render: render(message)
Ispričaj o svom iskustvu sa Node.js na primjeru nekog projekta, šta si tačno razvio na njemu?
/** * Potrebno je napisati asinhronu funkciju, * која ће "спавати" задати број милисекунди, * а затим успешно завршити */
Opšte razumevanje JavaScript-a: prenošenje parametara, asinhronost, prototipi, obrada grešaka
// Неопходно је проверити решење задатка на два сервиса позивањем: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Ако оба захтева враћају true - приказати у console.log() success // - Ако бар један врати false - приказати у console.log() fail // - Ако бар један не одговори - приказати у console.log() error // - Ако бар један одговори дуже од 1 секунде - приказати у console.log() timeout
Што се тиче улога, да ли би желео да идеш у правцу менаџмента или техничког смера?
Ispričajte o svom radnom iskustvu u Atvint: projekti, odgovornosti, tim, procesi.
Da li ste učestvovali u projektovanju API-ja?
/** * Дан је низ тачака са целобројним координатама (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) { // код овде }
/** * Funkcija `asyncAuth(callback)` prihvata callback, u koji * može biti prosleđena greška (kao prvi argument) i podaci * sa backend-a (kao drugi argument). * asyncAuth((error, data) => {}); * * Potrebno je da implementirate funkciju `auth()`, * koja poziva `asyncAuth()`, ali vraća Promise. * * @returns {Promise} */ export function auth() { // asyncAuth((error, data) => {}); }
Da li ste se bavili deploymentom aplikacija, CI/CD, konfiguracijom?
/** * Дан је низ. Потребно је сортирати непаран број по вредности порастајући, * а парне оставити на својим местима * / 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, исписати 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); // ??
/** * Funkcija `tryAuth()` koristi `auth()` i, u slučaju greške, * vrši N dodatnih pokušaja. * Ako svi pokušaji ne uspeju, baca poslednju grešku. * * @returns {Promise} */ export function tryAuth(n) { }
// Potrebno je implementirati metodu groupBy, koja proširuje standardne metode nizova. // Metod treba da vraća grupisanu verziju niza – objekat, // u kojem je svaki ključ rezultat izvršenja prosleđene funkcije fn(arr[i]), // a svaka vrednost je niz koji sadrži sve elemente originalnog niza sa tim ključem.
Kako je bila organizovana vaša saradnja u poslednjem projektu? Kroz Agile ili na neki drugi način?
Na koju samostalnu odluku ili poboljšanje si ponosan? Možda neki veoma težak ili važan zadatak?