Quais são algumas perguntas típicas de entrevista de design para engenheiros de software?


Melhor resposta

Aqui estão algumas que recordo de meu escapadas de entrevistas:

  1. Crie instagram ou algum tipo de feed de conteúdo. Este é realmente SUPER comum, i deve ter conseguido 3 ou 4 vezes em várias empresas. É bastante simples e é provavelmente o que os entrevistadores que são preguiçosos para pensar em uma pergunta melhor farão.
  2. Tipo antecipado / preenchimento automático. Também recebi este várias vezes, às vezes com pequenas variações. Geralmente é baseado em uma estrutura de dados Trie. Este é ótimo para praticar!
  3. Projete um barramento de mensagens (apache kafka / zeromq / rabbitmq). Você pode obter algo assim se for uma entrevista para uma função de software orientado a infra-estrutura. Esse é um ótimo que pode gerar muitas áreas de foco e subquestões diferentes.
  4. Projete um cache LRU. Normalmente se resume a implementação de uma lista duplamente vinculada para obter remoção de tempo constante para os elementos menos usados ​​recentemente quando o cache está cheio.
  5. Design um cache distribuído. Novamente, pode ser para uma função que seja orientada para a infra-estrutura. Também pode ser levado em muitas direções diferentes.
  6. Projete tabelas de banco de dados / data warehouse. Isso pode ser para uma função mais orientada ao engenheiro de dados, mas também é comum para SWEs, já que um bom design de dados é extremamente importante.

Aqui estão alguns que eu NÃO vi pessoalmente , apesar de ser geralmente aceito como comum:

  1. Crie um encurtador de URL
  2. Crie um site de loja na web / comércio eletrônico

Espero que isso ajude! Eu estaria disposto a apostar que as 4-5 primeiras cobrirão a MAIORIA das entrevistas de design do seu sistema – e para aquelas que eles não cobrem, o conhecimento que você adquire ao estudá-las deve ser bem transferido para diferentes variações das perguntas.

Resposta

Entrevistas de design do sistema testem suas habilidades de design e de trabalhar com serviços complexos e escaláveis. Seu desempenho nessas entrevistas determina qual cargo e salário você receberá. Se você tiver habilidades de design louváveis, receberá uma oferta maior. Um bom recurso para se preparar para esta entrevista: Grokking a entrevista de design do sistema

Alguns exemplos de problemas de design são:

Além disso, é uma boa ideia se familiarizar com os conceitos de sistemas distribuídos, como Hashing consistente, Particionamento de dados , Balanceamento de carga , Redundância e replicação , Teorema CAP , etc.

Na minha experiência, os candidatos que tiveram um melhor desempenho nas entrevistas de design seguiram estas sete etapas:

Etapa 1: Esclarecimentos sobre os requisitos: sempre faça perguntas para encontrar o escopo exato do problema que você está resolvendo.

Etapa 2: Definição da interface do sistema: Defina quais APIs são esperadas do sistema. Isso também garantirá se você não errou em nenhum requisito.

Etapa 3: Estimativa do verso do envelope: É sempre uma boa ideia estimar a escala do sistema que você vai projetar.

Etapa 4: Defina o modelo de dados: embora seja não obrigatório no início, isso esclarecerá como os dados fluirão entre os diferentes componentes do sistema e, posteriormente, também o guiará para o particionamento de dados.

Etapa 5: Design de alto nível: desenhe um diagrama de blocos com 5-6 caixas representando os componentes principais do seu sistema.

Etapa 6: design detalhado dos componentes : Aprofunde-se em 2-3 componentes; o feedback dos entrevistadores deve sempre orientá-lo sobre quais partes do sistema ele deseja que você explique melhor.

Etapa 7: Gargalos: tente discutir tantos gargalos quanto possível e diferentes abordagens para mitigá-los.

Espero que tenha ajudado.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *