Perguntas de codificação algorítmica são exatamente as questões que você pode encontrar no LeetCode. Perguntas algorítmicas geralmente possuem as seguintes características:
Embora as perguntas de codificação algorítmica não sejam específicas para o front-end, as habilidades necessárias para se destacar nessas questões - pensamento analítico sólido, comunicação eficaz, compreensão sólida das estruturas de dados e algoritmos comuns, boas práticas de codificação - ainda são habilidades cruciais que bons Engenheiros Front-End devem possuir. Bons Engenheiros Front-End também são bons Engenheiros de Software, e bons Engenheiros de Software devem ter domínio sobre estruturas de dados e algoritmos básicos. Portanto, não é surpresa que muitas empresas ainda façam perguntas de codificação algorítmica durante o processo de entrevista. Familiaridade com estruturas de dados e algoritmos também é útil para resolver perguntas de codificação em JavaScript e perguntas de codificação de Interface do Usuário.
Existem muitos recursos disponíveis que abordam entrevistas de codificação algorítmica, e como elas não são específicas para o front end, não entraremos em muitos detalhes nesta página. Recomendamos consultar o [Manual de Entrevistas Técnicas] (https://www.techinterviewhandbook.org) como um recurso gratuito se você deseja aprender mais sobre entrevistas de codificação algorítmica.
Consulte o guia passo a passo do Manual de Entrevistas Técnicas sobre como se preparar para entrevistas de codificação algorítmica. (https://www.techinterviewhandbook.org/coding-interview-prep/).
Embora você ainda possa ser questionado sobre qualquer tópico algorítmico, as empresas tendem a ser mais brandas com os candidatos a Engenheiro Front-End e provavelmente não farão perguntas envolvendo tópicos difíceis como programação dinâmica ou algoritmos de grafos complexos.
Como o DOM é uma árvore, priorize aprender sobre árvores e os diversos algoritmos de travessia de árvores.
Categoria | Tópicos Importantes |
---|---|
Estruturas de Dados | Arrays, Mapas, Pilhas, Árvores, Gráficos, Matriz (Arrays 2D), Conjuntos |
Algoritmos | Busca Binária, Busca em Largura, Busca em Profundidade, Ordenação Topológica, Recursão |
Array
Operação | Complexidade de Tempo |
---|---|
Array.prototype.concat() | O(m + n) |
Array.prototype.every() | O(n) |
Array.prototype.fill() | O(n) |
Array.prototype.filter() | O(n) |
Array.prototype.find() | O(n) |
Array.prototype.pop() | O(1) |
Array.prototype.push() | O(1) |
Array.prototype.reduce() | O(n) |
Array.prototype.reverse() | O(n) |
Array.prototype.shift() | O(n) |
Array.prototype.slice() | O(n) |
Array.prototype.some() | O(n) |
Array.prototype.sort() | O(nlgn) |
Array.prototype.splice() | O(n) |
Array.prototype.unshift() | O(m + n) |
* n
é o número de elementos do array e `m`` é o número de elementos
a serem adicionados.
Map
Operação | Complexidade de Tempo |
---|---|
Map.prototype.clear() | O(n) |
Map.prototype.delete() | O(1) |
Map.prototype.entries() | O(1) because it returns an iterator. Obter todas as entradas levará tempo O(n). |
Map.prototype.forEach() | O(n) |
Map.prototype.get() | O(1) |
Map.prototype.has() | O(1) |
Map.prototype.keys() | O(1) porque retorna um iterador. Obter todas as chaves levará tempo O(n). |
Map.prototype.set() | O(1) |
Map.prototype.values() | O(1) porque retorna um iterador. Obter todos os valores levará tempo O(n). |
* n
é o número de chaves no mapa.
Set
Operação | Complexidade de Tempo |
---|---|
Set.prototype.add() | O(1) |
Set.prototype.clear() | O(n) |
Set.prototype.delete() | O(1) |
Set.prototype.entries() | O(1) porque retorna um iterador. Obter todas as entradas levará tempo O(n). |
Set.prototype.forEach() | O(n) |
Set.prototype.has() | O(1) |
Set.prototype.keys() | O(1) porque retorna um iterador. Obter todas as chaves levará tempo O(n). |
Set.prototype.values() | O(1) porque retorna um iterador. Obter todos os valores levará tempo O(n). |
* n
é o número de chaves no conjunto (set).
Durante entrevistas de codificação algorítmica, os entrevistadores estão avaliando os candidatos com base nas seguintes habilidades:
Atualmente, a melhor plataforma para praticar perguntas algorítmicas é indiscutivelmente o LeetCode. No entanto, o GreatFrontEnd fornece algumas perguntas práticas para Estruturas de Dados e Algoritmos onde você pode praticar a implementação de estruturas de dados comuns (Stack, Queue) e algoritmos (Pesquisa Binária, Merge Sort), etc em JavaScript.