
Descrição Geral
Um livro sobre tarefas de teste e perguntas de entrevista voltado para a preparação para entrevistas de emprego, cobrindo muitos tópicos populares e preenchendo lacunas em conceitos gerais de programação (como tipos de dados, algoritmos, padrões e outros, embora quase não haja nada sobre segurança). O livro consiste em 17 capítulos e tem pouco mais de 350 páginas. Quase não há imagens, embora representações visuais fariam sentido para tópicos como grafos.
Visão Geral
As primeiras quase 50 páginas (dois capítulos) são puramente teóricas, contendo muito texto do tipo: decida sua direção, analise o mercado de trabalho, avalie suas habilidades, trabalhe em sua visibilidade online e portfólio. O segundo capítulo é inteiramente dedicado a candidaturas e busca de vagas.
A partir do terceiro capítulo, começam a aparecer exercícios de programação, embora principalmente no final. Se há algo para destacar neste capítulo, são os algoritmos e a complexidade algorítmica (notação Big-O) — exatamente o que cobri em detalhes em uma de minhas análises anteriores.
Em seguida, três capítulos focam em tipos de dados, ou melhor, estruturas de dados. São abordadas listas encadeadas (Capítulo 4), árvores e grafos (Capítulo 5), arrays e strings (Capítulo 6). Talvez estes sejam alguns dos capítulos mais úteis do livro. Há muitos exemplos (principalmente em C++, embora Java, JavaScript e C# também apareçam no capítulo sobre arrays e strings). As estruturas de dados em si são bem cobertas e os termos-chave são explicados. Por exemplo, em listas são vistos tipos (simplesmente encadeadas, duplamente encadeadas, circulares), operações (percurso, inserção, remoção) e exercícios práticos. O mesmo vale para árvores, grafos, arrays e strings. No geral, esses tópicos são bem explicados, e para quem não trabalha regularmente com, digamos, grafos, o material é suficiente para refrescar o conhecimento.
Depois vem recursão e problemas baseados em recursão. Não há muito a acrescentar aqui.
Após a recursão, há uma seção sobre ordenação. Esta seção também é muito útil por pelo menos duas razões: a ordenação é onipresente na programação (embora muitas funções nativas das linguagens lidem com isso automaticamente, sem que saibamos o método subjacente), e em segundo lugar, porque é um tópico que frequentemente (pelo menos antes) era usado para desafiar candidatos em entrevistas. Ordenação por seleção, por inserção, quicksort, mergesort — tudo isso é coberto aqui, junto com exercícios práticos.
Em seguida vem uma seção sobre programação paralela. Claro, este capítulo não cobre todas as abordagens possíveis, nem implementações específicas em linguagens modernas como Go ou Kotlin. No entanto, os conceitos gerais estão lá e são bem explicados. Threads, monitores, semáforos, deadlocks — tudo está coberto.
Depois vem POO. A seção tem apenas 10 páginas, então você pode imaginar o quão superficial é a cobertura, mesmo conceitualmente, sem vinculá-la a nenhuma linguagem específica. Construtores, destrutores, herança, polimorfismo, métodos virtuais, classes e objetos — isso é o que os autores conseguiram incluir.
Depois vêm os padrões de projeto. Também não há muitos aqui. Eu diria que quase não há, dado o espaço limitado. Como ponto positivo, alguns padrões simples são explicados e os grupos (criacionais, comportamentais, estruturais) são listados.
O capítulo sobre bancos de dados também é curto. Na minha opinião, é uma das seções mais fracas e menos desenvolvidas.
Depois há uma seção sobre gráficos e manipulação de bits. Não aprendi nada novo aqui, mas achei interessante, já que não lido com essas tarefas no dia a dia.
Em seguida, duas seções sobre quebra-cabeças. A primeira são problemas lógicos como "qual lâmpada corresponde a qual interruptor" (um quebra-cabeça lógico muito popular) ou o problema de atravessar um rio com animais que não podem ficar sozinhos. A segunda parte foca em quebra-cabeças gráficos (não confundir com a seção anterior sobre gráficos).
O penúltimo capítulo cobre problemas gerais. Aqui os autores incluíram tudo que não se encaixava nos capítulos anteriores: perguntas técnicas, lógicas, arquitetura, criptografia, segurança (embora este último ocupe apenas algumas páginas).
O livro termina com perguntas gerais não relacionadas à codificação, mas vinculadas a salários, habilidades interpessoais, fazer perguntas de acompanhamento, etc.
Minha Opinião
Acima de tudo, o livro é útil para quem está buscando entrar na área de TI ou entrou recentemente. Explica como e onde procurar emprego. Há tópicos que ajudarão a se preparar para entrevistas (complexidade algorítmica, listas e ponteiros, implementação de árvores e grafos, POO, padrões, bancos de dados, manipulação de bits e muito mais).