Java

В этом посте, я с удовольствием раскрою, вероятно, большинство возможных вопросов на Java-собеседовании, от простых до самых сложных.

  1. Чем отличаются статические методы и переменные от нестатических? Объясните их архитектуру в памяти?
  2. Почему вы используете ключевое слово final с классами и переменными? Приведите пример, в каком случае вы предпочтёте использовать final.
  3. Что такое приведение типов? Предположим, что есть данные, которые имеют тип double, как вы можете показать эти данные в типе int?
  4. Каковы основные преимущества полиморфизма? Что является альтернативой полиморфизма?
  5. Что такое цепочка конструктора в Java?
  6. Расскажите о конструкторах при наследовании?
  7. Ключевое слово ‘Super’ используется для доступа к свойствам суперкласса. Как получить доступ к этим свойствам, если использовать ‘Super’ не разрешено?
  8. Предположим, у вас в сумке учебники за 11-й, 12-й классы, объясните, как вы будете использовать наследование, чтобы показать отношения между ними?
  9. Почему компилятору Java нужен только статический основной метод?
  10. Как вы понимаете анонимность? Каковы особенности анонимного массива и объекта в Java? Как анонимность влияет на структуру памяти?
  11. Почему Java требует внутренние классы? Как вы понимаете статические внутренние классы в Java? И где вы будете использовать статический и нестатический класс?
  12. Абстракция скрывает информацию в Java. Как в Java представлена абстракция? Напишите программу, где вы показываете абстракцию, и такую же программу, но без абстракции.
  13. Какие существуют способы создания объектов в Java? Как вы понимаете создание объекта в Java? Где будет выделена память для создания объекта?
  14. JVM — это компилятор для запуска ваших программ, опишите этапы, начиная с написания кода, до его выполнения машиной.
  15. Что значит неупорядоченное хранение данных в Java, и в чём отличие от стэка?
  16. Как JVM понимает вашу программу и каков цикл выполнения кода в java?
  17. Какие различие между модификаторами public, private и protected. Объясните, зачем вам нужны все эти модификаторы в коде?
  18. Каков будет результат, если в Java установить main метод в private?
  19. Что такое аргумент командной строки? Как можно дать команду Java программе, выполнить операцию чтения файла, с помощью аргумента командной строки?
  20. В каком случае вам понадобится супер конструктор? Если у вас нет возможности использовать супер конструктор, есть ли возможность выполнить конструктор супер класса, если да, то объясните как?
  21. Интерфейс это на 100% абстракция, как вы понимаете 100% абстракцию, и как это реализовать в Java? Напишите программу используя интерфейс и абстрактный класс. Зачем нужен интерфейс, если можно использовать абстрактные классы?
  22. Что такое многоуровневое наследование в Java? Поддерживает ли Java множественное наследование, объясните свои мысли?
  23. Java является объектно-ориентированным языком, объясните, что это значит?
  24. Как вы понимаете проектирование паттернов в ООП? Если вам нужно создать собственные паттерны, то какие параметры вы будете учитывать?
  25. Напишите несколько базовых программ, например:
  • Палиндром
  • Реверс строки
  • Узоры из звёздочек * всеми возможными способами
  • Найти минимальное и максимальное число в данном массиве
  • Дан пустой массив, фиксированного размера, с именами городов и людей. Напишите программу, которая достаёт имя города, определённого человека. Вы должны получить имя города и имя человека во время выполнения.
  • Напишите программу умножения матриц на Java
  • Как вы разобьёте массив на равные части, рассмотрите все возможные варианты
  • Напишите программу, используя switch… case, где пользователь должен выбрать день недели, а затем, программа выдаст первые три буквы этого дня, заглавными, в качестве ответа пользователю.
  • Напишите программу, в которой пользователь вводит буквы в строку, а ответом будет вывод повторяющихся символов и их количество.
  • Преобразуйте любое заданное число в двоичный формат
  • Преобразуйте в файле, каждую строчную букву в заглавную и наоборот, выведите результат.
  • Напишите программу, в которой пользователь вводит имя, возраст и название колледжа. Результатом будет вывод этих данных с соблюдением порядка. Если пользователь вводит имя повторно, программа выводит подсказку с доступными вариантами.

26. Как вы понимаете операторы break и continue в итерации?

27. Напишите все возможные варианты синтаксиса для цикла for?

28. В чем разница между циклами while и for? И объясните, в каких случаях, какой из них лучше применять?
29. Как вы понимаете область видимости переменной? Требуется ли инициализировать локальную переменную, объясните почему?

30. Что такое интерпретатор в Java? В чём разница между компиляцией и интерпретацией в Java?

31. Что значит возвращаемый тип данных в Java? Предположим, что вам нужно вернуть int данные, но тип возвращаемого метода double, объясните, будет ли это работать или нет?

32. Можно ли переопределить методы или переменные суперкласса? Объясните свой ответ.

33. Что такое цепочка объектов в Java?

34. Объясните разницу между параметрами и аргументами в Java?

35. Опишите класс Singleton в Java. Где и почему вы будете использовать Singleton?

36. Поскольку Java имеет многопоточную природу программирования, сначала объясните, что это такое? Затем:

  • Как это можно использовать?
  • Объясните и напишите все возможные варианты создания потока на Java?
  • Что такое thread sleep в Java?
  • Предположим, у вас есть два разных файла, напишите программу с двумя потоками, в которой каждый поток будет читать и выводить один из файлов, и оба будут выполнять операцию одновременно.
  • Объясните архитектуру потоков в Java?
  • Что такое объединение потоков в Java?
  • Приведите пример функции, связанной с многопоточностью в Java.

37. Является ли Java процедурным языком или функциональным, объясните свой ответ?

38. Какие параметры отличают Java от других языков? Приведите практические примеры, где Java подходит лучше, чем любой другой язык.

39. Почему в Java реализована обработка исключений? Перечислите все причины?

40. Давайте представим, что Java не имеет механизма обработки ошибок. Напишите функцию, где вам нужно обрабатывать ArrayIndexOutOfBoundException.

41. Объясните разницу между try, catch и finally?

42. Представьте своё тело как «задачу», спроектируйте каждую часть тела согласно концепции ООП.

43. Попытайтесь связать каждую концепцию ООП с тем, что вас окружает.

Спасибо

Перевод статьи: Vishal Jain Most Frequently Asked Java Interview Questions.