10 интересных вопросов по Java, которые вам могут задать на собеседовании
61К открытий61К показов
Мы собрали 10 каверзных примеров программ, которые выводят какую-либо информацию. Вы должны взглянуть на код и сказать, что же выведет программа. Не исключено, что программа даже не скомпилируется. В этом случае вам надо указать, что выведет компилятор.
Такие вопросы любят задавать на собеседованиях, а потому не лишним будет освежить свои знания языка программирования Java. В спойлерах будут скрыты ответы — то, что выведет программа или компилятор. Постарайтесь подумать сами, прежде чем смотреть правильный ответ.
Что выведет следующая программа?
Посмотреть ответ
- Каждый раз, когда мы создаем объект какого-либо класса, первым вызывается конструктор и выделяется память для всех нестатических переменных.
- Здесь B b = new B(); объекту класса B присваивается новый объект того же класса.
- Запись B b = new B(); приводит к рекурсивному исполнению конструктора, что создает бесконечные объекты. Именно поэтому во время выполнения этого кода будет возбуждено исключение java.lang.StackOverFlowError в потоке "main".
- Распространенной причиной появления такого рода исключений является плохая рекурсия. Обычно это происходит из-за неправильного условия завершения.
Что выведет следующая программа?
Посмотреть ответ
- Мы можем вызвать статические методы, используя переменную, ссылающуюся на null. Дело в том, что статические методы находятся на уровне класса. Именно поэтому мы можем вызывать статические функции как при помощи самого класса, так и при помощи переменной, равной null.
Что выведет следующая программа?
Посмотреть ответ
Что выведет следующая программа?
Посмотреть ответ
Что выведет следующая программа?
Посмотреть ответ
Что выведет следующая программа?
Посмотреть ответ
- Какая строчка программы вызовет ошибку compile time error?
Посмотреть ответ
Что выведет следующая программа?
Посмотреть ответ
Что выведет следующая программа?
Посмотреть ответ
Что выведет следующая программа?
Посмотреть ответ
Что происходит при написании System.out.println(null);?
Происходит, разумеется, ошибка компиляции. У метода println есть несколько вариаций. Он может принимать String, Object или char[]. При передаче в эту функцию аргумента null компилятор не может определиться, к какому из трех методов обращаться.
Перегруженные методы:
- public void prinltln(String str) {
- public void prinltln(char[] ch) {
- public void prinltln(Object ch) {
Для компилятора вызов System.out.println(null) является неоднозначным, поскольку для вывода null‘a могут более-менее подойти два метода: println(String) и println(char[]). Но компилятор не знает, к какому конкретно методу обратиться. Чтобы компиляция прошла успешно, следует написать:
- System.out.println((String)null);
- System.out.println((char[])null);
- System.out.println((Object)null);
Но здесь нужно быть внимательным. Вызов System.out.println((char[])null); приведет к исключению runtime exception.
Перевод статьи «10 Interesting Core Java Interview Coding Questions and Answers»
61К открытий61К показов