Суприя 1 марта 2018 г. Ява

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

Java находится в стадии эволюции. Новые версии Java выпускаются еще до того, как вы узнаете последнюю версию. При этом ядро ​​java остается прежним, и с ним нужно уметь разбираться. Мы разделим вопросы на две части.

Прочтите вторую часть - 101 Core Java Interview Questions, чтобы пройти собеседование - Часть 2

В.1: Можем ли мы написать несколько общедоступных классов в одном исходном файле Java?

Нет. Класс, у которого есть метод public static void main (), будет только этот класс, а не другие в одном исходном файле java.

В.2: Почему Java называется платформенно-независимой?

В других языках программирования компилятор создает код для конкретной системы, но компилятор Java создает байт-код (файл .class) для виртуальной машины Java. Когда мы компилируем программу на Java, создается байт-код. Байт-код - это исходный код, который можно использовать для запуска на любой платформе (на нем должна быть JVM).

например Байт-код, созданный в среде Windows, также может быть выполнен в среде Linux.

Это делает платформу Java независимой.

Q.3: Что такое поток в Java и каковы его преимущества?

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

Преимущества

  1. Он не блокирует пользователя, потому что потоки независимы, и вы можете выполнять несколько операций одновременно.
  2. Вы можете выполнять множество операций вместе, что экономит время.
  3. Потоки независимы, поэтому это не влияет на другие потоки, если в одном потоке возникает исключение.

В.4: Какие есть способы создать ветку?

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

1. Путем реализации интерфейса Runnable.

открытый класс ThreadImpl реализует Runnable {@Override public void run () {System.out.println («Запуск потока с исполняемым интерфейсом!»); } public static void main (String [] args) {ThreadImpl tImpl = new ThreadImpl (); Тема t = новая тема (tImpl); t.start (); }}

открытый класс ThreadImpl реализует Runnable {

System.out.println («Запуск потока с исполняемым интерфейсом!»);

public static void main (String [] args) {

ThreadImpl tImpl = новый ThreadImpl ();

Тема t = новая тема (tImpl);

2. Расширяя класс Thread

открытый класс ThreadEx расширяет поток {@Override public void run () {System.out.println («Запуск потока путем расширения класса Thread!»); } public static void main (String [] args) {ThreadEx t = new ThreadEx (); t.start (); }}

открытый класс ThreadEx расширяет Thread {

System.out.println («Запуск потока путем расширения класса Thread!»);

public static void main (String [] args) {

ThreadEx t = новый ThreadEx ();

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

В.5: Можно ли запустить ветку дважды?

Нет. После запуска потока он уже не может быть запущен снова. Если вы это сделаете, будет выброшено исключение IllegalThreadStateException. В таком случае поток будет запущен один раз, но второй раз вызовет исключение.

В.6: В чем разница между методами sleep () и wait ()?

wait () sleep () метод wait () снимает блокировку, метод sleep () не снимает блокировку. это метод класса Object. это метод класса Thread. нестатический метод.

В.7: Что такое межпоточная связь? Как это реализовано?

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

Это реализовано следующими методами класса Object: wait () notify ()

notifyAll ()

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

Q.8: Объясните метод sleep () в Java.

Этот метод класса Thread используется для засыпания потока на указанный период времени.

Синтаксис:

public static void sleep (long miliseconds) выбрасывает InterruptedException public static void sleep (long miliseconds, int nanos) выбрасывает InterruptedException

public static void sleep (длинные миллисекунды) выбрасывает InterruptedException

public static void sleep (long miliseconds, int nanos) выбрасывает InterruptedException

Q.9: Объясните приоритеты потоков.

Каждый поток Java имеет приоритет, который помогает определить порядок, в котором выполняются потоки. Приоритеты потоков Java находятся в диапазоне от MIN_PRIORITY (константа 1) до MAX_PRIORITY (константа 10).

По умолчанию каждому потоку дается приоритет NORM_PRIORITY (константа 5).

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

Q.10: Объясните жизненный цикл потока.

Жизненный цикл потока в java контролируется JVM. Состояния потока Java следующие:

  1. Новое: поток находится в новом состоянии, если вы создаете экземпляр класса Thread, но до вызова метода start ().
  2. Выполнение: поток находится в состоянии выполнения после вызова метода start (), но планировщик потока не выбрал его в качестве выполняемого потока.
  3. Выполняется: поток находится в рабочем состоянии, если планировщик потоков выбрал его.
  4. Не запускается (заблокирован): это состояние, когда поток все еще активен, но в настоящее время не может быть запущен.
  5. Завершено: поток находится в завершенном или мертвом состоянии, когда его метод run () завершается.

В.11: Что такое многозадачность, многопоточность и многопроцессорность?

Многозадачность: возможность выполнять более одной задачи одновременно называется многозадачностью.

Многопоточность: это процесс одновременного выполнения нескольких потоков. Многопоточность также известна как многозадачность на основе потоков.

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

В.12: В чем разница между ожиданием и уведомлением в java?

В межпотоковом взаимодействии используются методы ожидания и уведомления. Где wait используется для приостановки потока при определенном условии, а метод notify используется для отправки уведомления ожидающему потоку.

Q.13: В чем разница между методом notify и notifyAll.

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

notifyAll пробуждает все потоки, ожидающие объекта, но опять же выбор потоков зависит от JVM.

В.14: Объясните последнее ключевое слово в Java.

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

  1. конечная переменная: мы можем создать константу, используя конечную переменную, как только переменная станет конечной, мы не сможем изменить ее значение.
  2. final method: когда метод объявлен как final, его нельзя переопределить.
  3. последний класс: последний класс не может быть расширен.

Q.15: Что в итоге и доработать?

Блок finally используется при обработке исключений, блок finally в Java всегда выполняется независимо от того, обрабатывается ли исключение или нет. Наконец, блок записывается после блока try and catch.

попробуйте {int d = 25/0; System.out.println (d); } catch (NullPointerException e) {System.out.println (e); } finally {System.out.println («Блок finally всегда выполняется»); }

} catch (NullPointerException e) {

System.out.println («Окончательный блок всегда выполняется»);

Finalize () - это метод, который используется при сборке мусора. Этот метод является защищенным и нестатическим методом, присутствующим в классе java.lang.Object. Этот метод будет доступен для всех объектов, которые мы создаем в java. Этот метод используется для выполнения операций очистки объекта перед его удалением из памяти. Можно переопределить метод finalize (), чтобы сохранить определенные операции, которые они хотят выполнить, прежде чем объект будет уничтожен.

В.16: Что такое пустая конечная переменная?

Конечная переменная, которая объявлена, но не инициализирована, называется пустой конечной переменной. Инициализируется только в конструкторе.

В.17: Что такое статическая пустая конечная переменная?

Статическая конечная переменная, которая не инициализируется во время объявления, называется статической пустой конечной переменной. Эту переменную можно инициализировать только в статическом блоке.

В.18: Что такое статическая переменная?

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

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

  • Статический метод в Java - это метод, который принадлежит классу, а не объекту.
  • Статический метод может обращаться только к статическим данным.
  • Это метод, который принадлежит классу, а не объектам, поэтому он вызывается как метод класса, и к нему можно получить прямой доступ по имени класса, а не по объекту.
  • Статический метод может обращаться только к статическим данным, но не к нестатическим данным.
  • Статический метод может вызывать только другие статические методы, но не нестатический метод из него.
  • Статический метод не может использовать ключевые слова this или super.

В.20: Что такое статический блок в java?

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

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

В.21: Что такое статический класс в Java?

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

открытый класс StaticDemo {частная строка nonStaticVar = «нестатическая переменная»; частная статическая строка staticVar = «Статическая переменная»; общедоступный статический класс InnerStaticClas {public void testAccess () {System.out.println («Доступ» + staticVar); // Не работает - ошибка времени компиляции //System.out.println(nonStaticVar); }} public static void main (String args []) {InnerStaticClas isc = new InnerStaticClas (); isc.testAccess (); }}

public class StaticDemo {

частная строка nonStaticVar = «Нестатическая переменная»;

частная статическая строка staticVar = «Статическая переменная»;

общедоступный статический класс InnerStaticClas {

public void testAccess () {

System.out.println («Доступ» + staticVar);

// Не работает - ошибка времени компиляции

//System.out.println(nonStaticVar);

public static void main (String args []) {

InnerStaticClas isc = новый InnerStaticClas ();

В.22: Что такое сборка мусора в java?

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

Метод gc () используется для вызова сборщика мусора для выполнения очистки. Gc () находится в классах System и Runtime.

В.23: Является ли язык Java чистым объектно-ориентированным языком?

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

В.24: Что такое класс-оболочка?

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

Для каждого примитивного типа данных существует специальный класс-оболочка.

Тип примитива Класс-оболочка Boolean Boolean Char Character Byte Byte Short Short Int Integer Long Long Float Float Double Double

В.25: Что означает public static void main (String args []) в Java?

  • Публичный: это означает, что любой может получить к нему доступ.
  • Статический: указывает, что main - это метод класса, который выполняется без создания объекта.
  • Void: указывает, что основной метод не вернет никакого значения.
  • String args []: основной метод принимает строковое значение в качестве параметра

Вопрос 26: Что такое JVM?

Виртуальная машина Java (JVM) - это абстрактная вычислительная машина, которая позволяет компьютеру запускать программу Java. Он конвертирует байт-код Java (файл .class) в машинный язык. JVM является частью JRE (Java Run Environment). Java не зависит от платформы, но JVM зависит от платформы. JVM - это движок, который управляет кодом Java.

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

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

В.27: Можно ли унаследовать конструктор в java?

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

В.28: В чем разница между JDK и JVM?

Java Development Kit (JDK) предназначен для разработки, который содержит все инструменты, такие как javac, java, javap и т. Д., Исполняемые файлы и двоичные файлы, необходимые для компиляции, отладки и выполнения Java-программы, а JVM является его частью для выполнения java-программ.

В.29: Назовите исключение, возникающее при обращении к массиву за его пределами.

ArrayIndexOutOfBoundsException

Q.30. Какова цель ключевого слова this?

  • Он используется для ссылки на переменную экземпляра текущего класса
  • Он используется для вызова или запуска конструктора текущего класса.
  • Он передается как аргумент при вызове метода
  • Он используется для передачи аргумента в вызове конструктора
  • Он используется для возврата текущего экземпляра класса

В.31: Что такое пакет?

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

В Java есть два типа пакетов: встроенные пакеты и пользовательские пакеты.

Только импортировав конкретный пакет в программу, можно использовать все классы и их методы. Пример встроенных пакетов:

  1. java.io; этот пакет представляет собой группу всех классов, используемых для ввода и вывода.
  2. java.net: это группа всех классов, используемых для программирования клиент-сервер

В.32: Какие есть модификаторы доступа в Java?

  1. Public: этот модификатор можно использовать с классами и членами класса, он указывает, что к нему можно получить доступ из любого места.
  2. Частный: его можно использовать с членами класса. Он обеспечивает ограниченный доступ для участников. Если члены класса являются частными, доступ к ним будет осуществляться только внутри того же класса. Как правило, члены класса остаются закрытыми.
  3. Защищено: его можно использовать с членами класса. Если член класса защищен, он будет доступен только для классов в том же пакете и для подклассов. Модификатор protected используется, когда необходимо, чтобы переменные класса были доступны только для подклассов.
  4. По умолчанию: если модификатор не используется, то он используется по умолчанию. Модификатор доступа по умолчанию обеспечивает доступ к классам в том же пакете. Правила одинаковы для класса и членов класса.

Q.33: Какой класс является корневым для всех классов в Java.

java.lang.Object и не нужно его расширять.

В.34: Основной метод может быть перегружен?

да. В одном классе, если у нас есть более одного метода с именем «main», и когда программа будет выполняться, среда выполнения java будет проверять основной метод со следующим синтаксисом

public static void main (String args [])

public static void main (String args [])

В.35: Можно ли объявить класс статическим?

Нет. Единственный внутренний класс может быть объявлен как статический, его можно вызвать как статический вложенный класс.

Вопрос 36: Что такое переопределение метода?

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

Примечание.

  • Последний метод не может быть отменен.
  • Мы не можем переопределить статический метод.

Вопрос 37: Что такое перегрузка метода?

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

В.38: Можно ли переопределить основной метод?

Нет. Main - это статический метод, мы не можем переопределить статический метод.

В.39: Как предотвратить переопределение метода?

Чтобы предотвратить переопределение определенного метода в подклассе, сделайте этот метод окончательным в суперклассе.

В.40: Какие ключевые слова для исключительной обработки java?

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

  1. пытаться
  2. поймать
  3. наконец-то
  4. бросать
  5. бросает

В.41: Можно ли использовать несколько блоков catch за одну попытку.

да. Но все блоки catch должны быть упорядочены от наиболее конкретных до наиболее общих.

В.42: Какие типы исключений существуют в Java?

Проверенные исключения: отмеченные исключения проверяются во время компиляции.

Проверяемое исключение - это некоторый подкласс Exception, кроме класса RuntimeException и его подклассов. Каждый метод должен либо обрабатывать все проверенные исключения, предоставляя предложение catch, либо список каждого необработанного проверенного исключения в качестве брошенного исключения. Пример: IOException, SQLException и т. Д.

Непроверенные исключения: проверяются во время выполнения.

Все исключения, расширяющие класс RuntimeException, являются исключениями без проверки. Класс Error и его подклассы также не отмечены.

Пример: ArrayIndexOutOfBoundsException, ArithmeticException, NullPointerException и т. Д.

В.43: Можно ли написать блок try без блока catch?

Нет, это приведет к ошибке компиляции.

За блоком try должен следовать блок catch или finally. По крайней мере, один, который вы должны написать после попытки поймать блок или наконец.

В.44: Можем ли мы записать код между блоками try и catch?

НЕТ. Запрещается писать какой-либо код между блоком try и catch. Блок перехвата должен идти сразу после блока попытки.

В.45: Какова цель блока finally в java?

Наконец, блок используется при обработке исключений. Блок используется для очистки ресурсов, таких как закрытие соединений, сокетов и т. Д.

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

Блок finally не будет выполнен, если программа завершится некорректно.

В.46: Можно ли получить несколько блоков finally после попытки.

Нет. Для каждого блока try может быть несколько блоков catch, но только один блок finally.

В.47: Можем ли мы записать код между блоками try и finally?

НЕТ. Мы не должны писать никакого кода между блоком try и finally. Блок finally должен начинаться сразу после блока catch. Если блока catch нет, он должен идти сразу после блока try.

В.48: Перечислить отмеченные исключения исключения?

  1. IOException,
  2. SQlException,
  3. FileNotFoundException,
  4. InvocationTargetException,
  5. CloneNotSupportedException
  6. ClassNotFoundException
  7. InstantiationException

В.49: Перечислить непроверенные исключения?

  1. Арифметическое исключение
  2. ArrayIndexOutOfBoundsException
  3. ClassCastException
  4. IndexOutOfBoundException
  5. Исключение нулевого указателя
  6. NumberFormatException
  7. StringIndexOutOfBounds
  8. UnsupportedOperationException

В.50: Объясните ситуацию, когда блок finally не будет выполняться?

Блок finally не будет выполняться при завершении работы JVM. Если мы используем system.exit (0) в инструкции try, в этом случае блок finally, если он присутствует, не будет выполнен.

Следующий набор вопросов будет рассмотрен в нашей следующей статье. Прокомментируйте, если вам нужна дополнительная информация.

Первоначально опубликовано на www.opencodez.com 1 марта 2018 г.