Статьи

Основные вопросы интервью Java

В. Что если основной метод объявлен как закрытый?

Ответ:

Программа компилируется правильно, но во время выполнения выдает «Основной метод не публичный». сообщение.

В. Что подразумевается под передачей по ссылке и передачей по значению в Java?

Ответ:

Передача по ссылке означает передачу самого адреса , а не передачу значения. Передача по значению означает передачу копии значения.

В. Если вы переопределяете метод equals () объекта, какой другой метод вы также можете рассмотреть?

Ответ:

хэш-код()

В. Что такое байт-код?

Или же

Q. Что дает Java это «пиши один раз и беги куда угодно»?

Ответ:

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

В. Объясните причину для каждого ключевого слова public static void main (String args [])?

Ответ:

  • public — main (..) — это первый метод, вызываемый средой Java, когда программа выполняется, поэтому она должна быть доступна из среды Java. Следовательно, спецификатор доступа должен быть публичным.
  • static : среда Java должна иметь возможность вызывать этот метод без создания экземпляра класса, поэтому этот метод должен быть объявлен как static.
  • void : main ничего не возвращает, поэтому тип возвращаемого значения должен быть void

Аргумент String указывает тип аргумента, который задается в командной строке, а arg является массивом для строки, заданной в командной строке.

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

Или же

Q. в чем разница между == и равно

Или же

Q. Разница между == и методом equals

Или же

В. Что бы вы использовали для сравнения двух строковых переменных — оператора == или метода equals ()?

Или же

В. Как возможно, чтобы два объекта String с одинаковыми значениями не были равны в операторе ==?

Ответ:

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

== сравнивает ссылки, а .equals сравнивает содержимое. Метод public boolean equals (Object obj) предоставляется классом Object и может быть переопределен. Реализация по умолчанию возвращает true, только если объект сравнивается с самим собой, что эквивалентно оператору равенства ==, используемому для сравнения псевдонимов с объектом. String, BitSet, Date и File переопределяют метод equals (). Для двух объектов String равенство значений означает, что они содержат одинаковую последовательность символов. Для классов Wrapper равенство значений означает, что примитивные значения равны.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
public class EqualsTest {
 
               public static void main(String[] args) {
 
                               String s1 = “abc”;
                               String s2 = s1;
                               String s5 = “abc”;
                               String s3 = new String(”abc”);
                               String s4 = new String(”abc”);
                               System.out.println(”== comparison : ” + (s1 == s5));
                               System.out.println(”== comparison : ” + (s1 == s2));
                               System.out.println(”Using equals method : ” + s1.equals(s2));
                               System.out.println(”== comparison : ” + s3 == s4);
                               System.out.println(”Using equals method : ” + s3.equals(s4));
               }
}

Выход

1
2
3
4
5
== comparison : true
== comparison : true
Using equals method : true
false
Using equals method : true

В. Что если статический модификатор будет удален из сигнатуры основного метода?

Или же

В. Что если я не предоставлю массив String в качестве аргумента метода?

Ответ:

Программа компилируется. Но во время выполнения выдает ошибку «NoSuchMethodError».

В. Почему драйвер оракула типа 4 назван драйвером оракула?

Ответ:

Oracle предоставляет драйвер JDBC типа 4, называемый «тонким» драйвером Oracle. Этот драйвер включает собственную реализацию TCP / IP-версии Oracle Net8, полностью написанную на Java, поэтому он не зависит от платформы, может загружаться в браузер во время выполнения и не требует никакого программного обеспечения Oracle на стороне клиента. Для этого драйвера требуется прослушиватель TCP / IP на стороне сервера, а в строке подключения клиента используется адрес порта TCP / IP, а не запись TNSNAMES для имени базы данных.

В. В чем разница между финалом, финалом и финализацией? Что вы понимаете под последним ключевым словом Java?

Или же

В. Что такое final, finalize () и наконец?

Или же

В. Что такое метод finalize ()?

Или же

В. Что означает, что класс или член является окончательным?

Ответ:

  • final — объявить константу
  • наконец — обрабатывает исключение
  • доработать — помогает в сборке мусора

Переменные, определенные в интерфейсе, неявно являются окончательными. Последний класс не может быть расширен, т. Е. Последний класс не может быть разделен на подклассы. Это делается из соображений безопасности с помощью базовых классов, таких как String и Integer. Это также позволяет компилятору вносить некоторые оптимизации и немного облегчает достижение безопасности потоков. Последний метод не может быть переопределен, когда его класс наследуется. Вы не можете изменить значение конечной переменной (является константой). Метод finalize () используется непосредственно перед уничтожением объекта и сборкой мусора. наконец, ключевое слово, используемое при обработке исключений, и будет выполнено независимо от того, было ли выброшено исключение. Например, закрытие открытых соединений выполняется методом finally.

В. Что такое Java API?

Ответ:

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

В. Что такое класс GregorianCalendar?

Ответ:

GregorianCalendar обеспечивает поддержку традиционных западных календарей.

В. Что такое класс ResourceBundle?

Ответ:

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

В. Почему в Java нет глобальных переменных?

Ответ:

Глобальные переменные доступны глобально. Java не поддерживает глобально доступные переменные по следующим причинам:

  • Глобальные переменные нарушают прозрачность ссылок
  • Глобальные переменные создают коллизии в пространстве имен .

Q. Как преобразовать строку в число в Java-программе?

Ответ:

Функция valueOf () класса Integer используется для преобразования строки в число. Вот пример кода:

1
2
String numString = “1000″;
int id=Integer.valueOf(numString).intValue();

В. Что такое класс SimpleTimeZone?

Ответ:

Класс SimpleTimeZone обеспечивает поддержку григорианского календаря.

В. В чем разница между оператором while и оператором do?

Ответ:

Оператор while (pre test) проверяет начало цикла, чтобы увидеть, должна ли произойти следующая итерация цикла. Оператор do while (post test) проверяет в конце цикла, чтобы увидеть, должна ли произойти следующая итерация цикла. Оператор do всегда будет выполнять тело цикла хотя бы один раз.

В. Что такое класс Locale?

Ответ:

Класс Locale используется для адаптации вывода программы к соглашениям определенного географического, политического или культурного региона.

Q. Опишите принципы OOPS.

Ответ:

Существует три основных принципа упс, которые называются полиморфизмом, наследованием и инкапсуляцией.

В. Объясните принцип наследования.

Ответ:

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

В. Что такое неявное приведение?

Ответ:

Неявное приведение — это процесс простого присвоения одного объекта другому без каких-либо указаний по преобразованию для компилятора. Этот тип приведения не разрешен во всех видах преобразований и может работать не для всех сценариев.

пример

1
2
int i = 1000;
long j = i; //Implicit casting

В. Является ли sizeof ключевым словом в Java?

Ответ:

Sizeof не является ключевым словом.

В. Что такое нативный метод?

Ответ:

Нативный метод — это метод, который реализован на языке, отличном от Java.

В. Что такое System, out и println в System.out.println ()?

Ответ:

Система — это предопределенный конечный класс, out — это объект PrintStream, а println — встроенный перегруженный метод в выходном объекте.

В. Что такое инкапсуляция, наследование и полиморфизм

Или же

В. Объясните принцип полиморфизма. Объясните различные формы полиморфизма.

Ответ:

Полиморфизм в простых терминах означает одно имя много форм . Полиморфизм позволяет использовать одну сущность в качестве общей категории для различных типов действий. Конкретное действие определяется точным характером ситуации.

Полиморфизм существует в трех различных формах в Java:

  • Перегрузка метода
  • Переопределение метода через наследование
  • Переопределение метода через интерфейс Java

В. Что такое явное приведение?

Ответ:

Явное приведение в процессе, в котором компилятор получает специальную информацию о преобразовании объекта.

пример

1
2
long i = 700.20;
int j = (int) i; //Explicit casting

В. Что такое виртуальная машина Java (JVM)?

Ответ:

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

Q. Что вы понимаете под унынием?

Ответ:

Процесс Downcasting относится к приведению от общего к более конкретному типу, то есть приведению к иерархии.

В. Что такое спецификаторы доступа Java?

Или же

В. В чем разница между общими, частными, защищенными и заданными по умолчанию спецификаторами доступа?

Или же

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

Ответ:

Спецификаторы доступа — это ключевые слова, которые определяют тип доступа к члену класса. Эти ключевые слова предназначены для предоставления привилегий частям программы, таким как функции и переменные. Эти:

  • Общедоступный: доступный для всех классов
  • Защищено : доступно для классов в одном пакете и любых подклассов.
  • Частное: доступно только для класса, к которому они принадлежат
  • По умолчанию: доступно для класса, к которому они принадлежат, и для подклассов в одном пакете

В. Какой класс является суперклассом каждого класса?

Ответ:

Объект.

Q. Назовите примитивные типы Java.

Ответ:

8 простых типов: byte, char, short, int, long, float, double и boolean. Дополнительным является String.

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

Или же

В. Что такое « переменные класса »?

Или же

В. Что такое статика в Java?

Или же

В. Что такое статический метод?

Ответ:

Статическая переменная связана с классом в целом, а не с конкретными экземплярами класса. Каждый объект будет иметь общую копию статических переменных, т. Е. Существует только одна копия на класс, независимо от того, сколько объектов создано из него. Переменные класса или статические переменные объявляются с ключевым словом static в классе. Они объявлены вне класса и хранятся в статической памяти. Переменные класса в основном используются для констант. Статические переменные всегда вызываются по имени класса. Эта переменная создается при запуске программы и уничтожается при ее остановке. Область действия переменной класса — это та же переменная экземпляра. Его начальное значение совпадает с переменной экземпляра и получает значение по умолчанию, если оно не инициализировано в соответствии с типом данных. Точно так же статический метод — это метод, который принадлежит классу, а не любому объекту класса, и не применяется к объекту или даже требует, чтобы были созданы какие-либо объекты класса. Статические методы неявно являются окончательными, поскольку переопределение выполняется на основе типа объекта, а статические методы присоединяются к классу, а не к объекту. Статический метод в суперклассе может быть затенен другим статическим методом в подклассе, если исходный метод не был объявлен как final. Однако вы не можете переопределить статический метод нестатическим методом. Другими словами, вы не можете изменить статический метод на метод экземпляра в подклассе.

Нестатические переменные принимают уникальные значения с каждым экземпляром объекта.

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

Ответ:

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

В. Как Java обрабатывает целочисленные переполнения и потери?

Ответ:

Он использует младшие байты результата, которые могут соответствовать размеру типа, разрешенного операцией.

В. Что если я напишу static public void вместо public static void?

Ответ:

Программа компилируется и работает правильно.

В. В чем разница между объявлением переменной и определением переменной?

Ответ:

В объявлении мы упоминаем только тип переменной и ее имя без инициализации. Определение означает объявление + инициализация. Например, String s; это просто объявление, а String s = new String (”bob”); Или Строка s = «Боб»; оба определения.

В. Какой тип передачи параметров поддерживает Java?

Ответ:

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

В. Объясните принцип инкапсуляции.

Ответ:

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

В. Что вы понимаете под переменной?

Ответ:

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

В. Что вы понимаете под числовым продвижением?

Ответ:

Числовое продвижение — это преобразование меньшего числового типа в больший числовой тип, так что могут выполняться целочисленные операции и операции с плавающей точкой В процессе численного продвижения байты, символы и короткие значения преобразуются в значения int. При необходимости значения int также преобразуются в длинные значения. При необходимости значения long и float преобразуются в двойные значения.

В. Что вы понимаете под кастингом на языке Java? Какие бывают виды кастинга?

Ответ:

Процесс преобразования одного типа данных в другой называется преобразованием. Есть два типа приведения в Java; это неявное приведение и явное приведение.

В. Каков первый аргумент массива String в методе main?

Ответ:

Массив String пуст. У этого нет никакого элемента. Это не похоже на C / C ++, где первым элементом по умолчанию является имя программы. Если мы не предоставим никаких аргументов в командной строке, то массив String метода main будет пустым, но не пустым.

В. Как можно доказать, что массив не пустой, а пустой?

Ответ:

Печать массива. Длина. Он выведет 0. Это означает, что он пуст. Но если бы он был нулевым, он бы выдал исключение NullPointerException при попытке печати array.length.

В. Может ли приложение иметь несколько классов, имеющих метод main?

Ответ:

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

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

Ответ:

Статические переменные загружаются, когда загрузчик классов переносит класс в JVM. Это не обязательно, что объект должен быть создан. Статическим переменным будет выделено пространство памяти после их загрузки. Код в статическом блоке загружается / выполняется только один раз, т.е. когда класс инициализируется впервые. Класс может иметь любое количество статических блоков. Статический блок не является членом класса, у них нет оператора возврата, и они не могут быть вызваны напрямую. Не может содержать это или супер. Они в основном используются для инициализации статических полей.

В. Могу ли я иметь несколько основных методов в одном классе?

Ответ:

У нас может быть несколько перегруженных основных методов, но может быть только один основной метод со следующей сигнатурой:

1
public static void main(String[] args) {}

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

В. Объясните работу виртуальной машины Java (JVM)?

Ответ:

JVM — это абстрактная вычислительная машина, как и любая другая реальная вычислительная машина, которая сначала преобразует файл .java в файл .class с помощью Compiler (.class — это не что иное, как файл байт-кода.), А интерпретатор читает байт-коды.

В. Как я могу поменять две переменные, не используя третью переменную?

Ответ:

Добавьте две переменные и присвойте значение первой переменной. Вычтите Второе значение с результатом Значение. и присвоить второй переменной. Вычтите результат первой переменной из результата второй переменной и присвойте первой переменной. Пример:

1
int a=5,b=10;a=a+b; b=a-b; a=a-b;

Другой подход к тому же вопросу

Вы используете своп XOR. (ЛУЧШИЙ ПОДХОД), так как в случае использования вышеупомянутого подхода, он может быть больше / меньше потока. Например:

1
2
3
4
int a = 5; int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;

В. Что такое инкапсуляция данных?

Ответ:

Инкапсуляция может быть использована путем создания методов get и set в классе (JAVABEAN), которые используются для доступа к полям объекта. Обычно поля делаются закрытыми, а методы get и set являются открытыми. Инкапсуляцию можно использовать для проверки данных, которые должны быть сохранены, для выполнения расчетов с данными, которые хранятся в поле или полях, или для использования при самоанализе (часто, например, при использовании javabeans в Struts). Упаковка данных и функции в единый блок называется инкапсуляцией данных. Инкапсуляция — это не что иное, как объединение данных и связанных с ними методов в единое целое таким образом, чтобы к данным можно было получить доступ с помощью связанных методов. Инкапсуляция обеспечивает безопасность данных. Это не что иное, как сокрытие данных.

В. Что такое API отражения? Как они реализованы?

Ответ:

Отражение — это процесс анализа функций и состояния класса во время выполнения и динамической манипуляции во время выполнения. Это поддерживается с помощью API Reflection со встроенными классами, такими как Class, Method, Fields, Constructors и т. Д. Пример: Используя Java Reflection API, мы можем получить имя класса, используя метод getName.

Q. JVM поддерживает кеш самостоятельно? Распределяет ли JVM объекты в куче? Это куча ОС или куча, поддерживаемая JVM? Зачем

Ответ:

Да, JVM поддерживает кеш самостоятельно. Он создает объекты в HEAP, но ссылки на эти объекты находятся в стеке.

В. Что такое фантомная память?

Ответ:

Призрачная память — ложная память. Память, которой нет в реальности.

В. Может ли метод быть статичным и синхронизированным?

Ответ:

Статический метод может быть синхронизирован. Если вы сделаете это, JVM получит блокировку на java.lang.

Экземпляр класса, связанный с объектом. Это похоже на высказывание:

1
2
synchronized(XYZ.class) {
}

В. В чем разница между String и StringTokenizer?

Ответ:

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

Пример:

1
2
3
4
StringTokenizer st = new StringTokenizer(”Hello World”);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}

Выход:

1
2
Hello
World

Вопрос: Что такое временная переменная?

Ответ:

Переходная переменная не может быть сериализована. Например, если переменная объявлена ​​как переходная в классе Serializable, и класс записан в ObjectStream, значение переменной не может быть записано в поток, вместо этого, когда класс извлекается из ObjectStream, значение переменной становится ноль

Запись

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
transient
 
identifies a variable not to be written out when an
 
instance is serialized  (It can't be copied to remove
 
system)
 
  
 
volatile
 
indicates that the field is used by synchronized threads
 
and that the compiler should not attempt to perform
 
optimizations with it.
 
  
 
When more than one thread share a (volatile) data it is
 
checked every time. Every thread keeps the latest value of volatile variable

Вопрос: Назовите контейнеры, которые используют макет границы в качестве макета по умолчанию?

Ответ:

Контейнеры, которые используют макет границы по умолчанию: классы window, Frame и Dialog.

Вопрос: что вы понимаете под синхронизацией?

Ответ:

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

Например, синхронизация функции:

1
2
3
4
5
public synchronized void Method1 () {
 
// Appropriate method-related code.
 
}

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

1
2
3
4
5
public myFunction (){
    synchronized (this) {
            // Synchronized code here.
         }
}