As entrevistas técnicas de codificação são notoriamente difíceis – quase limítrofes para quem não está preparado. Às vezes, pode ser uma tarefa assustadora navegar por todos os recursos técnicos de preparação de codificação disponíveis on-line e pode-se perguntar: existe um único livro / recurso que melhor se prepare para entrevistas técnicas de codificação?
Melhor, é relativo, é claro, neste caso. Se você está procurando um livro que o ensine a resolver qualquer questão de codificação, o guie sobre como criar algo como o Instagram que pode ser escalado para um bilhão de usuários e faça seu sanduíche enquanto você está nele, então este livro definitivamente não é?
Mas, para aperfeiçoar suas técnicas e garantir que você esteja bem preparado para enfrentar os desafios de programação em uma entrevista, este livro chega muito perto disso.
Na crítica literária de hoje, eu passo em detalhe a Boa e a mau de um dos livros mais vendidos na Amazon para entrevistas técnicas de codificação: Elementos das entrevistas de programação (também conhecido como EPI, e será referido como tal no restante deste artigo).
Sobre o que é esse livro?
O EPI é um livro que se concentra na preparação para perguntas de entrevistas técnicas de engenharia de software, comumente feitas em empresas de tecnologia. Se você está procurando uma posição como engenheiro de software, este livro terá algo para você.
O EPI foi escrito por três pessoas que trabalharam em algumas das empresas de tecnologia mais conhecidas do mundo, como Facebook, Google, Uber e Microsoft. Os autores têm formação técnica muito forte, e isso é evidenciado pelo foco técnico no conteúdo do livro.
O livro em si é de natureza altamente técnica e mergulha profundamente na ciência fundamental da computação. Os tipos de perguntas técnicas sobre codificação variam muito, desde a manipulação de strings até a travessia de gráficos. O livro também oferece dicas e truques concretos para resolver tipos específicos de problemas de codificação e inclui uma folha de dicas para ajudar a aceitar questões técnicas.
O bom
Em resumo: o EPI é um livro altamente técnico adequado para quem procura se preparar para questões de codificação técnica que giram em torno de estruturas de dados e algoritmos.
As coisas que eu particularmente gostei:
- tem muitas perguntas (300+) com respostas detalhadas, em comparação com outro livro popular (Cracking The Coding Interview), que possui apenas 170+
- vem em 3 versões diferentes: Java, Python e C ++. Adequado para pessoas que desejam usar o idioma de sua escolha
- possui uma ótima folha de dicas (capítulo 4) que resume todas as técnicas e estruturas de dados necessárias
- abrange em detalhes todas as estruturas de dados necessárias, algoritmos que você deve conhecer e técnicas que você deve conhecer em um formato simples e compreensível
- aborda tópicos técnicos relevantes que você pode ser perguntado em uma entrevista de codificação, como o TCP / IP, como a Internet funciona e como capturar relacionamentos entre diferentes entidades no design do esquema
Esses são alguns dos pontos de nível superior que gostei sobre o livro. O que eu realmente aproveite é que as respostas são muito, muito bem construído.
As respostas geralmente adotam uma força bruta / abordagem simplista dos problemas. Os autores fornecem exemplos concretos de como você pode melhorar a abordagem da força bruta. A cada iteração, os autores apontam onde estão as limitações e como você pode resolvê-las com otimizações incrementais.
Por exemplo, o EPI explica como detectar um ciclo em uma lista vinculada. A primeira abordagem: use um mapa de hash para armazenar todos os nós que você atravessa e depois verifique no mapa de hash para ver se você o viu. Isso faz o trabalho, embora exija espaço adicional (a complexidade do espaço O (N) e complexidade do tempo O (N)).
O livro ressalta que o espaço adicional não é necessário e sugere que a detecção de ciclos em uma lista vinculada pode ser feita sem espaço adicional, manipulando os ponteiros.
É preciso a mesma abordagem para explicar quase todas as perguntas, para que todos possam entender como passar de uma solução aproximada para uma otimizada.
Para alguém que está enferrujado e quer começar a se preparar para entrevistas, o EPI faz um ótimo trabalho – cada capítulo começa com um resumo da estrutura de dados ou algoritmo que você aprenderá, por que a estrutura de dados é especial, quais são os pontos fortes / fracos de estrutura de dados e o que você precisa observar.
Em resumo, EPI é o caderno que eu gostaria de ter quando me preparava para entrevistas técnicas. Este é o livro que eu daria a um amigo que quer se preparar para entrevistas técnicas – além do meu best-seller curso de entrevistas (Acing The Tech Interview), que prepara qualquer candidato para toda a experiência da entrevista, desde a preparação do currículo, questões comportamentais até como resolver problemas criativos de codificação. As aulas são preenchidas rapidamente, então reserve seu espaço aqui hoje.
O mal
O EPI também tem suas desvantagens. Sendo um livro altamente técnico, isso significa que o livro está focado nas questões de codificação.
Isso, inadvertidamente, significa que o livro é insuficiente em termos de outros aspectos do processo de entrevista técnica que são, sem dúvida, tão importantes quanto – negociação de ofertas, como escrever um currículo persuasivo, o que fazer quando você recebe uma oferta, como lidar com questões comportamentais etc.
Além disso, o livro detalha detalhadamente as estruturas e algoritmos de dados, mas apenas fornece uma visão geral de alto nível, a ponto de ser confusa devido à falta de contexto, de vários outros conceitos importantes como SQL, NoSQL, como projetar um esquema adequado para uma aplicação simples e muito mais.
O livro aborda o design do SQL, explicando como estruturar tabelas para capturar relacionamentos de entidades, mas não explica mais sobre JOINs ou como consultar as tabelas corretamente. Eu acho que entender o o que (Tabelas SQL) é tão importante quanto o como (consultas).
O EPI também possui um capítulo sobre projetos de sistemas, mas o capítulo não cobre projetos distribuídos. Eu gostaria que o livro descrevesse com mais detalhes o que são sistemas distribuídos ou onde encontrar mais informações sobre eles.
Este é um bom livro para mim?
Se você tem ~ US $ 40 de sobra e um grande apetite para aprender, eu diria.
O livro é vendido por US $ 36 em média (existem 3 versões). Este livro é altamente classificado na Amazon.com, com uma média de 4,53 estrelas nas 3 versões. As estatísticas são as seguintes:
Em Amazon.com:
3 versões (a partir de 12 de março):
- Python: 169 classificações 4,3 ave
- Java: 203 classificações 4,6 ave
- C ++: 436 classificações 4,7 ave
No total, houve um total de 808 avaliações.
Algumas das opiniões:
“.. a melhor estrutura de algoritmo / dados que já tomei”
“O código é de alta qualidade, usando nomes de variáveis significativos”
“Este é um livro obrigatório”
Agora, você deve comprá-lo?
eu penso isso O EPI é um dos melhores recursos para se preparar para entrevistas técnicas de codificação, exceto nenhuma. Independentemente do seu nível de experiência, há algo para você. Gosto particularmente de ler o livro por suas explicações claras e concisas, e uso esse livro como referência no meu curso de programação.
Se você deseja todas as estruturas de dados, algoritmos que precisa conhecer em um único livro de fácil leitura, o EPI é o livro para você.
Para projetos de sistemas distribuídos, recomendo procurar em outro lugar. Um bom começo é Projetando aplicativos intensivos de dados.
Adoro a profundidade e as idéias e recomendo a muitos alunos que estão cursando o meu cursos também.
Recursos que eu recomendo
Projetando aplicativos intensivos de dados– ótimo recurso para aprender sobre sistemas distribuídos e como funcionam os sistemas em grande escala.
A entrevista técnica– meu curso de coaching pessoal mais vendido sobre como aceitar entrevistas técnicas. Cobrimos revisão de currículo, entrevista técnica de codificação, questões comportamentais e muito mais.
Entrando na Entrevista de Design de Sistemas Distribuídos– meu curso de coaching pessoal sobre o design de sistemas distribuídos em larga escala. Saiba como criar recursos como Instagram Stories, Groupon, sites de streaming de filmes como o Netflix em grande escala.