Ao contrário das perguntas de codificação e questionários, as entrevistas de design de sistemas são do estilo aberto, onde não há respostas certas. Você recebe um problema ou cenário vago e espera-se que trabalhe com o entrevistador para responder à pergunta, desenvolvendo um design de software adequado em um quadro branco ou em algum aplicativo de desenho colaborativo, caso a entrevista seja virtual. É semelhante ao processo em certas empresas, onde os engenheiros escrevem documentos técnicos de design para esboçar as abordagens possíveis de um projeto em que estão trabalhando, explicar decisões técnicas e discutir compensações com os colegas, exceto que você precisa fazer isso em um período de 30 a 60 minutos.
As entrevistas de design de sistemas geralmente são realizadas com candidatos que têm alguns anos de experiência de trabalho (não recém-formados) e seu desempenho na entrevista de design de sistemas tem uma influência significativa no nível de cargo que lhe será oferecido. Na maioria das vezes, falhar na entrevista de design de sistemas resultará em uma rejeição geral. É realmente importante ter um desempenho excepcional em suas entrevistas de design de sistemas!
No entanto, devido à natureza aberta das entrevistas de design de sistemas, é muito mais difícil praticar para elas em comparação com as entrevistas de codificação. Muitos candidatos também não têm experiência real na construção de vários sistemas, e é difícil se basear em experiências ao responder perguntas de entrevistas de design de sistemas. Além disso, existem poucos recursos disponíveis para o design de sistemas front-end. A maioria dos recursos existentes de design de sistemas é direcionada a Engenheiros de Software em geral e, portanto, foca em sistemas distribuídos.
Os recursos de design de sistemas da GreatFrontEnd são talvez os mais abrangentes que você pode encontrar e ajudarão você a lidar com as entrevistas de design de sistemas front-end com facilidade!
Nas entrevistas tradicionais de design de sistemas para Engenheiros de Software, os candidatos serão solicitados a descrever a arquitetura de um sistema distribuído, geralmente envolvendo servidores web, balanceadores de carga, caches, bancos de dados, microsserviços, filas de tarefas, etc. Para Engenheiros Front-End, as entrevistas de design de sistemas são um pouco diferentes, com mais ênfase no que acontece no cliente e no design da API entre o cliente e o servidor, em vez do que acontece no back-end.
Proporção | Back End | Front End |
---|---|---|
Coletar requisitos | Obrigatório | Obrigatório |
Arquitetura/design de alto nível | Serviços em nuvem distribuídos | Aplicação/Componente |
Estimativa rápida | Obrigatório | Não obrigatório |
Componentes do sistema | Serviços em nuvem (por exemplo, balanceador de carga, servidor de aplicação, banco de dados, armazenamento de arquivos, caches, filas de mensagens, CDN) | Módulos de aplicação (Modelo, Visualização, Controlador) |
Modelo de dados | Esquema SQL | Estado da aplicação |
Tipo de APIs entre os componentes | Rede (qualquer protocolo) | Rede (HTTP, WebSocket), funções JavaScript |
Áreas de foco | Escalabilidade, Confiabilidade, Disponibilidade | Desempenho, Experiência do Usuário, Acessibilidade, Internacionalização |
Menos importante (pode ser tratado como uma caixa-preta) | Cliente | Servidor |
Leia mais sobre as diferenças entre as entrevistas de Design de Sistema de Front End e Back End no blog de Zhenghao em (https://www.zhenghao.io/posts/system-design-interviews)
Por exemplo, uma pergunta clássica é pedir para projetar uma interface de feed do Twitter, que pode ser feita tanto em entrevistas de sistemas de back end quanto de front end.
Como você pode ver, o foco das entrevistas de design de sistemas de front end pode ser muito diferente das de back end, e respondê-las bem requer uma abordagem diferente.
Nosso guia de Design de Sistema de Front End está estruturado em duas partes. Primeiro, você obterá uma compreensão mais profunda do que se trata uma entrevista de design de sistema e, em seguida, mergulhará em alguns estudos de caso de design de sistema de front end usando o framework RADIO.