JavaRush /Blog Java /Random-ES /15 preguntas para una entrevista técnica para un programa...
dio
Nivel 16
Москва

15 preguntas para una entrevista técnica para un programador Java con 5-6 años de experiencia

Publicado en el grupo Random-ES
A medida que la experiencia del programador aumenta desde el nivel de desarrollador principiante (de 2 a 4 años de experiencia) al nivel de desarrollador senior (de 5 a 7 años), las preguntas de la entrevista sobre Core Java también cambian. 15 preguntas para una entrevista técnica para un programador Java con 5-6 años de experiencia - 1Por supuesto, los conceptos básicos como estructuras de datos, algoritmos y programación orientada a objetos permanecen, pero las preguntas y respuestas se vuelven más detalladas. A menudo recibo preguntas sobre qué preguntas de Core Java se hacen a los desarrolladores senior, o qué preguntas esperar en una entrevista para un puesto de desarrollador senior de Java. Esto me desconcierta por un tiempo porque una vez que te conviertes en desarrollador senior, automáticamente comienzas a participar en entrevistas y necesitas tener una idea de qué esperar de la entrevista, pero al mismo tiempo, entiendo que conocer la entrevista preguntas, le resultará más fácil prepararse. Por supuesto, no recibirá preguntas formuladas a programadores con 2 o 3 años de experiencia en Java, aunque esto no se excluye al comienzo de la entrevista. No veo ninguna diferencia entre entrevistas telefónicas y entrevistas cara a cara. Algunas preguntas siguen siendo las mismas, otras requieren respuestas más detalladas. En este artículo, compartiré 15 preguntas técnicas de Core Java que se formularon en entrevistas telefónicas con desarrolladores senior. No publicaré todas las respuestas, pero puedes encontrarlas en el blog actual o en el blog Javarevisited .

15 preguntas sobre Core Java para programadores con 5-6 experiencia en desarrollo

Todas las preguntas fueron recibidas de desarrolladores senior con más de 5 años de experiencia. Los desarrolladores encontraron estas preguntas en diversas etapas del empleo, incluidas entrevistas telefónicas y cara a cara.
  1. ¿ Cómo funciona un método getde clase HashMapen Java?

    Sí, esta sigue siendo una de las preguntas más populares para un desarrollador senior, debe esperarla en una entrevista telefónica, probablemente habrá muchas preguntas relacionadas después de eso, consulte las respuestas aquí .

  2. ¿Qué 2 métodos debería implementar el objeto clave HashMap?

    equalsYhashcode

  3. ¿Por qué los objetos utilizados como clave deberían ser inmutables?

    Para que el código hash siempre devuelva el mismo valor.

  4. ¿ Cómo se ConcurrentHashMaplogra la escalabilidad?

    A veces esta pregunta suena así en una entrevista: la diferencia entre ConcurrentHashMapy Hashtableen Java, busque respuestas aquí .

  5. ¿Cómo hacer que un objeto se comparta entre diferentes hilos? ¿O cómo pasar un objeto de un hilo a otro?

    Есть много путей реализации этого, такие Cómo очереди, обменники, но блокируемые очереди с шаблоном проектирования Producer/Consumer это самый простой способ, чтобы передать un objeto из одного потока в другой.

  6. Как узнать что в вашей программе есть взаимная блокировка?

    (Получив дамп потока, используя kill -3, применяя JConsole o VisualVM). Я предлагаю подготовиться к этому вопросу на интервью очень тщательно, так Cómo интервьюеры любят детали, они спрашивают бывали ли в вашем проекте подобные проблемы и Cómo вам удалось их решить.

  7. Как избежать взаимных блокировок при códigoировании?

    Qué бы разобраться с блокировками и получить полную информацию о теме, прочтите это.

  8. Qué такое ожидание занятости ("Busy spinning")? Почему вы должны использовать его?

    Один из интереснейших вопросов многопоточности для старшего разработчика Java, Busy spinning это стратегия ожидания, когда поток выполняет ожидание в цикле, при этом не используя ресурсы процессора и Cómo бы засыпая. Эту стратегию используют когда время ожидания очень мало, при этом не нагружается процессор и не останавливается поток, сохраняются все данные, которые могут быть потеряны при запуске потока на другом ядре процессора. Этот вопрос популярен у программистов создающих высоко нагруженные проекты, где программисты добиваются чрезвычайно низких задержек в работе, в диапазоне микро- и мo- секунд.

  9. Qué такое блокировка Чтения и Записи (ReadWriteLock)? Использует ли ConcurrentHashMap ReadWrite блокировки?

    Блокировка Чтения и Записи это такая реализация блокировки, когда несколько разных потоков пытаются произвести операцию чтения и записи с одним un objetoом. сама по себе операция чтения не изменяет un objeto, что допускает многопоточные операции чтения без блокировок. Java предоставляет реализацию ReadWriteLock с которой стоит ознакомиться. Например ConcurrentHashMap не применяет ReadWriteLock, en lugar de этого он делит Hash на отдельные части и блокирует их отдельно, таким образом в любой момент времени заблокирована только часть хеша, а не он весь. Этот вопрос популярен у опытных разработчиков, обычно просят ответить подробнее, спрашивают разные реализации ReadWriteLock для разных случаев.

  10. Как сделать un objeto иммутабельным (не изменяемым) в Java? Зачем делать un objeto иммутабельным?

    Иммутабельность предполагает несколько преимуществ включая потокобезопасность, возможность кеширования, а так же делает многопоточный código более читаемым.

    Посмотрите это и научитесь делать un objetoы иммутабельными. На собеседовании по этому вопросу возможны дополнительные уточнения, в зависимости от полноты вашего ответа. Например когда вы говорите, что Spring иммутабельный, будьте готовы ответить почему строки так же иммутабельны в Java.

  11. Какие шаблоны проектирования в используете?

    Всегда ожидайте вопрос о шаблонах проектирования на собеседовании к вакансии старшего разработчика. Лучше отметить любой GOF шаблон, а не Singleton o MVC который использует каждый второй Java программист. Лучший ответ может быть шаблон Декоратор o шаблон Внедрение зависимости, которые довольно популярны в Spring Framework. Так же хорошо если называемые вами шаблоны проектирования вы действительно использовали и знаете к Cómoому компромиссу ведет их применение. Как только вы произнесете название шаблона проектирования, например: "Фабрика", интервьюер тут же спросит: "Вы использовали это в своих проектах ?" Поэтому будьте готовы привести примеры и рассказать почему вы выбрали в своем проекте именно этот шаблон.

  12. Знаете ли вы о принципе Открытости/Закрытости o Принцип подстановки Барбары Лисков?

    Шаблоны проектирования основаны на принципах un objetoно-ориентированного проектирования.

    Настоятельно рекомендую посмотреть мою статью 10 принципов un objetoно ориентированного дизайна, которые должен знать программист Java, по крайней мере иметь представление о том Cómo эти принципы помогут вам писать un objetoно ориентированный código. Если у вас нет ответа на этот вопрос, вы можете вежливо ответить "нет" , никто не ожидает от вас знания ответов на все вопросы. Однако зная ответ на вопрос, который вызывает затруднения у большинства разработчиков, вы делаете свою кандиfechaру на собеседовании очень сильной.

  13. Какой шаблон проектирования будете использовать, что бы защитить ваш código от сторонней библиотеки, которая будет заменена через пару лет ?

    Это всего лишь один из возможных вариаций вопроса о шаблонах проектирования, которые могут быть заданы вам в зависимости от того о чем вы говорите сейчас на собеседовании. Один из способов Cómo оградить свой código от сторонней библиотеки, это зависимость от интерфейса, а не от реализации и использование зависимостей что бы обеспечить конкретную реализацию. Подобные вопросы часто задают старшим разработчикам с 5-7 годами опыта работы.

  14. Как предотвратить SQL инъекцию в códigoе на Java?

    Этот вопрос чаще задают Java EE разработчикам, чем обычным Java программистам, тем не менее это отличный повод узнать о PreparedStatement. PreparedStatement — это un objeto, который представляет предварительно скомпoрованный SQL-оператор. PreparedStatement не только обеспечивает более высокую производительность, но и защищает от SQL инъекций. Если вы работаете по большей части с Java EE o J2EE, вы должны быть знакомы с некоторыми вопросами безопасности, в том числе "атака Фиксации Сессии" o "межсайтовый скриптинг", так же вам нужно уметь избегать этих атак.

  15. Расскажите об отличиях типов ссылок в Java, таких Cómo WeakReference, SoftReference и PhantomReference? И почему вы должны их использовать?

    De hecho, sólo hay una diferencia entre todos los tipos de referencias: el comportamiento de Java Garbage Collector con los objetos a los que hacen referencia. En Java, los objetos creados con el nuevo operador se crean mediante una referencia fuerte. El recolector de basura destruye dichos objetos sólo cuando ya no hay fuertes referencias a ellos. El paquete java.lang.ref tiene 3 clases que describen 3 tipos de enlaces, respectivamente SoftReference, WeakReference y PhantomReference. Los objetos creados mediante SoftReference se recopilarán en caso de que la JVM requiera memoria. Es decir, existe una garantía de que todos los objetos SoftReference se recopilarán antes de que la JVM arroje una excepción OutOfMemoryError. SoftReference se utiliza a menudo para cachés que requieren mucha memoria. WeakReference no evita que un objeto sea finalizado, incluso si hay suficiente memoria libre. Tan pronto como no queden referencias fuertes y suaves al objeto, se puede finalizar. Se utiliza para cachés y para crear cadenas de objetos interconectados. Los objetos creados a través de PhantomReference se destruyen cuando el GC determina que los objetos a los que se hace referencia se pueden desasignar. Este tipo de referencia se utiliza como alternativa a la finalización (para una liberación de recursos más flexible).

    Esta es la lista completa de preguntas de la entrevista para desarrolladores senior de Java. No he incluido muchas preguntas importantes sobre el manejo de excepciones, el recolector de basura y la configuración de JVM, que son muy populares entre los desarrolladores senior; tal vez las incluya en la siguiente parte. Pero si no encuentra respuestas a alguna de las preguntas, hágamelo saber y actualizaré esta publicación para mis lectores habituales.

Artículo original: Respuestas a 15 preguntas técnicas básicas de la entrevista sobre Java para desarrolladores experimentados
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION