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

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

  • Единственным условием для запуска этого байт-кода является наличие на машине установленной среды выполнения (JRE).

2. Почему Java не является чисто объектно-ориентированным языком?

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

3. Разница между кучей и стековой памятью в java. И как java использует это.

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

Пример. Рассмотрите приведенную ниже Java-программу:

class Main {
public void printArray(int[] array){
for(int i : array)
System.out.println(i);
}
public static void main(String args[]) {
int[] array = new int[10];
printArray(array);
}
}

Для этой Java-программы. Память стека и кучи, занимаемая java, -

Main и PrintArray — это метод, который будет доступен в области стека, а также объявленные переменные, которые также будут находиться в области стека.

И объект (целочисленный массив размером 10), который мы создали, будет доступен в области кучи, потому что это пространство будет выделено программе во время выполнения.

4. Можно ли назвать Java полным объектно-ориентированным языком программирования?

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

Но также, если мы скажем, что java не является полностью объектно-ориентированным языком программирования, потому что он поддерживает примитивные типы данных, такие как int, float, char, boolean, double и т. д.

Теперь вопрос: Является ли java полностью объектно-ориентированным языком программирования? Можно сказать, что — Java не является чисто объектно-ориентированным языком программирования, потому что он имеет прямой доступ к примитивным типам данных. И эти примитивные типы данных не относятся напрямую к классам Integer.

5. Чем Java отличается от C++?

  • C++ — это только компилируемый язык, тогда как Java компилируется так же, как и интерпретируемый язык.
  • Программы на Java не зависят от машины, тогда как программа на С++ может работать только на той машине, на которой она скомпилирована.
  • C++ позволяет пользователям использовать указатели в программе. В то время как java этого не позволяет. Java внутренне использует указатели.
  • C++ поддерживает концепцию множественного наследования, тогда как Java этого не поддерживает. И это связано с тем, чтобы избежать сложности двусмысленности имени, которая вызывает проблему алмаза.

6. Указатели используются в C/C++. Почему Java не использует указатели?

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

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

7. Что вы понимаете под переменной экземпляра и локальной переменной?

Переменные экземпляра — это переменные, доступные для всех методов класса. Они объявляются вне методов и внутри класса. Эти переменные описывают свойства объекта и остаются привязанными к нему любой ценой.

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

Пример:

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}

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

Пример:

public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}

8. Какие значения по умолчанию присваиваются переменным и экземплярам в java?

  • В java нет значений по умолчанию для переменных. Нам нужно инициализировать значение перед его использованием. В противном случае будет выдана ошибка компиляции (Возможно, переменная не инициализирована).
  • Но, например, если мы создадим объект, то значение по умолчанию будет инициализировано конструктором по умолчанию в зависимости от типа данных.
  • Если это ссылка, то ей будет присвоено значение null.
  • Если он числовой, то ему будет присвоено значение 0.
  • Если это логическое значение, то ему будет присвоено значение false. И т. д.

9. Что вы подразумеваете под инкапсуляцией данных?

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

10. Расскажите нам что-нибудь о JIT-компиляторе.

  • JIT расшифровывается как Just-In-Time и используется для повышения производительности во время выполнения. Он выполняет задачу одновременной компиляции частей байтового кода, имеющих сходную функциональность, тем самым сокращая время компиляции для запуска кода.
  • Компилятор — это не что иное, как транслятор исходного кода в машинно-исполняемый код. Но что особенного в компиляторе JIT? Давайте посмотрим, как это работает:
  • Во-первых, преобразование исходного кода Java (.java) в байтовый код (.class) происходит с помощью компилятора javac.
  • Затем файлы .class загружаются JVM во время выполнения и с помощью интерпретатора преобразуются в понятный машинному коду.
  • Компилятор JIT является частью JVM. Когда компилятор JIT включен, JVM анализирует вызовы методов в файлах .class и компилирует их, чтобы получить более эффективный и собственный код. Это также гарантирует, что приоритетные вызовы методов оптимизированы.
  • После выполнения вышеуказанного шага JVM выполняет оптимизированный код напрямую, а не снова интерпретирует код. Это увеличивает производительность и скорость выполнения.

11. Можете ли вы сказать, в чем разница между методом equals() и оператором равенства (==) в Java?

Мы уже знакомы с оператором (==) equals. Что мы использовали это, чтобы сравнить равенство значений. Но когда мы говорим о терминах объектно-ориентированного программирования, мы имеем дело со значениями в форме объектов. И этот объект может содержать несколько типов данных. Поэтому использование оператора (==) в этом случае не работает. Поэтому нам нужно использовать метод .equals().

Обе основные функции [(==) и .equals()] предназначены для сравнения значений, но второстепенные функции различаются.

Итак, чтобы лучше понять это, давайте рассмотрим это на примере -

String str1 = "SoftwareTechIT";
String str2 = "SoftwareTechIT";
System.out.println(str1 == str2);

Этот код будет печатать true. Мы знаем, что обе строки равны, поэтому будет напечатано true. Но здесь (==) операторы в этом случае не сравнивают каждый символ. Он сравнивает расположение памяти. А поскольку строка использует постоянный пул для хранения значений в памяти, обе строки str1 и str2 хранятся в одной и той же ячейке памяти. См. подробное объяснение в вопросе № 73: Ссылка.

Теперь, если мы немного изменим программу с помощью -

String str1 = new String("SoftwareTechIT");

Строка str2 = «SoftwareTechIT»;

System.out.println(str1 == str2);

Тогда в этом случае он напечатает false. Потому что здесь больше не используются концепции постоянного пула. Здесь выделяется новая память. Итак, здесь адрес памяти другой, поэтому ( == ) Оператор возвращает false. Но фишка в том, что значения одинаковы в обеих строках. Итак, как сравнить значения? Здесь используется метод .equals().

Метод .equals() сравнивает значения и возвращает соответствующий результат. Если мы изменим приведенный выше код с помощью -

System.out.println(str1.equals(str2));

Затем он возвращает истину.

equals() ==Это метод, определенный в классе Object. Это бинарный оператор в Java. Метод .equals() присутствует в классе Object, поэтому мы можем переопределить наш пользовательский метод .equals() в пользовательском классе для сравнения объектов. Его нельзя изменить. Они всегда сравнивают HashCode. Этот метод используется для проверки равенства содержимого между двумя объектами в соответствии с указанной бизнес-логикой. Этот оператор используется для сравнения адресов (или ссылок), т.е. проверяет, указывают ли оба объекта на одну и ту же память. расположение.

Примечание.

  • В тех случаях, когда метод equals не переопределен в классе, класс использует реализацию метода equals по умолчанию, наиболее близкую к родительскому классу.
  • Класс объекта считается родительским классом всех классов Java. Реализация метода equals в классе Object использует оператор == для сравнения двух объектов. Эта реализация по умолчанию может быть переопределена в соответствии с бизнес-логикой.

12. Как объявляется бесконечный цикл в Java?

Бесконечные циклы — это такие циклы, которые выполняются бесконечно без каких-либо условий прерывания. Некоторые примеры сознательного объявления бесконечного цикла:

  • Использование цикла:
for (;;)
{
// Business logic
// Any break logic
}
  • Использование цикла while:
while(true){
// Business logic
// Any break logic
}
  • Использование цикла do-while:
do{
// Business logic
// Any break logic
}while(true);

Вопросы для интервью по Java для первокурсников

Вопросы и ответы с множественным выбором Core Java | Вопросы для собеседования по Java Basic | Самые часто задаваемые вопросы по Java в интервью

Интервью по классам и объектам Java MCQ Вопросы и ответы 2 | Вопросы и ответы MCQ по классам и объектам Java.

Интервью по классам и объектам Java MCQ Вопросы и ответы 1 | Вопросы и ответы MCQ по классам и объектам Java

Массивы Java и многомерные массивы Интервью Вопросы и ответы MCQ | Вопросы и ответы MCQ по массивам Java и многомерным массивам

«Java Loops WHILE FOR DO WHILE Интервью MCQ Вопросы и ответы | Вопросы и ответы MCQ по циклам Java, а именно по операторам FOR, WHILE, DO WHILE и Break & Continue Label.

Интервью по Java Switch Case MCQ Вопросы и ответы | Интервью с вопросами и ответами MCQ по заявлениям о случае Java Switch.

Java IF ELSE IF Операторы управления Интервью MCQ Вопросы и ответы | Интервью с вопросами и ответами MCQ по управляющим операторам Java IF ELSE IF.

Тернарный оператор Java (условный) Интервью MCQ Вопросы и ответы | изучите интервью MCQ Вопросы и ответы о тернарном операторе или условном операторе Java.

Java MCQ: вопросы и ответы по побитовым операторам 2 | Вопросы и ответы Java MCQ по побитовым операторам