Ushbu chiptalar bilan yagona, uzluksiz marshrut qurish mumkin. Marshrutda aylanishlar yoki takrorlanishlar yo'q. Ushbu xuddi shunday chiptalar ob'ektlarini marshrut bo'yicha ketma-ketlikda qaytaradigan dastur yozishingiz kerak. ```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
Siz tizimdagi yuklamani RPS da belgiladingizmi? Qancha miqdorda? Live-kodlash formatida texnik bosqichlardan o'tish tajribangiz bormi?
Ilova dastur, kod yoki xizmat xavfsizligi bilan shug'ullanishga majbur bo'ldingizmi?
Bizning chat ilovamiz serverdan keladigan yangi xabarlarni imkon qadar tezroq ko'rsatishi kerak. Xabar quyidagi formatda: interface Message { id: number text: string } Birinchi xabarning id raqami 1, va har bir keyingi xabarning id raqami avvalgisidan 1 katta. Biz xabarlarni to'g'ri tartibda ko'rsatishimiz kerak, ammo server yuborilgan xabarlarning to'g'ri tartibini kafolatlamaydi. Vaqt jadvali: // (kelmoqda) [telefon] // (chizamiz) . 1 2 3 . . 4 5 6 7 8 Xabarlarni ko'rsatish uchun render funksiyasidan foydalaning: render(message)
Node.js bilan tajribangiz haqida bir loyiha misolida gapirib bering, aynan nima ishlab chiqqansiz?
/** * Belgilangan millisekund davomida "uxlaydigan" va keyin muvaffaqiyatli tugaydigan * asinxron funktsiya yozish kerak */
JavaScript haqida umumiy tushuncha: parametrlarni uzatish, asinxronlik, prototiplar, xatolarni boshqarish
// Muammo yechimini ikki xizmatda tekshirish uchun chaqiring: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Agar ikkala so'rov ham true qaytaradigan bo'lsa - console.log() da success deb chiqarish // - Agar biri false qaytaradigan bo'lsa - console.log() da fail deb chiqarish // - Agar biri javob bermasa - console.log() da error deb chiqarish // - Agar biri 1 sekunddan ko'proq javob bersa - console.log() da timeout deb chiqarish
Rolga oidin, boshqaruv yoki texnik yo'nalishga o'tishni xohlaysizmi?
Atvintda ish tajribangiz haqida gapiring: loyihalar, mas'uliyatlar, jamoa, jarayonlar.
API dizaynida ishtirok etdimi?
/** * Berilgan massiv. Juft sonlarni o'z qiymatlari bo'yicha o'sish tartibida saralash va toq sonlarni o'z joylarida qoldirish kerak * / export function oddSort(numbers) { // kodingiz bu yerda } 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] // Muammo yechimini ikki xizmatda tekshirish uchun chaqirish: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Agar ikkala so'rov ham true qaytaradigan bo'lsa, success deb chiqarish // - Agar kamida biri false bo'lsa, fail deb chiqarish // - Agar kamida biri javob bermasa, error deb chiqarish // - Agar kamida biri 1 sekunddan ortiq javob bersa, timeout deb chiqarish 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); }
Ilovalar, CI/CD, sozlash bilan shug'ullandingizmi?
/** * Berilgan butun koordinatalarga ega nuqtalar massivlari. * Vertikal chiziq mavjudligini aniqlang, * bu nuqtalarni bu chiziqqa nisbatan simmetrik bo'lgan ikkita to'plamga bo'ladi. * Eslatma: qulaylik uchun nuqtani [x, y] massiv sifatida emas, balki {x, y} obyekti sifatida tasvirlash mumkin. */ 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 bu yerda }
Uchta kod bo'limi berilgan. Har bir console.log natijasini yozish kerak. 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)` funksiyasi callback qabul qiladi, unga * xato (birinchi argument sifatida) va ma'lumotlar * backenddan (ikkinchi argument sifatida) o'tkazilishi mumkin. * asyncAuth((error, data) => {}); * * Siz `auth()` funksiyasini amalga oshirishingiz kerak, * bu `asyncAuth()`ni chaqiradi, ammo Promise qaytaradi. * * @returns {Promise} */ export function auth() { // asyncAuth((error, data) => {}); }
// Arraylarning standart metodlarini kengaytiradigan groupBy metodini amalga oshirish kerak. // Metod, massivning guruhlangan versiyasini – ob'ektni qaytarishi kerak, // bunda har bir kalit fn(arr[i]) funksiyasining bajarilish natijasi bo'lishi kerak, // va har bir qiymat, bu kalit bilan original massivning barcha elementlarini o'z ichiga olgan massiv bo'lishi kerak.
/** * `tryAuth()` funksiyasi `auth()` ni ishlatadi va xato bo'lsa, * N ta qo'shimcha urinish qiladi. * Agar barcha urinishlar muvaffaqiyatsiz bo'lsa, oxirgi xatoni tashlaydi. * * @returns {Promise} */ export function tryAuth(n) { }
So'nggi loyihada sizning hamkorligingiz qanday tashkil etilgan edi? Agile orqali yoki boshqa qandaydir tarzda?
Qaysi mustaqil qaror yoki yaxshilash bilan faxrlanasiz? Ehtimol, juda qiyin yoki muhim vazifa?