Ответ 1
Какова связь между hashCode() и equals()? Каково значение этих методов? Каковы требования для их реализации?
Я проходил через Вопросы, которые каждый хороший разработчик .Net должен был ответить, и был очень впечатлен содержанием и подходом к этому вопросу, и поэтому в том же Я задаю этот вопрос для Java/Java EE Developer.
Какие вопросы, на ваш взгляд, должен отвечать хороший программист Java/Java EE?
Я отмечаю этот вопрос как вики сообщества, поскольку он не является специфичным для пользователя, и он нацелен на то, чтобы служить сообществу разработчиков в целом.
Ожидание замечательных ответов.
РЕДАКТИРОВАТЬ. Также ответьте на вопросы, как это предлагается в комментариях, чтобы люди могли узнать что-то новое в отношении языка.
Какова связь между hashCode() и equals()? Каково значение этих методов? Каковы требования для их реализации?
В чем разница между Set, Map и List?
Я все еще удивляюсь, как много людей не знают этого в телефонном интервью.
Может ли интерфейс расширять несколько интерфейсы?
Большинство людей ответят "нет", потому что они знают, что java не имеет множественного наследования. Но интерфейс все еще может расширять несколько интерфейсов (но класс не может расширять несколько классов). Это не приводит к проблеме алмаза.
Если ответ "нет", интервьюер должен спросить "почему это было бы запрещено?". Затем вы начинаете думать об этом, и вы должны понимать, что с ним нет проблем.
Итак, вы узнали что-то (по себе) в интервью, и вы показали интервьюеру, что вы можете рассуждать о классах, предметах, наследовании, полиморфизме и т.д. Это на самом деле намного лучше, чем кандидат, который знает ответ наизусть, но не понимает, почему
Использование ключевого слова final в вызовах методов.
Например, почему метод test в приведенном ниже коде не дает компилируемой ошибки, несмотря на использование 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);
Задайте вопрос: какие параметры передаются по ссылке в Java?
Удивительно, сколько людей по-прежнему попугают "примитивы передаются по значению, объекты передаются по ссылке" мантры.
Вы сказали "Хорошо", "Разработчик". Вот мои 2 цента тоже..:)
Для J2EE:
Я могу думать о многих, многих и многих других, но это будет делать сейчас:)
В чем разница между String, StringBuffer и StringBuilder?
"Что такое дескриптор развертывания?"
Если кандидат непредсказуемо дрожит, у него есть опыт работы с пред-3.0 EJB.
Многие вопросы и интервью доступны в http://www.techinterviews.com/interview-questions/java, и я действительно не вижу значения в копировании/вставке их.
Нет, вам важно создать собственную компиляцию вещей you. Лично я продолжаю всегда в два этапа: сначала несколько вопросов, чтобы получить базовое представление об опыте и навыках, а затем о ситуации с решением проблем. Я действительно не уверен, что возможность отвечать на любые известные вопросы делает вас хорошим или плохим неизвестным решателем проблем. Поэтому я предпочитаю просить людей решить заданную проблему, дать им некоторые требования и попросить их написать код (но не на бумаге). Я даю им некоторое время, чтобы вернуться ко мне и проверить, как они это сделали, стиль их кодирования, как они использовали предлагаемые API и т.д.
Что все сказано, мой любимый вопрос: "Что вам не нравится в Java?" (в духе этого). Это действительно отличный вопрос, он дает вам немедленную обратную связь о том, насколько кандидат использовал Java и изучил его API, и если он просто религиозен или нет (как писал OP).
Обновление: Как было предложено CPerkins, лучшей формулировкой для предложенного выше вопроса может быть "Что бы вы больше всего хотели увидеть в Java?". И действительно, я предпочитаю этот путь.
Что такое 'System', 'out', 'println' в System.out.println? Что происходит, когда вы вызываете "put" на HashMap?
Если вы нанимаете выпускников с "опытом" 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
Простые вопросы, такие как
Хотя они очень просты, многие разработчики не знают ответов. Я предлагаю, чтобы они задавались перед запросами, связанными с кодом.
В чем разница между абстрактным классом и интерфейсом? Когда вы будете использовать каждый из них?
Многие разработчики Java этого не знают, я спросил большинство людей на курсе по информатике в университете, и подавляющее большинство не смогли ответить на него.
Список вопросов промежуточного программного обеспечения J2EE/JEE, с которыми я столкнулся, исключительно длинен, но вот пятерка, о которой я просил, и привел к хорошим обсуждениям:
javax.naming.Context
.Еще один сложный вопрос, который я нахожу тревожным, но сталкивался много раз,
Как библиотеки зависимых библиотек упакованы в архив?
или Видимость различных классов в объединенном архиве.
Если обсуждение не приведет к иерархии загрузчиков классов для разных серверов приложений, архивов ресурсов и т.д., Лучше всего уйти в отставку и перейти.
Set
, List
, Map
и важность Object.equals()
и Object.hashCode()
в каждой реализации этих интерфейсов.Разница между веб-сервером и веб-контейнером
Что вам больше всего нравится в Java и почему?
почему вы переопределите метод toString()?
Более чистый вопрос в Java:
В чем разница между сном и ожиданием? Немногие на самом деле понимают, как работает ожидание.
Как вам нужно обрабатывать InterruptedExceptions?
Это вопрос, с которым я столкнулся в своем интервью.
Почему главный метод в Java называется public static void main (String [] args)?
Ответ:
1. main() должен быть объявлен общедоступным, поскольку он запускается JVM при запуске программы. JVM не принадлежит нашему пакету программы.
Чтобы получить доступ к главному за пределами пакета, мы должны объявить его общедоступным. Если мы объявим его как что-либо иное, кроме public, оно показывает Ошибка выполнения, но не Ошибка времени компиляции
2. main() должен быть объявлен как статический, потому что если метод объявлен как статический, то мы можем вызвать этот метод вне класса с помощью ClassName.methodName();
class Sample
{
static void fun()
{
System.out.println("Hello");
}
}
class Test
{
public static void main(String[] args)
{
Sample.fun();
}
}
JVM сначала загрузит тестовый класс и проверит аргументы командной строки и вызовет основной метод как Test.main();
3. main() должен быть объявлен как void main(), потому что JVM не ожидает никакого значения из main(). Поэтому он должен быть объявлен как void.
Если предоставлен другой тип возвращаемого значения, это RunTimeError i.e; NoSuchMethodFoundError.
4. main() должен иметь аргументы String как массивы, потому что JVM вызывает основной метод, передавая аргумент командной строки. Поскольку они хранятся в объекте строкового массива, он передается как аргумент main().
В чем разница между J2SE и J2EE (или JSE и JEE)?
Разработчик должен иметь возможность указать, что корпоративная версия - это в основном определение интерфейса (т.е. спецификация), которое может быть реализовано поставщиками. В то время как стандартное издание представляет собой реализацию в своем собственном виде
Как volatile
влияет на оптимизацию кода компилятором?
Как насчет того, что представляет собой сеанс bean, и описываем некоторые различия между сеансом без состояния и состояниями beans.
Напишите программу для принятия двух целых чисел и выведите наибольшее из двух чисел в файл в выбранном вами месте. Теперь опишите, что делает каждый оператор.
Возможно очень глубокое углубление, начиная с значимости оператора импорта, вплоть до аномального завершения
Core: 1. Что такое проверенные и непроверенные исключения? 2. При добавлении нового исключения в код какого типа (проверено/не отмечено) для использования, когда?
Servlet: 1. В чем разница между response.sendRedirect() и request.forward()?
Как работает threads
? Что такое synchronized
? Если в классе есть два метода synchronized
, они могут выполняться одновременно двумя потоками. Вы будете удивлены, услышав, что многие люди отвечают да. Затем все вопросы, связанные с нитями, например. тупик, голод и т.д.
Одна вещь, которую многие программисты Java не знают, это то, что строки являются неизменяемыми, поэтому используйте StringBuilder или StringBuffer!
String s = "";
for(int i = 0; i < 100; i++) {
s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint";
}