Introdução às perguntas e respostas da entrevista de projeto do sistema
O design do sistema é o procedimento para definir os elementos de um sistema, como a arquitetura, os componentes e os módulos, as várias interfaces desses componentes e as estatísticas que passam por esse sistema. Através da engenharia de um sistema lógico e eficaz, ele visa satisfazer requisitos e necessidades específicas de uma empresa ou organização. Isso implica uma abordagem organizada para o design de um sistema. A abordagem de baixo para cima ou de cima para baixo é necessária para considerar todas as variáveis relacionadas do sistema. As linguagens de modelagem são usadas por um designer para transmitir os dados e o conhecimento em uma estrutura de um sistema definida por um conjunto compatível de regras e definições. Os projetos podem ser descritos em linguagens de modelagem textual ou gráfica.
Alguns dos exemplos de linguagens de modelagem gráfica são:
- Linguagem de modelagem unificada (UML): descreve o software tanto comportamental quanto estruturalmente com notação gráfica.
- Notação de modelagem de processos de negócios (BPMN): É usada para modelagem de processos
- Linguagem de Modelagem de Sistemas (SysML): É usada para engenharia de sistemas.
- Fluxograma: uma representação simbólica ou gradual de um algoritmo.
O que se deve antecipar em uma entrevista de design de sistema?
Essa entrevista normalmente começa com um problema muito aberto, como projetar sua própria rede social (como Facebook, Twitter). À medida que a discussão avança, o entrevistador adicionará restrições ou suposições extras para reduzir o escopo do problema.
Para resolver essas questões, coisas que ajudam você a praticar e ter uma abordagem estruturada.
Agora, se você estiver procurando por um emprego relacionado ao design do sistema, precisará se preparar para as perguntas da entrevista de design do sistema para 2019. É verdade que cada entrevista é diferente de acordo com os diferentes perfis de trabalho. Aqui, preparamos as importantes Perguntas e respostas da entrevista de design do sistema, que o ajudarão a obter sucesso em sua entrevista.
Neste artigo de Perguntas sobre entrevista de design do sistema de 2019, apresentaremos as 10 perguntas mais importantes e frequentes sobre a entrevista de design de sistema. Essas perguntas são divididas em duas partes:
Parte 1 - Perguntas sobre entrevista de projeto do sistema (básico)
Esta primeira parte abrange as perguntas e respostas básicas da entrevista do projeto do sistema
Q1) Design TinyURL ou bit.ly (um serviço de redução de URL)?
Responda:
Crie recursos que o sistema deve suportar primeiro. Em segundo lugar, crie os números estimados de quão escalável o sistema pode ser.
Ao projetar um serviço, há três coisas a considerar:
- API (API REST) - a abordagem de comunicação do cliente com o serviço, juntamente com um balanceador de carga, que é o front-end do serviço.
- Camada de aplicação - threads ou hosts de trabalho que usam a URL e geram a URL minúscula para ela e armazenam os dois na camada de persistência.
- Camada de persistência - banco de dados
Coisas a analisar:
- Gere um ID exclusivo para cada URL e gere IDs em escala, pois milhares de solicitações de encurtamento de URL ocorrem a cada segundo.
- O identificador de serviço redireciona.
- Suporte URLs personalizados.
- Acompanhar estatísticas de cliques
- Excluir URLs expirados
2) Crie o YouTube / Netflix (um serviço global de streaming de vídeo)?
Responda:
Coisas a analisar:
- Nos vídeos, o serviço estará armazenando e transmitindo uma enorme quantidade de dados que um grande número de usuários pode assistir e compartilhar simultaneamente.
- Registre estatísticas sobre vídeos, por exemplo, o número total de visualizações, votos positivos / negativos, etc.
- Adicionando comentários em vídeos em tempo real.
Componentes:
- OC - Nuvens como AWS, OpenConnect, que atuam como uma rede de entrega de conteúdo.
- Backend - Banco de Dados
- Cliente - Qualquer dispositivo (computador, Android, iPhone) do qual você reproduz o vídeo no YouTube / Netflix.
Vamos para as próximas perguntas da entrevista sobre o design do sistema.
3) Criando o Quora / Reddit / HackerNews (uma rede social + serviço de quadro de mensagens)?
Responda:
Coisas a analisar:
As pessoas que usam os serviços podem compartilhar links ou postar perguntas. Outros usuários podem responder a perguntas ou comentar nos links compartilhados. Portanto, o serviço deve fazer o seguinte:
- Registra estatísticas para cada resposta, por exemplo, o número total de visualizações, votos positivos / negativos, etc.
- Os usuários devem estar em posição de seguir outros usuários ou tópicos
- Lista das principais perguntas na linha do tempo de todos os usuários e os tópicos que eles seguem (semelhante à geração de feed de notícias).
4) Projetar o Facebook Messenger ou WhatsApp (um serviço de bate-papo global)?
Responda:
Essas são as perguntas básicas da entrevista do System Design feitas em uma entrevista. Coisas a analisar:
- Crie conversas individuais entre usuários.
- Estendendo seu design para apoiar bate-papos em grupo.
- O que pode ser feito quando o usuário não está conectado à Internet?
- Quando enviar notificações push?
- Como fornecer criptografia de ponta a ponta?
Estrutura:
Cliente> Balanceador de carga> Nós> Cache (Redis)> Banco de Dados (Casandra)
5) Tipo de pesquisa de design antecipado (preenchimento automático)?
Responda:
Coisas a analisar:
- Tipeahead sugestões a serem fornecidas.
- Critérios para escolher as sugestões.
- O sistema precisa ser em tempo real?
- Suporte a personalização com as sugestões.
- Consultas por segundo a serem tratadas pelo sistema.
- Quantidade de dados a serem armazenados.
Parte 2 - Perguntas da entrevista sobre o design do sistema (avançado)
Agora, vamos dar uma olhada nas perguntas avançadas da entrevista do System Design.
6) Projete o Dropbox / Google Drive / Google Fotos?
Responda:
Coisas a analisar:
- Como fazer upload / visualizar / pesquisar / compartilhar arquivos ou fotos?
- Controlar permissões para compartilhamento de arquivos.
- Permitindo que vários usuários editem o mesmo documento.
7) Design de Facebook, Twitter ou Instagram?
Responda:
Recursos a serem considerados:
- Alguns dos recursos do Twitter / Facebook / Instagram são suportados.
- Precisa dar suporte às respostas aos tweets / agrupar tweets por conversas.
- Controles de privacidade em torno de cada tweet.
- Suportando tweets populares
- Mensagens diretas
- Menções / Marcação
Coisas a analisar:
- O número de usuários e o tráfego a ser tratado pelo sistema.
- Quantidade de seguidores que o usuário possui.
- O número de vezes que o tweet foi adicionado como favorito.
Componentes que devem ser projetados:
- Geração de feed de notícias
- Gráfico social
- Pesquisa e armazenamento sistemático de mensagens / tweets.
Vamos para as próximas perguntas da entrevista sobre o design do sistema.
8) Projetar um rastreador da Web?
Responda:
É necessário um serviço escalável que possa rastrear a web inteira e coletar centenas de milhões de documentos da web.
Coisas a analisar:
- Localizando novas páginas da web.
- Priorizando páginas da web que mudam dinamicamente.
- Garantir que o rastreador não esteja vinculado sem limites ao mesmo domínio.
9) Design Uber:
Responda:
Estas são as perguntas mais frequentes da entrevista do System Design em uma entrevista. Arquitetura: Serviços monolíticos / Micro (serviço em tempo real, front-end (aplicativo) e banco de dados)
- O back-end está atendendo ao tráfego do telefone móvel e os clientes se conectam ao back-end por dados móveis.
- Os clientes estão vinculados ao sistema de expedição que corresponde aos motoristas e passageiros.
- A expedição é escrita quase inteiramente em node.js.
- Mapas / ETA: Para que o envio faça uma escolha inteligente, é importante obter mapas e dados de roteamento.
- Serviços: serviços de lógica de negócios escritos principalmente em python.
- Bancos de dados: Postgres, Redis, MySQL.
Coisas a analisar:
- Cliente solicitando uma carona e como combiná-los economicamente com os motoristas próximos.
- Armazenar toneladas de localizações geográficas para motoristas e motociclistas que estão sempre em movimento.
- Manipulação de atualizações nos locais dos drivers.
10) Projetar um limitador de taxa de API (Github)?
Responda:
Coisas a analisar:
- Limitar o número de solicitações que uma entidade pode enviar para uma API dentro de uma janela de tempo, por exemplo, dez solicitações por segundo.
- A limitação de taxa deve funcionar para uma configuração dispersa, pois as APIs são acessíveis através de um grupo de servidores.
Artigos recomendados
Este foi um guia para a lista de perguntas e respostas da entrevista do System Design, para que o candidato possa reprimir essas perguntas da entrevista do System Design facilmente. Aqui neste post, estudamos as principais perguntas da entrevista sobre design de sistemas, que são frequentemente feitas em entrevistas. Você também pode consultar os seguintes artigos para saber mais -
- Perguntas da entrevista do AutoCAD
- Perguntas da entrevista do Photoshop
- Adobe Illustrator para iniciantes
- Assistente de Designer Gráfico