Z týchto lístkov je možné zostaviť jedinú, neprerušenú trasu. V trase nie sú žiadne slučky ani opakovania. Je potrebné napísať program, ktorý vráti tieto isté objekty lístkov v poradí podľa trasy. ```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
Určili ste záťaž systému v RPS? Aké množstvo? Mal ste skúsenosti s prechodom technických etáp v formáte live-coding?
Museli ste sa zaoberať bezpečnosťou aplikácie, kódu alebo služby?
Naša aplikácia na chat by mala zobrazovať nové správy, ktoré prichádzajú zo servera, čo najrýchlejšie. Správa má nasledovný formát: interface Message { id: number text: string } ID prvej správy je 1 a ID každej nasledujúcej správy je o 1 väčšie ako ID predchádzajúcej. Musíme zobrazovať správy v správnom poradí, ale server nezaručuje správne poradie správ odoslaných našej aplikácii. Časová os: // (prichádza) [telefon] // (kreslíme) . 1 2 3 . . 4 5 6 7 8 Na zobrazenie správ použite funkciu render: render(message)
Porozprávaj o svojej skúsenosti s Node.js na príklade nejakého projektu, na ktorom si pracoval, čo presne si v ňom vyvíjal.
/** * Je potrebné napísať asynchrónnu funkciu, * ktorá bude "spať" zadaný počet milisekúnd, * a potom úspešne skončí */
Splošno razumevanje JavaScript-a: prenos parametrov, asinhronost, prototipi, obvladovanje napak
// Je potrebné skontrolovať riešenie úlohy na dvoch službách volaním: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Ak obe požiadavky vrátia true - vypíšte success do console.log() // - Ak aspoň jedna vráti false - vypíšte fail do console.log() // - Ak aspoň jedna neodpovie - vypíšte error do console.log() // - Ak aspoň jedna odpovie dlhšie ako 1 sekundu - vypíšte timeout do console.log()
Čo sa týka rolí, chcel by si ísť smerom k manažmentu alebo technickému smeru?
Povedajte o svoji delovni izkušnji v Atvint: projekti, odgovornosti, ekipa, procesi.
Zúčastnil sa navrhovania API?
/** * Dá sa pole. Je potrebné zoradiť nepárne čísla podľa hodnoty vzostupne, * a párne nechať na svojich miestach * / export function oddSort(numbers) { // váš kód tu } 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] // Je potrebné overiť riešenie úlohy na dvoch službách volaním: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Ak obe požiadavky vrátia true, vypísať success // - Ak aspoň jedna vráti false, vypísať fail // - Ak aspoň jedna neodpovie, vypísať error // - Ak aspoň jedna odpovie dlhšie ako 1 sekundu, vypísať 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); }
Zaoberali ste sa nasadzovaním aplikácií, CI/CD, konfiguráciou?
// Je potrebné implementovať metódu groupBy, ktorá rozširuje štandardné metódy polí. // Metóda by mala vracať skupinovanú verziu poľa – objekt, // v ktorom je každý kľúč výsledkom vykonania predanej funkcie fn(arr[i]), // a každá hodnota je pole obsahujúce všetky prvky pôvodného poľa s týmto kľúčom.
/** * Pole bodov s celými súradnicami (x, y) je dané. * Určite, či existuje zvislá priamka, * ktorá rozdeľuje body na dva zrkadlovo zhodné súbory vzhľadom na túto priamku. * Poznámka: Pre pohodlie možno bod reprezentovať nie ako pole [x, y], ale ako objekt {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) { // kód tu }
/** * Funkcia `asyncAuth(callback)` prijíma callback, do ktorého * môže byť odovzdaná chyba (ako prvý argument) a údaje * zo backendu (ako druhý argument). * asyncAuth((error, data) => {}); * * Musíte implementovať funkciu `auth()`, * ktorá volá `asyncAuth()`, ale vracia Promise. * * @returns {Promise} */ export function auth() { // asyncAuth((error, data) => {}); }
Dajú sa tri sekcie kódu. Je potrebné napísať výsledok každého 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); // ??
/** * Funkcia `tryAuth()` používa `auth()` a v prípade chyby, * vykoná N ďalších pokusov. * Ak všetky pokusy zlyhajú, vyhodí poslednú chybu. * * @returns {Promise} */ export function tryAuth(n) { }
Ako bola vo vašom poslednom projekte organizovaná vaša spolupráca? Prostredníctvom Agile alebo inak?
Na ktorú samostatnú rozhodnutie alebo zlepšenie si hrdý? Možno nejaký veľmi ťažký alebo dôležitý úkol?