Como indica la respuesta de Vilnis, la concurrencia es difícil. Es difícil incluso para programadores experimentados. Es difícil incluso para desarrolladores con experiencia significativa en concurrencia.
En las entrevistas no hago preguntas difíciles de concurrencia. Sin embargo, quiero ver que el candidato tenga una comprensión básica de los patrones que promueven la seguridad de los hilos. Por ejemplo, espero que sepan qué es un objeto inmutable y por qué podría ser ventajoso “favorecer la inmutabilidad” (como escribió Joshua Bloch). También quiero ver una comprensión básica de cuándo usar colecciones sincronizadas y / o métodos sincronizados.
Es sorprendente cuántos programadores intermedios y superiores fallan en estas pruebas básicas, incluso cuando les doy pistas.
- Cómo prepararse para los enigmas en una entrevista
- ¿Cuáles son los consejos no obvios pero útiles para la parte de diseño de producto de las entrevistas de PM de Google?
- Cómo abordar con éxito la pregunta de la entrevista 'cuéntame sobre ti'
- ¿Cuál es la entrevista de trabajo más extraña en la que has participado?
- ¿Qué opinas sobre el proceso actual de entrevistas tecnológicas? Danny Crichton planteó una pregunta importante sobre el proceso de contratación actual para puestos de ingeniería de software.
Más allá de esto, sin embargo, es un poco irracional esperar demasiado, especialmente en una entrevista. Cuando se trata de concurrencia, intentamos asegurarnos de que dicho código sea revisado por más de un desarrollador senior y guardamos un par de copias de “Concurrencia de Java en la práctica” de Goetz et al. En la oficina. Todos los desarrolladores senior bromean acerca de cómo ese libro nos asusta (especialmente los primeros capítulos). Recomiendo a cualquier desarrollador serio de Java que obtenga una copia de ese libro e intente aprender de él, aunque sea un poco hora. El desarrollo serio de software requiere una competencia razonable con concurrencia práctica.