Вопросы, на которые должен отвечать каждый хороший Java / Java EE Developer?

Я проходил через Вопросы, каждый хороший .Net разработчик должен был отвечать и был очень впечатлен содержанием и подходом к этому вопросу, и поэтому в том же духе я задаю этот вопрос для Java / Java EE Developer.

Какие вопросы , по вашему мнению, должен ответить хороший программист Java / Java EE?

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

Надеемся на некоторые удивительные ответы.

EDIT : Пожалуйста, также ответьте на вопросы, как это предлагается в комментариях, чтобы люди могли узнать что-то новое в отношении языка.

Какова связь между hashCode () и equals ()? Каково значение этих методов? Каковы требования для их реализации?

В чем разница между Set, Map и List?

Я все еще удивляюсь, как много людей не знают этого в телефонном интервью.

Может ли интерфейс расширять несколько интерфейсов?

Большинство людей отвечают «нет», потому что они знают, что java не имеет множественного наследования. Но интерфейс все еще может расширять несколько интерфейсов (но class не может расширять несколько classов). Это не приводит к проблеме алмаза.

Если ответ «нет», интервьюер должен спросить «почему это было бы запрещено?». Затем вы начинаете думать об этом, и вы должны понимать, что с ним нет проблем.

Таким образом, вы узнали что-то (самостоятельно) в интервью, и вы показали интервьюеру, что вы можете рассуждать о classах, предметах, наследовании, polymorphismе и т. Д. Это на самом деле намного лучше, чем кандидат, который знает ответ наизусть, но не понять, почему

Использование ключевого слова final в вызовах метода. Например, почему проверка метода в приведенном ниже коде не дает какой-либо ошибки компиляции, несмотря на использование окончательного квалификатора для параметра метода.

 class Name { private String name; public Name (String s) { this.name = s; } public void setName(String s) { this.name = s; } } private void test (final Name n) { n.setName("test"); } 

Конечно, это сравнение строки. Разница между

String helloWorld = “Hello World”;
helloWorld == “Hello World”;
«Привет мир» .equals (helloWorld);

Trick question: Какие параметры передаются по ссылке в Java?

Удивительно, сколько людей по-прежнему попугают «примитивы передаются по значению, объекты передаются по ссылке» мантры.

Вы сказали «Хорошо», «Разработчик». Вот мои 2 цента тоже .. 🙂

  • Что означает «проверенное исключение»?
  • Какой из них лучше использовать и когда: Утверждения или Исключения для обработки неожиданных условий?
  • Почему class String является окончательным? (или это не?))
  • методы wait, notify и notifyAll в classе Object?
  • Почему class Thread не является окончательным? Почему я должен продлить Thread, когда-либо?
  • Почему есть два classа Date; один в пакете java.util, а другой в java.sql?
  • Что произойдет, если в блоке finally будет создано исключение? Остальные окончательно выполнены или нет?
  • Есть сборщик мусора в порядке, но тогда утечка памяти полностью отсутствует в приложениях Java? Если нет, то как?

Для J2EE:

  • Хорошо ли иметь экземпляр / статические переменные в сервлет? Почему нет? Тогда где вы храните «состояние»?
  • продолжая над вопросом: что и где «государство» для (веб-приложения)?
  • Что произойдет, если я начну создавать / закрывать соединения DB в «JSP»?
  • Каковы способы обработки исключений JSP? попробуй поймать? Хм … есть что-нибудь еще?

Я могу думать о многих, многих и многих других, но это будет делать сейчас 🙂

В чем разница между String, StringBuffer и StringBuilder?

«Что такое дескриптор развертывания?»

Если кандидат содрогается, он имеет опыт работы с пред-3.0 EJB.

Многие вопросы и интервью доступны по адресу http://www.techinterviews.com/interview-questions/java, и я действительно не вижу значения при копировании / вставке их.

Нет, это зависит от вас, чтобы создать свою собственную подборку вещей, которые, по вашему мнению, важны. Лично я продолжаю всегда в два этапа: сначала несколько вопросов, чтобы получить базовое представление об опыте и навыках, а затем о ситуации с решением проблем. Я действительно не уверен, что возможность отвечать на любые известные вопросы делает вас хорошим или плохим неизвестным решателем проблем. Поэтому я предпочитаю просить людей решить заданную проблему, дать им некоторые требования и попросить их написать код (но не на бумаге). Я даю им некоторое время, чтобы вернуться ко мне и проверить, как они это сделали, стиль их кодирования, как они использовали предлагаемые API и т. Д.

Что все сказано, мой любимый вопрос: «Что вам не нравится в Java?» (в духе этого ). Это действительно отличный вопрос, он дает вам немедленную обратную связь о том, насколько кандидат использовал Java и изучил его API, и если он просто религиозен или нет (как писал OP).

Обновление. Как было предложено CPerkins, лучшая формулировка для предложенного выше вопроса может быть «Что бы вы хотели увидеть в Java?». И действительно, я предпочитаю этот путь.

Что такое «System», «Out», «println» в System.out.println? Что происходит, когда вы вызываете «put» на HashMap?

  1. Объясните различные модификаторы доступа, используемые в Java. У меня было много людей с этим бороться, особенно по умолчанию.
  2. Если бы вы могли изменить одну вещь о языке Java или платформе, что бы это было? Хорошие разработчики получат ответ здесь, в то время как тем, кто действительно не заинтересован в развитии, вероятно, все равно.
  3. Если в их резюме написано что-то вроде EJB2.1, попросите EJB3 узнать, что они знают об этом. Лучшие разработчики будут следить за новейшими разработками, даже если они не используют более новые версии.
  • Каков общий договор при переопределении равных?
  • Лучше ли вариант выбора списков или массивов?
  • Каковы общепринятые соглашения об именах?
  • Как работает сериализация?
  • Как реализовать Comparable?
  • В чем преимущества использования подготовленных отчетов JDBC?
  • Что такое Java EE?
  • Что такое контейнер и какие услуги он предоставляет?

Если вы нанимаете выпускников с «опытом» Java, то простой вопрос, например « Напишите код, который вызовет исключение NullPointerException», может отличить, какие кандидаты использовали Java в последнее время, и не просто останавливался, когда они закончили свое подразделение / курс.

Что будет напечатано?

 public void testFinally(){ System.out.println(setOne().toString()); } protected StringBuilder setOne(){ StringBuilder builder=new StringBuilder(); try{ builder.append("Cool"); return builder.append("Return"); }finally{ builder.append("+1"); } } 

Ответ : CoolReturn + 1

Немного сложнее:

 public void testFinally(){ System.out.println(setOne().toString()); } protected StringBuilder setOne(){ StringBuilder builder=new StringBuilder(); try{ builder.append("Cool"); return builder.append("Return"); }finally{ builder=null; /* ;) */ } } 

Ответ : CoolReturn

В чем разница между абстрактным classом и интерфейсом? Когда вы будете использовать каждый из них?

Многие разработчики Java этого не знают, я спросил большинство людей на курсе по информатике в университете, и подавляющее большинство не могло ответить на него.

Простые вопросы, такие как,

  • Что такое JRE и JDK?
  • Почему java требует взаимодействия?

Хотя они очень просты, многие разработчики не знают ответов. Я предлагаю, чтобы они были заданы перед запросами, связанными с кодом.

Лучшие 5 вопросов J2EE / JEE

Список вопросов промежуточного программного обеспечения J2EE / JEE, с которыми я столкнулся, исключительно длинный, но вот пятерка, о которой я спрашивал, и привел к хорошим обсуждениям:

  1. Что происходит, когда MDB встречает исключение, которое он не может обработать?
    Этот вопрос обычно приводит к различным интересным дискуссиям о ядовитых сообщениях, очередях ошибок и т. Д.
  2. Учитывая тему JMS и несколько потребителей на разных JVM, вопросы по различным сценариям с и без надежных потребителей.
    Этот вопрос обычно позволяет мне обсуждать с точки зрения использования длительных подписчиков, когда использовать очереди и т. Д.
  3. Если вы застряли в ситуации, когда доступ к содержимому Hibernate / JPA POJO приводит к исключениям, как это решить?
    Это приводит к прекрасным дискуссиям о ленивой загрузке, регидратации и т. Д. Это даже привело к сравнению и контрастированию JPA с компонентами Entity. Я счел полезным быть готовым и быть понятным в понятиях.
  4. Как можно обеспечить простой веб-сервис?
    Любое решение с простого веб-сервера, основанного на сложных решениях SOAP / REST, и все между ними должно быть достаточно хорошим. Кроме того, по словам интервьюера, иногда это приводит к очень интересным обсуждениям по таким темам, как некоторые дизайнерские идеи – сначала WSDL, doc-стиль, посредники SOAP и т. Д. Это может привести к таким вопросам, как перечисление улучшений в JAX-WS поверх JAX -RPC или SOAP1.2 поверх SOAP1.1, ответы на которые обычно основаны на том, насколько я помню.
  5. Внедрение ресурсов JEE 5
    Этот вопрос задается многими способами, начиная с шаблона Locator службы до javax.naming.Context вопросов.

Еще один сложный вопрос, который я нахожу тревожным, но много раз сталкивался: как находятся библиотеки зависимых библиотек в архив?
или Видимость различных classов в комплекте архива.
Если обсуждение не приведет к иерархии загрузчиков classов для разных серверов приложений, архивов ресурсов и т. Д., Лучше всего уйти в отставку и перейти.

Пять основных вопросов Java:

  1. Вопросы по java.util.collections
    Это мать всех вопросов. Как только вы сможете эффективно посадить интервьюера в этой области, и если вы готовы, остальная часть интервью обычно остается здесь. Не забудьте знать Set , List , Map и важность Object.equals() и Object.hashCode() в каждой реализации этих интерфейсов.
  2. Вопросы рефакторинга
    Это хорошо, если у интервьюера есть открытый ум. Если у интервьюера уже есть конкретное решение, и ваш не соответствует его / ее, вы в значительной степени обречены. Лучше согласиться с ответом «Я понимаю, что возможны другие решения».
  3. Вопросы по многопоточности в JDK5 по сравнению с более ранними версиями JDK, которые я нашел, лучше всего подготовить с помощью classов пакетов java.util.concurrent . В книге Дага Леи содержится большинство ответов.
  4. Что нового в JDK1.6 / JDK1.7 …?
    Это вопрос с уверенностью в вопросе со многими интервьюерами. Насколько я ненавижу это, лучше быть готовым. По крайней мере, вспоминая несколько, с которыми я работал, и ведущий дискуссию в каком-то другом направлении, во многом и эффективно уклоняется и решает проблему.
  5. Шаблоны в API Java
    Снова и снова меня просили указать шаблон GoF в Java API. Лучше быть готовым к этому.

Разница между веб-сервером и веб-контейнером

Что вам больше всего нравится в Java и почему?

почему вы переопределите метод toString ()?

Более чистый вопрос Java:

В чем разница между сном и ожиданием? Не многие люди действительно понимают, как работает ожидание.

Как вам нужно обрабатывать InterruptedExceptions?

Это вопрос, с которым я столкнулся в своем интервью.

Почему главный метод в Java называется public static void main (String [] args)?

Ответ:

1. main () должен быть объявлен открытым, поскольку он запускается JVM при запуске программы. JVM не относится к нашему пакету программ.

Inorder для доступа к основной внешней стороне пакета мы должны объявить ее общедоступной. Если мы объявим ее как нечто иное, кроме публичного, она покажет ошибку Runtime, а не ошибку времени компиляции

2. main () должен быть объявлен как статический, потому что, если метод объявлен как статический, мы можем вызвать этот метод вне classа с помощью ClassName.methodName ();

 class Sample { static void fun() { System.out.println("Hello"); } } class Test { public static void main(String[] args) { Sample.fun(); } } 

JVM сначала загрузит тестовый class и проверит аргументы командной строки и вызовет основной метод как Test.main ();

3. main () должен быть объявлен как void main (), потому что JVM не ожидает никакого значения из main (). Поэтому он должен быть объявлен как void.

Если указан другой тип возврата, это RunTimeError, то есть NoSuchMethodFoundError.

4. main () должен иметь аргументы String как массивы, потому что JVM вызывает основной метод, передавая аргумент командной строки. Поскольку они хранятся в объекте строкового массива, он передается как аргумент main ().

В чем разница между J2SE и J2EE (или JSE и JEE)?

Разработчик должен иметь возможность указать, что корпоративная версия – это в основном определение интерфейса (то есть спецификация), которое может быть реализовано поставщиками. В то время как стандартное издание является самостоятельной реализацией

Как volatile влияет на оптимизацию кода компилятором?

Как насчет того, что является сессионным компонентом, и описываем некоторые различия между сессионными компонентами без состояния и состояния.

Напишите программу для принятия двух целых чисел и выведите самое большое из двух чисел в файл в выбранном вами месте. Теперь опишите, что делает каждое утверждение.

Можно довольно глубоко развернуть, начиная с значимости оператора импорта, вплоть до аномального завершения

Ядро: 1. Что такое проверенные и непроверенные исключения? 2. При добавлении нового исключения в код какого типа (Проверено / Не отмечено) для использования, когда?

Сервлет: 1. В чем разница между response.sendRedirect () и request.forward ()?

Как работают threads ? Что synchronized ? Если в classе есть два synchronized метода, они могут одновременно выполняться двумя streamами. Вы будете удивлены, услышав, как многие ответят « да» . Тогда все вопросы, связанные с нитью, например, тупик , голод и т. Д.

Одна вещь, которую многие программисты Java не знают, это то, что строки являются неизменяемыми, поэтому используйте StringBuilder или StringBuffer!

 String s = ""; for(int i = 0; i < 100; i++) { s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint"; } 
Interesting Posts
Давайте будем гением компьютера.