JavaRush /Java Blog /Random-TW /5-6年經驗Java程式設計師技術面試的15個問題
dio
等級 16
Москва

5-6年經驗Java程式設計師技術面試的15個問題

在 Random-TW 群組發布
隨著程式設計師的經驗從初級開發人員的水平(從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