Cada vez, preparándome para entrevistas para el puesto de "desarrollador de Java", entiendo que un plan de preparación concreto realmente me ayudaría. Por lo tanto, todas sus notas acumuladas durante el curso de las entrevistas, se decidió estructurar y publicar. Espero que alguien encuentre útil este plan.
E intencionalmente no escribo para quién está destinado este plan de capacitación: para un desarrollador senior, intermedio o junior; todo depende de la vacante específica y de los requisitos del empleador. Por lo tanto, confíe en este plan, pero filtre y al mismo tiempo no lo tome como una guía exhaustiva.
- Núcleo de Java . Aquí puede centrarse, por ejemplo, en el libro "OCP: Guía de estudio de Oracle II Professional Professional Java SE 8 Programmer II: examen 1Z0-809" para prepararse para la certificación Java del nivel profesional. Existe un libro similar , OCA: Guía de estudio del Programador I de Oracle Certified Associate Java SE 8: Examen 1Z0-808, para el nivel de Asociado; también puede consultarlo. Revise la tabla de contenido y resalte por sí mismo lo que puede repetir. Por supuesto, no debe entrar en toda la seriedad y leer un libro de principio a fin: muchos temas de este libro pueden omitirse, por ejemplo, el formato de fecha. Destacar lo más básico. Por ejemplo, para mí, estos fueron los siguientes temas: colecciones (preguntas estándar "¿Cómo se organiza el HashMap?" O "¿Cuál es la diferencia entre LinkedList y ArrayList?" También se preguntan a menudo en las entrevistas), genéricos, interfaces funcionales, subprocesos múltiples (aquí, también filtro - no necesita cíclico marco de unión de barrera y horquilla).
Además, no olvide proyectar conocimiento en su experiencia. Por ejemplo, ¿cuándo tuvo que usar la programación multiproceso? ¿Qué problemas resolviste? ¿Qué cerraduras usaste?
- Multithreading. Todavía destaco este tema en un párrafo separado, ya que el libro anterior no explica qué son los volátiles, los bloqueos y la espera / notificación. Si no ha trabajado antes con programación multiproceso, sea honesto y hable en la entrevista. Pero algunas cosas que, por ejemplo, se enumeraron anteriormente, sería bueno saber al menos en teoría (especialmente la pregunta "¿Qué es volátil?" Que tuve en casi todas las entrevistas).
- Algoritmos Este tema es relevante no solo para los desarrolladores de Java. Es poco probable que se le pida que escriba algún algoritmo de clasificación. El entrevistador no está interesado en saber lo maravilloso que ha aprendido el código de clasificación de fusión (lo más probable es que solo le pida que le diga el principio general). Pero resolver un problema algorítmico, evaluar la complejidad de su solución o, por ejemplo, explicar con palabras el principio de búsqueda profunda, es una opción completamente posible.
- Estructuras de datos. ¿Cómo difiere un árbol de un gráfico? ¿Qué son los árboles AVL? ¿Cómo es la pila diferente de la cola?
Con respecto a Java: ¿qué clases en Java implementan una pila o cola? ¿En qué se diferencia LinkedList de ArrayList? ¿Qué es un hashset? ¿Cómo es diferente de TreeSet? ¿Cómo funciona HashMap?
Es muy probable que estas y otras preguntas similares sean entrevistadas. Pero vale la pena señalar que las preguntas sobre árboles y gráficos son mucho menos propensas a aparecer en las entrevistas: estas estructuras no se usan en la práctica con tanta frecuencia. Por el contrario, se espera que tenga un buen conocimiento de lo que utilizó anteriormente. ¿No sabe o no usó madera rojo-negra? Entonces dime, no puedes saberlo todo.
- Bases de datos Relacional y no relacional. Cual es la diferencia ¿Qué y cuándo usar?
Si hablamos de los relacionales, repita todos los objetos de tales bases de datos: tablas, vistas, índices. Repita sql: cómo se crea la consulta, qué tipos de unión existen, que tener diferentes de dónde. También repita las transacciones por separado: niveles de aislamiento, propiedades ACID. Recuerde, ¿alguna vez ha tenido casos de optimización de consultas? ¿Tuvo que mirar el plan de ejecución de consultas?
Además, no olvide repetir jpa (si se requiere esta especificación en la vacante). ¿Qué es el administrador de la entidad? ¿Qué es el contexto de persistencia? Y así sucesivamente, lo que tuve que enfrentar.
- Marcos Los marcos que necesita repetir dependen de la vacante específica. En la mayoría de los casos, se requiere primavera. Entonces no olvide repetir cómo funciona Spring en general, los pasos para inicializar el frijol. Recuerde qué marcos de Spring utilizó (por ejemplo, Spring mvc, Spring security, Spring data) y por qué. Repita las anotaciones principales (no se olvide de Qualifier, Primary y Conditional; les gusta preguntar sobre ellas con mucha frecuencia). Y no te olvides de los ámbitos de frijol.
Por separado, quiero tocar la anotación transaccional. Como trabaja ella? ¿Qué se puede configurar adicionalmente en él?
- Dispositivo Jvm. ¿Qué es un montón y una pila? ¿Cómo se almacenan los objetos en jvm? ¿Qué es un conjunto de cadenas? ¿Qué proporciona el principio que sucede antes? ¿Cómo funciona el recolector de basura? Repita siempre que sea posible, no será superfluo.
- Patrones No es necesario conducir: nadie tendrá que enumerar todos los patrones existentes. Pero algunos, usados en Java o Spring, necesitan ser conocidos (por ejemplo, Immutable, Singleton, Prototype, Builder, Proxy, Abstract factory, Wrapper).
- Problemas algorítmicos. A menudo en las entrevistas piden resolver un problema particular. A veces en una hoja de papel, a veces en una pizarra, a veces en un sitio en particular, si se trata de una entrevista de Skype. Esté preparado para escribir código sin usar su entorno de desarrollo favorito. Practique también la resolución de acertijos, por ejemplo, en Leetcode .
- Redes. Repita los niveles del modelo OSI. Y no olvide repetir los protocolos principales con un poco más de detalle: tcp, udp, http, https.
- Arquitectura SÓLIDO, descubrimiento de servicio, colas de mensajes. ¿Cuándo usar microservicios y cuándo es un monolito? ¿Has usado eureka o cónsul?
- El resto Ágil, Git y Gitflow, REST / SOAP, Linux (si trabajó), Docker y Kubernetes (si trabajó). Y también pruebas - funcionales, integración y unidad. ¿Cuáles son las diferencias, cuáles escribieron, utilizaron TDD?
- Ingles Solo si es necesario. Por supuesto, no repitas las reglas de la gramática del idioma inglés. Es suficiente entrenar para contar sobre usted, es posible recordar algunas frases preparadas previamente.
- Para mi Esté preparado para responder tales preguntas: "¿Qué problema interesante tuvo que resolver en el trabajo?", "Díganos de qué está más orgulloso", "Cuéntenos sobre sus logros", "Cuéntenos sobre sus fracasos", "¿Cómo se educa?" , "¿Por qué dejaron su lugar de trabajo anterior?". Si tienes tus propios proyectos, artículos o discursos, asegúrate de contarlos. Están muy interesados en estas cosas y se asegurarán de pedir más detalles.
Además, asegúrese de preparar las preguntas de su empresa. Destaque los puntos principales que son importantes para usted, justo en los puntos. En un habr hay una
publicación maravillosa al
respecto .
Y daré algunos consejos de mí mismo.
Personalmente, siempre pongo las 2 primeras entrevistas como entrenamiento. Es decir, generalmente estas son las empresas que menos me interesan. Estas entrevistas son necesarias solo para seguir el ritmo y no tener miedo de las posteriores.
También prepárate para hablar sobre tu experiencia en un currículum. Lo que hicieron, por qué, qué problemas resolvieron.
Recuerde que no es una enciclopedia y que no debe enumerar de inmediato, por ejemplo, todas las interfaces funcionales en Java. Será bastante normal si solo cuenta sobre con qué trabajó.
Y recuerde que la entrevista es principalmente una conversación. No te interrogan y no quieren avergonzarte si no sabes nada. El empleador descubrirá si usted es un candidato adecuado, y usted descubrirá si este trabajo es adecuado para usted.
Otro buen libro es
Cracking the Coding Interview . Puede echar un vistazo, especialmente si va a ser entrevistado en empresas extranjeras como Google, Facebook.
Recursos útiles que pueden ser necesarios en la preparación:
- Romper la entrevista de codificación.
- OCP: Guía de estudio de Oracle Certified Professional Java SE 8 Programmer II: Examen 1Z0-809.
- La publicación "Te devolveré la llamada" .
- Leetcode
- Entrevistabit Otro sitio con problemas algorítmicos. Aquí, las tareas se estructuran en categorías.
Buena suerte