Preparando-se para uma entrevista com uma empresa Big Five

De acordo com minhas impressões, muitas pessoas estão interessadas no tópico de preparação para entrevistas nas principais empresas de tecnologia, então decidi escrever um artigo em vez de respostas pessoais às quais me referirei no futuro. Todo mundo que está interessado no processo de entrevista, coisas nas quais você precisa prestar atenção, como se preparar e no que se preparar - bem-vindo ao gato.

O que há neste artigo


  • Programa de treinamento
  • Lista de Recursos e Artigos
  • Dicas para entrevistas de emprego

Antes de iniciar meu treinamento, decidi desenvolver um sistema pelo qual prepararei, bem como uma lista de recursos que utilizarei no processo de preparação.

O primeiro passo foi determinar o que é necessário para a entrevista e, para isso, é necessário ter uma boa idéia de quais perguntas são encontradas nas entrevistas. Após uma pesquisa bastante rápida nos resultados de pesquisa do Google, deparei-me com este livro , que é uma coleção bastante completa de dicas úteis e exemplos de tarefas sobre tópicos de entrevistas.

Nesse estágio, vale ressaltar que o código do livro é escrito principalmente em Java / C ++, o que o torna bastante legível. Portanto, para uma entrevista mais confortável, recomendo que você resolva todos os problemas no idioma que planeja usar durante a entrevista.

Depois de ler este livro, consegui identificar uma lista dos principais tópicos de preparação.

Minha lista era algo assim:

  • Big o
  • Quebra-cabeças
  • Arquitetura de aplicativos
  • Algoritmos e estruturas de dados

Big o


Na verdade, não há nada especial a dizer sobre o Big-O, você só precisa conhecer e entender a diferença na complexidade computacional de diferentes algoritmos, entender como determinar o tempo de execução e o consumo de memória dos algoritmos, conhecer as etapas básicas para otimizar algoritmos, etc.
Inúmeros artigos e livros foram escritos sobre o Big-O; em quase todos os cursos sobre algoritmos, há palestras sobre esse assunto. Em um habr, há também uma série de artigos dedicados a esse assunto habr.com/post/196560

Quebra-cabeças


Isenção de responsabilidade - eu pessoalmente não encontrei quebra-cabeças na entrevista, mas ouvi dizer que eles poderiam se deparar.

A maneira como eu vi quebra-cabeças em termos de preparação é na verdade os mesmos algoritmos, apenas sem referência a uma estrutura de dados específica ou paradigma algorítmico. Por isso, organizar a preparação para quebra-cabeças é bastante difícil. A melhor solução que pude encontrar foi simplesmente "pôr as mãos", resolver 40-60 quebra-cabeças e, até certo ponto, entender como abordar a solução de quebra-cabeças. Com o tempo, o cérebro começa a entender no que prestar atenção e o que é simplesmente o design da tarefa: por exemplo, todos os números indicados no quebra-cabeça geralmente não são exatamente assim. Isso não é "apenas 2 cordas" e não apenas "queima em 25 minutos". Como regra, quebra-cabeças não contêm informações quantitativas inúteis.

Arquitetura de aplicativos


A compreensão da construção da arquitetura de aplicativos vem com experiência baseada no conhecimento. É bastante difícil se tornar um bom arquiteto sobre arquitetura e é bastante ineficiente estudar a arquitetura puramente por tentativa e erro. Por esses motivos, é bastante difícil “preparar” a parte arquitetônica da entrevista. Até certo ponto, a preparação para esta parte é toda a sua carreira. Mas ainda é uma boa idéia atualizar alguns aspectos. Por exemplo: arquitetura de representação. Mesmo aqueles que são proficientes em UML em um momento crítico podem simplesmente esquecer alguns dos detalhes da visualização ou das visualizações específicas dos links. Outro exemplo seria padrões de design populares. Apesar do uso frequente, como regra geral, nem todos são usados ​​imediatamente e não sob demanda para fornecer conhecimento sobre eles aqui e agora. Tente concluir várias rodadas de teste e identifique áreas problemáticas.

Algoritmos e estruturas de dados


Um dos momentos mais importantes e problemáticos da entrevista. É dada uma certa ênfase à resolução desses problemas e a capacidade de resolvê-los de maneira rápida e eficaz é bastante importante.
Para preparação, compilei uma lista de estruturas de dados e algoritmos que são mais comuns e resultou em algo como:

  • Matrizes
  • Cordas
  • Árvore binária
  • Árvore de Pesquisa Binária (BST)
  • Gráficos
  • Montões
  • Lista vinculada
  • Matrix
  • Stack
  • Fila
  • Trie
  • Backtracking
  • Dividir e conquistar
  • Programação dinâmica
  • Classificação
  • Ganancioso

Em cada uma das seções, existem vários truques que você só precisa dominar. Um exemplo clássico disso é o controle deslizante "lento" e "rápido" na lista vinculada. Sem conhecer ou não entender esse conceito, é praticamente impossível resolver efetivamente muitos problemas em listas vinculadas. Ou algoritmos de pesquisa de gráficos BFS / DFS. Como regra, muitas tarefas para entrevistas serão modificações de conceitos conhecidos ou uma combinação de várias. Portanto, é muito importante aprender a resolver e reconhecer as tarefas básicas em cada estrutura / algoritmo de dados.

Pessoalmente, assisti a algumas palestras da Universidade de Stanford e, depois que escrevi para mim mesmo ~ 5 a 10 trabalhos de cada categoria, simplesmente preenchi minha mão dessa maneira. É preciso muito tempo e esforço, mas, como resultado, vale a pena.

Aqui estão alguns recursos que eu usei para preparar e procurar tarefas:

https://www.quora.com - apenas uma lista de ~ 500 tarefas sobre vários tópicos, juntamente com soluções C ++. Bastante conveniente, às vezes existem várias soluções em que uma é mais ideal que a outra.

https://www.hackerrank.com é um recurso conveniente com categorias e tópicos e com um compilador interno para mais de 20 idiomas. Ajuda a preencher rápida e eficientemente sua mão.

https://www.glassdoor.com - contém diretamente perguntas de entrevistas e, às vezes, respostas da comunidade.

Para mim, esses dois foram suficientes, mas se você não for, esses três darão uma boa idéia sobre onde procurar mais.

Lembre-se de que é muito importante tentar obter uma resposta e uma decisão antes de examinar as dicas. Assim, você realmente se força a pensar e procurar uma solução, ou seja, simule diretamente a atmosfera da entrevista.

Não peca para usar apenas um computador para resolver problemas. Tente praticar em um quadro ou papel, como muitas empresas conduzem entrevistas dessa maneira.

Pode parecer que você é o mesmo, mas, na prática, a prática no papel abrirá muitas surpresas, começando pelo fato de que você precisa apresentar toda a solução antes de escrever (a exclusão e o backspace não estão aqui, excluir e mover linhas é muito caro) e terminar com que o espaço na folha / cartão seja salvo corretamente, porque é limitado.

O que você presta atenção durante a entrevista é a confiança e o ritmo com os quais resolve problemas, pensando em todas as opções de entrada possíveis, lidando com erros e em várias condições. Portanto, escrever apenas uma solução "funcional" não é suficiente.

Um bom conselho seria escrever código compilado. Sim, sem dúvida, o principal é a capacidade de resolver o problema e suas variações e ninguém prestará muita atenção a uma vírgula ausente, mas isso não deve ser incluído na regra. Você escreve código e soluções reais, não pseudo-código e esboços.

Durante a própria entrevista - tente não fechar sua criatividade, muitas decisões requerem uma abordagem de um ângulo não padrão. Se você estiver fechado - não hesite em pedir ajuda - isso não aumentará muito suas chances, mas você também não deve ficar 45 minutos em silêncio.

Este artigo pode não ser um guia completo e abrangente, mas ajudará você a entender em que direção seguir.

Boa sorte a todos em preparação.

Source: https://habr.com/ru/post/pt423329/


All Articles