Bu biletlerden tek, kesintisiz bir rota oluşturulabilir. Rota içinde döngü veya tekrar yoktur. Bu aynı bilet nesnelerini rotaya göre sıralı şekilde döndüren bir program yazmanız gerekiyor. ```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
Sistemdeki yükü RPS cinsinden belirlediniz mi? Ne kadar? Canlı kodlama formatında teknik aşamalardan geçme deneyiminiz oldu mu?
Uygulama, kod veya hizmet güvenliğiyle ilgilenmek zorunda kaldınız mı?
Sohbet uygulamamız, sunucudan gelen yeni mesajları mümkün olan en kısa sürede göstermelidir. Mesajın formatı şöyledir: interface Message { id: number text: string } İlk mesajın id'si 1'dir ve sonraki her mesajın id'si bir öncekinin 1 fazlasıdır. Mesajları doğru sırayla göstermek istiyoruz, ancak sunucu, uygulamamıza gönderilen mesajların doğru sırasını garanti etmez. Zaman çizelgesi: // (geliyor) [telefon] // (çiziyoruz) . 1 2 3 . . 4 5 6 7 8 Mesajları göstermek için render fonksiyonunu kullanmalısınız: render(message)
Bir proje örneği vererek Node.js ile olan deneyiminden bahset, tam olarak ne geliştirdiğini anlat.
/** * Belirtilen milisaniye kadar "uyuyan" ve sonra başarıyla tamamlanan * asenkron bir fonksiyon yazmak gerekiyor */
JavaScript hakkında genel anlayış: parametre iletimi, asenkronluk, prototipler, hata işleme
// Bir hizmette çözümün çözümünü kontrol etmek için çağrı yapın: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Her iki istek de true dönerse - console.log() success ile göster // - En az biri false dönerse - console.log() fail ile göster // - En az biri cevap vermezse - console.log() error ile göster // - En az biri 1 saniyeden uzun cevap verirse - console.log() timeout ile göster
Atvint'teki çalışma deneyiminizden bahsedin: projeler, sorumluluklar, ekip, süreçler.
Roller açısından, yönetim mi yoksa teknik alanda mı ilerlemek istersin?
API tasarımına katıldı mı?
/** * Bir tam sayı koordinatlarına sahip noktalar dizisi verildiğinde. * Bu noktaları bu çizgiye göre simetrik iki küme halinde ayıran dik çizgi var mı? * Not: Kolaylık olması açısından, noktayı [x, y] dizisi yerine {x, y} nesnesi olarak temsil edebilirsiniz. */ 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) { // código aquí }
/** * `asyncAuth(callback)` fonksiyonu, içinde hata (birinci argüman) ve * backend'den veriler (ikinci argüman) geçebilecek bir callback alır. * asyncAuth((error, data) => {}); * * `auth()` fonksiyonunu uygulamanız gerekiyor, * bu fonksiyon `asyncAuth()`'u çağırır, ancak bir Promise döner. * * @returns {Promise} */ export function auth() { // asyncAuth((error, data) => {}); }
Uygulama dağıtımı, CI/CD, yapılandırma ile ilgilendiniz mi?
Üç kod bölümü verildi. Her bir console.log'un sonucunu yazmanız gerekiyor. 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); // ??
/** * `tryAuth()` fonksiyonu, `auth()` kullanır ve hata durumunda, * N ek deneme yapar. * Tüm denemeler başarısız olursa, son hatayı fırlatır. * * @returns {Promise} */ export function tryAuth(n) { }
/** * Bir dizi verildi. Tek sayıları artan sırayla sıralamak ve çift sayıları yerlerinde bırakmak gerekir * / export function oddSort(numbers) { // kodunuz burada } 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] // Problemin çözümünü iki serviste kontrol etmek gerekiyor, çağırarak: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Her iki istek de true dönerse, success yazdır // - En az biri false dönerse, fail yazdır // - En az biri cevap vermezse, error yazdır // - En az biri 1 saniyeden uzun cevap verirse, timeout yazdır 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); }
// Array'lerin standart metodlarını genişleten groupBy metodunu uygulamak gerekiyor. // Metod, dizinin gruplandırılmış bir versiyonunu döndürmelidir – bir nesne, // her anahtar, fn(arr[i]) fonksiyonunun çalıştırılmasının sonucu olmalı, // ve her değer, bu anahtarla orijinal dizinin tüm öğelerini içeren bir dizi olmalı.
Son projede etkileşiminiz nasıl kuruldu? Agile mı yoksa başka bir şekilde mi?
Bir hizmetin veya onun bir bölümünün mimarisini kendi başına tasarlama deneyimin var mı?