El mejor libro para la preparación de entrevistas de codificación técnica

Las entrevistas de codificación técnica son notoriamente difíciles, casi como un cuestionario para aquellos que no están preparados. A veces puede ser una tarea abrumadora navegar por todos los recursos de preparación de codificación técnica disponibles en línea, y uno podría preguntarse: ¿Existe un solo libro / recurso que se prepare mejor para las entrevistas de codificación técnica?

Lo mejor , es relativo, por supuesto, en este caso. Si está buscando un libro que le enseñe cómo resolver cualquier pregunta de codificación, le oriente sobre cómo diseñar algo como Instagram que se adapte a mil millones de usuarios y haga su sándwich mientras lo hace, entonces este libro definitivamente ¿no es así?

Pero para pulir sus habilidades técnicas y asegurarse de estar bien preparado para enfrentar los desafíos de la programación en una entrevista, este libro se acerca muchísimo a eso.

En la reseña del libro de hoy, repaso en detalle lo bueno y lo malo de uno de los libros más vendidos en Amazon para entrevistas de codificación técnica: Elements of Programming Interviews (también conocido como EPI , y se hará referencia a él como tal en el resto de este artículo).

¿De que es este libro?

EPI es un libro que se centra en la preparación para las preguntas de la entrevista de ingeniería de software técnico que se hacen comúnmente en las empresas de tecnología. Si está buscando un puesto como ingeniero de software, este libro tiene algo para usted.

EPI fue escrito por 3 personas que han trabajado en algunas de las empresas de tecnología más conocidas del mundo, como Facebook, Google, Uber y Microsoft. Los autores tienen una sólida formación técnica, y esto se evidencia en el enfoque técnico en los contenidos del libro.

El libro en sí es de naturaleza altamente técnica y profundiza en la informática fundamental. Los tipos de preguntas de codificación técnica varían ampliamente desde la manipulación de cadenas hasta recorridos de gráficos. El libro también ofrece consejos y trucos concretos para resolver tipos específicos de problemas de codificación e incluye una hoja de referencia para ayudar a resolver las preguntas técnicas.

El bueno

En resumen: EPI es un libro altamente técnico que se adapta bien a cualquiera que busque prepararse para preguntas de codificación técnica que giran en torno a estructuras de datos y algoritmos.

Las cosas que disfruté particularmente:

  • tiene muchas preguntas (más de 300) con respuestas detalladas, en comparación con otro libro popular (Cracking The Coding Interview) que solo tiene más de 170
  • viene en 3 versiones diferentes: Java, Python y C ++. Adecuado para personas que quieren usar el idioma de su elección.
  • tiene una excelente hoja de trucos (Capítulo 4) que resume todas las técnicas y estructuras de datos que necesita
  • cubre en detalle cada estructura de datos que necesita, los algoritmos que debe conocer y las técnicas que debe conocer en un formato simple y comprensible
  • cubre temas técnicos relevantes que le pueden preguntar en una entrevista de codificación, como qué es TCP / IP, cómo funciona Internet y cómo capturar relaciones entre diferentes entidades en el diseño de esquemas

Esos son algunos de los puntos de alto nivel que disfruté del libro. Lo que realmente disfruto es que las respuestas están muy, muy bien construidas.

Las respuestas a menudo adoptan un enfoque de fuerza bruta / simplista a los problemas. Luego, los autores proporcionan ejemplos concretos de cómo se puede mejorar el enfoque de la fuerza bruta. Con cada iteración, los autores señalan dónde están las limitaciones y cómo puede resolverlas con optimizaciones incrementales.

Por ejemplo, EPI explica cómo detectar un ciclo en una lista vinculada. El primer enfoque: use un mapa hash para almacenar cada nodo que atraviesa, y luego verifique el mapa hash para ver si lo ha visto. Esto hace el trabajo, aunque requiere espacio adicional (la llamada complejidad del espacio O (N) y complejidad del tiempo O (N)).

Luego, el libro señala que el espacio adicional no es necesario y sugiere que la detección de ciclos en una lista vinculada se puede realizar sin espacio adicional manipulando los punteros.

Toma el mismo enfoque para explicar casi todas las preguntas, para que todos puedan entender cómo pasar de una solución aproximada a una optimizada.

Para alguien que está oxidado y busca comenzar a prepararse para las entrevistas, EPI hace un gran trabajo: cada capítulo comienza con un resumen de la estructura de datos o algoritmo que aprenderá, por qué la estructura de datos es especial, cuáles son las fortalezas / debilidades de dicha estructura de datos y lo que necesita tomar nota.

En resumen, EPI es el cuaderno que deseaba tener cuando me preparaba para entrevistas técnicas. Este es el libro que le daría a un amigo que esté buscando prepararse para entrevistas técnicas, además de mi curso de entrevistas más vendido (Acing The Tech Interview), que prepara a cualquier candidato para toda la experiencia de la entrevista, desde la preparación del currículum, las preguntas de comportamiento hasta cómo para resolver problemas de codificación de forma creativa. Las clases se llenan rápido, así que reserve su espacio aquí hoy.

El malo

EPI también tiene sus desventajas. Al ser un libro muy técnico, esto significa que el libro se centra en la codificación de preguntas.

Esto, inadvertidamente, significa que el libro se queda corto en términos de otros aspectos del proceso de entrevista técnica que son, posiblemente, igual de importantes: negociación de ofertas, cómo escribir un currículum persuasivo, qué hacer cuando recibe una oferta, cómo manejar preguntas de comportamiento, etc.

Además, el libro entra en detalles profundos con estructuras de datos y algoritmos, pero solo proporciona una descripción general de alto nivel, hasta el punto de ser confuso debido a la falta de contexto, de varios otros conceptos importantes como SQL, NoSQL, cómo diseñar un esquema adecuado para una aplicación simple y más.

El libro cubre el diseño de SQL explicando cómo estructurar tablas para capturar relaciones entre entidades, pero no explica más sobre JOINs o cómo consultar las tablas correctamente. Creo que comprender el qué (tablas SQL) es tan importante como el cómo (consultas).

EPI también tiene un capítulo sobre diseños de sistemas, pero el capítulo no cubre los diseños distribuidos. Me hubiera gustado más si el libro hubiera descrito con más detalle qué son los sistemas distribuidos o dónde encontrar más información sobre estos.

¿Es este un buen libro para mí?

Si tienes ~ $ 40 de sobra y muchas ganas de aprender, te lo diría.

El libro se vende por $ 36 en promedio (hay 3 versiones). Este libro tiene una alta calificación en Amazon.com, con un promedio de 4.53 estrellas en las 3 versiones. Las estadísticas son las siguientes:

En Amazon.com:

3 versiones (al 12 de marzo):

  • Python: 169 calificaciones 4.3 ave
  • Java: 203 calificaciones 4.6 ave
  • C ++: 436 calificaciones 4.7 ave

En total, hubo un total de 808 revisiones.

Algunas de las reseñas:

"... el mejor algoritmo / estructura de datos que he tomado" "el código es de alta calidad, con nombres de variables significativos" "este es un libro imprescindible"

Ahora, ¿deberías comprarlo?

Creo que EPI es uno de los mejores recursos para prepararse para entrevistas de codificación técnica, sin excepción. Independientemente de su nivel de experiencia, hay algo para usted. Disfruto especialmente leer el libro por sus explicaciones claras y concisas, y utilizo este libro como referencia en mi curso de programación.

Si desea todas las estructuras de datos, los algoritmos que necesita conocer en un solo libro fácil de leer, EPI es el libro para usted.

Para diseños de sistemas distribuidos, recomiendo buscar en otra parte. Un buen comienzo es diseñar aplicaciones intensivas en datos.

Me encanta por la profundidad y los conocimientos, y se lo recomiendo a muchos estudiantes que también están tomando mis cursos.

Recursos que recomiendo

Diseño de aplicaciones intensivas en datos: gran recurso para aprender sobre sistemas distribuidos y cómo funcionan los sistemas a gran escala.

Acing The Technical Interview: mi curso de coaching personal más vendido sobre cómo lograr entrevistas técnicas. Cubrimos revisión de currículum, entrevista de codificación técnica, preguntas de comportamiento y más.

Acing The Distributed Systems Design Interview - mi curso de entrenamiento personal sobre el diseño de sistemas distribuidos a gran escala. Aprenda a diseñar funciones como Instagram Stories, Groupon, sitios de transmisión de películas como Netflix a escala.