JavaRush /Blog Java /Random-FR /15 questions pour un entretien technique pour un programm...
dio
Niveau 16
Москва

15 questions pour un entretien technique pour un programmeur Java avec 5 à 6 ans d'expérience

Publié dans le groupe Random-FR
Au fur et à mesure que l'expérience du programmeur passe du niveau de développeur débutant (de 2 à 4 ans d'expérience) au niveau de développeur senior (de 5 à 7 ans), les questions d'entretien sur Core Java changent également. 15 questions pour un entretien technique pour un programmeur Java avec 5 à 6 ans d'expérience - 1Bien sûr, les bases telles que les structures de données, les algorithmes et la programmation orientée objet demeurent, mais les questions et réponses deviennent plus détaillées. Je reçois souvent des questions sur les questions Core Java qui sont posées aux développeurs seniors ou sur les questions auxquelles s'attendre lors d'un entretien pour un poste de développeur Java senior. Cela me laisse perplexe pendant un moment car une fois que vous devenez développeur senior, vous commencez automatiquement à participer à des entretiens et vous devez avoir une idée de ce à quoi vous attendre de l'entretien, mais en même temps, je comprends que connaître l'entretien questions, il vous sera plus facile de vous y préparer. Bien sûr, vous ne recevrez pas de questions posées aux programmeurs ayant 2-3 ans d'expérience avec Java, bien que cela ne soit pas exclu au début de l'entretien. Je ne vois aucune différence entre les entretiens téléphoniques et les entretiens en face à face. Certaines questions restent les mêmes, d’autres nécessitent des réponses plus détaillées. Dans cet article, je partagerai 15 questions techniques Core Java qui ont été posées lors des entretiens avec les développeurs seniors lors des entretiens téléphoniques. Je ne publie pas toutes les réponses, mais vous pouvez les trouver sur le blog actuel ou sur le blog Javarevisited .

15 questions sur Core Java pour les programmeurs ayant une expérience de développement de 5 à 6 ans

Toutes les questions ont été reçues de développeurs seniors ayant plus de 5 ans d'expérience. Les développeurs ont été confrontés à ces questions à différentes étapes de leur emploi, notamment lors d'entretiens téléphoniques et en face-à-face.
  1. Comment fonctionne une méthode getde classe HashMapen Java ?

    Oui, c'est toujours l'une des questions les plus populaires pour un développeur senior, vous devriez vous y attendre lors d'un entretien téléphonique, il y aura probablement de nombreuses questions connexes après cela, consultez les réponses ici .

  2. Quelles 2 méthodes l'objet clé doit-il implémenterHashMap ?

    equalsEthashcode

  3. Pourquoi les objets utilisés comme clé devraient-ils être immuables ?

    Pour que le code de hachage renvoie toujours la même valeur.

  4. Comment ConcurrentHashMapl’évolutivité est-elle obtenue ?

    Parfois, cette question ressemble à ceci dans une interview : la différence entre ConcurrentHashMapet Hashtableen Java, cherchez les réponses ici .

  5. Comment rendre un objet partagé entre différents threads ? Ou comment passer un objet d’un thread à un autre ?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Настоятельно рекомендую посмотреть мою статью 10 принципов an objectно ориентированного дизайна, которые должен знать программист Java, по крайней мере иметь представление о том How эти принципы помогут вам писать an objectно ориентированный code. Если у вас нет ответа на этот вопрос, вы можете вежливо ответить "нет" , никто не ожидает от вас знания ответов на все вопросы. Однако зная ответ на вопрос, который вызывает затруднения у большинства разработчиков, вы делаете свою кандиdateру на собеседовании очень сильной.

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

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

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

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

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

    En fait, il n'y a qu'une seule différence entre tous les types de références : le comportement de Java Garbage Collector avec les objets auxquels ils font référence. En Java, les objets créés à l'aide de l'opérateur new sont créés par référence forte. Le garbage collector détruit ces objets uniquement lorsqu'il n'y a plus de références fortes à eux. Le package java.lang.ref comporte 3 classes qui décrivent 3 types de liens, respectivement SoftReference, WeakReference, PhantomReference. Les objets créés via SoftReference seront collectés au cas où la JVM nécessiterait de la mémoire. Autrement dit, il existe une garantie que tous les objets SoftReference seront collectés avant que la JVM ne génère une exception OutOfMemoryError. SoftReference est souvent utilisé pour les caches gourmands en mémoire. WeakReference n'empêche pas la finalisation d'un objet, même s'il y a suffisamment de mémoire libre. Dès qu’il ne reste plus de références fortes et douces à l’objet, celui-ci peut être finalisé. Utilisé pour les caches et pour créer des chaînes d'objets interconnectés. Les objets créés via PhantomReference sont détruits lorsque le GC détermine que les objets référencés peuvent être désalloués. Ce type de référence est utilisé comme alternative à la finalisation (pour une libération plus flexible des ressources).

    Voici la liste complète des questions d'entretien pour les développeurs Java senior. Je n'ai pas inclus beaucoup de questions importantes sur la gestion des exceptions, le garbage collector, la configuration JVM qui sont très populaires parmi les développeurs seniors, je les inclurai peut-être dans la partie suivante. Mais si vous ne trouvez pas de réponse à aucune de vos questions, faites-le-moi savoir et je mettrai à jour cet article pour mes lecteurs réguliers.

Article original : 15 réponses aux questions d'entretien technique sur Java pour les développeurs expérimentés
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION