Ты не поверишь, какой ценный материал мне частенько  подкидывают начинающие разработчики.

Один из таких — огромный список вопросов по Java, которые можно услышать на собеседовании, причем для всех уровней,  Junior/Middle/Senior. Подтверждаю — мне частенько задавали эти вопросы, да и я сам, в роли интервьюера, их задавал.

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

Большое спасибо моему ученику @Alexander Metelchenko за предоставленный список.

Кстати, приличную часть этих вопросов покрывает email-курс JavaRanger и JavaEEHunter. Так же, это отличный инструмент проверить свои знания по JavaSE/EE, SQL и web.

Знаешь чем можно расширить этот список? Пиши в комментариях — я добавлю.

Интенсив Современная Java с Senior Разработчиками в эту субботу 28 января. Регистрируйся.

ModernJava

 

Оглавление:

Типы данных, переменные, операторы, циклы, массивы

  1. Сколько ключевых слов зарезервировано языком, что это за слова, какие из них не используются?
  2. Из каких символов может состоять имя переменной (корректный идентификатор)?
  3. Что значит слово «инициализация»?
  4. На какие основные группы можно поделить типы данных?
  5. Какие примитивные типы вы знаете? Назовите размерность в байтах для каждого типа.
  6. Что вы знаете о преобразовании примитивных типов данных, есть ли потеря данных, можно ли преобразовать логический тип?
  7. Какими значениями инициализируются переменные по умолчанию?
  8. Как передается значение переменной (по ссылке/значению)?
  9. Что вы знаете о функции main, какие обязательные условия ее определения?
  10. Какие логические операции и операторы вы знаете?
  11. В чем разница краткой и полной схемы записи логических операторов?
  12. Что такое таблица истинности?
  13. Что такое тернарный оператор выбора?
  14. Какие унарные операции вы знаете?
  15. Какая арифметическая операция выполняется при побитовом сдвиге вправо/влево?
  16. Какова роль и правила написания оператора выбора?
  17. Какие циклы вы знаете, в чем их отличия?
  18. Что такое «итерация цикла»?
  19. Какие параметры имеет цикл for, можно ли их не задать?
  20. Какой оператор используется для немедленной остановки цикла?
  21. Какой оператор используется для перехода к следующей итерации цикла?
  22. Что такое массив?
  23. Какие виды массивов вы знаете?
  24. Что вы знаете о классах оболочках?
  25. Что такое автоупаковка (boxing/unboxing)?

ООП (оглавление)

  1. Назовите принципы ООП и расскажите о каждом.
  2. Дайте определение понятию «класс».
  3. Что такое поле/атрибут класса?
  4. Как правильно организовать доступ к полям класса?
  5. Дайте определение понятию «конструктор».
  6. Чем отличаются конструкторы по-умолчанию, копирования и конструктор с параметрами?
  7. Какие модификации уровня доступа вы знаете, расскажите про каждый из них.
  8. Расскажите об особенностях класса с единственным закрытым (private) конструктором.
  9. О чем говорят ключевые слова «this», «super», где и как их можно использовать?
  10. Дайте определение понятию «метод».
  11. Что такое сигнатура метода?
  12. Какие методы называются перегруженными?
  13. Могут ли нестатические методы перегрузить статические?
  14. Расскажите о переопределение методов.
  15. Может ли метод принимать разное количество параметров (аргументы переменной длины)?
  16. Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?
  17. Как получить доступ к переопределенным методам родительского класса?
  18. Какие преобразования называются нисходящими и восходящими?
  19. Чем отличается переопределение от перегрузки?
  20. Где можно инициилизировать статические/нестатические поля?
  21. Зачем нужен оператор instanceof?
  22. Зачем нужны и какие бывают блоки инициализации?
  23. Каков порядок вызова конструкторов и блоков инициализации двух классов: потомка и его предка?
  24. Где и для чего используется модификатор abstract?
  25. Можно ли объявить метод абстрактым и статическим одновременно?
  26. Что означает ключевое поле static?
  27. К каким конструкциям Java применим модификатор static?
  28. Что будет, если в static блоке кода возникнет исключительная ситуация?
  29. Можно ли перегрузить static метод?
  30. Что такое статический класс, какие особенности его использования?
  31. Какие особенности инициализации final static переменных?
  32. Как влияет модификатор static на класс/метод/поле?
  33. О чем говорит ключевое слово final?
  34. Дайте определение понятию «интерфейс».
  35. Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
  36. Почему нельзя объявить метод интерфейса с модификатором final или static?
  37. Какие типы классов бывают в java (вложенные… и.т.д.)
  38. Что вы знаете о вложенных классах, зачем они используются? Классификация, варианты использования, о нарушении инкапсуляции.
  39. Каким образом из вложенного класса получить досуп к полю внешнего класса?
  40. Какие особенности создания вложенных классов: простых и статических.
  41. В чем разница вложенных и внутренних классов?
  42. Какие классы называются анонимными?
  43. Каким образом можно обратиться к локальной переменной метода из анонимного класса, объявленного в теле этого метода? Есть ли каке-нибудь ограничения для такой переменной?
  44. Как связан любой пользовательский класс с классом Object?
  45. Расскажите про каждый из методов класса Object.
  46. Что такое метод equals(). Чем он отличается от операции ==.
  47. Если вы хотите переопределить equals(), какие условия должны удовлетворяться для переопределенного метода?
  48. Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?
  49. В чем особенность работы методов hashCode и equals? Каким образом реализованы методы hashCode и equals в классе Object? Какие правила и соглашения существуют для реализации этих методов? Когда они применяются?
  50. Какой метод возвращает строковое представление объекта?
  51. Что будет, если переопределить equals не переопределяя hashCode? Какие могут возникнуть проблемы?
  52. Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode?
  53. Как вы думаете, будут ли какие-то проблемы, если у объекта, который используется в качестве ключа в hashMap изменится поле, которое участвует в определении hashCode?
  54. Чем отличается абстрактый класс о интерфейса, в каких случаях что вы будете использовать?
  55. Можно ли получить доступ к private переменным классам и если да, то каким образом?
  56. Модификаторы. Назначение и варианты использования.
  57. Что такое volatile и transient? Для чего и в каких случаях можно было бы использовать default?
  58. Контексты использования модификаторов (класс/поле/метод)
  59. Какой из модификаторов более строгий: protected или package-private?
  60. Расширение модификаторов при наследовании, переопределение и сокрытие методов. Если у класса-родителя есть метод, объявленный как private, может ли наследник расширить его видимость? А если protected? А сузить видимость?
  61. Модификатор abstract и final для классов/методов
  62. Имеет ли смысл объявлять метод private final?
  63. Какие особенности инициализации final переменных?
  64. Что будет, если единственный конструктор класса объявлен как final?
  65. Расширение/сужение типов в аргументах переопределяемых методов в случае, если бы в Java список формальных параметров не входил бы в сигнатуру метода.
  66. Что такое finalize? Зачем он нужен? Что Вы можете рассказать о сборщике мусора и алгоритмах его работы.
  67. Почему метод clone объявлен как protected? Что необходимо для реализации клонирования?
  68. Знакомы ли Вам какие-либо паттерны проектирования?
  69. Напишите Singleton… А с ленивой загрузкой. А если он должен быть потоко-безопасным? А в каких случаях ленивая загрузка хуже?
  70. Что можете сказать про MVC? Нарисуйте диаграмму и объясните, как MVC работает.
  71. Напишите функцию вычисления факториала.
  72. Дана функция вычисления чисел Фибоначчи, известно, что она работает. Найдите логическую ошибку. Оцените сложность получившегося алгоритма.

Исключения (оглавление)

  1. Дайте определение понятию «исключение»
  2. Какова иерархия исключений.
  3. Можно/нужно ли обрабатывать ошибки jvm?
  4. Какие существуют способы обработки исключений?
  5. О чем говорит ключевое слово throws?
  6. В чем особенность блока finally? Всегда ли он исполняется?
  7. Может ли не быть ни одного блока catch при отлавливании исключений?
  8. Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?
  9. Может ли один блок catch отлавливать несколько исключений (с одной и разных веток наследований)?
  10. Что вы знаете об обрабатываемых и не обрабатываемых (catched/uncatched) исключениях?
  11. В чем особенность RuntimeException?
  12. Как написать собственное («пользовательское») исключение? Какими мотивами вы будете руководствоваться при выборе типа исключения: checked/unchecked?
  13. Какой оператор позволяет принудительно выбросить исключение?
  14. Есть ли дополнительные условия к методу, который потенциально может выбросить исключение?
  15. Может ли метод main выбровить исключение во вне и если да, то где будет происходить обработка данного исключения?
  16. Если оператор return содержится и в блоке catch и в finally, какой из них «главнее»?
  17. OutOfMemoryError
  18. SQLException и поинтересоваться, оно chekced или unchecked и нормально ли это по мнению кандидата.
  19. Что такое Error? В каком случае используется Error. Приведите пример Error’а.
  20. Какая конструкция используется в Java для обработки исключений?
  21. Возможно ли использование блока try-finally (без catch)?
  22. Предположим, есть блок try-finally. В блоке try возникло исключение и выполнение переместилось в блок finally. В блоке finally тоже возникло исключение. Какое из двух исключений “выпадет” из блока try-finally? Что случится со вторым исключением?
  23. Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой оследовательности должны идти блоки catch? Сколько блоков catch будет выполнено?

Коллекции (оглавление)

  1. Дайте определение понятию «коллекция».
  2. Назовите преимущества использования коллекций.
  3. Какие данные могут хранить коллекции?
  4. Какова иерархия коллекций?
  5. Что вы знаете о коллекциях типа List?
  6. Что вы знаете о коллекциях типа Set?
  7. Что вы знаете о коллекциях типа Queue?
  8. Что вы знаете о коллекциях типа Map, в чем их принципиальное отличие?
  9. Назовите основные реализации List, Set, Map.
  10. Какие реализации SortedSet вы знаете и в чем их особенность?
  11. В чем отличия/сходства List и Set?
  12. Что разного/общего у классов ArrayList и LinkedList, когда лучше использовать ArrayList, а когда LinkedList?
  13. В каких случаях разумно использовать массив, а не ArrayList?
  14. Чем отличается ArrayList от Vector?
  15. Что вы знаете о реализации классов HashSet и TreeSet?
  16. Чем отличаются HashMap и TreeMap? Как они устроены и работают? Что со временем доступа к объектам, какие зависимости?
  17. Что такое Hashtable, чем она отличается от HashMap? На сегодняшний день она deprecated, как все-таки использовать нужную функциональность?
  18. Что будет, если в Map положить два значения с одинаковым ключем?
  19. Как задается порядок следования объектов в коллекции, как отсортировать коллекцию?
  20. Дайте определение понятию «итератор».
  21. Какую функциональность представляет класс Collections?
  22. В чем разница между HashMap и HashTable?
  23. Какой предок у класса HashTable?
  24. Как получить не модифицируемую коллекцию?
  25. Какие коллекции синхронизированы?
  26. Как получить синхронизированную коллекцию из не синхронизированной?
  27. Как получить коллекцию только для чтения?
  28. Почему Map не наследуется от Collection?
  29. В чем разница между Iterator и Enumeration?
  30. Как реализован цикл foreach?
  31. Почему нет метода iterator.add() чтобы добавить элементы в коллекцию?
  32. Почему в классе iterator нет метода для получения следующего элемента без передвижения курсора?
  33. В чем разница между Iterator и ListIterator?
  34. Какие естьспособы перебора всех элементов List?
  35. В чем разница между fail-safe и fail-fast свойствами?
  36. В каких случаях может быть выброшено ConcurrentModificationException?
  37. Что такое стек и очередь, расскажите в чем их отличия?
  38. В чем разница между интерфейсами Comparable и Comparator?
  39. Почему коллекции не наследуют интерфейсы Cloneable и Serializable?
  40. Какие алгоритмы сортировки Вам известны? Какие вообще знаете алгоритмы?
  41. Алгоритмы. Методы сортировки: quick sort, merge sort, radix sort; hash map, linked list, binary search tree; semaphore, thread pool, blocking queue
  42. Как посчитать среднее массива?
  43. Что быстрее, HashMap или TreeMap?

Строки (оглавление)

  1. Какие «строковые» классы вы знаете?
  2. Какие основные свойства «строковых» классов (их особенности)?
  3. Можно ли наследовать строковый тип, почему?
  4. Дайте определение понятию конкатенация строк.
  5. Как преобразовать строку в число?
  6. Как сравнить значение двух строк?
  7. Как перевернуть строку?
  8. Как работает сравнение двух строк?
  9. Как обрезать пробелы в конце строки?
  10. Как заменить символ в строке?
  11. Как получить часть строки?
  12. Дайте определение понятию «пул строк».
  13. Какой метод позволяет выделить подстроку в строке?
  14. Как разбить строку на подстроки по заданному разделителю?
  15. Какой метод вызывается для преобразования переменной в строку?
  16. Как узнать значение конкретного символа строки, знаю его порядковый номер в строке?
  17. Как найти необходимый символ в строке?
  18. Можно ли синхронизировать доступ к строке?
  19. Что делает метод intern()?
  20. Чем отличаются и что общего у классов String, StringBuffer и StringBuilder?
  21. Как правильно сравнить значения строк двух различных объектов типа String и StringBuffer?

Потоки ввода/вывода (оглавление)

  1. Какие существуют виды потоков ввода/вывода?
  2. Назовите основные предки потоков ввода/вывода.
  3. Что общего и чем отличаются следующие потоки: InputStream, OutputStream, Reader, Writer?
  4. Что вы знаете о RandomAccessFile?
  5. Какие есть режимы доступа к файлу?
  6. В каких пакетах лежат классы-потоки?
  7. Что вы знаете о классах-надстройках?
  8. Какой класс-надстройка позволяет читать данные из входного байтового потока в формате примитивных типов данных?
  9. Какой класс-надстройка позволяет ускорить чтение/запись за счет использования буфера?
  10. Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
  11. Какой класс предназначен для работы с элементами файловой системы (ЭФС)?
  12. Какой символ является разделителем при указании пути к ЭФС?
  13. Как выбрать все ЭФС определенного каталога по критерию (например, с определенным расширением)?
  14. Что вы знаете об интерфейсе FileFilter?
  15. Что такое сериализация?
  16. Какие условия «благополучной» сериализации объекта?
  17. Какие классы позволяют архивировать объекты?

Потоки выполнения/многопоточность (оглавление)

  1. Дайте определение понятию «процесс».
  2. Дайте определение понятию «поток».
  3. Дайте определение понятию «синхронизация потоков».
  4. Как взаимодействуют программы, процессы и потоки?
  5. В каких случаях целесообразно создавать несколько потоков?
  6. Что может произойти если два потока будут выполнять один и тот же код в программе?
  7. Что вы знаете о главном потоке программы?
  8. Какие есть способы создания и запуска потоков?
  9. Какой метод запускает поток на выполнение?
  10. Какой метод описывает действие потока во время выполнения?
  11. Когда поток завершает свое выполнение?
  12. Как синхронизировать метод?
  13. Как принудительно остановить поток?
  14. Дайте определение понятию «поток-демон».
  15. Как создать поток-демон?
  16. Как получить текущий поток?
  17. Дайте определение понятию «монитор».
  18. Как приостановить выполнение потока?
  19. В каких состояниях может прибыватьпоток?
  20. Что является монитором при вызове нестатического и статического метода?
  21. Что является монитором при выполнении участка кода метода?
  22. Какие методы позволяют синхронизировать выполнение потоков?
  23. Какой метод переводит поток в режим ожидания?
  24. Какова функциональность методов notify и notifyAll?
  25. Что позволяет сделать метод join?
  26. Каковы условия вызова метода wait/notify?
  27. Дайте определение понятию «взаимная блокировка».
  28. Чем отличаются методы interrupt, interrupted, isInterrupted?
  29. В каком случае будет выброшено исключение InterruptedException, какие методы могут его выбросить?
  30. Модификаторы synchronized и volatile
  31. Пакет java.util.concurrent
  32. Какие вы знаете способы запустить некоторое действие в отдельном потоке?
  33. Какие вы знаете способы прекратить выполнение потока?
  34. Какие ключевые слова Java, связанные с многопоточностью Вы знаете?
  35. Есть некоторый метод, который исполняет операцию i++. Переменная i типа int. Предполагается, что код будет исполнятся в многопоточной среде. Следует ли синхронизировать блок?
  36. Что служит в качестве mutex, если метод объявлен synchronized?
  37. Можно ли вызвать в разных потоках два synchronized метода одного и того же объекта?
  38. Что используется в качестве mutex, если метод объявлен static synchronized? Можно ли создавать новые кземпляры класса, пока выполняется static synchronized метод?
  39. Объясните, что такое deadlock? Приведите пример кода, который демонстрирует deadlock.
  40. Какие особенности использования метода wait? При каких условиях поток может выйти из режима ожидания?
  41. Предположим в методе run возник RuntimeException, который не был пойман. Что случится с потоком? Есть ли способ узнать о том, что Exception произошел (не заключая все тело run в блок try-catch)? Есть ли способ восстановить работу потока после того как это произошло?
  42. Какие стандартные инструменты Java вы бы использовали для реализации пула потоков?

SQL, JDBC (оглавление)

  1. ANSI SQL
  2. Основные элементы баз данных — таблицы, процедуры, функции, констрейнты и т.д.
  3. Констрейнты: как вы понимаете null в базах данных.
  4. Агрегатные функции, как они работают с null. Не забудьте о group by и having
  5. JDBC: Connection, Statement, PreparedStatement, CallableStatement, ResulSet, зачем каждая из этих сущностей нужна. Чем они являются: абстрактными классамм, конкретными классами или интерфейсами и почему.
  6. Как создать соединение в JDBC?
  7. Каким образом лучше добавлять большое количество записей в таблицу?
  8. Транзакции и autocommit
  9. Что такое первая нормальная форма и процесс нормализации? Какие бывают нормальные формы?
  10. В чем смысл индекса СУБД, как они устроены, как хранятся? Как бы вы реализовали тот же функционал? Последний вопрос задают в случае, если нет четкого понимания индексов.
  11. Нарисуйте отношение Многие-ко-многим. Например: таблицы Авторы и Книги. У одного автора может быть несколько книг, и книга может быть написана несколькими авторами. Составьте SQL запрос на выборку книг определенного автора.

JSP (оглавление)

  1. Что такое jsp и зачем он нужен?
  2. Расскажите об этапах жизненного цикла jsp.
  3. Расскажите о методах жизненного цикла jsp.
  4. Как закомментировать код в jsp?
  5. Какие есть способы вставки java кода в jsp страницу?
  6. Почему не рекомендуется использовать скриптовые элементы в jsp?
  7. Какие неявные, внутренние объекты есть на jsp странице?
  8. Что вы знаете о PageContext?
  9. Как можно запретить использование скриптов и java кода на jsp странице?
  10. Что вы знаете о jsp тегах?
  11. Что вы знаете о языке выражений jsp (JSP Expression Language — EL)?
  12. Назовите неявные, внутренние объекты JSP EL и их отличия от объектов jsp.
  13. Как узнать http метод использую JSP EL?
  14. Что такое JSTL (Jsp Standard tag library)?
  15. На какие категории можно разделить JSTL теги, приведите примеры.
  16. Что вы знаете о написании пользовательских jsp тегов?
  17. Как можно обработать ошибки jsp страниц?
  18. Как происходит обработка ошибок с помощью jstl?
  19. Как деактивировать использование EL на JSP?
  20. Можно ли использовать javascript на jsp странице?
  21. Всегда ли создается объект сессии на jsp странице, можно ли отключить его создание?
  22. Как можно расширить функциональность jsp?

Servlet (оглавление)

  1. Какова структура веб-проекта?
  2. Что такое сервлет?
  3. Что такое контейнер сервлетов?
  4. Каковы задачи, функциональность контейнера сервлетов?
  5. Что вы знаете о сервлет фильтрах?
  6. Зачем нужны слушатели в сервлетах?
  7. Когда вы будете использовать фильтры а когда слушатели?
  8. Как обработать исключения, выброшенные другим сервлетом в приложении?
  9. Что такое дискриптор развертывания?
  10. Как реализовать запуск сервлета с запуском приложения?
  11. Что представляет собой объект ServletConfig?
  12. Что представляет собой объект ServletContext?
  13. В чем отличия ServletContext и ServletConfig?
  14. Что такое Request Dispatcher?
  15. Как можно создать блокировку (deadlock) в сервлете?
  16. Как получить адрес сервлета на сервере?
  17. Как получить информацию о сервере с сервлета?
  18. Как получить ip адрес клиента на сервере?
  19. Что вы знаете о классах обертках (wrapper) для сервлетов?
  20. Каков жизненный цикл сервлета и когда какие методы вызываются?
  21. Какие методы необходимо определить при создании сервлетов?
  22. В каком случае вы будете переопределять метод service()?
  23. Есть ли смысл определить конструктор для сервлета, как лучше инициализировать данные?
  24. В чем отличия GenericServlet и HttpServlet?
  25. Как вызватьиз сервлета другой сервлет этого же и другого приложения?
  26. Что вы знаете и в чем отличия методов forward() и sendRedirect()?
  27. Стоит ли волноваться о «многопоточной безопасности» работая с сервлетами?
  28. Что такое servlet scope (область видимости — время жизни) и какие вы знаете?
  29. Что вы знаете и зачем нужны методы java.net.URLEncoder.encode() и decode()?
  30. Зачем нужны и чем отличаются методы encodeUrl() и encodeRedirectUrl()?

Web (оглавление)

  1. Что такое www?
  2. Что такое w3c?
  3. Что такое TCP/IP?
  4. Что такое ftp?
  5. Чем отличаются http и https?
  6. Что такое протокол передачи данных, какие вы знаете?
  7. Что такое web server?
  8. Что такое web приложение?
  9. Что такое application server?
  10. Чем отличаются web server и application server?
  11. Какие методы передачи данных вы знаете?
  12. Чем отличаются методы get и post?
  13. Что такое html?
  14. Что такое xml?
  15. Что такое css?
  16. Что такое MIME type?
  17. Что такое cookies?
  18. Что такое сессия?
  19. Дайте определение понятиям «авторизация» и «аутентификация», в чем их различия?
  20. Что такое Ajax? Как принципиально устроена эта технология?
  21. Что такое ORM, как это перевести и как это должно работать?

 

Java Interview

А ты знаешь ответы на все вопросы для Java Interview?

Смотри видео записи с online-интенсива подготовки к «Java Interview»

 

Источники:

Интернет
Aksonenko Bogdan

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.