Desses bilhetes, pode-se construir uma única rota contínua. Não há loops nem repetições na rota. É necessário escrever um programa que retorne esses mesmos objetos de bilhetes na ordem da rota. ```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
Você já determinou a carga do sistema em RPS? Qual foi a quantidade? Já teve experiência de passar por etapas técnicas em formato de live-coding?
Já teve que lidar com a segurança da aplicação, código ou serviço?
A nossa aplicação de chat deve mostrar as novas mensagens que chegam do servidor o mais rápido possível. A mensagem tem o seguinte formato: interface Message { id: number text: string } O id da primeira mensagem é 1, e o id de cada mensagem seguinte é 1 maior que o da anterior. Precisamos exibir as mensagens na ordem correta, mas o servidor não garante a ordem correta das mensagens enviadas para a nossa aplicação. Linha do tempo: // (chega) [telefone] // (desenhamos) . 1 2 3 . . 4 5 6 7 8 Para exibir as mensagens, deve-se usar a função render: render(message)
Fala sobre sua experiência com Node.js, usando como exemplo algum projeto em que você trabalhou, o que exatamente você desenvolveu nele.
/** * É necessário escrever uma função assíncrona, * que "durma" a quantidade de milissegundos especificada, * e depois termine com sucesso */
Compreensão geral do JavaScript: passagem de parâmetros, assíncrono, protótipos, tratamento de erros
// É necessário verificar a solução do problema em dois serviços, chamando: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Se ambas as requisições retornarem true - exibir no console.log() success // - Se alguma retornar false - exibir no console.log() fail // - Se alguma não responder - exibir no console.log() error // - Se alguma responder por mais de 1 segundo - exibir no console.log() timeout
Em relação aos papéis, gostarias de seguir na direção da gestão ou na direção técnica?
Fale sobre a sua experiência de trabalho na Atvint: projetos, responsabilidades, equipa, processos.
/** * Dado um array. É necessário ordenar os números ímpares por valor em ordem crescente, * e deixar os pares nas suas posições originais * / export function oddSort(numbers) { // o seu código aqui } 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] // É necessário verificar a solução do problema em dois serviços, chamando: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Se ambas as requisições retornarem true, imprimir no console.log() success // - Se alguma retornar false, imprimir no console.log() fail // - Se alguma não responder, imprimir no console.log() error // - Se alguma responder por mais de 1 segundo, imprimir no console.log() 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); }
Participou no projeto da API?
São dadas três secções de código. É necessário escrever o resultado de cada 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); // ??
// É necessário implementar o método groupBy, que estende os métodos padrão dos arrays. // O método deve retornar uma versão agrupada do array – um objeto, // no qual cada chave é o resultado da execução da função fn(arr[i]), // e cada valor é um array contendo todos os elementos do array original com essa chave.
Tem experiência com deployment de aplicações, CI/CD, configuração?
/** * Dado um array de pontos com coordenadas inteiras (x, y). * Determinar se existe uma linha vertical, * que divide os pontos em dois conjuntos simétricos em relação a essa linha. * Nota: Para conveniência, o ponto pode ser representado não como um array [x, y], mas como um objeto {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) { // código aqui }
/** * A função `asyncAuth(callback)` aceita um callback, no qual pode * ser passada uma erro (como primeiro argumento) e dados * do backend (como segundo argumento). * asyncAuth((error, data) => {}); * * Precisa implementar a função `auth()`, * que chama `asyncAuth()`, mas retorna uma Promessa. * * @returns {Promise} */ export function auth() { // asyncAuth((error, data) => {}); }
/** * A função `tryAuth()` usa `auth()` e, em caso de erro, * faz N tentativas adicionais. * Se todas as tentativas falharem, lança o último erro. * * @returns {Promise} */ export function tryAuth(n) { }
De que decisão autónoma ou melhoria estás orgulhoso? Talvez uma tarefa muito difícil ou importante?
Como foi a sua interação no último projeto? Foi por Agile ou de outra forma?