Bu biletlerden tək, fasiləsiz marşrut qurmaq mümkündür. Marşrutda döngələr və ya təkrarlamalar yoxdur. Eyni marşrut üzrə bu bilet obyektlərini qaytaran proqram yazmalısınız. ```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
Sistem yükünü RPS-də müəyyən etmisinizmi? Həcm nə qədər idi? Canlı kodlaşdırma formatında texniki mərhələlərdən keçmək təcrübəniz varmı?
Tətbiq, kod və ya xidmətin təhlükəsizliyi ilə məşğul olmusunuzmu?
Bizim chat tətbiqimiz serverdən gələn yeni mesajları mümkün olan ən qısa zamanda göstərməlidir. Mesaj aşağıdakı formatdadır: interface Message { id: number text: string } İlk mesajın id-si 1-dir və hər növbəti mesajın id-si əvvəlkindən 1 çoxdur. Mesajları düzgün ardıcıllıqla göstərməliyik, lakin server göndərilən mesajların düzgün ardıcıllığını təmin etmir. Zaman çizelgesi: // (gəlir) [telefon] // (çəkiyirik) . 1 2 3 . . 4 5 6 7 8 Mesajları göstərmək üçün render funksiyasından istifadə edin: render(message)
Node.js ilə bağlı təcrübənizdən bəhs edin, hansısa bir layihə nümunəsi ilə, orada dəqiq nə inkişaf etdirdiyinizi.
/** * Təyin olunan millisekund müddətində "yatan" və sonra uğurla bitən * asinxron funksiyanı yazmaq lazımdır */
JavaScript haqqında ümumi anlayış: parametrlərin ötürülməsi, asinxronluq, prototiplər, səhvlərin idarə olunması
// Problemi həllini iki xidmətdə yoxlamaq üçün çağırın: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Əgər hər iki sorğu true qaytarırsa - console.log() da success göstərin // - Əgər ən azı biri false qaytarırsa - console.log() da fail göstərin // - Əgər ən azı biri cavab verməzsə - console.log() da error göstərin // - Əgər ən azı biri 1 saniyədən çox cavab verərsə - console.log() da timeout göstərin
API-nin dizaynında iştirak etdinizmi?
Üç kod bölməsi verilir. Hər bir console.log-un nəticəsini yazmaq lazımdır. 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)` funksiyası callback qəbul edir, ona * xəta (birinci arqument kimi) və məlumatlar * backend-dən (ikinci arqument kimi) keçə bilər. * asyncAuth((error, data) => {}); * * Siz `auth()` funksiyasını həyata keçirməlisiniz, * bu `asyncAuth()`-u çağırır, amma Promise qaytarır. * * @returns {Promise} */ export function auth() { // asyncAuth((error, data) => {}); }
Atvint-də iş təcrübəniz haqqında danışın: layihələr, vəzifələr, komanda, proseslər.
/** * `tryAuth()` funksiyası `auth()` istifadə edir və səhv baş verərsə, * N əlavə cəhd edir. * Bütün cəhdlər uğursuz olarsa, son səhvi atır. * * @returns {Promise} */ export function tryAuth(n) { }
Tətbiqlərin yerləşdirilməsi, CI/CD, tənzimləmə ilə məşğul olmusunuzmu?
Rollar baxımından, idarəetmə və ya texniki sahəyə yönəlmək istəyirsinizmi?
Son layihədə qarşılıqlı əlaqəniz necə qurulmuşdu? Agile ilə və ya başqa cür?
/** * Tam tamamilə tam ədədlər (x, y) koordinatlarına malik nöqtələr massividir. * Bu nöqtələrin bu xəttə görə simmetrik iki qrup halında bölünüb bölünmədiyini müəyyən edin. * Qeyd: Rahatlıq üçün, nöqtəni [x, y] massiv kimi deyil, {x, y} obyekt kimi təqdim edə bilərsiniz. */ 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 burada }
Test yazma təcrübəniz haqqında danışın
// Array-lərin standart metodlarını genişləndirən groupBy metodunu həyata keçirmək lazımdır. // Metod, array-ın qruplaşdırılmış versiyasını – obyektini qaytarmalıdır, // hər açar, fn(arr[i]) funksiyasının icrasının nəticəsi olmalı, // və hər dəyər, bu açarla orijinal array-ın bütün elementlərini ehtiva edən array olmalıdır.
Xidmətin və ya onun bir hissəsinin memarlığını özünüz düşünmə təcrübəniz varmı?