Sobes.tech

Frontend

Din aceste bilete se poate construi o singură rută continuă. Nu există bucle sau repetiții în rută. Trebuie să scrii un program care returnează aceleași obiecte de bilete în ordinea traseului. ```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' }, ])); ```

269

Ai determinat încărcătura sistemului în RPS? Care a fost cantitatea? Ai experiență în parcurgerea etapelor tehnice în format de live-coding?

257

Aplicația noastră de chat trebuie să afișeze cele mai noi mesaje care sosesc de la server cât mai rapid posibil. Mesajul are următorul format: interface Message { id: number text: string } Id-ul primului mesaj este 1, iar id-ul fiecărui mesaj următor este cu 1 mai mare decât cel anterior. Trebuie să afișăm mesajele în ordinea corectă, însă serverul nu garantează ordinea corectă a mesajelor trimise către aplicația noastră. Cronologia: // (sosește) [telefon] // (desenăm) . 1 2 3 . . 4 5 6 7 8 Pentru a afișa mesajele, folosiți funcția render: render(message)

226

Vorbește despre experiența ta cu Node.js, folosind ca exemplu un proiect la care ai lucrat, ce anume ai dezvoltat în el.

197

/** * Este necesar să scrieți o funcție asincronă, * care să "doarmă" timpul specificat în milisecunde, * și apoi să se încheie cu succes */

182

Înțelegere generală a JavaScript: transmiterea parametrilor, asincronie, prototipuri, gestionarea erorilor

175

// Este este necesar să verificați soluția problemei pe două servicii, apelând: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Dacă ambele solicitări returnează true - afișați în console.log() success // - Dacă cel puțin una returnează false - afișați în console.log() fail // - Dacă cel puțin una nu răspunde - afișați în console.log() error // - Dacă cel puțin una răspunde mai mult de 1 secundă - afișați în console.log() timeout

171

În ceea ce privește rolurile, ai prefera să mergi spre management sau spre domeniul tehnic?

162

Vorbește despre experiența ta de muncă la Atvint: proiecte, responsabilități, echipă, procese.

161

/** * Se oferă un array. Este necesar să sortăm numerele impare în ordine crescătoare, * iar cele pare să rămână pe pozițiile lor * / export function oddSort(numbers) { // codul tău aici } 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] // Este necesar să verificăm soluția problemei pe două servicii, apelând: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Dacă ambele cereri returnează true, afișează success // - Dacă cel puțin una returnează false, afișează fail // - Dacă cel puțin una nu răspunde, afișează error // - Dacă cel puțin una răspunde mai mult de 1 secundă, afișează 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); }

157

// Este necesar să implementați metoda groupBy, care extinde metodele standard ale array-urilor. // Metoda trebuie să returneze o versiune grupată a array-ului – un obiect, // în care fiecare cheie este rezultatul executării funcției fn(arr[i]), // iar fiecare valoare este un array care conține toate elementele array-ului original cu această cheie.

155

/** * Se presupune un array de puncte cu coordonate întregi (x, y). * Determinați dacă există o linie verticală, * care împarte punctele în două seturi simetrice față de această linie. * Notă: Pentru comoditate, punctul poate fi reprezentat nu ca un array [x, y], ci ca un obiect {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) { // cod aici }

155

/** * Funcția `asyncAuth(callback)` acceptă un callback, în care * poate fi transmisă o eroare (primul argument) și date * din backend (al doilea argument). * asyncAuth((error, data) => {}); * * Trebuie să implementați funcția `auth()`, * care apelează `asyncAuth()`, dar returnează o Promisiune. * * @returns {Promise} */ export function auth() { // asyncAuth((error, data) => {}); }

154

Se oferă trei secțiuni de cod. Este necesar să scrieți rezultatul fiecărui 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); // ??

154

/** * Funcția `tryAuth()` utilizează `auth()` și, în caz de eroare, * face N încercări suplimentare. * Dacă toate încercările eșuează, aruncă ultima eroare. * * @returns {Promise} */ export function tryAuth(n) { }

149

De ce decizie sau îmbunătățire autonomă ești mândru? Poate o sarcină foarte dificilă sau importantă?

144
/2