JavaRush /Java Blog /Random-JA /5 ~ 6 年の経験を持つ Java プログラマー向けの技術面接のための 15 の質問
dio
レベル 16
Москва

5 ~ 6 年の経験を持つ Java プログラマー向けの技術面接のための 15 の質問

Random-JA グループに公開済み
プログラマーの経験が初心者開発者のレベル (経験年数 2 年から 4 年) から上級開発者のレベル (経験年数 5 年から 7 年) に増加するにつれて、Core Java に関する面接の質問も変化します。 5 ~ 6 年の経験を持つ Java プログラマー向けの技術面接のための 15 の質問 - 1もちろん、データ構造、アルゴリズム、オブジェクト指向プログラミングなどの基本は残りますが、質問と回答はより詳細になります。私は、上級開発者に Core Java についてどのような質問があるか、または上級 Java 開発者のポジションの面接でどのような質問が予想されるかについての質問をよく受けます。上級開発者になると、自動的に面接に参加するようになり、面接で何が期待されるかを把握する必要があるため、これにはしばらく戸惑いましたが、同時に、面接について知っていることが重要であることも理解しています。質問に対する準備が容易になります。もちろん、Java の経験が 2 ~ 3 年のプログラマに尋ねられるような質問は受けられませんが、これは面接の開始時に除外されません。電話面接と対面面接に違いはないと思います。同じままの質問もあれば、より詳細な回答が必要な質問もあります。この記事では、上級開発者の電話面接で聞かれたCore Java の技術的な質問 15 個を紹介します。すべての回答を掲載しているわけではありませんが、現在のブログまたはJavarevisitedブログで見つけることができます。

5 ~ 6 回の開発経験を持つプログラマー向けの Core Java に関する 15 の質問

すべての質問は、5 年以上の経験を持つ現役の上級開発者から寄せられました。開発者は、電話面接や対面面接など、雇用のさまざまな段階でこれらの質問に直面しました。
  1. Java ではgetクラスメソッドはどのように機能するのでしょうか?HashMap

    はい、これは依然として上級開発者にとって最も人気のある質問の 1 つです。電話インタビューで聞かれることが予想されます。おそらくその後も関連する質問がたくさんあるでしょう。それらの回答はここで確認してください

  2. キーオブジェクトはどの 2 つのメソッドを実装する必要がありますかHashMap?

    equalsそしてhashcode

  3. キーとして使用されるオブジェクトはなぜ不変でなければならないのでしょうか?

    そのため、ハッシュ コードは常に同じ値を返します。

  4. スケーラビリティはどのように実現されるのでしょうかConcurrentHashMap?

    ConcurrentHashMapインタビューでは、この質問が次のように聞こえることがあります。「 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? И почему вы должны их использовать?

    実際、すべてのタイプの参照の違いは 1 つだけです。それは、参照するオブジェクトに対する Java ガベージ コレクターの動作です。Java では、new 演算子を使用して作成されたオブジェクトは、強参照によって作成されます。ガベージ コレクターは、そのようなオブジェクトへの強い参照がなくなった場合にのみ、そのようなオブジェクトを破棄します。java.lang.ref パッケージには、SoftReference、WeakReference、PhantomReference の 3 種類のリンクを記述する 3 つのクラスがあります。SoftReference 経由で作成されたオブジェクトは、JVM がメモリを必要とする場合に収集されます。つまり、JVM が OutOfMemoryError 例外をスローする前に、すべての SoftReference オブジェクトが収集されることが保証されます。SoftReference は、多くの場合、メモリを大量に使用するキャッシュに使用されます。WeakReference は、十分な空きメモリがある場合でも、オブジェクトのファイナライズを保存しません。オブジェクトに対する強参照とソフト参照がなくなるとすぐに、オブジェクトを終了できます。キャッシュと、相互接続されたオブジェクトのチェーンの作成に使用されます。PhantomReference を通じて作成されたオブジェクトは、参照されたオブジェクトの割り当てを解除できると GC が判断したときに破棄されます。このタイプの参照は、(より柔軟なリソース解放のため) ファイナライゼーションの代替として使用されます。

    これは、上級 Java 開発者の面接の質問の全リストです。上級開発者の間で非常に人気のある、例外処理、ガベージ コレクター、JVM 構成に関する重要な質問はあまり含めていませんが、次のパートで含める可能性があります。ただし、質問に対する答えが見つからない場合は、お知らせください。定期読者向けにこの投稿を更新します。

元の記事: 15 Technical Core Java Interview questions Answers for Experienced Developers
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION