Sobes.tech

Frontend

Se a função logHello estiver escrita como uma arrow function e for chamada através de fn.call(this, ...args) dentro de runOnce, o que acontecerá com o contexto this? O que precisa ser alterado na função logHello para que o contexto seja passado corretamente?

250

Escreva uma função para converter uma string de camelCase para snake_case. Não deve usar expressões regulares, códigos de caracteres ou uma lista fixa de símbolos; a solução deve ser universal. Avalie a complexidade de tempo e espaço.

242

Por que, ao fazer duas chamadas sleep(2000) e sleep(1000), primeiro aparece o log sobre 1 segundo, e depois sobre 2? Explique o funcionamento do Event Loop, microtarefas e macrotarefas.

227

Conhecimento de bases de dados e trabalho com API

221

/* Temos um conjunto de bilhetes assim: [ { from: 'Londres', to: 'Moscovo' }, { from: 'NY', to: 'Londres' }, { from: 'Moscovo', to: 'São Petersburgo' }, ... ] Desses bilhetes, é possível construir uma única rota contínua. Não há ciclos nem repetições na rota. Precisa-se escrever um programa que retorne esses mesmos objetos de bilhetes na ordem da rota. */ function getRoute(tickets = [], startCity) { // seu código aqui } console.clear() console.log(getRoute([ { from: 'Londres', to: 'Moscovo' }, { from: 'NY', to: 'Londres' }, { from: 'Moscovo', to: 'São Petersburgo' }, ], 'NY')); /* [ { from: 'NY', to: 'Londres' }, { from: 'Londres', to: 'Moscovo' }, { from: 'Moscovo', to: 'São Petersburgo' }, ] */

217

/** * 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 Promise. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * A função `tryAuth()` usa `auth()` e, em caso de erro, * realiza N tentativas adicionais. * Se todas falharem, retorna o último erro. * * @returns {Promise} */ function tryAuth(n) { }

212

Se precisarmos considerar números fracionários, o que devemos acrescentar ao método times?

199

/* É necessário escrever um polyfill para Array.prototype.some Parâmetros - callback - função que verifica cada elemento, aceita três argumentos: - element - O elemento atual que está a ser processado no array. - index (Opcional) - O índice do elemento atual que está a ser processado. - array (Opcional) - O array sobre o qual a iteração é realizada. - thisArg (Opcional) - Valor usado como this ao executar a função callback. Valor de retorno true, se a função de verificação retornar um valor truthy para pelo menos um elemento do array. Caso contrário, false. */ Array.prototype.some = function (callback, thisArgs) { const array = this; for (let i = 0; i < array.length; i++) { if (!(i in array)) continue; const result = callback.call(thisArgs, array[i], i, array); if (result) return true; } return false; }

197

/** * 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 devolve uma Promise. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * A função 'tryAuth()' usa 'auth()' e, em caso de erro, * faz N tentativas adicionais. * Se todas falharem, devolve o último erro. * * @returns {Promise} */ function tryAuth(n) { return new Promise((resolve, reject) => { function attempt(attemptsLeft) { auth().then(resolve).catch((error) => { if (attemptsLeft <= 0) { reject(error); } else { attempt(attemptsLeft - 1); } }); } attempt(n); }); }

194

Em que mais teve que escrever na sua experiência comercial, além de TypeScript e JavaScript?

192

Em que equipa trabalha e em que projeto?

190

É possível resolver uma tarefa de soma de promessas sem usar métodos estáticos do Promise? Como será diferente a execução de promessas dentro de um ciclo em relação ao Promise.all — paralelamente ou sequencialmente?

183

/** * Implementar a função wrapper runOnce, que aceita * uma função e devolve uma nova função. A nova * função só pode ser chamada uma vez, todas as chamadas * subsequentes retornam undefined. * * A função envolvida pode aceitar argumentos * e retornar um resultado. */ function runOnce(fn) { // o seu código } const logHello = (name) => { console.log(`olá, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'olá, Oleg!' logHelloOnce('Olga'); // undefined

173

Implementar um decorador callLimit(fn, limit, callback), que limita o número de chamadas de uma função. Aceita: uma função para decorar, o número máximo de chamadas, um callback, chamado na última chamada (opcional). A função retornada deve ter um método reset para reiniciar o contador para o estado inicial.

173

O que é preferível usar para armazenar dados por chave: Map ou um objeto comum? Quais são as vantagens do Map?

171

Determine a ordem de saída no console e os valores do tempo medido no exemplo com sleep, temporizadores, Promise e filas de tarefas; explique por que o atraso real pode ser maior do que o definido.

171

Há uma árvore com esquilos e corvos. É necessário escrever uma função que encontre todos os esquilos na árvore e retorne seus nomes. Resultado esperado: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

169

/** * É necessário escrever uma função strjoin, * que concatena strings usando um separador. */ function strjoin() { // código aqui } console.log(strjoin('.', 'a', 'b', 'c')) // 'a.b.c' console.log(strjoin('-', 'a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'

166

O que você gosta e não gosta no seu trabalho na empresa?

166

Expanda o Array.prototype com um método que agrupa os elementos do array por uma chave calculada por uma função passada, e retorna um objeto onde cada chave corresponde a um array de elementos. Explique o que acontecerá se a função de cálculo da chave retornar algo que não seja uma string ou um número.

165
/6