
Descripción general
Un libro sobre tareas de prueba y preguntas de entrevistas dirigido a prepararse para entrevistas laborales, cubriendo muchos temas populares y llenando vacíos en conceptos generales de programación (como tipos de datos, algoritmos, patrones y otros, aunque casi no hay nada sobre seguridad). El libro consta de 17 capítulos y tiene un poco más de 350 páginas. Casi no hay imágenes, aunque representaciones visuales serían útiles para temas como grafos.
Resumen
Las primeras casi 50 páginas (dos capítulos) son puramente teóricas, con mucho texto del tipo: decide tu dirección, analiza el mercado laboral, evalúa tus habilidades, trabaja en tu visibilidad en línea y portafolio. El segundo capítulo está completamente dedicado a solicitudes de empleo y búsqueda de vacantes.
A partir del tercer capítulo, aparecen ejercicios de programación, aunque principalmente hacia el final. Si hay algo que destacar de este capítulo, son los algoritmos y la complejidad algorítmica (notación Big-O) —exactamente lo que cubrí en detalle en una de mis reseñas anteriores.
Luego, tres capítulos se centran en tipos de datos, o más bien, estructuras de datos. Se tratan listas enlazadas (Capítulo 4), árboles y grafos (Capítulo 5), arreglos y cadenas (Capítulo 6). Quizás estos sean algunos de los capítulos más útiles del libro. Hay muchos ejemplos (principalmente en C++, aunque Java, JavaScript y C# también aparecen en el capítulo de arreglos y cadenas). Las estructuras de datos en sí están bien cubiertas y se explican términos clave. Por ejemplo, en listas se ven tipos (simplemente enlazadas, doblemente enlazadas, circulares), operaciones (recorrido, inserción, eliminación) y ejercicios prácticos. Lo mismo ocurre con árboles, grafos, arreglos y cadenas. En general, estos temas están bien explicados, y para quienes no trabajan regularmente con, digamos, grafos, el material es suficiente para refrescar conocimientos.
Luego viene la recursión y problemas basados en recursión. No hay mucho que agregar aquí.
Después de la recursión, hay una sección sobre ordenamiento. Esta sección también es muy útil por al menos dos razones: el ordenamiento es omnipresente en programación (aunque muchas funciones nativas de los lenguajes lo manejan automáticamente, sin que sepamos el método subyacente), y en segundo lugar, porque es un tema que frecuentemente (al menos antes) se usaba para desafiar a candidatos en entrevistas. Ordenamiento por selección, por inserción, quicksort, mergesort —todo esto está cubierto aquí, junto con ejercicios prácticos.
Luego viene una sección sobre programación paralela. Por supuesto, este capítulo no cubre todos los enfoques posibles, ni implementaciones específicas en lenguajes modernos como Go o Kotlin. Sin embargo, los conceptos generales están ahí y se explican bastante bien. Hilos, monitores, semáforos, interbloqueos —todo está cubierto.
Después viene POO. La sección tiene solo 10 páginas, así que puedes imaginar lo superficial que es, incluso conceptualmente, sin atarlo a ningún lenguaje. Constructores, destructores, herencia, polimorfismo, métodos virtuales, clases y objetos —eso es lo que los autores lograron incluir.
Luego vienen los patrones de diseño. Tampoco hay muchos aquí. Diría que casi no hay, dado el espacio limitado. Como punto positivo, se explican un par de patrones simples y se enumeran los grupos (creacionales, conductuales, estructurales).
El capítulo sobre bases de datos también es corto. En mi opinión, es una de las secciones más débiles y menos desarrolladas.
Luego hay una sección sobre gráficos y manipulación de bits. No aprendí nada nuevo aquí, pero me pareció interesante, ya que no trabajo con estas tareas a diario.
Después, dos secciones sobre acertijos. La primera son problemas lógicos como "qué bombilla corresponde a qué interruptor" (un acertijo lógico muy popular) o el problema de cruzar un río con animales que no pueden quedarse solos. La segunda parte se centra en acertijos gráficos (no confundir con la sección anterior sobre gráficos).
El penúltimo capítulo cubre problemas generales. Aquí los autores incluyeron todo lo que no encajaba en capítulos anteriores: preguntas técnicas, lógicas, arquitectura, cifrado, seguridad (aunque este último solo ocupa un par de páginas).
El libro termina con preguntas generales no relacionadas con codificación, pero vinculadas a salarios, habilidades blandas, hacer preguntas de seguimiento, etc.
Mi opinión
Ante todo, el libro es útil para quienes buscan ingresar en TI o lo han hecho recientemente. Explica cómo y dónde buscar empleo. Hay temas que ayudarán a prepararse para entrevistas (complejidad algorítmica, listas y punteros, implementación de árboles y grafos, POO, patrones, bases de datos, manipulación de bits y mucho más).