Z tych biletów można zbudować jedną, nieprzerwaną trasę. W trasie nie ma pętli ani powtórzeń. Należy napisać program, który zwraca te same obiekty biletów w kolejności zgodnej z trasą. ```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
Czy określałeś obciążenie systemu w RPS? Jaka była ilość? Czy masz doświadczenie w przechodzeniu przez etapy techniczne w formacie live-coding?
Czy kiedykolwiek musiałeś zajmować się bezpieczeństwem aplikacji, kodu lub usługi?
Nasza aplikacja czatu powinna wyświetlać nowe wiadomości, które przychodzą z serwera, tak szybko jak to możliwe. Wiadomość ma format: interface Message { id: number text: string } Id pierwszej wiadomości to 1, a id każdej kolejnej wiadomości jest o 1 większe od poprzedniej. Musimy wyświetlać wiadomości w poprawnej kolejności, jednak serwer nie gwarantuje poprawnego porządku wiadomości wysyłanych do naszej aplikacji. Oś czasu: // (nadchodzi) [telefon] // (rysujemy) . 1 2 3 . . 4 5 6 7 8 Aby wyświetlić wiadomości, należy użyć funkcji render: render(message)
Opowiedz o swoim doświadczeniu z Node.js na przykładzie jakiegoś projektu, co dokładnie na nim rozwijałeś?
/** * Należy napisać asynchroniczną funkcję, * która będzie "spała" przez określoną liczbę milisekund, * a następnie pomyślnie się zakończy */
Ogólne zrozumienie JavaScript: przekazywanie parametrów, asynchroniczność, prototypy, obsługa błędów
// Należy sprawdzić rozwiązanie zadania na dwóch usługach, wywołując: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Jeśli oba zapytania zwrócą true - wyświetl w console.log() success // - Jeśli choć jedno zwróci false - wyświetl w console.log() fail // - Jeśli choć jedno nie odpowie - wyświetl w console.log() error // - Jeśli choć jedno odpowie dłużej niż 1 sekunda - wyświetl w console.log() timeout
Jeśli chodzi o role, czy chciałbyś iść w kierunku zarządzania, czy technicznym?
Opowiedz o swoim doświadczeniu w pracy w Atvint: projekty, obowiązki, zespół, procesy.
Czy brał udział w projektowaniu API?
/** * Dany jest tablica. Należy posortować nieparzyste liczby według wartości rosnąco, * a parzyste pozostawić na swoich miejscach * / export function oddSort(numbers) { // Twój kod tutaj } 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] // Należy sprawdzić rozwiązanie zadania na dwóch serwisach, wywołując: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Jeśli oba zapytania zwrócą true, wyświetlić success // - Jeśli któreś zwróci false, wyświetlić fail // - Jeśli któreś nie odpowie, wyświetlić error // - Jeśli któreś odpowie dłużej niż 1 sekunda, wyświetlić 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); }
Czy zajmowałeś się wdrażaniem aplikacji, CI/CD, konfiguracją?
// Należy zaimplementować metodę groupBy, rozszerzającą standardowe metody tablic. // Metoda powinna zwracać wersję pogrupowaną tablicy – obiekt, // w którym każdy klucz jest wynikiem wykonania przekazanej funkcji fn(arr[i]), // a każda wartość – tablicą zawierającą wszystkie elementy oryginalnej tablicy z tym kluczem.
/** * Dany jest tablica punktów z współrzędnymi całkowitymi (x, y). * Określić, czy istnieje linia pionowa, * dzieląca punkty na dwa symetryczne względem tej linii zbiory. * Uwaga: dla wygody punkt można reprezentować nie jako tablicę [x, y], lecz jako obiekt {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) { // kod tutaj }
/** * Funkcja `asyncAuth(callback)` przyjmuje callback, do którego można * przekazać błąd (pierwszy argument) i dane * z backendu (drugi argument). * asyncAuth((error, data) => {}); * * Musisz zaimplementować funkcję `auth()`, * która wywołuje `asyncAuth()`, ale zwraca Promise. * * @returns {Promise} */ export function auth() { // asyncAuth((error, data) => {}); }
Dane są trzy sekcje kodu. Należy napisać wynik każdego 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); // ??
/** * Funkcja `tryAuth()` używa `auth()` i w przypadku błędu, * wykonuje N dodatkowych prób. * Jeśli wszystkie próby się nie powiodą, rzuca ostatni błąd. * * @returns {Promise} */ export function tryAuth(n) { }
Jak wyglądała współpraca w ostatnim projekcie? Przez Agile czy jakoś inaczej?
Z jakiej samodzielnej decyzji lub ulepszenia jesteś dumny? Może to być bardzo trudne lub ważne zadanie?