JavaRush /Java 博客 /Random-ZH /5-6年经验Java程序员技术面试的15个问题
dio
第 16 级
Москва

5-6年经验Java程序员技术面试的15个问题

已在 Random-ZH 群组中发布
随着程序员的经验从初级开发人员的水平(从2到4年的经验)增加到高级开发人员的水平(从5到7年),Core Java的面试问题也会发生变化。 具有 5-6 年经验的 Java 程序员技术面试的 15 个问题 - 1当然,数据结构、算法和面向对象编程等基础知识仍然保留,但问题和答案变得更加详细。我经常收到关于高级开发人员会被问到哪些核心 Java 问题,或者在高级 Java 开发人员职位面试中会被问到哪些问题的问题。这让我困惑了一段时间,因为一旦你成为高级开发人员,你就会自动开始参加面试,你需要了解面试的期望,但同时,我明白了解面试问题,你会更容易准备。当然,你不会被问到有 2-3 年 Java 经验的程序员的问题,尽管在面试开始时不排除这种情况。我不认为电话面试和面对面面试有什么区别。有些问题保持不变,有些问题需要更详细的答案。在这篇文章中,我将分享15 个在电话面试中高级开发人员被问到的核心 Java 技术问题。我不会发布所有答案,但您可以在当前博客或Javarevisited博客上找到它们。

面向具有 5-6 种开发经验的程序员的 15 个问题关于 Core Java 的问题

所有问题均来自具有 5 年以上经验的高级开发人员。开发人员在就业的各个阶段都会遇到这些问题,包括电话面试和面对面面试。
  1. getJava 中的类方法如何工作HashMap

    是的,这仍然是高级开发人员最常见的问题之一,你应该在电话面试中期待它,之后可能会有很多相关问题,请在此处查看它们的答案。

  2. 关键对象应该实现哪两个方法HashMap

    equalshashcode

  3. 为什么用作键的对象应该是不可变的?

    这样哈希码总是返回相同的值。

  4. 可扩展性是如何ConcurrentHashMap实现的?

    ConcurrentHashMap有时这个问题在面试中听起来像这样:Java和in Java的区别,在这里Hashtable寻找答案。

  5. 如何让一个对象在不同线程之间共享?或者如何将对象从一个线程传递到另一个线程?

    Есть много путей реализации этого, такие 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? И почему вы должны их использовать?

    事实上,所有类型的引用之间只有一个区别:Java 垃圾收集器的行为及其所引用的对象。在Java中,使用new运算符创建的对象是通过强引用创建的。仅当不再有对这些对象的强引用时,垃圾收集器才会销毁这些对象。java.lang.ref包中有3个类,描述了3种类型的链接,分别是SoftReference、WeakReference、PhantomReference。如果 JVM 需要内存,将收集通过 SoftReference 创建的对象。也就是说,可以保证在 JVM 抛出 OutOfMemoryError 异常之前收集所有 SoftReference 对象。SoftReference 通常用于内存密集型缓存。即使有足够的可用内存,WeakReference 也不会阻止对象被终结。一旦对象不再存在强引用和软引用,它就可以被最终确定。用于缓存和创建互连对象链。当 GC 确定可以释放引用的对象时,通过 PhantomReference 创建的对象将被销毁。这种类型的引用用作最终确定的替代方案(以实现更灵活的资源释放)。

    这是高级 Java 开发人员面试问题的完整列表。我没有包含很多在高级开发人员中非常流行的关于异常处理、垃圾收集器、JVM 配置的重要问题,也许我会在下一部分中包含它们。但如果您没有找到任何问题的答案,请告诉我,我将为我的普通读者更新这篇文章。

原文:针对经验丰富的开发人员的 15 个技术核心 Java 面试问题答案
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION