Вопросы и ответы на собеседовании по Java в 2022 году

Опубликовано: 2022-08-03

Вы программист? И вы выбрали язык программирования Java в качестве предпочтительной ниши для построения карьеры? Поздравляем! Вы выбрали правильно. Согласно статистике, программист в США зарабатывает в среднем 105 801 доллар в год. Это в среднем 50,87 долларов в час, 2035 долларов в неделю и 8817 долларов в месяц. Разве это не впечатляет?

Но получить шанс получить работу своей мечты в качестве Java-программиста невозможно. Из 8 миллионов Java-программистов во всем мире только около 56 585 работают в США, что делает поиск работы Java-программистом весьма конкурентоспособным. Если вы хотите получить работу своей мечты, вы должны хорошо разбираться как в основных, так и в сложных аспектах языка программирования Java.

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

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

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

Что вы понимаете под Java?

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

Сравните между Java и Python

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

Описание основных функций Java

  • Java ориентирована на объекты
  • Java не зависит от платформы
  • Имеет отличную реализацию многопоточности
  • Использует простой язык
  • И нейтральна ли архитектура

Что вы подразумеваете под объектом в Java

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

Объект также может быть фундаментальным элементом объектно-ориентированного программирования, который представляет объекты реального мира.

Различие между Stringbuffer и Stringbuilder в программировании на Java

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

Еще одно различие между StringBuffer и StringBuilder заключается в том, что первый является потокобезопасным, а второй — нет.

Различия между JDK, JRE и JVM

Комплект разработчика Java (JDK) включает инструменты для написания, устранения неполадок и анализа Java-программирования. JRE — это набор классов, объектов и других сопутствующих файлов, необходимых JVM для запуска приложения. JVM не предоставляет никаких средств разработки программного обеспечения.

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

Определить наследование

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

Что такое класс в Java?

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

Сравните перегрузку и переопределение в Java

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

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

Объясните создание потокобезопасного синглтона в Java с помощью блокировки с двойной проверкой.

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

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

Промежуточные вопросы собеседования по Java

Промежуточные вопросы собеседования по Java

Что такое ЖДК? Упомяните варианты JDK?

JDK расшифровывается как Java Development Kit. Java Development Kit (JDK) — это программное обеспечение, которое необходимо использовать при разработке любого Java-приложения. Комплект Java Development Kit (JDK) включает инструменты для написания, устранения неполадок и анализа Java-программирования.

По сути, JDK — это реализация Java Standard Edition или Java Enterprise Edition. Java была переименована в Java 2 (сокращенно Java 2 SDK или J2SDK) в 1998 году из-за значительного обновления платформы. Она разработала три отдельные версии Java для поддержки различных приложений.

  • J2SE означает «Платформа Java 2, базовая и обычная версии» и предназначена для настольных компьютеров и серверов.
  • J2EE означает Java 2 Platform, Corporate Edition, разработанную для бизнес-приложений и включающую такие возможности, как облачное хранилище и поддержку онлайн-сервисов.
  • J2ME (платформа Java 2, Micro Edition) предназначена для установленных и мобильных гаджетов или платформ.

Однако в 2004 году метки вариантов были изменены на Java ME (Micro Edition платформы Java), Java EE (Enterprise Edition платформы Java) и Java SE (Standard Edition платформы Java) соответственно. Название комплекта разработки также было изменено с «Java 2 SDK» на «JDK». Кроме того, рабочий контекст был переименован в «JRE» вместо «J2RE». Варианты с их версиями Java SE 6 и Java EE 5 все еще используются.

Может ли конструктор вернуть значение?

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

Объясните ключевое слово «ЭТО» в Java

«Это» — специальный термин в Java, который определяет сущность, которую сейчас выполняет программист. Ключевое слово просто предшествует другому параметру, связанному с использованием оператора — точка (.), который может использоваться внутри метода или конструктора. Ключевое слово This не используется очень часто, так как большинство приложений предназначены для того, чтобы избежать ситуаций, в которых оно было бы необходимо. Доступ к переменным экземпляра предоставляется с помощью термина this.

Объясните ключевое слово «СУПЕР» в Java

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

Объясните перегрузку методов в Java.

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

Можем ли мы перегрузить статический метод в Java?

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

Определение позднего связывания

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

Определить отправку динамических методов

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

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

Операция удаления LinkedList возвращает O (1). Но операция удаления ArrayList возвращает O(n) в худшем случае, т.е. при удалении первой записи, и O(1) в лучшем случае при удалении последнего элемента. По сравнению с ArrayList удаление элементов LinkedList происходит быстрее. Причина этого в том, что каждый элемент LinkedList имеет два указателя (адреса), которые указывают на оба соседних элемента в списке. В результате удаление узла влечет за собой изменение позиции ссылки в двух соседних компонентах узла.

Продвинутые вопросы на собеседовании по Java для опытных

Продвинутые вопросы на собеседовании по Java для опытных

Хотя наследование является популярной концепцией oops, оно менее выгодно, чем композиция. Объяснять!

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

Чем создание строки с использованием new() отличается от литерала?

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

Возможно ли превышение лимита памяти в программе, несмотря на наличие сборщика мусора?

Да. Наличие сборщика мусора никоим образом не останавливает и не препятствует выходу программы из памяти.

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

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

Скажем, в ситуации, когда требуется найти количество запросов, сделанных к определенному URL-адресу, выполнение более одного запроса обязательно приведет к ошибочному подсчету. Скажем, поток 1 видит счет как 12; оно будет увеличено до 13 путем добавления одного. В то же время другой поток 2 также видит значение счетчика как 12 и, в том же ключе, увеличивается до 13, добавляя 1. Эта непредсказуемость в значении счетчика возникает из-за того, что вместо ожидаемого конечного значения 14, то, что было бы получено как окончательное значение будет равно 13. Именно здесь синхронизация вступает в игру по мере увеличения функции (), поэтому одновременный доступ к счетчику предотвращается.

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

В Java жизненный цикл потока определяется как преобразование состояния потока от рождения до смерти. Когда создается экземпляр потока и вызывается функция start() класса Thread, поток переходит в состояние готовности к выполнению. Когда класс Thread вызывает методы sleep() или wait(), поток становится неработоспособным.

Каким может быть компромисс между использованием неупорядоченного массива и использованием упорядоченного массива?

Одним из основных преимуществ упорядоченного массива является то, что его сложность времени поиска составляет O (log n). Операция вставки в упорядоченный массив имеет временную сложность O(n), потому что члены с более высокими оценками должны быть сдвинуты, чтобы создать новый вариант. С другой стороны, операция вставки неупорядоченного массива требует устойчивого времени O (1).

Можно ли дважды импортировать один и тот же класс или пакет в java и что с ним происходит во время выполнения?

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

Будет ли выполняться блок «Наконец», если код system.Exit(o) написан в конце блока try?

Нет, блок «finally» не будет выполняться в этом сценарии, потому что при активации System.exit (0) элемент управления мгновенно покидает программу и, следовательно, «finally» никогда не выполняется. Если Система. exit(0) вызывается без исключения; программа не запустится.

Что вы понимаете под маркерными интерфейсами в Java?

Интерфейс без констант или методов известен как интерфейс маркеров или интерфейс тегов, поскольку он предоставляет компилятору и JVM информацию о типе времени выполнения для объектов. Remote interfaces, Serializable и Cloneable являются примерами маркерных интерфейсов, и все эти интерфейсы пусты.

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

В Java инициализация двойной скобки представляет собой смесь двух отдельных процессов. В этой ситуации задействованы две фигурные скобки ({). Инициализация двойной скобки происходит, когда в коде Java отображаются две последовательные фигурные скобки.

Конструкция безымянного внутреннего класса — это первая фигурная скобка, а блок инициализации — вторая фигурная скобка. Инициализация Java Double Brace происходит, когда безымянный внутренний класс использует блок инициализации.

Вывод

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