100+ лучших вопросов и ответов на собеседованиях по Java, которые вы должны знать

В этом блоге вы найдете более 100 наиболее часто задаваемых вопросов на собеседовании по Java и Core Java, а также ответы на них, которые вы должны подготовить, чтобы пройти собеседование.

В этом блоге Java Interview Questions я собираюсь перечислить некоторые из наиболее важных вопросов и ответов по Java-программированию, которые помогут вам выделиться в процессе собеседования. Java используется примерно 10 миллионами разработчиков по всему миру для разработки приложений для 15 миллиардов устройств, поддерживающих Java. Он также используется для создания приложений для популярных технологий, таких как большие данные, для бытовых устройств, таких как мобильные телефоны и коробки DTH. И поэтому сегодня Java используется повсеместно! Вот почему сертификация Java является наиболее востребованной сертификацией в области программирования.

Давайте начнем с рассмотрения некоторых наиболее часто задаваемых вопросов на собеседовании по Java.   

Q1. Объясните JDK, JRE и JVM?
Q2. Объясните public static void main(String args[]) в Java
Q3. Почему Java не зависит от платформы?
Q4. Почему Java не на 100% объектно-ориентирована?
Q5. Что такое классы-оболочки в Java?
Q6. Что такое конструкторы в Java?
Q7. Что такое одноэлементный класс в Java и как мы можем создать одноэлементный класс?
Q8. В чем разница между списком массивов и вектором в Java?
Q9. В чем разница между equals() и == в Java?
Q10. В чем разница между кучей и стековой памятью в Java?

Мы составили список самых популярных вопросов для собеседования по Java, которые разделены на 7 разделов, а именно:

  1. Основные вопросы на собеседовании по Java
  2. Вопросы для собеседования по Java OOPs
  3. Вопросы интервью JDBC
  4. Вопросы весеннего интервью
  5. Спящий режим Вопросы интервью
  6. JSP вопросы интервью
  7. Вопросы об исключениях Java и Thread Interview

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


Итак, давайте начнем с первого набора основных вопросов для собеседования по Java.

 

Основные вопросы на собеседовании по Java для первокурсников

Q1. Объясните JDK, JRE и JVM?

JDKJREJVM
Это расшифровывается как Java Development Kit.Это расшифровывается как Java Runtime Environment.Это расшифровывается как виртуальная машина Java.
Это инструмент, необходимый для компиляции, документирования и упаковки программ Java.JRE относится к среде выполнения, в которой может выполняться байт-код Java.Это абстрактная машина. Это спецификация, обеспечивающая среду выполнения, в которой может выполняться байт-код Java.
Он содержит инструменты разработки JRE +.Это реализация JVM, которая физически существует.JVM следует трем нотациям: спецификация, реализация и  экземпляр среды выполнения .

 

Q2. Объясните public static void main(String args[]) в Java.

main() в Java — это точка входа для любой Java-программы. Он всегда записывается как public static void main(String[] args) .

  • public : Public — это модификатор доступа, который используется для указания того, кто может получить доступ к этому методу. Публичный означает, что этот метод будет доступен любому классу.
  • static : это ключевое слово в java, которое определяет, что оно основано на классе. main() сделан статическим в Java, поэтому к нему можно получить доступ без создания экземпляра класса. В случае, если main не сделан статическим, компилятор выдаст ошибку, поскольку main () вызывается JVM до того, как будут созданы какие-либо объекты, и только статические методы могут быть напрямую вызваны через класс.
  • void : это возвращаемый тип метода. Void определяет метод, который не возвращает никакого значения.
  • main : это имя метода, который ищет JVM в качестве отправной точки для приложения только с определенной сигнатурой. Это метод, в котором происходит основное выполнение.
  • String args[] : это параметр, передаваемый основному методу.

 

Q3. Почему Java не зависит от платформы?

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

 

Q4. Почему Java не на 100% объектно-ориентирована?


Java не на 100% объектно-ориентирована, потому что использует восемь примитивных типов данных, таких как boolean, byte, char, int, float, double, long, short, которые не являются объектами.

Q5. Что такое классы-оболочки в Java?

 

Классы-оболочки преобразуют примитивы Java в ссылочные типы (объекты). Каждому примитивному типу данных соответствует свой класс. Они известны как классы-оболочки, потому что они «обертывают» примитивный тип данных в объект этого класса. Обратитесь к изображению ниже, которое отображает другой тип примитива, класс-оболочку и аргумент конструктора.

 

Q6. Что такое конструкторы в Java?

В Java конструктор относится к блоку кода, который используется для инициализации объекта. Он должен иметь то же имя, что и класс. Кроме того, он не имеет возвращаемого типа и автоматически вызывается при создании объекта.

Существует два типа конструкторов:

  1. Конструктор по умолчанию: в Java конструктор по умолчанию — это тот, который не принимает никаких входных данных. Другими словами, конструкторы по умолчанию — это конструкторы без аргументов, которые будут созданы по умолчанию, если пользователь не определил другой конструктор. Его основная цель — инициализировать переменные экземпляра значениями по умолчанию. Кроме того, он в основном используется для создания объектов.
  2. Параметризованный конструктор: Параметризованный конструктор в Java — это конструктор, который способен инициализировать переменные экземпляра предоставленными значениями. Другими словами, конструкторы, принимающие аргументы, называются параметризованными конструкторами.

 

Q7. Что такое одноэлементный класс в Java и как мы можем создать одноэлементный класс?

Класс Singleton — это класс, только один экземпляр которого может быть создан в любой момент времени в одной JVM. Класс можно сделать одноэлементным, сделав его конструктор закрытым.

Q8. В чем разница между списком массивов и вектором в Java?

ArrayListВектор
Список массивов не синхронизирован. Вектор синхронизирован.
Array List работает быстро, так как не синхронизируется.Vector медленный, поскольку он потокобезопасен.
Если элемент вставляется в список массивов, он увеличивает размер своего массива на 50%.Вектор по умолчанию удваивает размер своего массива.
Список массивов не определяет размер приращения.Вектор определяет размер приращения.
Список массивов может использовать итератор только для обхода списка массивов.Vector может использовать как Enumeration, так и Iterator для обхода.

 

Q9. В чем разница между equals() и == в Java?

Метод Equals() определен в классе Object в Java и используется для проверки равенства двух объектов, определенных бизнес-логикой.

«==» или оператор равенства в Java — это бинарный оператор, предоставляемый языком программирования Java и используемый для сравнения примитивов и объектов. public boolean equals(Object o) — это метод, предоставляемый классом Object. Реализация по умолчанию использует оператор == для сравнения двух объектов. Например: метод может быть переопределен как класс String. Метод equals() используется для сравнения значений двух объектов.

Q10. Когда вы можете использовать ключевое слово super?

В Java ключевое слово super — это ссылочная переменная, которая ссылается на непосредственный объект родительского класса.

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

Использование ключевого слова Java super Keyword: 

  1. Чтобы сослаться на непосредственную переменную экземпляра родительского класса, используйте super.
  2. Ключевое слово super может использоваться для вызова метода непосредственного родительского класса.
  3. Super() можно использовать для вызова конструктора непосредственного родительского класса.

 

Q11. Что отличает HashSet от TreeSet?

ХэшсетНабор деревьев
Это реализовано через хеш-таблицу.TreeSet реализует интерфейс SortedSet, который использует деревья для хранения данных.
Он разрешает нулевой объект.Он не допускает нулевой объект.
Это быстрее, чем TreeSet, особенно для операций поиска, вставки и удаления.Для этих операций он медленнее, чем HashSet.
Он не поддерживает элементы в упорядоченном виде.Элементы поддерживаются в отсортированном порядке.
Он использует метод equals() для сравнения двух объектов.Он использует метод compareTo() для сравнения двух объектов.
Он не допускает гетерогенный объект.Он допускает неоднородный объект.

 

Q12. В чем разница между HashMap и HashTable в Java?

 

HashMapХеш-таблица
Он не синхронизирован. Он не может быть разделен между многими потоками без надлежащего кода синхронизации.Он синхронизирован. Он потокобезопасен и может совместно использоваться многими потоками.
Он допускает один нулевой ключ и несколько нулевых значений.Он не допускает использования нулевого ключа или значения.
— это новый класс, представленный в JDK 1.2.Он присутствовал и в более ранних версиях Java.
Это быстрее.Это медленнее.
Он проходит через итератор.Он проходит через Enumerator и Iterator.
Он использует отказоустойчивый итератор.Он использует счетчик, который не дает сбоев быстро.
Он наследует класс AbstractMap.Он наследует класс Dictionary.

 

Q13. Какова важность отражения в Java?

Reflection — это API времени выполнения для проверки и изменения поведения методов, классов и интерфейсов. Java Reflection — это мощный инструмент, который может быть действительно полезным. Java Reflection позволяет анализировать классы, интерфейсы, поля и методы во время выполнения, не зная, как они называются во время компиляции. Отражение также можно использовать для создания новых объектов, методов вызова и получения/установки значений полей. Внешние пользовательские классы можно использовать, создавая экземпляры объектов расширяемости с их полными именами. Отладчики также могут использовать отражение для проверки закрытых членов классов.

Q14. Как запретить сериализацию атрибутов класса в Java?

Атрибут NonSerialized можно использовать для предотвращения сериализации переменных-членов.
Вы также должны сделать объект, который потенциально может содержать конфиденциальные данные, несериализуемым, если это возможно. Примените атрибут NonSerialized к определенным полям, в которых хранятся конфиденциальные данные, если объект должен быть сериализован. Если вы не исключите эти поля из сериализации, хранящиеся в них данные будут видны любым программам с разрешением на сериализацию.

Q15. Можно ли вызвать конструктор класса внутри другого конструктора?

Да, мы можем вызвать конструктор класса внутри другого конструктора. Это также называется цепочкой конструкторов. Цепочка конструкторов может быть выполнена двумя способами:

  1. Внутри одного класса: для конструкторов одного класса можно использовать ключевое слово this().
  2. Из базового класса: ключевое слово super() используется для вызова конструктора из базового класса.
    Цепочка конструкторов следует процессу наследования. Конструктор подкласса сначала вызывает конструктор суперкласса. В связи с этим создание объекта подкласса начинается с инициализации элементов данных суперкласса. Цепочка конструкторов работает одинаково с любым количеством классов. Каждый конструктор продолжает вызывать цепочку до вершины цепочки.

 

Q16. Непрерывные области памяти обычно используются для хранения фактических значений в массиве, но не в ArrayList. Объяснять.

Массив обычно содержит элементы примитивных типов данных, таких как int, float и т. д. В таких случаях массив непосредственно хранит эти элементы в смежных ячейках памяти. Хотя ArrayList не содержит примитивных типов данных. ArrayList содержит ссылку на объекты в разных местах памяти, а не на сам объект. Вот почему объекты не хранятся в смежных ячейках памяти.

 

Q17. Чем создание строки с использованием new() отличается от литерала?
Когда мы создаем строку с помощью new(), создается новый объект. Принимая во внимание, что если мы создадим строку, используя синтаксис строкового литерала, она может вернуть уже существующий объект с тем же именем.

 

Q18. Зачем нужна синхронизация? Объясните с помощью соответствующего примера.

Java позволяет выполнять несколько потоков. Они могут обращаться к одной и той же переменной или объекту. Синхронизация помогает выполнять потоки один за другим.
Это важно, так как помогает выполнять все параллельные потоки при синхронизации. Это предотвращает ошибки согласованности памяти из-за доступа к общей памяти. Пример кода синхронизации:

public synchronized void increment()
{
a++;
}

Поскольку мы синхронизировали эту функцию, этот поток может использовать объект только после того, как его использовал предыдущий поток.

Q19. Объясните термин «инициализация двойной скобки» в Java?

Инициализация двойной скобки — это термин Java, который относится к комбинации двух независимых процессов. При этом используются две скобки. Первая фигурная скобка создает анонимный внутренний класс. Вторая фигурная скобка — это блок инициализации. Когда они оба используются вместе, это называется инициализацией двойной скобки. Внутренний класс имеет ссылку на окружающий внешний класс, обычно используя указатель this. Он используется для создания и инициализации в одном операторе. Обычно он используется для инициализации коллекций. Это уменьшает код, а также делает его более читаемым.

 

Q20. Почему говорят, что метод length() класса String не возвращает точных результатов?

Метод length() класса String не возвращает точных результатов, потому что
он просто учитывает количество символов в строке. Другими словами, кодовые точки за пределами BMP (базовой многоязычной плоскости), то есть кодовые точки, имеющие значение U+10000 или выше, будут игнорироваться.

Причина этого историческая. Одной из первоначальных целей Java было рассматривать весь текст как Unicode; тем не менее, в то время Unicode не определял кодовые точки вне BMP. Было слишком поздно изменять char к тому времени, когда Unicode указывал такие кодовые точки.

 

Q21. Каковы различия между кучей и памятью стека в Java?

Основное различие между памятью Heap и Stack:

ФункцииКучакуча
объем памятиПамять стека используется только одним потоком выполнения.Куча памяти используется всеми частями приложения.
ДоступПамять стека не может быть доступна другим потокам.Объекты, хранящиеся в куче, доступны глобально.
Управление памятьюПрименяет метод LIFO для освобождения памяти.Управление памятью основано на генерации, связанной с каждым объектом.
Продолжительность жизниСуществует до конца выполнения потока.Память кучи живет от начала до конца выполнения приложения.
использованиеПамять стека содержит только локальные примитивные и ссылочные переменные для объектов в куче.Всякий раз, когда создается объект, он всегда сохраняется в пространстве кучи.

Q22. Что такое пакет в Java? Перечислите различные преимущества пакетов.

Пакеты в Java — это набор связанных классов и интерфейсов, объединенных вместе. Используя пакеты, разработчики могут легко разбить код на модули и оптимизировать его повторное использование. Кроме того, код внутри пакетов может быть импортирован другими классами и использован повторно. Ниже я перечислил несколько его преимуществ:

  • Пакеты помогают избежать конфликтов имен
  • Они обеспечивают более легкий контроль доступа к коду
  • Пакеты также могут содержать скрытые классы, которые не видны внешним классам и используются только внутри пакета.
  • Создает правильную иерархическую структуру, упрощающую поиск связанных классов.

Q23. Почему указатели не используются в Java?

Java не использует указатели, потому что они небезопасны и усложняют программу. Поскольку Java известна своей простотой кода, добавление концепции указателей будет противоречивым. Более того, поскольку JVM отвечает за неявное выделение памяти, чтобы избежать прямого доступа пользователя к памяти, указатели в Java не рекомендуются.

Q24. Что такое JIT-компилятор в Java?

JIT означает компилятор Just-In-Time в Java. Это программа, которая помогает преобразовывать байт-код Java в инструкции, которые отправляются непосредственно в процессор. По умолчанию JIT-компилятор включен в Java и активируется всякий раз, когда вызывается метод Java. Затем компилятор JIT компилирует байт-код вызванного метода в собственный машинный код, компилируя его «как раз вовремя» для выполнения. Как только метод скомпилирован, JVM вызывает скомпилированный код этого метода напрямую, а не интерпретирует его. Вот почему он часто отвечает за оптимизацию производительности Java-приложений во время выполнения.

Q25. Что такое модификаторы доступа в Java?

В Java модификаторы доступа — это специальные ключевые слова, которые используются для ограничения доступа к классу, конструктору, члену данных и методу в другом классе. Java поддерживает четыре типа модификаторов доступа:

  1. По умолчанию
  2. Частный
  3. Защищено
  4. Общественный
МодификаторПо умолчаниюЧастныйЗащищеноОбщественный
Тот же классДАДАДАДА
Тот же подкласс пакетаДАНЕТДАДА
Тот же пакет без подклассаДАНЕТДАДА
Другой подкласс пакетаНЕТНЕТДАДА
Другой пакет без подклассаНЕТНЕТНЕТДА

Q26. Определите класс Java.

Класс в Java — это план, который включает в себя все ваши данные. Класс содержит поля (переменные) и методы для описания поведения объекта. Давайте посмотрим на синтаксис класса.

class Abc {
member variables // class body
methods}

Q27. Что такое объект в Java и как он создается?

Объект — это сущность реального мира, которая имеет состояние и поведение. Объект имеет три характеристики:

  1. Состояние
  2. Поведение
  3. Личность

Объект создается с использованием ключевого слова «новое». Например:

ИмяКласса obj = новое ИмяКласса();

Q28. Что такое объектно-ориентированное программирование?

Объектно-ориентированное программирование или широко известное как ООП — это модель программирования или подход, при котором программы организованы вокруг объектов, а не логики и функций. Другими словами, ООП в основном фокусируется на объектах, которыми необходимо манипулировать, а не на логике. Этот подход идеален для программ с большими и сложными кодами, которые необходимо активно обновлять или поддерживать.

Q29. Каковы основные концепции ООП в Java?

Объектно-ориентированное программирование или ООП — это стиль программирования, связанный с такими понятиями, как:

  1. Наследование: Наследование — это процесс, в котором один класс приобретает свойства другого.
  2. Инкапсуляция. Инкапсуляция в Java — это механизм объединения данных и кода в единое целое.
  3. Абстракция: Абстракция — это методология сокрытия деталей реализации от пользователя и предоставления функциональности только пользователям.
  4. Полиморфизм: Полиморфизм — это способность переменной, функции или объекта принимать несколько форм.

Q30. В чем разница между локальной переменной и переменной экземпляра?

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

Пример

if(x > 100)
{
String test = "Edureka";
}

Принимая во внимание, что  переменная экземпляра в Java - это переменная, которая ограничена самим своим объектом. Эти переменные объявляются внутри  класса , но вне метода. Каждый объект этого класса будет создавать свою собственную копию переменной при ее использовании. Таким образом, любые изменения, внесенные в переменную, не будут отражаться ни в каких других экземплярах этого класса и будут привязаны только к этому конкретному экземпляру.

class Test{
public String EmpName;
public int empAge;
}

Q31. Различать конструкторы и методы в Java?

МетодыКонструкторы
1. Используется для представления поведения объекта1. Используется для инициализации состояния объекта
2. Должен иметь возвращаемый тип2. Не иметь возвращаемого типа
3. Необходимо вызывать явно3. Вызывается неявно
4. Компилятор не предоставляет метод по умолчанию4. Конструктор по умолчанию предоставляется компилятором, если в классе его нет.
5. Имя метода может совпадать или не совпадать с именем класса.5. Имя конструктора всегда должно совпадать с именем класса.

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

Q32. Что такое ключевое слово final в Java?

final — это специальное ключевое слово в Java, которое используется в качестве модификатора доступа. Конечная переменная может использоваться в различных контекстах, таких как:

  • конечная переменная

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

  • окончательный метод

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

  • последний класс

Когда класс объявлен как final в Java, он не может быть расширен каким-либо классом подкласса, но может расширять другой класс.

Q33. В чем разница между операторами break и continue?

переменаПродолжать
1. Может использоваться в операторах switch и loop (for, while, do while).1. Может использоваться только с операторами цикла
2. Это приводит к тому, что операторы переключения или цикла завершаются в момент их выполнения.2. Цикл не прерывается, но цикл переходит к следующей итерации.
3. Он немедленно завершает самый внутренний охватывающий цикл или переключатель.3. Продолжение в цикле, вложенном в переключатель, приведет к выполнению следующей итерации цикла.

Пример перерыва:

for (int i = 0; i < 5; i++)</div>
<div>
<pre>{
if (i == 3)
{
break;
}
System.out.println(i);
}

Пример продолжения:

for (int i = 0; i < 5; i++)
{
if(i == 2)
{
continue;
}
System.out.println(i);
}

Q34. Что такое бесконечный цикл в Java? Объясните на примере.

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

Например:

public class InfiniteForLoopDemo
{
public static void main(String[] arg) {
for(;;)
System.out.println("Welcome to Edureka!");
// To terminate this program press ctrl + c in the console.
}
}

Q35. В чем разница между this() и super() в Java?

В Java super() и this() являются специальными ключевыми словами, которые используются для вызова конструктора. 

это()супер()
1. this() представляет текущий экземпляр класса1. super() представляет текущий экземпляр родительского/базового класса
2. Используется для вызова конструктора по умолчанию того же класса.2. Используется для вызова конструктора по умолчанию родительского/базового класса.
3. Используется для доступа к методам текущего класса3. Используется для доступа к методам базового класса
4. Используется для указания текущего экземпляра класса4. Используется для указания экземпляра суперкласса
5. Должна быть первой строкой блока5. Должна быть первой строкой блока

Q36. Что такое пул строк Java?

Пул строк Java относится к набору строк, которые хранятся в куче памяти. При этом всякий раз, когда создается новый объект, пул строк сначала проверяет, присутствует ли этот объект в пуле или нет. Если он присутствует, то в переменную возвращается та же ссылка, иначе в пуле строк будет создан новый объект, и будет возвращена соответствующая ссылка.

Пул строк — Вопросы для собеседования по Java — Edureka

Q37. Различать статические и нестатические методы в Java.

Статический методНестатический метод
1. Ключевое слово static  должно использоваться перед именем метода.1. Не нужно использовать ключевое слово static перед именем метода.
2. Вызывается с помощью класса (className.methodName) 2. Может вызываться как любой общий метод
3. Они не могут получить доступ к каким-либо нестатическим переменным или методам экземпляра.3. Он может получить доступ к любому статическому методу и любой статической переменной без создания экземпляра класса.

Q38. Объясните термин «Инициализация двойной скобки» в Java?

Инициализация двойной скобки — это термин Java, который относится к комбинации двух независимых процессов. При этом используются две скобки. Первая фигурная скобка создает анонимный внутренний класс. Вторая фигурная скобка — это блок инициализации. Когда они оба используются вместе, это называется инициализацией двойной скобки. Внутренний класс имеет ссылку на окружающий внешний класс, обычно используя указатель this. Он используется для создания и инициализации в одном операторе. Обычно он используется для инициализации коллекций. Это уменьшает код, а также делает его более читаемым.

Q39. Что такое цепочка конструкторов в Java?

В Java цепочка конструкторов — это процесс вызова одного конструктора из другого по отношению к текущему объекту. Цепочка конструкторов возможна только через наследие, где конструктор подкласса отвечает за вызов конструктора суперкласса в первую очередь. В цепочке конструкторов может быть любое количество классов. Цепочка конструкторов может быть достигнута двумя способами:

  1. В том же классе, используя this()
  2. Из базового класса с помощью super()

Q40. Разница между String, StringBuilder и StringBuffer.

ФакторНитьStringBuilderСтроковый буфер
Зона храненияПостоянный пул строкПлощадь кучиПлощадь кучи
ИзменчивостьНеизменныйИзменяемыйИзменяемый
Безопасность потокаДаНетДа
СпектакльБыстроБолее эффективнымМенее эффективны

Q41. Что такое загрузчик классов в Java?

Java ClassLoader —  это подмножество JVM (виртуальная машина Java), которое отвечает за загрузку файлов классов. Всякий раз, когда программа Java выполняется, она сначала загружается загрузчиком классов. Java предоставляет три встроенных загрузчика классов:

  1. Bootstrap ClassLoader
  2. Расширение ClassLoader
  3. Система/приложение ClassLoader

Q42. Почему строки Java неизменяемы по своей природе?

В Java строковые объекты являются неизменяемыми по своей природе, что просто означает, что после создания объекта String его состояние не может быть изменено. Всякий раз, когда вы пытаетесь обновить значение этого объекта вместо обновления значений этого конкретного объекта, Java создает новый строковый объект. Объекты Java String неизменяемы, поскольку объекты String обычно кэшируются в пуле String. Поскольку строковые литералы обычно совместно используются несколькими клиентами, действия одного клиента могут повлиять на остальные. Это повышает безопасность, кэширование, синхронизацию и производительность приложения. 

Q43. В чем разница между массивом и списком массивов?

МножествоArrayList
Не может содержать значения разных типов данныхМожет содержать значения разных типов данных.
Размер должен быть определен на момент объявленияРазмер может быть динамически изменен
Необходимо указать индекс для добавления данныхНе нужно указывать индекс
Массивы не параметризуются по типуМассивы имеют тип 
Массивы могут содержать как примитивные типы данных, так и объекты.Списки массивов могут содержать только объекты, примитивные типы данных не допускаются.

Q44. Что такое карта в Java?

В Java Map — это интерфейс пакета Util, который сопоставляет уникальные ключи со значениями. Интерфейс карты не является подмножеством основного интерфейса коллекции, и поэтому его поведение мало отличается от других типов коллекций. Ниже приведены некоторые характеристики интерфейса карты: 

  1. Карта не содержит повторяющихся ключей.

Каждый ключ может отображать не более одного значения.

Q45. Что такое класс коллекции в Java? Перечислите его методы и интерфейсы.

В Java коллекция — это структура, которая действует как архитектура для хранения и управления группой объектов. Используя коллекции, вы можете выполнять различные задачи, такие как поиск, сортировка, вставка, манипулирование, удаление и т. д. Платформа коллекций Java включает в себя следующее:

  • Интерфейсы
  • Классы
  • Методы

На изображении ниже показана полная иерархия коллекции Java.

FrameworkHierarchy — Коллекции Java — Edureka

 


OOPS Вопросы для собеседования по Java

Q1. Что такое Полиморфизм?

Полиморфизм кратко описывается как «один интерфейс, множество реализаций». Полиморфизм — это характеристика способности присваивать различное значение или использование чему-либо в разных контекстах, в частности, позволять сущности, такой как переменная, функция или объект, иметь более одной формы. Существует два типа полиморфизма:

  1. Полиморфизм времени компиляции
  2. Полиморфизм времени выполнения

Полиморфизм времени компиляции — это перегрузка методов, тогда как полиморфизм времени выполнения выполняется с использованием наследования и интерфейса.

 

Q2. Что такое полиморфизм времени выполнения или диспетчеризация динамических методов?

В Java полиморфизм времени выполнения или диспетчеризация динамического метода — это процесс, в котором вызов переопределенного метода разрешается во время выполнения, а не во время компиляции. В этом процессе переопределенный метод вызывается через ссылочную переменную суперкласса. Давайте посмотрим на пример ниже, чтобы понять его лучше.

class Car {
void run()
{
System.out.println(“car is running”); 
}
}
class Audi extends Car {
void run()
{
System.out.prinltn(“Audi is running safely with 100km”);
}
public static void main(String args[])
{
Car b= new Audi();    //upcasting
b.run();
}
}

Q3. Что такое абстракция в Java?

Абстракция относится к качеству работы с идеями, а не с событиями. В основном это связано с тем, чтобы скрыть детали и показать пользователю важные вещи. Таким образом, можно сказать, что абстракция в Java — это процесс сокрытия деталей реализации от пользователя и раскрытия им только функциональности. Абстракция может быть достигнута двумя способами:

  1. Абстрактные классы (можно достичь 0-100% абстракции)
  2. Интерфейсы (можно достичь 100% абстракции)

Q4. Что вы подразумеваете под интерфейсом в Java?

Интерфейс в Java — это план класса или, можно сказать, набор абстрактных методов и статических констант. В интерфейсе каждый метод является общедоступным и абстрактным, но не содержит конструктора. Таким образом, интерфейс в основном представляет собой группу связанных методов с пустыми телами. Пример:

public interface Animal {
  public void eat();
  public void sleep();
  public void run();
}

Q5. В чем разница между абстрактными классами и интерфейсами?

Абстрактный классИнтерфейсы
Абстрактный класс может предоставлять полный код по умолчанию и/или только детали, которые необходимо переопределить.Интерфейс вообще не может предоставлять никакого кода, только подпись
В случае абстрактного класса класс может расширять только один абстрактный класс.Класс может реализовывать несколько интерфейсов
Абстрактный класс может иметь неабстрактные методы.Все методы интерфейса абстрактны
Абстрактный класс может иметь переменные экземпляраИнтерфейс не может иметь переменные экземпляра
Абстрактный класс может иметь любую видимость: публичную, приватную, защищенную.Видимость интерфейса должна быть общедоступной (или) отсутствовать
Если мы добавим новый метод в абстрактный класс, у нас будет возможность предоставить реализацию по умолчанию, и, следовательно, весь существующий код может работать правильно.Если мы добавим новый метод в интерфейс, мы должны отследить все реализации интерфейса и определить реализацию для нового метода.
Абстрактный класс может содержать конструкторыИнтерфейс не может содержать конструкторы
Абстрактные классы работают быстроИнтерфейсы работают медленно, так как для поиска соответствующего метода в реальном классе требуется дополнительная косвенность.

Q6. Что такое наследование в Java?

Наследование в Java — это концепция, при которой свойства одного класса могут наследоваться другим. Это помогает повторно использовать код и устанавливать отношения между разными классами. Наследование осуществляется между двумя типами классов:

  1. Родительский класс (супер или базовый класс)
  2. Дочерний класс (подкласс или производный класс)

 

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

Q7. Какие существуют типы наследования в Java?

Java поддерживает четыре типа наследования:

  1. Одиночное наследование: при одиночном наследовании один класс наследует свойства другого, т.е. будет только один родительский и один дочерний классы.
  2. Многоуровневое наследование: когда класс является производным от класса, который также является производным от другого класса, т. е. у класса, имеющего более одного родительского класса, но на разных уровнях, такой тип наследования называется многоуровневым наследованием.
  3. Иерархическое наследование: когда класс имеет более одного дочернего класса (подкласса) или, другими словами, более одного дочернего класса имеют один и тот же родительский класс, тогда такой тип наследования называется иерархическим.
  4. Гибридное наследование: Гибридное наследование представляет собой комбинацию двух или более типов наследования.

Q8. Что такое перегрузка и переопределение методов?

Перегрузка метода:

  • При перегрузке методов методы одного и того же класса имеют одно и то же имя, но каждый метод должен иметь разное количество параметров или параметры, имеющие разные типы и порядок.
  • Перегрузка метода заключается в том, чтобы «добавить» или «расширить» поведение метода.
  • Это полиморфизм времени компиляции.
  • У методов должна быть другая подпись.
  • Он может нуждаться или не нуждаться в наследовании в перегрузке метода.

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

class Adder {
Static int add(int a, int b)
{
return a+b;
}
Static double add( double a, double b)
{
return a+b;
}
public static void main(String args[])
{
System.out.println(Adder.add(11,11));
System.out.println(Adder.add(12.3,12.6));
}}

Переопределение метода:  

  • В переопределении метода подкласс имеет тот же метод с тем же именем и точно таким же количеством и типом параметров и тем же типом возвращаемого значения, что и суперкласс.
  • Переопределение метода заключается в «изменении» существующего поведения метода.
  • Это полиморфизм времени выполнения.
  • Методы должны иметь одинаковую сигнатуру.
  • Это всегда требует наследования в переопределении метода.

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

class Car {
void run(){
System.out.println(“car is running”); 
}
Class Audi extends Car{
void run()
{
System.out.prinltn("Audi is running safely with 100km");
}
public static void main( String args[])
{
Car b=new Audi();
b.run();
}
}

Q9. Можете ли вы переопределить частный или статический метод в Java?

Вы не можете переопределить частный или статический метод в Java. Если вы создадите аналогичный метод с тем же типом возвращаемого значения и теми же аргументами метода в дочернем классе, он скроет метод суперкласса; это известно как скрытие метода. Точно так же вы не можете переопределить закрытый метод в подклассе, потому что он там недоступен. Что вы можете сделать, так это создать еще один частный метод с тем же именем в дочернем классе. Давайте посмотрим на пример ниже, чтобы понять его лучше.

class Base {
private static void display() {
System.out.println("Static or class method from Base");
}
public void print() {
System.out.println("Non-static or instance method from Base");
}
class Derived extends Base {
private static void display() {
System.out.println("Static or class method from Derived");
}
public void print() {
System.out.println("Non-static or instance method from Derived");
}
public class test {
public static void main(String args[])
{
Base obj= new Derived();
obj1.display();
obj1.print();
}
}

Q10. Что такое множественное наследование? Поддерживается ли это Java?

MultipleInheritance — Вопросы на собеседовании по Java — EdurekaЕсли дочерний класс наследует свойство от нескольких классов, это называется множественным наследованием. Java не позволяет расширять несколько классов.

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

Поэтому Java не поддерживает множественное наследование. Эту проблему обычно называют алмазной проблемой.

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

 

Q11. Что такое инкапсуляция в Java?

Инкапсуляция — это механизм, в котором вы связываете свои данные (переменные) и код (методы) вместе как единое целое. Здесь данные скрыты от внешнего мира и доступны только через методы текущего класса. Это помогает защитить данные от любых ненужных изменений. Мы можем добиться инкапсуляции в Java следующим образом:

  • Объявление переменных класса как закрытых.
  • Предоставление общедоступных методов установки и получения для изменения и просмотра значений переменных.

Q12. Что такое ассоциация?

Ассоциация — это отношение, в котором все объекты имеют свой жизненный цикл и не имеют владельца. Возьмем пример Учителя и Ученика. Несколько учеников могут связываться с одним учителем, а один ученик может связываться с несколькими учителями, но между объектами нет собственности, и у обоих есть собственный жизненный цикл. Эти отношения могут быть «один к одному», «один ко многим», «многие к одному» и «многие ко многим».

Q13. Что вы имеете в виду под агрегацией?

Агрегация — это специализированная форма ассоциации, в которой все объекты имеют собственный жизненный цикл, но существует право собственности, а дочерний объект не может принадлежать другому родительскому объекту. Возьмем пример отдела и учителя. Один учитель не может принадлежать нескольким отделам, но если мы удалим объект учителя отдела, он не будет уничтожен. 

Q14. Что такое композиция в Java?

Композиция снова является специализированной формой Агрегации, и мы можем назвать это отношением «смерти». Это сильный тип агрегации. Дочерний объект не имеет своего жизненного цикла, и если родительский объект удаляется, все дочерние объекты также будут удалены. Давайте снова возьмем пример отношений между Домом и комнатами. Дом может содержать несколько комнат, нет независимой жизни комнаты, и любая комната не может принадлежать двум разным домам, если мы удалим комнату дома, она будет удалена автоматически.

Q15. Что такое маркерный интерфейс?

Интерфейс маркера может быть определен как интерфейс, не имеющий данных-членов и функций-членов. Проще говоря, пустой интерфейс называется интерфейсом маркера. Наиболее распространенными примерами интерфейса Marker в Java являются Serializable, Cloneable и т. д. Интерфейс маркера можно объявить следующим образом.

public interface Serializable{
}

Q16. Что такое клонирование объектов в Java?

Клонирование объекта в Java — это процесс создания точной копии объекта. В основном это означает возможность создания объекта с состоянием, аналогичным исходному объекту. Для этого в Java предусмотрен метод clone()  , позволяющий использовать эту функциональность. Этот метод создает новый экземпляр класса текущего объекта, а затем инициализирует все его поля точно таким же содержимым соответствующих полей. Для объекта clone() должен быть реализован интерфейс маркера java.lang.Cloneable , чтобы избежать каких-либо исключений во время выполнения. Одна вещь, которую вы должны отметить, это то, что Object clone() является защищенным методом, поэтому вам необходимо переопределить его.

Q17. Что такое конструктор копирования в Java?

Конструктор копирования — это функция-член, которая используется для инициализации объекта с использованием другого объекта того же класса. Хотя в Java нет необходимости в конструкторе копирования, поскольку все объекты передаются по ссылке. Более того, Java даже не поддерживает автоматическую передачу по значению.

Q18. Что такое перегрузка конструктора в Java?

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

class Demo
{
int i;
public Demo(int a)
{
i=k;
}
public Demo(int a, int b)
{
//body
}
}

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


Сервлеты — вопросы на собеседовании по Java  

Q1. Что такое сервлет?

  • Java Servlet — это серверные технологии для расширения возможностей веб-серверов за счет поддержки динамического ответа и сохранения данных.
  • Пакеты javax.servlet и javax.servlet.http предоставляют интерфейсы и классы для написания собственных сервлетов.
  • Все сервлеты должны реализовывать интерфейс javax.servlet.Servlet, который определяет методы жизненного цикла сервлета. При реализации универсальной службы мы можем расширить класс GenericServlet, предоставляемый API Java Servlet. Класс HttpServlet предоставляет методы, такие как doGet() и doPost(), для обработки специфичных для HTTP служб.
  • В большинстве случаев доступ к веб-приложениям осуществляется с использованием протокола HTTP, поэтому мы в основном расширяем класс HttpServlet. Иерархия API сервлетов показана на изображении ниже.

Сервлет — Вопросы для собеседования по Java — Edureka

Q2. В чем разница между методами Get и Post?

ПолучитьСообщение
Ограниченный объем данных может быть отправлен, поскольку данные отправляются в заголовке.Большой объем данных может быть отправлен, поскольку данные отправляются в теле.
 Незащищено, так как данные отображаются в адресной строке. Защищено, поскольку данные не отображаются в адресной строке.
 Можно добавить в закладки Нельзя добавить в закладки
 идемпотент Неидемпотентный
 Он более эффективен и используется, чем Post Он менее эффективен и используется

Q3. Что такое диспетчер запросов?

Интерфейс RequestDispatcher используется для пересылки запроса на другой ресурс, который может быть HTML, JSP или другим сервлетом в том же приложении. Мы также можем использовать это, чтобы включить в ответ содержимое другого ресурса.

В этом интерфейсе определены два метода:

1.пусто вперед()

2. пусто включить ()

ForwardMethod — Вопросы для собеседования по Java — Edureka

IncludeMethod — Вопросы для собеседования по Java — Edureka

Q4. В чем разница между методом forward() и методами sendRedirect()?


 

 

метод пересылки()Метод ОтправитьПеренаправление()
forward() отправляет тот же запрос на другой ресурс.Метод sendRedirect() всегда отправляет новый запрос, потому что он использует адресную строку браузера.
 Метод forward() работает на стороне сервера. Метод sendRedirect() работает на стороне клиента.
 Метод forward() работает только внутри сервера.Метод sendRedirect() работает внутри и вне сервера.

Q5. Каков жизненный цикл сервлета?

В жизненном цикле сервлета есть 5 этапов:LifeCycleServlet — Вопросы для собеседования по Java — Edureka

  1. Сервлет загружен
  2. Сервлет создан
  3. Сервлет инициализирован
  4. Обслужить запрос
  5. Сервлет уничтожен

Q6. Как файлы cookie работают в сервлетах?

  • Файлы cookie — это текстовые данные, отправляемые сервером клиенту, которые сохраняются на локальном компьютере клиента.
  • Servlet API обеспечивает поддержку файлов cookie через класс javax.servlet.http.Cookie, реализующий интерфейсы Serializable и Cloneable.
  • Метод HttpServletRequest getCookies() предназначен для получения массива файлов cookie из запроса, поскольку нет смысла добавлять файлы cookie в запрос, нет методов для установки или добавления файлов cookie в запрос.
  • Точно так же метод HttpServletResponse addCookie(Cookie c) предоставляется для прикрепления cookie в заголовке ответа, для cookie нет методов получения.

Q7. В чем разница между ServletContext и ServletConfig?

Разница между ServletContext и ServletConfig в Servlets JSP заключается в приведенном ниже табличном формате.

Конфигурация сервлетовКонтекст сервлета
Объект конфигурации сервлета представляет один сервлетОн представляет собой целое веб-приложение, работающее на конкретной JVM и общее для всех сервлетов.
Это похоже на локальный параметр, связанный с конкретным сервлетом.Это как глобальный параметр, связанный со всем приложением.
Это пара значений имени, определенная внутри раздела сервлета файла web.xml, поэтому она имеет широкую область действия сервлета.ServletContext имеет широкую область применения, поэтому определите его за пределами тега сервлета в файле web.xml.
Метод getServletConfig() используется для получения объекта конфигурации.Метод getServletContext() используется для получения объекта контекста.
например, корзина пользователя относится к конкретному пользователю, поэтому здесь мы можем использовать конфигурацию сервлета.Чтобы получить MIME-тип файла или сеанса приложения, информация, связанная с сеансом, сохраняется с использованием объекта контекста сервлета.

 

Q8. Каковы различные методы управления сеансом в сервлетах?

Сеанс — это состояние диалога между клиентом и сервером, и он может состоять из нескольких запросов и ответов между клиентом и сервером. Поскольку HTTP и веб-сервер не имеют состояния, единственный способ поддерживать сеанс — это когда некоторая уникальная информация о сеансе (идентификатор сеанса) передается между сервером и клиентом в каждом запросе и ответе.

Некоторые из распространенных способов управления сеансом в сервлетах:

  1. Аутентификация пользователя
  2. Скрытое поле HTML
  3. Печенье
  4. Перезапись URL
  5. API управления сессиями

 

SessionManagement — Вопросы для собеседования по Java — Edureka


JDBC — вопросы на собеседовании по Java 

1. Что такое драйвер JDBC?

Драйвер JDBC — это программный компонент, который позволяет Java-приложению взаимодействовать с базой данных. Существует 4 типа драйверов JDBC:

  1. Драйвер моста JDBC-ODBC
  2. Драйвер собственного API (частично java-драйвер)
  3. Драйвер сетевого протокола (полностью драйвер Java)
  4. Тонкий драйвер (полностью java-драйвер)

2. Каковы шаги для подключения к базе данных в Java?

  • Регистрация класса драйвера
  • Создание соединения
  • Создание заявления
  • Выполнение запросов
  • Закрытие соединения

3. Что такое компоненты JDBC API?

Пакет java.sql содержит интерфейсы и классы для JDBC API.

Интерфейсы:

  • Связь
  • Заявление
  • Подготовленное заявление
  • Набор результатов
  • ResultSetMetaData
  • Метаданные базы данных
  • CallableStatement и т. д.

Классы:

  • DriverManager
  • капля
  • Клоб
  • Типы
  • SQLException и т. д.

4. Какова роль класса JDBC DriverManager?

Класс DriverManager управляет зарегистрированными драйверами. Его можно использовать для регистрации и отмены регистрации водителей. Он предоставляет фабричный метод, который возвращает экземпляр Connection.

5. Что такое интерфейс соединения JDBC?

Интерфейс Connection поддерживает сеанс с базой данных. Его можно использовать для управления транзакциями. Он предоставляет фабричные методы, которые возвращают экземпляры Statement, PreparedStatement, CallableStatement и DatabaseMetaData.

ConnectionInterface — Вопросы для собеседования по Java — Edureka

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

6. Каково назначение интерфейса JDBC ResultSet?

Объект ResultSet представляет строку таблицы. Его можно использовать для изменения указателя курсора и получения информации из базы данных.

7. Что такое интерфейс JDBC ResultSetMetaData?

Интерфейс ResultSetMetaData возвращает информацию о таблице, такую ​​как общее количество столбцов, имя столбца, тип столбца и т. д.

8. Что такое интерфейс JDBC DatabaseMetaData?

Интерфейс DatabaseMetaData возвращает информацию о базе данных, такую ​​как имя пользователя, имя драйвера, версия драйвера, количество таблиц, количество просмотров и т. д.

9. Что вы подразумеваете под пакетной обработкой в ​​JDBC?

Пакетная обработка помогает группировать связанные операторы SQL в пакет и выполнять их вместо выполнения одного запроса. Используя метод пакетной обработки в JDBC, вы можете выполнять несколько запросов, что повышает производительность.

10. В чем разница между execute, executeQuery, executeUpdate?

Оператор execute(String query) используется для выполнения любого SQL-запроса и возвращает TRUE, если результатом является ResultSet, например выполнение запросов Select. Вывод FALSE, когда нет объекта ResultSet, такого как выполнение запросов на вставку или обновление. Мы можем использовать getResultSet() для получения ResultSet и метод getUpdateCount() для получения счетчика обновлений.

Оператор executeQuery (строковый запрос) используется для выполнения запросов Select и возвращает ResultSet. Возвращаемый набор результатов никогда не бывает нулевым, даже если нет записей, соответствующих запросу. При выполнении запросов на выборку мы должны использовать метод executeQuery, чтобы, если кто-то попытается выполнить оператор вставки/обновления, он выдал java.sql.SQLException с сообщением «метод executeQuery не может использоваться для обновления».

Оператор executeUpdate(String query ) используется для выполнения операторов Insert/Update/Delete (DML) или операторов DDL, которые ничего не возвращают. Результатом является int, равный количеству строк для инструкций языка манипулирования данными SQL (DML). Для операторов DDL вывод равен 0.

Вы должны использовать метод execute() только тогда, когда вы не уверены в типе оператора, иначе используйте метод executeQuery или executeUpdate.

Q11. Что вы понимаете под заявлениями JDBC?

Операторы JDBC — это в основном операторы, которые используются для отправки команд SQL в базу данных и извлечения данных из базы данных. JDBC предоставляет различные методы, такие как execute(), executeUpdate(), executeQuery и т. д., для взаимодействия с базой данных.

JDBC поддерживает 3 типа операторов:

  1. Заявление: используется для общего доступа к базе данных и выполняет статический запрос SQL во время выполнения.
  2. PreparedStatement: используется для предоставления входных параметров запросу во время выполнения.
  3. CallableStatement: используется для доступа к хранимым процедурам базы данных и помогает принимать параметры времени выполнения.

Spring Framework — вопросы на собеседовании по Java 

Q1. Что такое весна?

Википедия определяет фреймворк Spring как «фреймворк приложения и инверсию контейнера управления для платформы Java». Основные функции фреймворка могут использоваться любым Java-приложением, но существуют расширения для создания веб-приложений поверх платформы Java EE». Spring — это, по сути, легкая интегрированная среда, которую можно использовать для разработки корпоративных приложений на языке java.

Q2. Назовите различные модули среды Spring.

Некоторые из важных модулей Spring Framework:

  • Spring Context — для внедрения зависимостей.
  • Spring AOP — для аспектно-ориентированного программирования.
  • Spring DAO — для операций с базой данных с использованием шаблона DAO.
  • Spring JDBC — для поддержки JDBC и DataSource.
  • Spring ORM — для поддержки инструментов ORM, таких как Hibernate.
  • Spring Web Module — для создания веб-приложений.
  • Spring MVC — реализация Model-View-Controller для создания веб-приложений, веб-сервисов и т. д.

SpringFramework — Вопросы на собеседовании по Java — EdurekaQ3. Перечислите некоторые важные аннотации в конфигурации Spring на основе аннотаций.

Важными аннотациями являются:

  • @Необходимый
  • @Autowired
  • @Квалификатор
  • @Ресурс
  • @PostConstruct
  • @PreDestroy

Q4. Объясните Bean in Spring и перечислите различные области применения Spring bean.

Компоненты — это объекты, формирующие основу приложения Spring. Они управляются контейнером Spring IoC. Другими словами, компонент — это объект, который создается, собирается и управляется контейнером Spring IoC.

В Spring bean-компонентах определено пять областей действия.

SpringBean — Вопросы для собеседования по Java — Edureka

  • Singleton : для каждого контейнера будет создан только один экземпляр компонента. Это область действия по умолчанию для spring bean-компонентов. При использовании этой области убедитесь, что у Spring Bean нет общих переменных экземпляра, иначе это может привести к проблемам с несогласованностью данных, поскольку он не является потокобезопасным.
  • Прототип : каждый раз при запросе компонента будет создаваться новый экземпляр.
  • Запрос : это то же самое, что и область действия прототипа, однако она предназначена для использования в веб-приложениях. Новый экземпляр bean-компонента будет создаваться для каждого HTTP-запроса.
  • Сеанс : контейнер будет создавать новый компонент для каждого HTTP-сеанса.
  • Global-session : используется для создания глобальных сеансовых компонентов для приложений с портлетами.

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

Q5. Объясните роль DispatcherServlet и ContextLoaderListener.

DispatcherServlet — это, по сути, передний контроллер в приложении Spring MVC, поскольку он загружает файл конфигурации bean-компонентов Spring и инициализирует все настроенные bean-компоненты. Если аннотации включены, он также сканирует пакеты для настройки любого компонента, аннотированного аннотациями @Component, @Controller, @Repository или @Service.

DispatcherServlet — Вопросы для собеседования по Java — EdurekaContextLoaderListener, с другой стороны, является прослушивателем для запуска и закрытия WebApplicationContext в корневом каталоге Spring. Некоторые из его важных функций включают привязку жизненного цикла Application Context к жизненному циклу ServletContext и автоматизацию создания ApplicationContext.

ContextLoader — Вопросы для собеседования по Java — Edureka

Q6. В чем разница между внедрением конструктора и внедрением сеттера?

Нет.Внедрение конструктораИнъекция сеттера
 1) Без частичного впрыска Частичный впрыск
 2) Не переопределяет свойство setter Переопределяет свойство конструктора, если оба определены.
 3)Создает новый экземпляр, если происходит какое-либо изменениеНе создает новый экземпляр, если вы измените значение свойства
 4)  Лучше для слишком многих свойств Лучше для нескольких свойств.

Q7. Что такое автовайринг в Spring? Какие есть режимы автопроводки?

Autowiring позволяет программисту автоматически вводить bean-компонент. Нам не нужно писать явную логику внедрения. Давайте посмотрим код для внедрения bean-компонента с использованием внедрения зависимостей.

  1. <bean id="emp" class="com.javatpoint.Employee" autowire="byName" />

Режимы автопроводки приведены ниже:

Нет.РежимОписание
 1) нет это режим по умолчанию, это означает, что автопроводка не включена.
 2) по имени Внедряет bean-компонент на основе имени свойства. Он использует метод установки.
 3) по типу Внедряет bean-компонент на основе типа свойства. Он использует метод установки.
 4) конструктор Он вводит bean-компонент с помощью конструктора

Q8. Как обрабатывать исключения в Spring MVC Framework?

Spring MVC Framework предоставляет следующие способы, которые помогут нам добиться надежной обработки исключений.

На основе контроллера:

Мы можем определить методы обработчика исключений в наших классах контроллеров. Все, что нам нужно, это аннотировать эти методы аннотацией @ExceptionHandler.

Глобальный обработчик исключений:

Обработка исключений является сквозной проблемой, и Spring предоставляет аннотацию @ControllerAdvice, которую мы можем использовать с любым классом для определения нашего глобального обработчика исключений.

Реализация HandlerExceptionResolver: 

Что касается общих исключений, в большинстве случаев мы обслуживаем статические страницы. Spring Framework предоставляет интерфейс HandlerExceptionResolver, который мы можем реализовать для создания глобального обработчика исключений. Причина этого дополнительного способа определения глобального обработчика исключений заключается в том, что среда Spring также предоставляет классы реализации по умолчанию, которые мы можем определить в нашем файле конфигурации bean-компонента Spring, чтобы получить преимущества обработки исключений среды Spring.

 

Q9. Какие важные аннотации Spring вы использовали?

Вот некоторые из аннотаций Spring, которые я использовал в своем проекте:

@Controller — для классов контроллеров в проекте Spring MVC.

@RequestMapping — для настройки сопоставления URI в методах обработчика контроллера. Это очень важная аннотация, поэтому вам следует просмотреть примеры аннотаций Spring MVC RequestMapping.

@ResponseBody — для отправки объекта в качестве ответа, обычно для отправки данных XML или JSON в качестве ответа.

@PathVariable — для отображения динамических значений из URI в аргументы метода обработчика.

@Autowired — для автоматического подключения зависимостей в бинах Spring.

@Qualifier — с аннотацией @Autowired, чтобы избежать путаницы при наличии нескольких экземпляров типа bean-компонента.

@Service — для классов обслуживания.

@Scope — для настройки области действия Spring bean.

@Configuration, @ComponentScan и @Bean — для конфигураций на основе Java.

Аннотации AspectJ для настройки аспектов и советов, @Aspect, @Before, @After, @Around, @Pointcut и т. д.

Q10. Как интегрировать Spring и Hibernate Framework?

Мы можем использовать модуль Spring ORM для интеграции фреймворков Spring и Hibernate, если вы используете Hibernate 3+, где SessionFactory предоставляет текущий сеанс, тогда вам следует избегать использования классов HibernateTemplate или HibernateDaoSupport и лучше использовать шаблон DAO с внедрением зависимостей для интеграции.

Кроме того, Spring ORM обеспечивает поддержку использования декларативного управления транзакциями Spring, поэтому вам следует использовать это, а не использовать шаблонный код гибернации для управления транзакциями. 

Q11. Назовите типы управления транзакциями, которые поддерживает Spring.

Spring поддерживает два типа управления транзакциями. Они есть:

  1. Программное управление транзакциями:  в этом случае транзакция управляется с помощью программирования. Он обеспечивает исключительную гибкость, но его очень сложно поддерживать.
  2. Декларативное управление транзакциями:  при этом управление транзакциями отделено от бизнес-кода. Для управления транзакциями используются только аннотации или конфигурации на основе XML.

Hibernate — вопросы на собеседовании по Java для опытных профессионалов

1. Что такое Hibernate Framework?

Объектно-реляционное сопоставление или ORM — это метод программирования для сопоставления объектов модели домена приложения с таблицами реляционной базы данных. Hibernate — это инструмент ORM на основе Java, который обеспечивает основу для сопоставления объектов домена приложения с таблицами реляционной базы данных и наоборот.

Hibernate предоставляет эталонную реализацию Java Persistence API, что делает его отличным выбором в качестве инструмента ORM с преимуществами слабой связи. Мы можем использовать API сохраняемости Hibernate для операций CRUD. Платформа Hibernate предоставляет возможность сопоставления простых старых объектов Java с традиционными таблицами базы данных с использованием аннотаций JPA, а также конфигурации на основе XML.

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

2. Каковы важные преимущества использования Hibernate Framework?

Некоторые из важных преимуществ использования Hibernate Framework:

  1. Hibernate устраняет весь шаблонный код, поставляемый с JDBC, и заботится об управлении ресурсами, поэтому мы можем сосредоточиться на бизнес-логике.
  2. Платформа Hibernate обеспечивает поддержку XML, а также аннотаций JPA, что делает нашу реализацию кода независимой.
  3. Hibernate предоставляет мощный язык запросов (HQL), похожий на SQL. Однако HQL полностью объектно-ориентирован и понимает такие понятия, как наследование, полиморфизм и ассоциация.
  4. Hibernate — это проект с открытым исходным кодом сообщества Red Hat, используемый во всем мире. Это делает его лучшим выбором, чем другие, потому что кривая обучения невелика, существует множество онлайн-документации, а помощь легко доступна на форумах.
  5. Hibernate легко интегрируется с другими платформами Java EE. Он настолько популярен, что Spring Framework предоставляет встроенную поддержку для интеграции hibernate с приложениями Spring.
  6. Hibernate поддерживает ленивую инициализацию с использованием прокси-объектов и выполняет фактические запросы к базе данных только тогда, когда это необходимо.
  7. Кэш Hibernate помогает нам повысить производительность.
  8. Для конкретной функции поставщика базы данных спящий режим подходит, потому что мы также можем выполнять собственные запросы sql.

В целом спящий режим — лучший выбор на текущем рынке для инструмента ORM, он содержит все функции, которые вам когда-либо понадобятся в инструменте ORM.

3. Объясните архитектуру Hibernate.

Hibernate имеет многоуровневую архитектуру, которая помогает пользователю работать без знания базовых API. Hibernate использует базу данных и данные конфигурации для предоставления приложению служб сохранения (и постоянных объектов). Он включает в себя множество объектов, таких как постоянный объект, фабрика сеансов, фабрика транзакций, фабрика соединений, сеанс, транзакция и т. д.HibernateArchitecture — Вопросы на собеседовании по Java — Edureka

Архитектура Hibernate разделена на четыре уровня.

  • Уровень приложения Java
  • Слой каркаса гибернации
  • Уровень API обратной связи
  • Уровень базы данных

4. В чем разница между методами get и load?

Различия между методами get() и load() приведены ниже.

Нет.получить()нагрузка()
 1) Возвращает null, если объект не найден.Выдает исключение ObjectNotFoundException, если объект не найден.
 2) Метод get() всегда попадает в базу данных. Метод load() не обращается к базе данных.
 3) Он возвращает реальный объект, а не прокси. Он возвращает прокси-объект.
 4)Его следует использовать, если вы не уверены в существовании экземпляра.Его следует использовать, если вы уверены, что экземпляр существует.

5. Каковы преимущества Hibernate перед JDBC?

Некоторые из важных преимуществ Hibernate framework по сравнению с JDBC:

  1. Hibernate удаляет много шаблонного кода, который поставляется с JDBC API, код выглядит чище и читабельнее.
  2. Hibernate поддерживает наследование, ассоциации и коллекции. Эти функции отсутствуют в JDBC API.
  3. Hibernate неявно обеспечивает управление транзакциями, фактически большинство запросов не могут выполняться вне транзакции. В JDBC API нам нужно написать код для управления транзакциями с использованием фиксации и отката.
  4. JDBC API генерирует SQLException, которое является проверенным исключением, поэтому нам нужно написать много кода блока try-catch. В большинстве случаев он избыточен в каждом вызове JDBC и используется для управления транзакциями. Hibernate оборачивает исключения JDBC и генерирует непроверенное исключение JDBCException или HibernateException, поэтому нам не нужно писать код для его обработки. Встроенное управление транзакциями Hibernate устраняет использование блоков try-catch.
  5. Hibernate Query Language (HQL) более объектно-ориентирован и близок к языку программирования Java. Для JDBC нам нужно написать собственные SQL-запросы.
  6. Hibernate поддерживает кэширование, которое лучше для производительности, запросы JDBC не кэшируются, поэтому производительность низкая.
  7. Hibernate предоставляет опцию, с помощью которой мы также можем создавать таблицы базы данных, поскольку таблицы JDBC должны существовать в базе данных.
  8. Конфигурация Hibernate помогает нам использовать JDBC-подобное соединение, а также JNDI DataSource для пула соединений. Это очень важная функция корпоративного приложения, полностью отсутствующая в JDBC API.
  9. Hibernate поддерживает аннотации JPA, поэтому код не зависит от реализации и легко заменяется другими инструментами ORM. Код JDBC очень тесно связан с приложением.

JSP — вопросы на собеседовании по Java

1. Каковы методы жизненного цикла jsp?

МетодыОписание
 общественная пустота jspInit()Он вызывается только один раз, как и метод инициализации сервлета.
public void _jspService (запрос ServletRequest, ServletResponse) выдает ServletException, IOExceptionОн вызывается при каждом запросе, так же как и метод service() сервлета.
 публичная пустота jspDestroy()Он вызывается только один раз, как и метод destroy() сервлета.

2. Что такое неявные объекты JSP?

JSP по умолчанию предоставляет 9 неявных объектов. Они следующие:

ОбъектТип
1) вне JspWriter
2) просьба HttpServletRequest
3) ответ HttpServletResponse
4) конфиг Конфигурация сервлетов
5) сессия HttpSession
6) приложение Контекст сервлета
7) Контекст страницы Контекст страницы
8) страница Объект
9) исключение Метательный

3. В чем разница между директивой include и действием include?

включить директивувключить действие
Директива include включает содержимое во время перевода страницы.Действие включения включает содержимое во время запроса.
Директива include включает исходное содержимое страницы, поэтому размер страницы увеличивается во время выполнения.Действие включения не включает исходное содержимое, а вызывает метод include() класса, предоставленного поставщиком.
 Это лучше для статических страниц. Это лучше для динамических страниц.

4. Как отключить кэширование кнопки «Назад» в браузере?

<%
response.setHeader(“Cache-Control”,”no-store”);
response.setHeader(“Pragma”,”no-cache”);
response.setHeader (“Expires”, “0”);                    //prevents caching at the proxy server
%>  

5. Какие различные теги предусмотрены в JSTL?

Существует 5 типов тегов JSTL.

  1. основные теги
  2. SQL-теги
  3. XML-теги
  4. теги интернационализации
  5. теги функций

6. Как отключить сеанс в JSP?

<%@ page session=“false” %>   

7. Как удалить куки в JSP?

Следующий код объясняет, как удалить Cookie в JSP:

Cookie mycook = new Cookie("name1","value1");
 
response.addCookie(mycook1);
 
Cookie killmycook = new Cookie("mycook1","value1");
 
killmycook . set MaxAge ( 0 );
 
killmycook . set Path ("/");
 
killmycook . addCookie ( killmycook 1 );

8. Объясните метод jspDestroy().

Метод jspDestry() вызывается из интерфейса javax.servlet.jsp.JspPage всякий раз, когда страница JSP собирается быть уничтоженной. Методы уничтожения сервлетов можно легко переопределить для выполнения очистки, например, при закрытии соединения с базой данных.

9. Чем JSP лучше технологии Servlet?

JSP — это технология на стороне сервера, упрощающая создание контента. Они ориентированы на документы, тогда как сервлеты — это программы. Страница Java-сервера может содержать фрагменты программы Java, которые выполняют и создают экземпляры классов Java. Однако они встречаются внутри файла шаблона HTML. Он обеспечивает основу для разработки веб-приложения.

10. Почему нам не следует настраивать стандартные теги JSP в web.xml?

 

Нам не нужно настраивать стандартные теги JSP в web.xml, потому что когда контейнер загружает веб-приложение и находит файлы TLD, он автоматически настраивает их для использования непосредственно на страницах JSP приложения. Нам просто нужно включить его на страницу JSP с помощью директивы taglib.

11. Как вы будете использовать JSP EL для получения имени метода HTTP?

Используя неявный объект pageContext JSP EL, вы можете получить ссылку на объект запроса и использовать оператор точки для получения имени метода HTTP на странице JSP. Код JSP EL для этой цели будет выглядеть как ${pageContext.request.method}.


Exception and Thread Java Interview Вопросы

Q1. В чем разница между ошибкой и исключением?

Ошибка — это неустранимое состояние, возникающее во время выполнения. Например, ошибка OutOfMemory. Эти ошибки JVM нельзя исправить во время выполнения. Хотя ошибка может быть обнаружена в блоке catch, выполнение приложения будет остановлено и не будет восстановлено.

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

Q2. Как вы можете обрабатывать исключения Java?

Для обработки исключений в Java используются пять ключевых слов: 

  1. пытаться
  2. ловить
  3. в конце концов
  4. бросать
  5. бросает

Q3. В чем разница между Checked Exception и Unchecked Exception?

проверенное исключение

  • Классы, расширяющие класс Throwable, за исключением RuntimeException и Error, называются проверенными исключениями.
  • Проверенные исключения проверяются во время компиляции.
  • Пример: IOException, SQLException и т. д.

Непроверенное исключение

  • Классы, расширяющие RuntimeException, называются непроверенными исключениями.
  • Непроверенные исключения не проверяются во время компиляции.
  • Пример: ArithmeticException, NullPointerException и т. д.

Q4. Каковы различные способы использования потоков?

Существует два способа создания потока:

  • Расширение класса Thread

Это создает поток, создавая экземпляр нового класса, который расширяет класс Thread. Расширяющий класс должен переопределить функцию run(), которая является точкой входа потока.

  • Реализация интерфейса Runnable

Это самый простой способ создать поток, создав класс, реализующий исполняемый интерфейс. После реализации интерфейса runnable класс должен реализовать метод public void run()().

Метод run() создает параллельный поток в вашей программе. Когда run() вернется, поток завершится.

Метод run() создает параллельный поток в вашей программе. Когда run() вернется, поток завершится.

В методе run() вы должны указать код потока.

Как и любой другой метод, метод run() может вызывать другие методы, использовать другие классы и определять переменные.

Java работает как феномен «передачи по значению» или «передачи по ссылке»?

Java всегда передается по значению. Это означает, что он создает копию содержимого параметра в памяти. В Java объектные переменные всегда относятся к реальному объекту кучи памяти.

Q5. Будет ли выполняться блок finally, если оператор return будет записан в конце блока try и блока catch, как показано ниже?

Блок finally всегда выполняется, даже если оператор return написан в конце блока try и блока catch. Он всегда выполняется, независимо от того, есть исключение или нет. Есть только несколько ситуаций, в которых блок finally не выполняется, например, сбой виртуальной машины, сбой питания, сбой программного обеспечения и т. д. Если вы не хотите выполнять блок finally, вам нужно вызвать System.exit(). явно в блоке finally.

 

Q6. Как исключение распространяется в коде?

Если исключение не перехвачено, оно выбрасывается с вершины стека и падает вниз по стеку вызовов к предыдущей процедуре. Если исключение там не перехвачено, оно возвращается к предыдущей функции и так далее, пока оно не будет перехвачено или стек вызовов не достигнет дна. Термин для этого — распространение исключений.

 

Q7. Можете ли вы объяснить жизненный цикл потока Java?

Жизненный цикл потока Java имеет следующие состояния:

Новый-

Когда поток создан и до того, как программа запустит поток, он находится в новом состоянии. Его также называют родившейся нитью.

 Запускаемый

Когда поток запущен, он находится в состоянии Runnable. В этом состоянии поток выполняет свою задачу.

Ожидающий

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

Ожидание по времени

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

Прекращено

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

Q8. Какую цель выполняют ключевые слова final, finally и finalize? 

Финал:

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

class FinalVarExample {
public static void main( String args[])
{
final int a=10;   // Final variable
a=50;             //Error as value can't be changed
}

Окончательно

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

class FinallyExample {
public static void main(String args[]){
try {
int x=100;
}
catch(Exception e) {
System.out.println(e);
}
finally {
System.out.println("finally block is executing");}
}}
}

Завершить

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

class FinalizeExample {
public void finalize() {
System.out.println("Finalize is called");
}
public static void main(String args[])
{
FinalizeExample f1=new FinalizeExample();
FinalizeExample f2=new FinalizeExample();
f1= NULL;
f2=NULL;
System.gc();
}
}

Q9. В чем разница между броском и броском? 

бросить ключевое словобросает ключевое слово
Throw используется для явного создания исключения.Броски используются для объявления исключения.
Проверенные исключения не могут распространяться только с помощью throw.Проверенные исключения могут распространяться с помощью бросков.
За броском следует экземпляр.За бросками следует класс.
Throw используется внутри метода.Throws используется с сигнатурой метода.
Вы не можете генерировать несколько исключенийВы можете объявить несколько исключений, например, public void method() выдает IOException, SQLException.

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

Q10. Что такое иерархия исключений в Java?

Иерархия выглядит следующим образом:

Throwable является родительским классом для всех классов Exception. Существует два типа исключений: Checked исключения и UncheckedExceptions или RunTimeExceptions. Оба типа исключений расширяют класс исключений, тогда как ошибки далее классифицируются как ошибка виртуальной машины и ошибка утверждения.

ExceptionHierarchy — Вопросы для собеседования по Java — Edureka

Q11. Как создать пользовательское исключение?

Чтобы создать собственное исключение, расширьте класс Exception или любой из его подклассов.

  • class New1Exception extends Exception { } // это создаст Checked Exception
  • class NewException extends IOException { } // это создаст исключение Checked
  • class NewException extends NullPonterExcpetion { } // это создаст исключение UnChecked

Q12. Каковы важные методы класса Java Exception?

Exception и все его подклассы не предоставляют никаких конкретных методов, и все методы определены в базовом классе Throwable.

  1. String getMessage () — этот метод возвращает строку сообщения Throwable, и сообщение может быть предоставлено при создании исключения через его конструктор.
  2. String getLocalizedMessage( ) — этот метод предоставляется для того, чтобы подклассы могли переопределить его, чтобы предоставить вызывающей программе сообщение, зависящее от локали. Реализация класса Throwable этого метода просто использует метод getMessage() для возврата сообщения об исключении.
  3. Synchronized Throwable getCause() — этот метод возвращает причину исключения или нулевой идентификатор, причина которого неизвестна.
  4. String toString() — этот метод возвращает информацию о Throwable в формате String, возвращаемая строка содержит имя класса Throwable и локализованное сообщение.
  5. void printStackTrace() — этот метод печатает информацию о трассировке стека в стандартный поток ошибок, этот метод перегружен, и мы можем передать PrintStream или PrintWriter в качестве аргумента для записи информации о трассировке стека в файл или поток.

Q13. В чем разница между процессами и потоками?

 ПроцессНить
ОпределениеВыполняемый экземпляр программы называется процессом.Поток — это подмножество процесса.
КоммуникацияПроцессы должны использовать межпроцессное взаимодействие для связи с одноуровневыми процессами.Потоки могут напрямую взаимодействовать с другими потоками своего процесса.
КонтрольПроцессы могут осуществлять контроль только над дочерними процессами.Потоки могут осуществлять значительный контроль над потоками одного и того же процесса.
ИзмененияЛюбые изменения в родительском процессе не влияют на дочерние процессы.Любое изменение в основном потоке может повлиять на поведение других потоков процесса.
объем памятиЗапуск в отдельных областях памяти.Запуск в разделяемых пространствах памяти.
КонтролируетсяПроцесс контролируется операционной системой.Потоки управляются программистом в программе.
ЗависимостьПроцессы независимы.Потоки зависимы.

Q14. Что такое блок finally? Есть ли случай, когда ваще не исполнится?

Блок finally — это блок, который всегда выполняет набор операторов. Он всегда связан с блоком try, независимо от того, возникло какое-либо исключение или нет. 
Да, finally не будет выполняться, если программа завершится либо вызовом System.exit(), либо вызвав фатальную ошибку, которая приведет к прерыванию процесса.

Q15. Что такое синхронизация?

Синхронизация относится к многопоточности. Синхронизированный блок кода может выполняться только одним потоком за раз. Поскольку Java поддерживает выполнение нескольких потоков, два или более потока могут обращаться к одним и тем же полям или объектам. Синхронизация — это процесс, который синхронизирует все параллельные выполняемые потоки. Синхронизация позволяет избежать ошибок согласованности памяти, вызванных несогласованным представлением общей памяти. Когда метод объявлен как синхронизированный, поток удерживает монитор для объекта этого метода. Если другой поток выполняет синхронизированный метод, поток блокируется до тех пор, пока этот поток не освободит монитор. 

Синхронизация — Вопросы на собеседовании по Java — Edureka

 Q16. Можем ли мы написать несколько блоков catch в одном блоке try? 

Да, у нас может быть несколько блоков catch в одном блоке try, но подход должен быть от конкретного к общему. Давайте разберемся с этим на программном примере.

public class Example {
public static void main(String args[]) {
try {
int a[]= new int[10];
a[10]= 10/0;
}
catch(ArithmeticException e)
{
System.out.println("Arithmetic exception in first catch block");
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Array index out of bounds in second catch block");
}
catch(Exception e)
{
System.out.println("Any exception in third catch block");
}
}

Q17. Каковы важные методы класса Java Exception?

Методы определены в базовом классе Throwable. Некоторые из важных методов класса исключений Java указаны ниже. 

  1. String getMessage() — этот метод возвращает строку сообщения об исключении. Сообщение может быть предоставлено через его конструктор.
  2. public StackTraceElement[] getStackTrace() — этот метод возвращает массив, содержащий каждый элемент трассировки стека. Элемент с индексом 0 представляет вершину стека вызовов, тогда как последний элемент в массиве представляет метод в нижней части стека вызовов.

Synchronized Throwable getCause() — этот метод возвращает причину исключения или нулевой идентификатор, представленный объектом Throwable.

  1. String toString() — этот метод возвращает информацию в формате String. Возвращаемая строка содержит имя класса Throwable и локализованное сообщение.
  2. void printStackTrace() — этот метод печатает информацию о трассировке стека в стандартный поток ошибок.

Q18. Что такое OutOfMemoryError в Java?

OutOfMemoryError — это подкласс java.lang.Error, который обычно возникает, когда нашей JVM не хватает памяти.

Q19. Что такое нить?

Поток — это наименьшая часть запрограммированных инструкций, которая может выполняться планировщиком независимо. В Java все программы будут иметь по крайней мере один поток, известный как основной поток. Этот основной поток создается JVM, когда программа начинает свое выполнение. Основной поток используется для вызова функции main() программы.

Q20. Каковы два способа создания потока?

В Java потоки могут быть созданы двумя способами: 

  • Путем реализации интерфейса Runnable.
  • Расширяя поток

Q21. Какие существуют типы сборщиков мусора в Java?

Сборка мусора на Java — программа, которая помогает в неявном управлении памятью. Поскольку в Java с помощью нового ключевого слова вы можете динамически создавать объекты, которые после создания будут потреблять некоторую память. Как только работа выполнена и на объект больше не осталось ссылок, Java с помощью сборки мусора уничтожает объект и освобождает занимаемую им память. Java предоставляет четыре типа сборщиков мусора:

  • Серийный сборщик мусора
  • Параллельный сборщик мусора
  • Сборщик мусора CMS
  • Сборщик мусора G1

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

Оригинальный источник статьи на https://www.edureka.co

What is GEEK

Buddha Community

Tyrique  Littel

Tyrique Littel

1600135200

How to Install OpenJDK 11 on CentOS 8

What is OpenJDK?

OpenJDk or Open Java Development Kit is a free, open-source framework of the Java Platform, Standard Edition (or Java SE). It contains the virtual machine, the Java Class Library, and the Java compiler. The difference between the Oracle OpenJDK and Oracle JDK is that OpenJDK is a source code reference point for the open-source model. Simultaneously, the Oracle JDK is a continuation or advanced model of the OpenJDK, which is not open source and requires a license to use.

In this article, we will be installing OpenJDK on Centos 8.

#tutorials #alternatives #centos #centos 8 #configuration #dnf #frameworks #java #java development kit #java ee #java environment variables #java framework #java jdk #java jre #java platform #java sdk #java se #jdk #jre #open java development kit #open source #openjdk #openjdk 11 #openjdk 8 #openjdk runtime environment

100+ лучших вопросов и ответов на собеседованиях по Java, которые вы должны знать

В этом блоге вы найдете более 100 наиболее часто задаваемых вопросов на собеседовании по Java и Core Java, а также ответы на них, которые вы должны подготовить, чтобы пройти собеседование.

В этом блоге Java Interview Questions я собираюсь перечислить некоторые из наиболее важных вопросов и ответов по Java-программированию, которые помогут вам выделиться в процессе собеседования. Java используется примерно 10 миллионами разработчиков по всему миру для разработки приложений для 15 миллиардов устройств, поддерживающих Java. Он также используется для создания приложений для популярных технологий, таких как большие данные, для бытовых устройств, таких как мобильные телефоны и коробки DTH. И поэтому сегодня Java используется повсеместно! Вот почему сертификация Java является наиболее востребованной сертификацией в области программирования.

Давайте начнем с рассмотрения некоторых наиболее часто задаваемых вопросов на собеседовании по Java.   

Q1. Объясните JDK, JRE и JVM?
Q2. Объясните public static void main(String args[]) в Java
Q3. Почему Java не зависит от платформы?
Q4. Почему Java не на 100% объектно-ориентирована?
Q5. Что такое классы-оболочки в Java?
Q6. Что такое конструкторы в Java?
Q7. Что такое одноэлементный класс в Java и как мы можем создать одноэлементный класс?
Q8. В чем разница между списком массивов и вектором в Java?
Q9. В чем разница между equals() и == в Java?
Q10. В чем разница между кучей и стековой памятью в Java?

Мы составили список самых популярных вопросов для собеседования по Java, которые разделены на 7 разделов, а именно:

  1. Основные вопросы на собеседовании по Java
  2. Вопросы для собеседования по Java OOPs
  3. Вопросы интервью JDBC
  4. Вопросы весеннего интервью
  5. Спящий режим Вопросы интервью
  6. JSP вопросы интервью
  7. Вопросы об исключениях Java и Thread Interview

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


Итак, давайте начнем с первого набора основных вопросов для собеседования по Java.

 

Основные вопросы на собеседовании по Java для первокурсников

Q1. Объясните JDK, JRE и JVM?

JDKJREJVM
Это расшифровывается как Java Development Kit.Это расшифровывается как Java Runtime Environment.Это расшифровывается как виртуальная машина Java.
Это инструмент, необходимый для компиляции, документирования и упаковки программ Java.JRE относится к среде выполнения, в которой может выполняться байт-код Java.Это абстрактная машина. Это спецификация, обеспечивающая среду выполнения, в которой может выполняться байт-код Java.
Он содержит инструменты разработки JRE +.Это реализация JVM, которая физически существует.JVM следует трем нотациям: спецификация, реализация и  экземпляр среды выполнения .

 

Q2. Объясните public static void main(String args[]) в Java.

main() в Java — это точка входа для любой Java-программы. Он всегда записывается как public static void main(String[] args) .

  • public : Public — это модификатор доступа, который используется для указания того, кто может получить доступ к этому методу. Публичный означает, что этот метод будет доступен любому классу.
  • static : это ключевое слово в java, которое определяет, что оно основано на классе. main() сделан статическим в Java, поэтому к нему можно получить доступ без создания экземпляра класса. В случае, если main не сделан статическим, компилятор выдаст ошибку, поскольку main () вызывается JVM до того, как будут созданы какие-либо объекты, и только статические методы могут быть напрямую вызваны через класс.
  • void : это возвращаемый тип метода. Void определяет метод, который не возвращает никакого значения.
  • main : это имя метода, который ищет JVM в качестве отправной точки для приложения только с определенной сигнатурой. Это метод, в котором происходит основное выполнение.
  • String args[] : это параметр, передаваемый основному методу.

 

Q3. Почему Java не зависит от платформы?

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

 

Q4. Почему Java не на 100% объектно-ориентирована?


Java не на 100% объектно-ориентирована, потому что использует восемь примитивных типов данных, таких как boolean, byte, char, int, float, double, long, short, которые не являются объектами.

Q5. Что такое классы-оболочки в Java?

 

Классы-оболочки преобразуют примитивы Java в ссылочные типы (объекты). Каждому примитивному типу данных соответствует свой класс. Они известны как классы-оболочки, потому что они «обертывают» примитивный тип данных в объект этого класса. Обратитесь к изображению ниже, которое отображает другой тип примитива, класс-оболочку и аргумент конструктора.

 

Q6. Что такое конструкторы в Java?

В Java конструктор относится к блоку кода, который используется для инициализации объекта. Он должен иметь то же имя, что и класс. Кроме того, он не имеет возвращаемого типа и автоматически вызывается при создании объекта.

Существует два типа конструкторов:

  1. Конструктор по умолчанию: в Java конструктор по умолчанию — это тот, который не принимает никаких входных данных. Другими словами, конструкторы по умолчанию — это конструкторы без аргументов, которые будут созданы по умолчанию, если пользователь не определил другой конструктор. Его основная цель — инициализировать переменные экземпляра значениями по умолчанию. Кроме того, он в основном используется для создания объектов.
  2. Параметризованный конструктор: Параметризованный конструктор в Java — это конструктор, который способен инициализировать переменные экземпляра предоставленными значениями. Другими словами, конструкторы, принимающие аргументы, называются параметризованными конструкторами.

 

Q7. Что такое одноэлементный класс в Java и как мы можем создать одноэлементный класс?

Класс Singleton — это класс, только один экземпляр которого может быть создан в любой момент времени в одной JVM. Класс можно сделать одноэлементным, сделав его конструктор закрытым.

Q8. В чем разница между списком массивов и вектором в Java?

ArrayListВектор
Список массивов не синхронизирован. Вектор синхронизирован.
Array List работает быстро, так как не синхронизируется.Vector медленный, поскольку он потокобезопасен.
Если элемент вставляется в список массивов, он увеличивает размер своего массива на 50%.Вектор по умолчанию удваивает размер своего массива.
Список массивов не определяет размер приращения.Вектор определяет размер приращения.
Список массивов может использовать итератор только для обхода списка массивов.Vector может использовать как Enumeration, так и Iterator для обхода.

 

Q9. В чем разница между equals() и == в Java?

Метод Equals() определен в классе Object в Java и используется для проверки равенства двух объектов, определенных бизнес-логикой.

«==» или оператор равенства в Java — это бинарный оператор, предоставляемый языком программирования Java и используемый для сравнения примитивов и объектов. public boolean equals(Object o) — это метод, предоставляемый классом Object. Реализация по умолчанию использует оператор == для сравнения двух объектов. Например: метод может быть переопределен как класс String. Метод equals() используется для сравнения значений двух объектов.

Q10. Когда вы можете использовать ключевое слово super?

В Java ключевое слово super — это ссылочная переменная, которая ссылается на непосредственный объект родительского класса.

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

Использование ключевого слова Java super Keyword: 

  1. Чтобы сослаться на непосредственную переменную экземпляра родительского класса, используйте super.
  2. Ключевое слово super может использоваться для вызова метода непосредственного родительского класса.
  3. Super() можно использовать для вызова конструктора непосредственного родительского класса.

 

Q11. Что отличает HashSet от TreeSet?

ХэшсетНабор деревьев
Это реализовано через хеш-таблицу.TreeSet реализует интерфейс SortedSet, который использует деревья для хранения данных.
Он разрешает нулевой объект.Он не допускает нулевой объект.
Это быстрее, чем TreeSet, особенно для операций поиска, вставки и удаления.Для этих операций он медленнее, чем HashSet.
Он не поддерживает элементы в упорядоченном виде.Элементы поддерживаются в отсортированном порядке.
Он использует метод equals() для сравнения двух объектов.Он использует метод compareTo() для сравнения двух объектов.
Он не допускает гетерогенный объект.Он допускает неоднородный объект.

 

Q12. В чем разница между HashMap и HashTable в Java?

 

HashMapХеш-таблица
Он не синхронизирован. Он не может быть разделен между многими потоками без надлежащего кода синхронизации.Он синхронизирован. Он потокобезопасен и может совместно использоваться многими потоками.
Он допускает один нулевой ключ и несколько нулевых значений.Он не допускает использования нулевого ключа или значения.
— это новый класс, представленный в JDK 1.2.Он присутствовал и в более ранних версиях Java.
Это быстрее.Это медленнее.
Он проходит через итератор.Он проходит через Enumerator и Iterator.
Он использует отказоустойчивый итератор.Он использует счетчик, который не дает сбоев быстро.
Он наследует класс AbstractMap.Он наследует класс Dictionary.

 

Q13. Какова важность отражения в Java?

Reflection — это API времени выполнения для проверки и изменения поведения методов, классов и интерфейсов. Java Reflection — это мощный инструмент, который может быть действительно полезным. Java Reflection позволяет анализировать классы, интерфейсы, поля и методы во время выполнения, не зная, как они называются во время компиляции. Отражение также можно использовать для создания новых объектов, методов вызова и получения/установки значений полей. Внешние пользовательские классы можно использовать, создавая экземпляры объектов расширяемости с их полными именами. Отладчики также могут использовать отражение для проверки закрытых членов классов.

Q14. Как запретить сериализацию атрибутов класса в Java?

Атрибут NonSerialized можно использовать для предотвращения сериализации переменных-членов.
Вы также должны сделать объект, который потенциально может содержать конфиденциальные данные, несериализуемым, если это возможно. Примените атрибут NonSerialized к определенным полям, в которых хранятся конфиденциальные данные, если объект должен быть сериализован. Если вы не исключите эти поля из сериализации, хранящиеся в них данные будут видны любым программам с разрешением на сериализацию.

Q15. Можно ли вызвать конструктор класса внутри другого конструктора?

Да, мы можем вызвать конструктор класса внутри другого конструктора. Это также называется цепочкой конструкторов. Цепочка конструкторов может быть выполнена двумя способами:

  1. Внутри одного класса: для конструкторов одного класса можно использовать ключевое слово this().
  2. Из базового класса: ключевое слово super() используется для вызова конструктора из базового класса.
    Цепочка конструкторов следует процессу наследования. Конструктор подкласса сначала вызывает конструктор суперкласса. В связи с этим создание объекта подкласса начинается с инициализации элементов данных суперкласса. Цепочка конструкторов работает одинаково с любым количеством классов. Каждый конструктор продолжает вызывать цепочку до вершины цепочки.

 

Q16. Непрерывные области памяти обычно используются для хранения фактических значений в массиве, но не в ArrayList. Объяснять.

Массив обычно содержит элементы примитивных типов данных, таких как int, float и т. д. В таких случаях массив непосредственно хранит эти элементы в смежных ячейках памяти. Хотя ArrayList не содержит примитивных типов данных. ArrayList содержит ссылку на объекты в разных местах памяти, а не на сам объект. Вот почему объекты не хранятся в смежных ячейках памяти.

 

Q17. Чем создание строки с использованием new() отличается от литерала?
Когда мы создаем строку с помощью new(), создается новый объект. Принимая во внимание, что если мы создадим строку, используя синтаксис строкового литерала, она может вернуть уже существующий объект с тем же именем.

 

Q18. Зачем нужна синхронизация? Объясните с помощью соответствующего примера.

Java позволяет выполнять несколько потоков. Они могут обращаться к одной и той же переменной или объекту. Синхронизация помогает выполнять потоки один за другим.
Это важно, так как помогает выполнять все параллельные потоки при синхронизации. Это предотвращает ошибки согласованности памяти из-за доступа к общей памяти. Пример кода синхронизации:

public synchronized void increment()
{
a++;
}

Поскольку мы синхронизировали эту функцию, этот поток может использовать объект только после того, как его использовал предыдущий поток.

Q19. Объясните термин «инициализация двойной скобки» в Java?

Инициализация двойной скобки — это термин Java, который относится к комбинации двух независимых процессов. При этом используются две скобки. Первая фигурная скобка создает анонимный внутренний класс. Вторая фигурная скобка — это блок инициализации. Когда они оба используются вместе, это называется инициализацией двойной скобки. Внутренний класс имеет ссылку на окружающий внешний класс, обычно используя указатель this. Он используется для создания и инициализации в одном операторе. Обычно он используется для инициализации коллекций. Это уменьшает код, а также делает его более читаемым.

 

Q20. Почему говорят, что метод length() класса String не возвращает точных результатов?

Метод length() класса String не возвращает точных результатов, потому что
он просто учитывает количество символов в строке. Другими словами, кодовые точки за пределами BMP (базовой многоязычной плоскости), то есть кодовые точки, имеющие значение U+10000 или выше, будут игнорироваться.

Причина этого историческая. Одной из первоначальных целей Java было рассматривать весь текст как Unicode; тем не менее, в то время Unicode не определял кодовые точки вне BMP. Было слишком поздно изменять char к тому времени, когда Unicode указывал такие кодовые точки.

 

Q21. Каковы различия между кучей и памятью стека в Java?

Основное различие между памятью Heap и Stack:

ФункцииКучакуча
объем памятиПамять стека используется только одним потоком выполнения.Куча памяти используется всеми частями приложения.
ДоступПамять стека не может быть доступна другим потокам.Объекты, хранящиеся в куче, доступны глобально.
Управление памятьюПрименяет метод LIFO для освобождения памяти.Управление памятью основано на генерации, связанной с каждым объектом.
Продолжительность жизниСуществует до конца выполнения потока.Память кучи живет от начала до конца выполнения приложения.
использованиеПамять стека содержит только локальные примитивные и ссылочные переменные для объектов в куче.Всякий раз, когда создается объект, он всегда сохраняется в пространстве кучи.

Q22. Что такое пакет в Java? Перечислите различные преимущества пакетов.

Пакеты в Java — это набор связанных классов и интерфейсов, объединенных вместе. Используя пакеты, разработчики могут легко разбить код на модули и оптимизировать его повторное использование. Кроме того, код внутри пакетов может быть импортирован другими классами и использован повторно. Ниже я перечислил несколько его преимуществ:

  • Пакеты помогают избежать конфликтов имен
  • Они обеспечивают более легкий контроль доступа к коду
  • Пакеты также могут содержать скрытые классы, которые не видны внешним классам и используются только внутри пакета.
  • Создает правильную иерархическую структуру, упрощающую поиск связанных классов.

Q23. Почему указатели не используются в Java?

Java не использует указатели, потому что они небезопасны и усложняют программу. Поскольку Java известна своей простотой кода, добавление концепции указателей будет противоречивым. Более того, поскольку JVM отвечает за неявное выделение памяти, чтобы избежать прямого доступа пользователя к памяти, указатели в Java не рекомендуются.

Q24. Что такое JIT-компилятор в Java?

JIT означает компилятор Just-In-Time в Java. Это программа, которая помогает преобразовывать байт-код Java в инструкции, которые отправляются непосредственно в процессор. По умолчанию JIT-компилятор включен в Java и активируется всякий раз, когда вызывается метод Java. Затем компилятор JIT компилирует байт-код вызванного метода в собственный машинный код, компилируя его «как раз вовремя» для выполнения. Как только метод скомпилирован, JVM вызывает скомпилированный код этого метода напрямую, а не интерпретирует его. Вот почему он часто отвечает за оптимизацию производительности Java-приложений во время выполнения.

Q25. Что такое модификаторы доступа в Java?

В Java модификаторы доступа — это специальные ключевые слова, которые используются для ограничения доступа к классу, конструктору, члену данных и методу в другом классе. Java поддерживает четыре типа модификаторов доступа:

  1. По умолчанию
  2. Частный
  3. Защищено
  4. Общественный
МодификаторПо умолчаниюЧастныйЗащищеноОбщественный
Тот же классДАДАДАДА
Тот же подкласс пакетаДАНЕТДАДА
Тот же пакет без подклассаДАНЕТДАДА
Другой подкласс пакетаНЕТНЕТДАДА
Другой пакет без подклассаНЕТНЕТНЕТДА

Q26. Определите класс Java.

Класс в Java — это план, который включает в себя все ваши данные. Класс содержит поля (переменные) и методы для описания поведения объекта. Давайте посмотрим на синтаксис класса.

class Abc {
member variables // class body
methods}

Q27. Что такое объект в Java и как он создается?

Объект — это сущность реального мира, которая имеет состояние и поведение. Объект имеет три характеристики:

  1. Состояние
  2. Поведение
  3. Личность

Объект создается с использованием ключевого слова «новое». Например:

ИмяКласса obj = новое ИмяКласса();

Q28. Что такое объектно-ориентированное программирование?

Объектно-ориентированное программирование или широко известное как ООП — это модель программирования или подход, при котором программы организованы вокруг объектов, а не логики и функций. Другими словами, ООП в основном фокусируется на объектах, которыми необходимо манипулировать, а не на логике. Этот подход идеален для программ с большими и сложными кодами, которые необходимо активно обновлять или поддерживать.

Q29. Каковы основные концепции ООП в Java?

Объектно-ориентированное программирование или ООП — это стиль программирования, связанный с такими понятиями, как:

  1. Наследование: Наследование — это процесс, в котором один класс приобретает свойства другого.
  2. Инкапсуляция. Инкапсуляция в Java — это механизм объединения данных и кода в единое целое.
  3. Абстракция: Абстракция — это методология сокрытия деталей реализации от пользователя и предоставления функциональности только пользователям.
  4. Полиморфизм: Полиморфизм — это способность переменной, функции или объекта принимать несколько форм.

Q30. В чем разница между локальной переменной и переменной экземпляра?

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

Пример

if(x > 100)
{
String test = "Edureka";
}

Принимая во внимание, что  переменная экземпляра в Java - это переменная, которая ограничена самим своим объектом. Эти переменные объявляются внутри  класса , но вне метода. Каждый объект этого класса будет создавать свою собственную копию переменной при ее использовании. Таким образом, любые изменения, внесенные в переменную, не будут отражаться ни в каких других экземплярах этого класса и будут привязаны только к этому конкретному экземпляру.

class Test{
public String EmpName;
public int empAge;
}

Q31. Различать конструкторы и методы в Java?

МетодыКонструкторы
1. Используется для представления поведения объекта1. Используется для инициализации состояния объекта
2. Должен иметь возвращаемый тип2. Не иметь возвращаемого типа
3. Необходимо вызывать явно3. Вызывается неявно
4. Компилятор не предоставляет метод по умолчанию4. Конструктор по умолчанию предоставляется компилятором, если в классе его нет.
5. Имя метода может совпадать или не совпадать с именем класса.5. Имя конструктора всегда должно совпадать с именем класса.

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

Q32. Что такое ключевое слово final в Java?

final — это специальное ключевое слово в Java, которое используется в качестве модификатора доступа. Конечная переменная может использоваться в различных контекстах, таких как:

  • конечная переменная

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

  • окончательный метод

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

  • последний класс

Когда класс объявлен как final в Java, он не может быть расширен каким-либо классом подкласса, но может расширять другой класс.

Q33. В чем разница между операторами break и continue?

переменаПродолжать
1. Может использоваться в операторах switch и loop (for, while, do while).1. Может использоваться только с операторами цикла
2. Это приводит к тому, что операторы переключения или цикла завершаются в момент их выполнения.2. Цикл не прерывается, но цикл переходит к следующей итерации.
3. Он немедленно завершает самый внутренний охватывающий цикл или переключатель.3. Продолжение в цикле, вложенном в переключатель, приведет к выполнению следующей итерации цикла.

Пример перерыва:

for (int i = 0; i < 5; i++)</div>
<div>
<pre>{
if (i == 3)
{
break;
}
System.out.println(i);
}

Пример продолжения:

for (int i = 0; i < 5; i++)
{
if(i == 2)
{
continue;
}
System.out.println(i);
}

Q34. Что такое бесконечный цикл в Java? Объясните на примере.

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

Например:

public class InfiniteForLoopDemo
{
public static void main(String[] arg) {
for(;;)
System.out.println("Welcome to Edureka!");
// To terminate this program press ctrl + c in the console.
}
}

Q35. В чем разница между this() и super() в Java?

В Java super() и this() являются специальными ключевыми словами, которые используются для вызова конструктора. 

это()супер()
1. this() представляет текущий экземпляр класса1. super() представляет текущий экземпляр родительского/базового класса
2. Используется для вызова конструктора по умолчанию того же класса.2. Используется для вызова конструктора по умолчанию родительского/базового класса.
3. Используется для доступа к методам текущего класса3. Используется для доступа к методам базового класса
4. Используется для указания текущего экземпляра класса4. Используется для указания экземпляра суперкласса
5. Должна быть первой строкой блока5. Должна быть первой строкой блока

Q36. Что такое пул строк Java?

Пул строк Java относится к набору строк, которые хранятся в куче памяти. При этом всякий раз, когда создается новый объект, пул строк сначала проверяет, присутствует ли этот объект в пуле или нет. Если он присутствует, то в переменную возвращается та же ссылка, иначе в пуле строк будет создан новый объект, и будет возвращена соответствующая ссылка.

Пул строк — Вопросы для собеседования по Java — Edureka

Q37. Различать статические и нестатические методы в Java.

Статический методНестатический метод
1. Ключевое слово static  должно использоваться перед именем метода.1. Не нужно использовать ключевое слово static перед именем метода.
2. Вызывается с помощью класса (className.methodName) 2. Может вызываться как любой общий метод
3. Они не могут получить доступ к каким-либо нестатическим переменным или методам экземпляра.3. Он может получить доступ к любому статическому методу и любой статической переменной без создания экземпляра класса.

Q38. Объясните термин «Инициализация двойной скобки» в Java?

Инициализация двойной скобки — это термин Java, который относится к комбинации двух независимых процессов. При этом используются две скобки. Первая фигурная скобка создает анонимный внутренний класс. Вторая фигурная скобка — это блок инициализации. Когда они оба используются вместе, это называется инициализацией двойной скобки. Внутренний класс имеет ссылку на окружающий внешний класс, обычно используя указатель this. Он используется для создания и инициализации в одном операторе. Обычно он используется для инициализации коллекций. Это уменьшает код, а также делает его более читаемым.

Q39. Что такое цепочка конструкторов в Java?

В Java цепочка конструкторов — это процесс вызова одного конструктора из другого по отношению к текущему объекту. Цепочка конструкторов возможна только через наследие, где конструктор подкласса отвечает за вызов конструктора суперкласса в первую очередь. В цепочке конструкторов может быть любое количество классов. Цепочка конструкторов может быть достигнута двумя способами:

  1. В том же классе, используя this()
  2. Из базового класса с помощью super()

Q40. Разница между String, StringBuilder и StringBuffer.

ФакторНитьStringBuilderСтроковый буфер
Зона храненияПостоянный пул строкПлощадь кучиПлощадь кучи
ИзменчивостьНеизменныйИзменяемыйИзменяемый
Безопасность потокаДаНетДа
СпектакльБыстроБолее эффективнымМенее эффективны

Q41. Что такое загрузчик классов в Java?

Java ClassLoader —  это подмножество JVM (виртуальная машина Java), которое отвечает за загрузку файлов классов. Всякий раз, когда программа Java выполняется, она сначала загружается загрузчиком классов. Java предоставляет три встроенных загрузчика классов:

  1. Bootstrap ClassLoader
  2. Расширение ClassLoader
  3. Система/приложение ClassLoader

Q42. Почему строки Java неизменяемы по своей природе?

В Java строковые объекты являются неизменяемыми по своей природе, что просто означает, что после создания объекта String его состояние не может быть изменено. Всякий раз, когда вы пытаетесь обновить значение этого объекта вместо обновления значений этого конкретного объекта, Java создает новый строковый объект. Объекты Java String неизменяемы, поскольку объекты String обычно кэшируются в пуле String. Поскольку строковые литералы обычно совместно используются несколькими клиентами, действия одного клиента могут повлиять на остальные. Это повышает безопасность, кэширование, синхронизацию и производительность приложения. 

Q43. В чем разница между массивом и списком массивов?

МножествоArrayList
Не может содержать значения разных типов данныхМожет содержать значения разных типов данных.
Размер должен быть определен на момент объявленияРазмер может быть динамически изменен
Необходимо указать индекс для добавления данныхНе нужно указывать индекс
Массивы не параметризуются по типуМассивы имеют тип 
Массивы могут содержать как примитивные типы данных, так и объекты.Списки массивов могут содержать только объекты, примитивные типы данных не допускаются.

Q44. Что такое карта в Java?

В Java Map — это интерфейс пакета Util, который сопоставляет уникальные ключи со значениями. Интерфейс карты не является подмножеством основного интерфейса коллекции, и поэтому его поведение мало отличается от других типов коллекций. Ниже приведены некоторые характеристики интерфейса карты: 

  1. Карта не содержит повторяющихся ключей.

Каждый ключ может отображать не более одного значения.

Q45. Что такое класс коллекции в Java? Перечислите его методы и интерфейсы.

В Java коллекция — это структура, которая действует как архитектура для хранения и управления группой объектов. Используя коллекции, вы можете выполнять различные задачи, такие как поиск, сортировка, вставка, манипулирование, удаление и т. д. Платформа коллекций Java включает в себя следующее:

  • Интерфейсы
  • Классы
  • Методы

На изображении ниже показана полная иерархия коллекции Java.

FrameworkHierarchy — Коллекции Java — Edureka

 


OOPS Вопросы для собеседования по Java

Q1. Что такое Полиморфизм?

Полиморфизм кратко описывается как «один интерфейс, множество реализаций». Полиморфизм — это характеристика способности присваивать различное значение или использование чему-либо в разных контекстах, в частности, позволять сущности, такой как переменная, функция или объект, иметь более одной формы. Существует два типа полиморфизма:

  1. Полиморфизм времени компиляции
  2. Полиморфизм времени выполнения

Полиморфизм времени компиляции — это перегрузка методов, тогда как полиморфизм времени выполнения выполняется с использованием наследования и интерфейса.

 

Q2. Что такое полиморфизм времени выполнения или диспетчеризация динамических методов?

В Java полиморфизм времени выполнения или диспетчеризация динамического метода — это процесс, в котором вызов переопределенного метода разрешается во время выполнения, а не во время компиляции. В этом процессе переопределенный метод вызывается через ссылочную переменную суперкласса. Давайте посмотрим на пример ниже, чтобы понять его лучше.

class Car {
void run()
{
System.out.println(“car is running”); 
}
}
class Audi extends Car {
void run()
{
System.out.prinltn(“Audi is running safely with 100km”);
}
public static void main(String args[])
{
Car b= new Audi();    //upcasting
b.run();
}
}

Q3. Что такое абстракция в Java?

Абстракция относится к качеству работы с идеями, а не с событиями. В основном это связано с тем, чтобы скрыть детали и показать пользователю важные вещи. Таким образом, можно сказать, что абстракция в Java — это процесс сокрытия деталей реализации от пользователя и раскрытия им только функциональности. Абстракция может быть достигнута двумя способами:

  1. Абстрактные классы (можно достичь 0-100% абстракции)
  2. Интерфейсы (можно достичь 100% абстракции)

Q4. Что вы подразумеваете под интерфейсом в Java?

Интерфейс в Java — это план класса или, можно сказать, набор абстрактных методов и статических констант. В интерфейсе каждый метод является общедоступным и абстрактным, но не содержит конструктора. Таким образом, интерфейс в основном представляет собой группу связанных методов с пустыми телами. Пример:

public interface Animal {
  public void eat();
  public void sleep();
  public void run();
}

Q5. В чем разница между абстрактными классами и интерфейсами?

Абстрактный классИнтерфейсы
Абстрактный класс может предоставлять полный код по умолчанию и/или только детали, которые необходимо переопределить.Интерфейс вообще не может предоставлять никакого кода, только подпись
В случае абстрактного класса класс может расширять только один абстрактный класс.Класс может реализовывать несколько интерфейсов
Абстрактный класс может иметь неабстрактные методы.Все методы интерфейса абстрактны
Абстрактный класс может иметь переменные экземпляраИнтерфейс не может иметь переменные экземпляра
Абстрактный класс может иметь любую видимость: публичную, приватную, защищенную.Видимость интерфейса должна быть общедоступной (или) отсутствовать
Если мы добавим новый метод в абстрактный класс, у нас будет возможность предоставить реализацию по умолчанию, и, следовательно, весь существующий код может работать правильно.Если мы добавим новый метод в интерфейс, мы должны отследить все реализации интерфейса и определить реализацию для нового метода.
Абстрактный класс может содержать конструкторыИнтерфейс не может содержать конструкторы
Абстрактные классы работают быстроИнтерфейсы работают медленно, так как для поиска соответствующего метода в реальном классе требуется дополнительная косвенность.

Q6. Что такое наследование в Java?

Наследование в Java — это концепция, при которой свойства одного класса могут наследоваться другим. Это помогает повторно использовать код и устанавливать отношения между разными классами. Наследование осуществляется между двумя типами классов:

  1. Родительский класс (супер или базовый класс)
  2. Дочерний класс (подкласс или производный класс)

 

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

Q7. Какие существуют типы наследования в Java?

Java поддерживает четыре типа наследования:

  1. Одиночное наследование: при одиночном наследовании один класс наследует свойства другого, т.е. будет только один родительский и один дочерний классы.
  2. Многоуровневое наследование: когда класс является производным от класса, который также является производным от другого класса, т. е. у класса, имеющего более одного родительского класса, но на разных уровнях, такой тип наследования называется многоуровневым наследованием.
  3. Иерархическое наследование: когда класс имеет более одного дочернего класса (подкласса) или, другими словами, более одного дочернего класса имеют один и тот же родительский класс, тогда такой тип наследования называется иерархическим.
  4. Гибридное наследование: Гибридное наследование представляет собой комбинацию двух или более типов наследования.

Q8. Что такое перегрузка и переопределение методов?

Перегрузка метода:

  • При перегрузке методов методы одного и того же класса имеют одно и то же имя, но каждый метод должен иметь разное количество параметров или параметры, имеющие разные типы и порядок.
  • Перегрузка метода заключается в том, чтобы «добавить» или «расширить» поведение метода.
  • Это полиморфизм времени компиляции.
  • У методов должна быть другая подпись.
  • Он может нуждаться или не нуждаться в наследовании в перегрузке метода.

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

class Adder {
Static int add(int a, int b)
{
return a+b;
}
Static double add( double a, double b)
{
return a+b;
}
public static void main(String args[])
{
System.out.println(Adder.add(11,11));
System.out.println(Adder.add(12.3,12.6));
}}

Переопределение метода:  

  • В переопределении метода подкласс имеет тот же метод с тем же именем и точно таким же количеством и типом параметров и тем же типом возвращаемого значения, что и суперкласс.
  • Переопределение метода заключается в «изменении» существующего поведения метода.
  • Это полиморфизм времени выполнения.
  • Методы должны иметь одинаковую сигнатуру.
  • Это всегда требует наследования в переопределении метода.

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

class Car {
void run(){
System.out.println(“car is running”); 
}
Class Audi extends Car{
void run()
{
System.out.prinltn("Audi is running safely with 100km");
}
public static void main( String args[])
{
Car b=new Audi();
b.run();
}
}

Q9. Можете ли вы переопределить частный или статический метод в Java?

Вы не можете переопределить частный или статический метод в Java. Если вы создадите аналогичный метод с тем же типом возвращаемого значения и теми же аргументами метода в дочернем классе, он скроет метод суперкласса; это известно как скрытие метода. Точно так же вы не можете переопределить закрытый метод в подклассе, потому что он там недоступен. Что вы можете сделать, так это создать еще один частный метод с тем же именем в дочернем классе. Давайте посмотрим на пример ниже, чтобы понять его лучше.

class Base {
private static void display() {
System.out.println("Static or class method from Base");
}
public void print() {
System.out.println("Non-static or instance method from Base");
}
class Derived extends Base {
private static void display() {
System.out.println("Static or class method from Derived");
}
public void print() {
System.out.println("Non-static or instance method from Derived");
}
public class test {
public static void main(String args[])
{
Base obj= new Derived();
obj1.display();
obj1.print();
}
}

Q10. Что такое множественное наследование? Поддерживается ли это Java?

MultipleInheritance — Вопросы на собеседовании по Java — EdurekaЕсли дочерний класс наследует свойство от нескольких классов, это называется множественным наследованием. Java не позволяет расширять несколько классов.

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

Поэтому Java не поддерживает множественное наследование. Эту проблему обычно называют алмазной проблемой.

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

 

Q11. Что такое инкапсуляция в Java?

Инкапсуляция — это механизм, в котором вы связываете свои данные (переменные) и код (методы) вместе как единое целое. Здесь данные скрыты от внешнего мира и доступны только через методы текущего класса. Это помогает защитить данные от любых ненужных изменений. Мы можем добиться инкапсуляции в Java следующим образом:

  • Объявление переменных класса как закрытых.
  • Предоставление общедоступных методов установки и получения для изменения и просмотра значений переменных.

Q12. Что такое ассоциация?

Ассоциация — это отношение, в котором все объекты имеют свой жизненный цикл и не имеют владельца. Возьмем пример Учителя и Ученика. Несколько учеников могут связываться с одним учителем, а один ученик может связываться с несколькими учителями, но между объектами нет собственности, и у обоих есть собственный жизненный цикл. Эти отношения могут быть «один к одному», «один ко многим», «многие к одному» и «многие ко многим».

Q13. Что вы имеете в виду под агрегацией?

Агрегация — это специализированная форма ассоциации, в которой все объекты имеют собственный жизненный цикл, но существует право собственности, а дочерний объект не может принадлежать другому родительскому объекту. Возьмем пример отдела и учителя. Один учитель не может принадлежать нескольким отделам, но если мы удалим объект учителя отдела, он не будет уничтожен. 

Q14. Что такое композиция в Java?

Композиция снова является специализированной формой Агрегации, и мы можем назвать это отношением «смерти». Это сильный тип агрегации. Дочерний объект не имеет своего жизненного цикла, и если родительский объект удаляется, все дочерние объекты также будут удалены. Давайте снова возьмем пример отношений между Домом и комнатами. Дом может содержать несколько комнат, нет независимой жизни комнаты, и любая комната не может принадлежать двум разным домам, если мы удалим комнату дома, она будет удалена автоматически.

Q15. Что такое маркерный интерфейс?

Интерфейс маркера может быть определен как интерфейс, не имеющий данных-членов и функций-членов. Проще говоря, пустой интерфейс называется интерфейсом маркера. Наиболее распространенными примерами интерфейса Marker в Java являются Serializable, Cloneable и т. д. Интерфейс маркера можно объявить следующим образом.

public interface Serializable{
}

Q16. Что такое клонирование объектов в Java?

Клонирование объекта в Java — это процесс создания точной копии объекта. В основном это означает возможность создания объекта с состоянием, аналогичным исходному объекту. Для этого в Java предусмотрен метод clone()  , позволяющий использовать эту функциональность. Этот метод создает новый экземпляр класса текущего объекта, а затем инициализирует все его поля точно таким же содержимым соответствующих полей. Для объекта clone() должен быть реализован интерфейс маркера java.lang.Cloneable , чтобы избежать каких-либо исключений во время выполнения. Одна вещь, которую вы должны отметить, это то, что Object clone() является защищенным методом, поэтому вам необходимо переопределить его.

Q17. Что такое конструктор копирования в Java?

Конструктор копирования — это функция-член, которая используется для инициализации объекта с использованием другого объекта того же класса. Хотя в Java нет необходимости в конструкторе копирования, поскольку все объекты передаются по ссылке. Более того, Java даже не поддерживает автоматическую передачу по значению.

Q18. Что такое перегрузка конструктора в Java?

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

class Demo
{
int i;
public Demo(int a)
{
i=k;
}
public Demo(int a, int b)
{
//body
}
}

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


Сервлеты — вопросы на собеседовании по Java  

Q1. Что такое сервлет?

  • Java Servlet — это серверные технологии для расширения возможностей веб-серверов за счет поддержки динамического ответа и сохранения данных.
  • Пакеты javax.servlet и javax.servlet.http предоставляют интерфейсы и классы для написания собственных сервлетов.
  • Все сервлеты должны реализовывать интерфейс javax.servlet.Servlet, который определяет методы жизненного цикла сервлета. При реализации универсальной службы мы можем расширить класс GenericServlet, предоставляемый API Java Servlet. Класс HttpServlet предоставляет методы, такие как doGet() и doPost(), для обработки специфичных для HTTP служб.
  • В большинстве случаев доступ к веб-приложениям осуществляется с использованием протокола HTTP, поэтому мы в основном расширяем класс HttpServlet. Иерархия API сервлетов показана на изображении ниже.

Сервлет — Вопросы для собеседования по Java — Edureka

Q2. В чем разница между методами Get и Post?

ПолучитьСообщение
Ограниченный объем данных может быть отправлен, поскольку данные отправляются в заголовке.Большой объем данных может быть отправлен, поскольку данные отправляются в теле.
 Незащищено, так как данные отображаются в адресной строке. Защищено, поскольку данные не отображаются в адресной строке.
 Можно добавить в закладки Нельзя добавить в закладки
 идемпотент Неидемпотентный
 Он более эффективен и используется, чем Post Он менее эффективен и используется

Q3. Что такое диспетчер запросов?

Интерфейс RequestDispatcher используется для пересылки запроса на другой ресурс, который может быть HTML, JSP или другим сервлетом в том же приложении. Мы также можем использовать это, чтобы включить в ответ содержимое другого ресурса.

В этом интерфейсе определены два метода:

1.пусто вперед()

2. пусто включить ()

ForwardMethod — Вопросы для собеседования по Java — Edureka

IncludeMethod — Вопросы для собеседования по Java — Edureka

Q4. В чем разница между методом forward() и методами sendRedirect()?


 

 

метод пересылки()Метод ОтправитьПеренаправление()
forward() отправляет тот же запрос на другой ресурс.Метод sendRedirect() всегда отправляет новый запрос, потому что он использует адресную строку браузера.
 Метод forward() работает на стороне сервера. Метод sendRedirect() работает на стороне клиента.
 Метод forward() работает только внутри сервера.Метод sendRedirect() работает внутри и вне сервера.

Q5. Каков жизненный цикл сервлета?

В жизненном цикле сервлета есть 5 этапов:LifeCycleServlet — Вопросы для собеседования по Java — Edureka

  1. Сервлет загружен
  2. Сервлет создан
  3. Сервлет инициализирован
  4. Обслужить запрос
  5. Сервлет уничтожен

Q6. Как файлы cookie работают в сервлетах?

  • Файлы cookie — это текстовые данные, отправляемые сервером клиенту, которые сохраняются на локальном компьютере клиента.
  • Servlet API обеспечивает поддержку файлов cookie через класс javax.servlet.http.Cookie, реализующий интерфейсы Serializable и Cloneable.
  • Метод HttpServletRequest getCookies() предназначен для получения массива файлов cookie из запроса, поскольку нет смысла добавлять файлы cookie в запрос, нет методов для установки или добавления файлов cookie в запрос.
  • Точно так же метод HttpServletResponse addCookie(Cookie c) предоставляется для прикрепления cookie в заголовке ответа, для cookie нет методов получения.

Q7. В чем разница между ServletContext и ServletConfig?

Разница между ServletContext и ServletConfig в Servlets JSP заключается в приведенном ниже табличном формате.

Конфигурация сервлетовКонтекст сервлета
Объект конфигурации сервлета представляет один сервлетОн представляет собой целое веб-приложение, работающее на конкретной JVM и общее для всех сервлетов.
Это похоже на локальный параметр, связанный с конкретным сервлетом.Это как глобальный параметр, связанный со всем приложением.
Это пара значений имени, определенная внутри раздела сервлета файла web.xml, поэтому она имеет широкую область действия сервлета.ServletContext имеет широкую область применения, поэтому определите его за пределами тега сервлета в файле web.xml.
Метод getServletConfig() используется для получения объекта конфигурации.Метод getServletContext() используется для получения объекта контекста.
например, корзина пользователя относится к конкретному пользователю, поэтому здесь мы можем использовать конфигурацию сервлета.Чтобы получить MIME-тип файла или сеанса приложения, информация, связанная с сеансом, сохраняется с использованием объекта контекста сервлета.

 

Q8. Каковы различные методы управления сеансом в сервлетах?

Сеанс — это состояние диалога между клиентом и сервером, и он может состоять из нескольких запросов и ответов между клиентом и сервером. Поскольку HTTP и веб-сервер не имеют состояния, единственный способ поддерживать сеанс — это когда некоторая уникальная информация о сеансе (идентификатор сеанса) передается между сервером и клиентом в каждом запросе и ответе.

Некоторые из распространенных способов управления сеансом в сервлетах:

  1. Аутентификация пользователя
  2. Скрытое поле HTML
  3. Печенье
  4. Перезапись URL
  5. API управления сессиями

 

SessionManagement — Вопросы для собеседования по Java — Edureka


JDBC — вопросы на собеседовании по Java 

1. Что такое драйвер JDBC?

Драйвер JDBC — это программный компонент, который позволяет Java-приложению взаимодействовать с базой данных. Существует 4 типа драйверов JDBC:

  1. Драйвер моста JDBC-ODBC
  2. Драйвер собственного API (частично java-драйвер)
  3. Драйвер сетевого протокола (полностью драйвер Java)
  4. Тонкий драйвер (полностью java-драйвер)

2. Каковы шаги для подключения к базе данных в Java?

  • Регистрация класса драйвера
  • Создание соединения
  • Создание заявления
  • Выполнение запросов
  • Закрытие соединения

3. Что такое компоненты JDBC API?

Пакет java.sql содержит интерфейсы и классы для JDBC API.

Интерфейсы:

  • Связь
  • Заявление
  • Подготовленное заявление
  • Набор результатов
  • ResultSetMetaData
  • Метаданные базы данных
  • CallableStatement и т. д.

Классы:

  • DriverManager
  • капля
  • Клоб
  • Типы
  • SQLException и т. д.

4. Какова роль класса JDBC DriverManager?

Класс DriverManager управляет зарегистрированными драйверами. Его можно использовать для регистрации и отмены регистрации водителей. Он предоставляет фабричный метод, который возвращает экземпляр Connection.

5. Что такое интерфейс соединения JDBC?

Интерфейс Connection поддерживает сеанс с базой данных. Его можно использовать для управления транзакциями. Он предоставляет фабричные методы, которые возвращают экземпляры Statement, PreparedStatement, CallableStatement и DatabaseMetaData.

ConnectionInterface — Вопросы для собеседования по Java — Edureka

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

6. Каково назначение интерфейса JDBC ResultSet?

Объект ResultSet представляет строку таблицы. Его можно использовать для изменения указателя курсора и получения информации из базы данных.

7. Что такое интерфейс JDBC ResultSetMetaData?

Интерфейс ResultSetMetaData возвращает информацию о таблице, такую ​​как общее количество столбцов, имя столбца, тип столбца и т. д.

8. Что такое интерфейс JDBC DatabaseMetaData?

Интерфейс DatabaseMetaData возвращает информацию о базе данных, такую ​​как имя пользователя, имя драйвера, версия драйвера, количество таблиц, количество просмотров и т. д.

9. Что вы подразумеваете под пакетной обработкой в ​​JDBC?

Пакетная обработка помогает группировать связанные операторы SQL в пакет и выполнять их вместо выполнения одного запроса. Используя метод пакетной обработки в JDBC, вы можете выполнять несколько запросов, что повышает производительность.

10. В чем разница между execute, executeQuery, executeUpdate?

Оператор execute(String query) используется для выполнения любого SQL-запроса и возвращает TRUE, если результатом является ResultSet, например выполнение запросов Select. Вывод FALSE, когда нет объекта ResultSet, такого как выполнение запросов на вставку или обновление. Мы можем использовать getResultSet() для получения ResultSet и метод getUpdateCount() для получения счетчика обновлений.

Оператор executeQuery (строковый запрос) используется для выполнения запросов Select и возвращает ResultSet. Возвращаемый набор результатов никогда не бывает нулевым, даже если нет записей, соответствующих запросу. При выполнении запросов на выборку мы должны использовать метод executeQuery, чтобы, если кто-то попытается выполнить оператор вставки/обновления, он выдал java.sql.SQLException с сообщением «метод executeQuery не может использоваться для обновления».

Оператор executeUpdate(String query ) используется для выполнения операторов Insert/Update/Delete (DML) или операторов DDL, которые ничего не возвращают. Результатом является int, равный количеству строк для инструкций языка манипулирования данными SQL (DML). Для операторов DDL вывод равен 0.

Вы должны использовать метод execute() только тогда, когда вы не уверены в типе оператора, иначе используйте метод executeQuery или executeUpdate.

Q11. Что вы понимаете под заявлениями JDBC?

Операторы JDBC — это в основном операторы, которые используются для отправки команд SQL в базу данных и извлечения данных из базы данных. JDBC предоставляет различные методы, такие как execute(), executeUpdate(), executeQuery и т. д., для взаимодействия с базой данных.

JDBC поддерживает 3 типа операторов:

  1. Заявление: используется для общего доступа к базе данных и выполняет статический запрос SQL во время выполнения.
  2. PreparedStatement: используется для предоставления входных параметров запросу во время выполнения.
  3. CallableStatement: используется для доступа к хранимым процедурам базы данных и помогает принимать параметры времени выполнения.

Spring Framework — вопросы на собеседовании по Java 

Q1. Что такое весна?

Википедия определяет фреймворк Spring как «фреймворк приложения и инверсию контейнера управления для платформы Java». Основные функции фреймворка могут использоваться любым Java-приложением, но существуют расширения для создания веб-приложений поверх платформы Java EE». Spring — это, по сути, легкая интегрированная среда, которую можно использовать для разработки корпоративных приложений на языке java.

Q2. Назовите различные модули среды Spring.

Некоторые из важных модулей Spring Framework:

  • Spring Context — для внедрения зависимостей.
  • Spring AOP — для аспектно-ориентированного программирования.
  • Spring DAO — для операций с базой данных с использованием шаблона DAO.
  • Spring JDBC — для поддержки JDBC и DataSource.
  • Spring ORM — для поддержки инструментов ORM, таких как Hibernate.
  • Spring Web Module — для создания веб-приложений.
  • Spring MVC — реализация Model-View-Controller для создания веб-приложений, веб-сервисов и т. д.

SpringFramework — Вопросы на собеседовании по Java — EdurekaQ3. Перечислите некоторые важные аннотации в конфигурации Spring на основе аннотаций.

Важными аннотациями являются:

  • @Необходимый
  • @Autowired
  • @Квалификатор
  • @Ресурс
  • @PostConstruct
  • @PreDestroy

Q4. Объясните Bean in Spring и перечислите различные области применения Spring bean.

Компоненты — это объекты, формирующие основу приложения Spring. Они управляются контейнером Spring IoC. Другими словами, компонент — это объект, который создается, собирается и управляется контейнером Spring IoC.

В Spring bean-компонентах определено пять областей действия.

SpringBean — Вопросы для собеседования по Java — Edureka

  • Singleton : для каждого контейнера будет создан только один экземпляр компонента. Это область действия по умолчанию для spring bean-компонентов. При использовании этой области убедитесь, что у Spring Bean нет общих переменных экземпляра, иначе это может привести к проблемам с несогласованностью данных, поскольку он не является потокобезопасным.
  • Прототип : каждый раз при запросе компонента будет создаваться новый экземпляр.
  • Запрос : это то же самое, что и область действия прототипа, однако она предназначена для использования в веб-приложениях. Новый экземпляр bean-компонента будет создаваться для каждого HTTP-запроса.
  • Сеанс : контейнер будет создавать новый компонент для каждого HTTP-сеанса.
  • Global-session : используется для создания глобальных сеансовых компонентов для приложений с портлетами.

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

Q5. Объясните роль DispatcherServlet и ContextLoaderListener.

DispatcherServlet — это, по сути, передний контроллер в приложении Spring MVC, поскольку он загружает файл конфигурации bean-компонентов Spring и инициализирует все настроенные bean-компоненты. Если аннотации включены, он также сканирует пакеты для настройки любого компонента, аннотированного аннотациями @Component, @Controller, @Repository или @Service.

DispatcherServlet — Вопросы для собеседования по Java — EdurekaContextLoaderListener, с другой стороны, является прослушивателем для запуска и закрытия WebApplicationContext в корневом каталоге Spring. Некоторые из его важных функций включают привязку жизненного цикла Application Context к жизненному циклу ServletContext и автоматизацию создания ApplicationContext.

ContextLoader — Вопросы для собеседования по Java — Edureka

Q6. В чем разница между внедрением конструктора и внедрением сеттера?

Нет.Внедрение конструктораИнъекция сеттера
 1) Без частичного впрыска Частичный впрыск
 2) Не переопределяет свойство setter Переопределяет свойство конструктора, если оба определены.
 3)Создает новый экземпляр, если происходит какое-либо изменениеНе создает новый экземпляр, если вы измените значение свойства
 4)  Лучше для слишком многих свойств Лучше для нескольких свойств.

Q7. Что такое автовайринг в Spring? Какие есть режимы автопроводки?

Autowiring позволяет программисту автоматически вводить bean-компонент. Нам не нужно писать явную логику внедрения. Давайте посмотрим код для внедрения bean-компонента с использованием внедрения зависимостей.

  1. <bean id="emp" class="com.javatpoint.Employee" autowire="byName" />

Режимы автопроводки приведены ниже:

Нет.РежимОписание
 1) нет это режим по умолчанию, это означает, что автопроводка не включена.
 2) по имени Внедряет bean-компонент на основе имени свойства. Он использует метод установки.
 3) по типу Внедряет bean-компонент на основе типа свойства. Он использует метод установки.
 4) конструктор Он вводит bean-компонент с помощью конструктора

Q8. Как обрабатывать исключения в Spring MVC Framework?

Spring MVC Framework предоставляет следующие способы, которые помогут нам добиться надежной обработки исключений.

На основе контроллера:

Мы можем определить методы обработчика исключений в наших классах контроллеров. Все, что нам нужно, это аннотировать эти методы аннотацией @ExceptionHandler.

Глобальный обработчик исключений:

Обработка исключений является сквозной проблемой, и Spring предоставляет аннотацию @ControllerAdvice, которую мы можем использовать с любым классом для определения нашего глобального обработчика исключений.

Реализация HandlerExceptionResolver: 

Что касается общих исключений, в большинстве случаев мы обслуживаем статические страницы. Spring Framework предоставляет интерфейс HandlerExceptionResolver, который мы можем реализовать для создания глобального обработчика исключений. Причина этого дополнительного способа определения глобального обработчика исключений заключается в том, что среда Spring также предоставляет классы реализации по умолчанию, которые мы можем определить в нашем файле конфигурации bean-компонента Spring, чтобы получить преимущества обработки исключений среды Spring.

 

Q9. Какие важные аннотации Spring вы использовали?

Вот некоторые из аннотаций Spring, которые я использовал в своем проекте:

@Controller — для классов контроллеров в проекте Spring MVC.

@RequestMapping — для настройки сопоставления URI в методах обработчика контроллера. Это очень важная аннотация, поэтому вам следует просмотреть примеры аннотаций Spring MVC RequestMapping.

@ResponseBody — для отправки объекта в качестве ответа, обычно для отправки данных XML или JSON в качестве ответа.

@PathVariable — для отображения динамических значений из URI в аргументы метода обработчика.

@Autowired — для автоматического подключения зависимостей в бинах Spring.

@Qualifier — с аннотацией @Autowired, чтобы избежать путаницы при наличии нескольких экземпляров типа bean-компонента.

@Service — для классов обслуживания.

@Scope — для настройки области действия Spring bean.

@Configuration, @ComponentScan и @Bean — для конфигураций на основе Java.

Аннотации AspectJ для настройки аспектов и советов, @Aspect, @Before, @After, @Around, @Pointcut и т. д.

Q10. Как интегрировать Spring и Hibernate Framework?

Мы можем использовать модуль Spring ORM для интеграции фреймворков Spring и Hibernate, если вы используете Hibernate 3+, где SessionFactory предоставляет текущий сеанс, тогда вам следует избегать использования классов HibernateTemplate или HibernateDaoSupport и лучше использовать шаблон DAO с внедрением зависимостей для интеграции.

Кроме того, Spring ORM обеспечивает поддержку использования декларативного управления транзакциями Spring, поэтому вам следует использовать это, а не использовать шаблонный код гибернации для управления транзакциями. 

Q11. Назовите типы управления транзакциями, которые поддерживает Spring.

Spring поддерживает два типа управления транзакциями. Они есть:

  1. Программное управление транзакциями:  в этом случае транзакция управляется с помощью программирования. Он обеспечивает исключительную гибкость, но его очень сложно поддерживать.
  2. Декларативное управление транзакциями:  при этом управление транзакциями отделено от бизнес-кода. Для управления транзакциями используются только аннотации или конфигурации на основе XML.

Hibernate — вопросы на собеседовании по Java для опытных профессионалов

1. Что такое Hibernate Framework?

Объектно-реляционное сопоставление или ORM — это метод программирования для сопоставления объектов модели домена приложения с таблицами реляционной базы данных. Hibernate — это инструмент ORM на основе Java, который обеспечивает основу для сопоставления объектов домена приложения с таблицами реляционной базы данных и наоборот.

Hibernate предоставляет эталонную реализацию Java Persistence API, что делает его отличным выбором в качестве инструмента ORM с преимуществами слабой связи. Мы можем использовать API сохраняемости Hibernate для операций CRUD. Платформа Hibernate предоставляет возможность сопоставления простых старых объектов Java с традиционными таблицами базы данных с использованием аннотаций JPA, а также конфигурации на основе XML.

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

2. Каковы важные преимущества использования Hibernate Framework?

Некоторые из важных преимуществ использования Hibernate Framework:

  1. Hibernate устраняет весь шаблонный код, поставляемый с JDBC, и заботится об управлении ресурсами, поэтому мы можем сосредоточиться на бизнес-логике.
  2. Платформа Hibernate обеспечивает поддержку XML, а также аннотаций JPA, что делает нашу реализацию кода независимой.
  3. Hibernate предоставляет мощный язык запросов (HQL), похожий на SQL. Однако HQL полностью объектно-ориентирован и понимает такие понятия, как наследование, полиморфизм и ассоциация.
  4. Hibernate — это проект с открытым исходным кодом сообщества Red Hat, используемый во всем мире. Это делает его лучшим выбором, чем другие, потому что кривая обучения невелика, существует множество онлайн-документации, а помощь легко доступна на форумах.
  5. Hibernate легко интегрируется с другими платформами Java EE. Он настолько популярен, что Spring Framework предоставляет встроенную поддержку для интеграции hibernate с приложениями Spring.
  6. Hibernate поддерживает ленивую инициализацию с использованием прокси-объектов и выполняет фактические запросы к базе данных только тогда, когда это необходимо.
  7. Кэш Hibernate помогает нам повысить производительность.
  8. Для конкретной функции поставщика базы данных спящий режим подходит, потому что мы также можем выполнять собственные запросы sql.

В целом спящий режим — лучший выбор на текущем рынке для инструмента ORM, он содержит все функции, которые вам когда-либо понадобятся в инструменте ORM.

3. Объясните архитектуру Hibernate.

Hibernate имеет многоуровневую архитектуру, которая помогает пользователю работать без знания базовых API. Hibernate использует базу данных и данные конфигурации для предоставления приложению служб сохранения (и постоянных объектов). Он включает в себя множество объектов, таких как постоянный объект, фабрика сеансов, фабрика транзакций, фабрика соединений, сеанс, транзакция и т. д.HibernateArchitecture — Вопросы на собеседовании по Java — Edureka

Архитектура Hibernate разделена на четыре уровня.

  • Уровень приложения Java
  • Слой каркаса гибернации
  • Уровень API обратной связи
  • Уровень базы данных

4. В чем разница между методами get и load?

Различия между методами get() и load() приведены ниже.

Нет.получить()нагрузка()
 1) Возвращает null, если объект не найден.Выдает исключение ObjectNotFoundException, если объект не найден.
 2) Метод get() всегда попадает в базу данных. Метод load() не обращается к базе данных.
 3) Он возвращает реальный объект, а не прокси. Он возвращает прокси-объект.
 4)Его следует использовать, если вы не уверены в существовании экземпляра.Его следует использовать, если вы уверены, что экземпляр существует.

5. Каковы преимущества Hibernate перед JDBC?

Некоторые из важных преимуществ Hibernate framework по сравнению с JDBC:

  1. Hibernate удаляет много шаблонного кода, который поставляется с JDBC API, код выглядит чище и читабельнее.
  2. Hibernate поддерживает наследование, ассоциации и коллекции. Эти функции отсутствуют в JDBC API.
  3. Hibernate неявно обеспечивает управление транзакциями, фактически большинство запросов не могут выполняться вне транзакции. В JDBC API нам нужно написать код для управления транзакциями с использованием фиксации и отката.
  4. JDBC API генерирует SQLException, которое является проверенным исключением, поэтому нам нужно написать много кода блока try-catch. В большинстве случаев он избыточен в каждом вызове JDBC и используется для управления транзакциями. Hibernate оборачивает исключения JDBC и генерирует непроверенное исключение JDBCException или HibernateException, поэтому нам не нужно писать код для его обработки. Встроенное управление транзакциями Hibernate устраняет использование блоков try-catch.
  5. Hibernate Query Language (HQL) более объектно-ориентирован и близок к языку программирования Java. Для JDBC нам нужно написать собственные SQL-запросы.
  6. Hibernate поддерживает кэширование, которое лучше для производительности, запросы JDBC не кэшируются, поэтому производительность низкая.
  7. Hibernate предоставляет опцию, с помощью которой мы также можем создавать таблицы базы данных, поскольку таблицы JDBC должны существовать в базе данных.
  8. Конфигурация Hibernate помогает нам использовать JDBC-подобное соединение, а также JNDI DataSource для пула соединений. Это очень важная функция корпоративного приложения, полностью отсутствующая в JDBC API.
  9. Hibernate поддерживает аннотации JPA, поэтому код не зависит от реализации и легко заменяется другими инструментами ORM. Код JDBC очень тесно связан с приложением.

JSP — вопросы на собеседовании по Java

1. Каковы методы жизненного цикла jsp?

МетодыОписание
 общественная пустота jspInit()Он вызывается только один раз, как и метод инициализации сервлета.
public void _jspService (запрос ServletRequest, ServletResponse) выдает ServletException, IOExceptionОн вызывается при каждом запросе, так же как и метод service() сервлета.
 публичная пустота jspDestroy()Он вызывается только один раз, как и метод destroy() сервлета.

2. Что такое неявные объекты JSP?

JSP по умолчанию предоставляет 9 неявных объектов. Они следующие:

ОбъектТип
1) вне JspWriter
2) просьба HttpServletRequest
3) ответ HttpServletResponse
4) конфиг Конфигурация сервлетов
5) сессия HttpSession
6) приложение Контекст сервлета
7) Контекст страницы Контекст страницы
8) страница Объект
9) исключение Метательный

3. В чем разница между директивой include и действием include?

включить директивувключить действие
Директива include включает содержимое во время перевода страницы.Действие включения включает содержимое во время запроса.
Директива include включает исходное содержимое страницы, поэтому размер страницы увеличивается во время выполнения.Действие включения не включает исходное содержимое, а вызывает метод include() класса, предоставленного поставщиком.
 Это лучше для статических страниц. Это лучше для динамических страниц.

4. Как отключить кэширование кнопки «Назад» в браузере?

<%
response.setHeader(“Cache-Control”,”no-store”);
response.setHeader(“Pragma”,”no-cache”);
response.setHeader (“Expires”, “0”);                    //prevents caching at the proxy server
%>  

5. Какие различные теги предусмотрены в JSTL?

Существует 5 типов тегов JSTL.

  1. основные теги
  2. SQL-теги
  3. XML-теги
  4. теги интернационализации
  5. теги функций

6. Как отключить сеанс в JSP?

<%@ page session=“false” %>   

7. Как удалить куки в JSP?

Следующий код объясняет, как удалить Cookie в JSP:

Cookie mycook = new Cookie("name1","value1");
 
response.addCookie(mycook1);
 
Cookie killmycook = new Cookie("mycook1","value1");
 
killmycook . set MaxAge ( 0 );
 
killmycook . set Path ("/");
 
killmycook . addCookie ( killmycook 1 );

8. Объясните метод jspDestroy().

Метод jspDestry() вызывается из интерфейса javax.servlet.jsp.JspPage всякий раз, когда страница JSP собирается быть уничтоженной. Методы уничтожения сервлетов можно легко переопределить для выполнения очистки, например, при закрытии соединения с базой данных.

9. Чем JSP лучше технологии Servlet?

JSP — это технология на стороне сервера, упрощающая создание контента. Они ориентированы на документы, тогда как сервлеты — это программы. Страница Java-сервера может содержать фрагменты программы Java, которые выполняют и создают экземпляры классов Java. Однако они встречаются внутри файла шаблона HTML. Он обеспечивает основу для разработки веб-приложения.

10. Почему нам не следует настраивать стандартные теги JSP в web.xml?

 

Нам не нужно настраивать стандартные теги JSP в web.xml, потому что когда контейнер загружает веб-приложение и находит файлы TLD, он автоматически настраивает их для использования непосредственно на страницах JSP приложения. Нам просто нужно включить его на страницу JSP с помощью директивы taglib.

11. Как вы будете использовать JSP EL для получения имени метода HTTP?

Используя неявный объект pageContext JSP EL, вы можете получить ссылку на объект запроса и использовать оператор точки для получения имени метода HTTP на странице JSP. Код JSP EL для этой цели будет выглядеть как ${pageContext.request.method}.


Exception and Thread Java Interview Вопросы

Q1. В чем разница между ошибкой и исключением?

Ошибка — это неустранимое состояние, возникающее во время выполнения. Например, ошибка OutOfMemory. Эти ошибки JVM нельзя исправить во время выполнения. Хотя ошибка может быть обнаружена в блоке catch, выполнение приложения будет остановлено и не будет восстановлено.

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

Q2. Как вы можете обрабатывать исключения Java?

Для обработки исключений в Java используются пять ключевых слов: 

  1. пытаться
  2. ловить
  3. в конце концов
  4. бросать
  5. бросает

Q3. В чем разница между Checked Exception и Unchecked Exception?

проверенное исключение

  • Классы, расширяющие класс Throwable, за исключением RuntimeException и Error, называются проверенными исключениями.
  • Проверенные исключения проверяются во время компиляции.
  • Пример: IOException, SQLException и т. д.

Непроверенное исключение

  • Классы, расширяющие RuntimeException, называются непроверенными исключениями.
  • Непроверенные исключения не проверяются во время компиляции.
  • Пример: ArithmeticException, NullPointerException и т. д.

Q4. Каковы различные способы использования потоков?

Существует два способа создания потока:

  • Расширение класса Thread

Это создает поток, создавая экземпляр нового класса, который расширяет класс Thread. Расширяющий класс должен переопределить функцию run(), которая является точкой входа потока.

  • Реализация интерфейса Runnable

Это самый простой способ создать поток, создав класс, реализующий исполняемый интерфейс. После реализации интерфейса runnable класс должен реализовать метод public void run()().

Метод run() создает параллельный поток в вашей программе. Когда run() вернется, поток завершится.

Метод run() создает параллельный поток в вашей программе. Когда run() вернется, поток завершится.

В методе run() вы должны указать код потока.

Как и любой другой метод, метод run() может вызывать другие методы, использовать другие классы и определять переменные.

Java работает как феномен «передачи по значению» или «передачи по ссылке»?

Java всегда передается по значению. Это означает, что он создает копию содержимого параметра в памяти. В Java объектные переменные всегда относятся к реальному объекту кучи памяти.

Q5. Будет ли выполняться блок finally, если оператор return будет записан в конце блока try и блока catch, как показано ниже?

Блок finally всегда выполняется, даже если оператор return написан в конце блока try и блока catch. Он всегда выполняется, независимо от того, есть исключение или нет. Есть только несколько ситуаций, в которых блок finally не выполняется, например, сбой виртуальной машины, сбой питания, сбой программного обеспечения и т. д. Если вы не хотите выполнять блок finally, вам нужно вызвать System.exit(). явно в блоке finally.

 

Q6. Как исключение распространяется в коде?

Если исключение не перехвачено, оно выбрасывается с вершины стека и падает вниз по стеку вызовов к предыдущей процедуре. Если исключение там не перехвачено, оно возвращается к предыдущей функции и так далее, пока оно не будет перехвачено или стек вызовов не достигнет дна. Термин для этого — распространение исключений.

 

Q7. Можете ли вы объяснить жизненный цикл потока Java?

Жизненный цикл потока Java имеет следующие состояния:

Новый-

Когда поток создан и до того, как программа запустит поток, он находится в новом состоянии. Его также называют родившейся нитью.

 Запускаемый

Когда поток запущен, он находится в состоянии Runnable. В этом состоянии поток выполняет свою задачу.

Ожидающий

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

Ожидание по времени

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

Прекращено

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

Q8. Какую цель выполняют ключевые слова final, finally и finalize? 

Финал:

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

class FinalVarExample {
public static void main( String args[])
{
final int a=10;   // Final variable
a=50;             //Error as value can't be changed
}

Окончательно

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

class FinallyExample {
public static void main(String args[]){
try {
int x=100;
}
catch(Exception e) {
System.out.println(e);
}
finally {
System.out.println("finally block is executing");}
}}
}

Завершить

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

class FinalizeExample {
public void finalize() {
System.out.println("Finalize is called");
}
public static void main(String args[])
{
FinalizeExample f1=new FinalizeExample();
FinalizeExample f2=new FinalizeExample();
f1= NULL;
f2=NULL;
System.gc();
}
}

Q9. В чем разница между броском и броском? 

бросить ключевое словобросает ключевое слово
Throw используется для явного создания исключения.Броски используются для объявления исключения.
Проверенные исключения не могут распространяться только с помощью throw.Проверенные исключения могут распространяться с помощью бросков.
За броском следует экземпляр.За бросками следует класс.
Throw используется внутри метода.Throws используется с сигнатурой метода.
Вы не можете генерировать несколько исключенийВы можете объявить несколько исключений, например, public void method() выдает IOException, SQLException.

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

Q10. Что такое иерархия исключений в Java?

Иерархия выглядит следующим образом:

Throwable является родительским классом для всех классов Exception. Существует два типа исключений: Checked исключения и UncheckedExceptions или RunTimeExceptions. Оба типа исключений расширяют класс исключений, тогда как ошибки далее классифицируются как ошибка виртуальной машины и ошибка утверждения.

ExceptionHierarchy — Вопросы для собеседования по Java — Edureka

Q11. Как создать пользовательское исключение?

Чтобы создать собственное исключение, расширьте класс Exception или любой из его подклассов.

  • class New1Exception extends Exception { } // это создаст Checked Exception
  • class NewException extends IOException { } // это создаст исключение Checked
  • class NewException extends NullPonterExcpetion { } // это создаст исключение UnChecked

Q12. Каковы важные методы класса Java Exception?

Exception и все его подклассы не предоставляют никаких конкретных методов, и все методы определены в базовом классе Throwable.

  1. String getMessage () — этот метод возвращает строку сообщения Throwable, и сообщение может быть предоставлено при создании исключения через его конструктор.
  2. String getLocalizedMessage( ) — этот метод предоставляется для того, чтобы подклассы могли переопределить его, чтобы предоставить вызывающей программе сообщение, зависящее от локали. Реализация класса Throwable этого метода просто использует метод getMessage() для возврата сообщения об исключении.
  3. Synchronized Throwable getCause() — этот метод возвращает причину исключения или нулевой идентификатор, причина которого неизвестна.
  4. String toString() — этот метод возвращает информацию о Throwable в формате String, возвращаемая строка содержит имя класса Throwable и локализованное сообщение.
  5. void printStackTrace() — этот метод печатает информацию о трассировке стека в стандартный поток ошибок, этот метод перегружен, и мы можем передать PrintStream или PrintWriter в качестве аргумента для записи информации о трассировке стека в файл или поток.

Q13. В чем разница между процессами и потоками?

 ПроцессНить
ОпределениеВыполняемый экземпляр программы называется процессом.Поток — это подмножество процесса.
КоммуникацияПроцессы должны использовать межпроцессное взаимодействие для связи с одноуровневыми процессами.Потоки могут напрямую взаимодействовать с другими потоками своего процесса.
КонтрольПроцессы могут осуществлять контроль только над дочерними процессами.Потоки могут осуществлять значительный контроль над потоками одного и того же процесса.
ИзмененияЛюбые изменения в родительском процессе не влияют на дочерние процессы.Любое изменение в основном потоке может повлиять на поведение других потоков процесса.
объем памятиЗапуск в отдельных областях памяти.Запуск в разделяемых пространствах памяти.
КонтролируетсяПроцесс контролируется операционной системой.Потоки управляются программистом в программе.
ЗависимостьПроцессы независимы.Потоки зависимы.

Q14. Что такое блок finally? Есть ли случай, когда ваще не исполнится?

Блок finally — это блок, который всегда выполняет набор операторов. Он всегда связан с блоком try, независимо от того, возникло какое-либо исключение или нет. 
Да, finally не будет выполняться, если программа завершится либо вызовом System.exit(), либо вызвав фатальную ошибку, которая приведет к прерыванию процесса.

Q15. Что такое синхронизация?

Синхронизация относится к многопоточности. Синхронизированный блок кода может выполняться только одним потоком за раз. Поскольку Java поддерживает выполнение нескольких потоков, два или более потока могут обращаться к одним и тем же полям или объектам. Синхронизация — это процесс, который синхронизирует все параллельные выполняемые потоки. Синхронизация позволяет избежать ошибок согласованности памяти, вызванных несогласованным представлением общей памяти. Когда метод объявлен как синхронизированный, поток удерживает монитор для объекта этого метода. Если другой поток выполняет синхронизированный метод, поток блокируется до тех пор, пока этот поток не освободит монитор. 

Синхронизация — Вопросы на собеседовании по Java — Edureka

 Q16. Можем ли мы написать несколько блоков catch в одном блоке try? 

Да, у нас может быть несколько блоков catch в одном блоке try, но подход должен быть от конкретного к общему. Давайте разберемся с этим на программном примере.

public class Example {
public static void main(String args[]) {
try {
int a[]= new int[10];
a[10]= 10/0;
}
catch(ArithmeticException e)
{
System.out.println("Arithmetic exception in first catch block");
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Array index out of bounds in second catch block");
}
catch(Exception e)
{
System.out.println("Any exception in third catch block");
}
}

Q17. Каковы важные методы класса Java Exception?

Методы определены в базовом классе Throwable. Некоторые из важных методов класса исключений Java указаны ниже. 

  1. String getMessage() — этот метод возвращает строку сообщения об исключении. Сообщение может быть предоставлено через его конструктор.
  2. public StackTraceElement[] getStackTrace() — этот метод возвращает массив, содержащий каждый элемент трассировки стека. Элемент с индексом 0 представляет вершину стека вызовов, тогда как последний элемент в массиве представляет метод в нижней части стека вызовов.

Synchronized Throwable getCause() — этот метод возвращает причину исключения или нулевой идентификатор, представленный объектом Throwable.

  1. String toString() — этот метод возвращает информацию в формате String. Возвращаемая строка содержит имя класса Throwable и локализованное сообщение.
  2. void printStackTrace() — этот метод печатает информацию о трассировке стека в стандартный поток ошибок.

Q18. Что такое OutOfMemoryError в Java?

OutOfMemoryError — это подкласс java.lang.Error, который обычно возникает, когда нашей JVM не хватает памяти.

Q19. Что такое нить?

Поток — это наименьшая часть запрограммированных инструкций, которая может выполняться планировщиком независимо. В Java все программы будут иметь по крайней мере один поток, известный как основной поток. Этот основной поток создается JVM, когда программа начинает свое выполнение. Основной поток используется для вызова функции main() программы.

Q20. Каковы два способа создания потока?

В Java потоки могут быть созданы двумя способами: 

  • Путем реализации интерфейса Runnable.
  • Расширяя поток

Q21. Какие существуют типы сборщиков мусора в Java?

Сборка мусора на Java — программа, которая помогает в неявном управлении памятью. Поскольку в Java с помощью нового ключевого слова вы можете динамически создавать объекты, которые после создания будут потреблять некоторую память. Как только работа выполнена и на объект больше не осталось ссылок, Java с помощью сборки мусора уничтожает объект и освобождает занимаемую им память. Java предоставляет четыре типа сборщиков мусора:

  • Серийный сборщик мусора
  • Параллельный сборщик мусора
  • Сборщик мусора CMS
  • Сборщик мусора G1

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

Оригинальный источник статьи на https://www.edureka.co

Samanta  Moore

Samanta Moore

1620458875

Going Beyond Java 8: Local Variable Type Inference (var) - DZone Java

According to some surveys, such as JetBrains’s great survey, Java 8 is currently the most used version of Java, despite being a 2014 release.

What you are reading is one in a series of articles titled ‘Going beyond Java 8,’ inspired by the contents of my book, Java for Aliens. These articles will guide you step-by-step through the most important features introduced to the language, starting from version 9. The aim is to make you aware of how important it is to move forward from Java 8, explaining the enormous advantages that the latest versions of the language offer.

In this article, we will talk about the most important new feature introduced with Java 10. Officially called local variable type inference, this feature is better known as the **introduction of the word **var. Despite the complicated name, it is actually quite a simple feature to use. However, some observations need to be made before we can see the impact that the introduction of the word var has on other pre-existing characteristics.

#java #java 11 #java 10 #java 12 #var #java 14 #java 13 #java 15 #verbosity

Samanta  Moore

Samanta Moore

1620462686

Spring Boot and Java 16 Records

In this article, we will discuss Java 16’s newest feature, Records. Then we will apply this knowledge and use it in conjunction with a Spring Boot application.

On March 16th, 2021, Java 16 was GA. With this new release, tons of new exciting features have been added. Check out the release notes to know more about these changes in detail. This article’s focus will be on Java Records, which got delivered with JEP 395. Records were first introduced in JDK 14 as a preview feature proposed by JEP 359, and with JDK 15, they remained in preview with JEP 384. However, with JDK 16, Records are no longer in preview.

I have picked Records because they are definitely the most favored feature added in Java 16, according to this Twitter poll by Java Champion Mala Gupta.

I also conducted a similar survey, but it was focused on features from Java 8 onwards. The results were not unexpected, as Java 8 is still widely used. Very unfortunate, though, as tons of new features and improvements are added to newer Java versions. But in terms of features, Java 8 was definitely a game-changer from a developer perspective.

So let’s discuss what the fuss is about Java Records.

#java #springboot #java programming #records #java tutorials #java programmer #java records #java 16

Seamus  Quitzon

Seamus Quitzon

1602637135

Learning by Doing: How to Learn Java Basics by Building Your Own Project

Java is not the hardest language to start with. So, it becomes way popular among novice developers joining the ranks of Java coders every single day. If you are reading this blog post, you might be interested in learning Java.

Java is widely used across industry, and especially in the area of Enterprise software, which results in many high paying job opportunities and makes this programming language a common language for newbies. A general promotion of it within colleges and other institutions providing a formal Computer Science education also contributes to its popularity.

However, these are not the only advantages of Java — among other things, it allows you to adopt good practices and makes it way easier to learn other languages in the future. And with no doubt, you can easily learn it if you’re following the right approach. In this post, I am going to share some of them with you.

The Importance of Practice in Programming

Beyond all doubt, practice is important and valuable. But, before we get to the advantages of hands-on experience, I want to draw your attention to one essential thing I often tell my students.

New programmers who are just learning and start implementing things, without being supervised, often end up adapting bad practices. To avoid that, especially when you are making your first steps in programming, I recommend looking for a person who will supervise you and teach you. A strong mentorship with someone engaged in a serious project, as well as communication within the community in the form of sharing code and asking for feedback, is worth the effort. Similarly, when you are applying for your first job, you want to be looking for a company with a strong team and a good leader who would be keen on investing into your learning.

Now, let’s return to practical experience. Learning by doing is different from learning by passively consuming the information. To make sure we can use all the newly acquired technology, we should put our skills to test and write tons of code. The benefits of hands-on experience are almost endless.

Efficiency and Productivity

By practicing, you get a clear understanding of what programming is. Consequently, you start doing better with each new hands-on task, complete it faster, and thus become more productive.

Even if you are not working on real-world projects yet, it’s important to get used to having deadlines. They are inextricably linked to the programming process. My recommendation is to set up your own deadlines while practicing stage and follow them as closely as possible.

#java #learn java #java code #learn java in easy way #learn java course #learn java development