Prólogo
Introducción
Algo va mal
Mi enfoque
Código fuente
Mi pasión
Parte I. La entrevista: el proceso
Presentación general
Cómo se seleccionan las preguntas
Línea de tiempo y hoja de ruta de los preparativos
El proceso de evaluación
Respuestas incorrectas
Cómo vestir
Los 10 errores principales
Preguntas más habituales
Parte II. Entre bastidores
La entrevista de Microsoft
La entrevista de Amazon
La entrevista de Google
La entrevista de Apple
La entrevista de Facebook
La entrevista de Yahoo!
Parte III. Situaciones especiales
Candidatos con experiencia
Testers y SDET
Directores de programa y de productos
Jefes y directores de desarrollo
Nuevas empresas
Parte IV. Antes de la entrevista
Conseguir la experiencia adecuada
Crear una red
Redactar un buen currículo
Parte V. Preguntas de comportamiento
Preparación
Enfrentarse a preguntas de comportamiento
Parte VI. Preguntas técnicas
Preparación técnica
Resolver preguntas técnicas
Cinco enfoques para algoritmos
Código de calidad
Parte VII. La oferta y más allá
Actuar ante ofertas y rechazos
Evaluar la oferta
La negociación
El trabajo
Parte VIII. Preguntas de entrevistas
Estructuras de datos preguntas y consejos
1. Matrices y cadenas
Tablas de hash
ArrayList (Matriz de cambio de tamaño dinámico)
StringBuffer
Preguntas de entrevista
2. Listas vinculadas
Crear una lista vinculada
Eliminar un nodo de una lista vinculada simple
La técnica del "corredor"
Problemas de recursión
Preguntas de entrevista
3. Pilas y colas
Preguntas de entrevista
4. Árboles y gráficos
Problemas a tener en cuenta
Recorrido de árboles binarios
Equilibrio de árboles: árboles rojo-negros y árboles AVL
Tries92
Recorrido de gráficos
Preguntas de entrevista
Conceptos y algoritmos: preguntas y consejos
5. Manipulación de bits
Manipulación de bits manual
Datos y trucos sobre bits
Operaciones con bits: get, set, clear y update
Preguntas de entrevista
6. Rompecabezas mentales
Empezar a hablar
Desarrollar reglas y patrones
Desplazar el caso peor
Enfoques para algoritmos
Preguntas de entrevista
7. Matemáticas y probabilidad
Números primos
Probabilidad
Factores a tener en cuenta
Preguntas de entrevista
8. Diseño orientado a objetos
Cómo afrontar preguntas sobre el diseño orientado a objetos
Patrones de diseño
Preguntas de entrevista
9. Recursión y programación dinámica
El enfoque
Programación dinámica
Soluciones recursivas frente a soluciones iterativas
Preguntas de entrevista
10. Escalabilidad y límites de memoria
El enfoque paso a paso
Lo que necesita saber: información, estrategias y problemas
Ejemplo: Buscar todos los documentos que contengan una lista de palabras
Preguntas de entrevista
11. Ordenar y buscar
Algoritmos de ordenamiento más habituales
Algoritmos de búsqueda
Preguntas de entrevista
12. Pruebas
Qué busca el entrevistador
Probar un objeto real
Probar un producto de software
Probar una función
Preguntas de resolución de problemas
Preguntas de entrevista
Conocimientos: preguntas y consejos
13. C y C++
Clases y herencia
Constructores y destructores
Funciones virtuales
Valores predeterminados
Sobrecarga de operadores
Punteros y referencias
Plantillas
Preguntas de entrevista
14. Java
El enfoque
La palabra clave final
La palabra clave finally
El método finalize
Sobrecarga frente a sobrescritura
Estructura de colecciones
Preguntas de entrevista
15. Bases de datos
Sintaxis y variantes de SQL
Bases de datos desnormalizadas y normalizadas
Instrucciones SQL
Diseñar bases de datos de tamaño reducido
Diseñar bases de datos de gran tamaño
Preguntas de entrevista
16. Hilos de ejecución y bloqueos
Hilos de ejecución en Java
Sincronización y bloqueos
Bloqueos mutuos y prevención de bloqueos
Preguntas de entrevista
Problemas adicionales: preguntas y consejos
17. Dificultad media
18. Dificultad elevada
Parte IX. Soluciones
Estructuras de datos: soluciones
1. Matrices y cadenas
2. Listas vinculadas
3. Pilas y colas
4. Árboles y gráficos
Conceptos y algoritmos: soluciones
5. Manipulación de bits
6. Rompecabezas mentales
7. Matemáticas y probabilidad
8. Diseño orientado a objetos
9. Recursión y programación dinámica
10. Escalabilidad y límites de memoria
11. Ordenar y buscar
12. Pruebas
Conocimientos: soluciones
13. C y C++
14. Java
15. Bases de datos
16. Hilos de ejecución y bloqueos
Problemas adicionales: solucion alfabético