Casa > C > Como Me Preparar Para Responder A Perguntas De Design Em Uma Entrevista Técnica

Como me preparar para responder a perguntas de design em uma entrevista técnica

Eu tenho entrevistas de crack na maioria das principais empresas e eu conduzo entrevistas de design de sistemas para contratar engenheiros Junior/Senior na minha empresa atual. Aqui estão algumas das coisas chave a lembrar ao responder uma pergunta de design de sistema em uma entrevista:

Ask esclarecendo perguntas: Como candidato, é muito importante ter os requisitos claros com o entrevistador. Faça perguntas suficientes para saber que característica específica você é solicitado a construir, quantos dados o sistema deve tratar? Existem algumas restrições em torno do TPS, latência, memória, etc. ? Você provavelmente quer tirar estas questões do seu caminho no início. A maioria dos candidatos, acabam saltando diretamente para a solução apenas para perceber que o problema era diferente do que eles inicialmente pensavam.

Nota características para focar: Escreva as principais características no quadro branco em que se vai concentrar.

API: Anote as principais API's que seu sistema estará usando. Isso lhe dará uma idéia clara de quais são as entradas e saídas do seu sistema.

Desenhar o seu sistema: Desenhe uma arquitectura de alto nível de como seria o seu sistema no quadro branco. Este não precisa ser o design final do seu sistema. Quando você estiver apresentando isto, lembre-se de explicar quais tecnologias você está usando nesta arquitetura e por quê? Exemplo: se você está planejando usar NoSQL ao invés de SQL, chame o entrevistador para saber porque você está usando NoSQL. A maioria dos candidatos acaba ficando atolado aqui, quando questionados, eles acabam dando respostas como NoSQL é sem esquema, enquanto SQL é baseado em esquema, que pode nem ser relevante para o sistema que eles estão tentando construir.

Saber os prós e contras da tecnologia que você está usando: Como candidato é importante conhecer os prós e os contras da tecnologia que você está usando em seu projeto. Por exemplo, se você estiver usando o Amazon S3 para armazenar imagens e arquivos, esteja preparado para saber quais são as desvantagens de usar o S3 ou se você estiver usando o Dynamo/Mongo para armazenar dados, lembre-se de saber quais são suas desvantagens e como você justificaria sua escolha em relação a um simples banco de dados SQL, etc. (Dica: uma das desvantagens do Amazon S3 é que você não pode realizar operações de leitura/gravação de milissegundos. Uma das desvantagens do Dynamo/Mongo é que ele pode sofrer de um problema de hot-partition)

Estar preparado para responder a perguntas baseadas em cenários: Como entrevistador, normalmente questiono os candidatos com base em diferentes cenários que o seu sistema poderia enfrentar. Por exemplo, o que aconteceria se o seu servidor de base de dados fosse abaixo ? o que aconteceria se o seu servidor web fosse abaixo ? O que aconteceria se o TPS no seu sistema aumentasse drasticamente? Como é que o seu LB sabe distribuir a carga uniformemente?

Desenhar um sistema que possa ser dimensionado: Como candidato, você vai ser questionado sobre a escalabilidade, disponibilidade e latência do seu sistema. Esteja preparado para mudar o seu design inicial que você tinha apresentado conforme o novo requisito, mas lembre-se de adicionar suporte para o novo requisito graciosamente. Por exemplo, quando eu perguntar a um candidato se o seu sistema enfrenta um problema de partição quente, como ele lidaria com isso? O candidato acaba dizendo que podemos adicionar hosts adicionais, no entanto isso não reduzirá a carga na partição única. Uma resposta correta seria mudar a chave (usada em hashing consistente), para que a carga seja distribuída uniformemente entre todos os hosts.

Conclusões de drive baseadas em dados: Como candidato é importante conduzir conclusões baseadas em dados que você pode assumir ou obter de seu entrevistador. Por exemplo, se você está escolhendo um banco de dados para armazenar URLs, é crítico que você forneça uma estimativa aproximada da quantidade de dados que seu sistema vai esperar. (Dica: não há problema em fazer suposições aqui!)

Remmbrar para comunicar eficazmente: Como candidato é importante que você esteja se comunicando de forma inteligente com seu entrevistador, a rodada de design do sistema é uma sessão interativa e pode ir em qualquer direção. Lembre-se de ser inteligente e dirija a conversão para os tópicos que você conhece!

Calme-se durante a entrevista: Se você não souber a resposta a uma pergunta, não faz mal dizer que não sabe e adoraria aprender mais sobre isso, dada a oportunidade. Não atire palpites aleatórios ao entrevistador ou fique na defensiva sobre o seu design. Lembre-se que não há nenhum design neste mundo que seja perfeito!

main-qimg-b91ec9cbaeb66e2e8c0d041d137ac353

De Rose Mulvehill

Porque é que alguém escolheria o Samsung Galaxy S10 em vez do S10e? :: O que são os DNS 1 e DNS 2 da rede WiFi? Descobri que mudá-los funciona como uma VPN.