Часто задаваемые вопросы на собеседовании по программированию на Java | Комплект 2

Опубликовано: 12 Сентября, 2021

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

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

  • Можем ли мы перегрузить или переопределить статические методы в Java?
  • Почему в java основной метод статичен?
  • Что произойдет, если вы удалите статический модификатор из основного метода?
  • Каков объем переменных в Java в следующих случаях?
  • Что такое ключевое слово this в java?
  • Что такое абстрактный класс? Чем абстрактные классы похожи или отличаются в Java от C ++?
  • Какой класс является суперклассом для каждого класса?
  • Можем ли мы перегрузить метод main ()?
  • Что такое клонирование объекта?
  • Чем наследование в C ++ отличается от Java?
  • Почему перегрузка метода невозможна путем изменения типа возвращаемого значения в java?
  • Можем ли мы переопределить частные методы в Java?
  • Что такое пустая конечная переменная?
  • Что такое ключевое слово super в java?
  • Что такое статическая переменная в Java?
  • Различия между HashMap и HashTable в Java.
  • Как объекты Java хранятся в памяти?
  • Какие функции C ++ отсутствуют в Java?

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

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

  • Переопределение: переопределение связано с полиморфизмом времени выполнения. Подкласс (или производный класс) предоставляет конкретную реализацию метода в суперклассе (или базовом классе) во время выполнения.
  • Перегрузка: перегрузка связана с полиморфизмом времени компиляции (или статическим). Эта функция позволяет различным методам иметь одно и то же имя, но разные сигнатуры, особенно количество входных параметров и тип входных параметров.
  • Можем ли мы перегружать статические методы? Ответ «Да». У нас может быть два или более статических метода с одинаковым именем, но с различиями во входных параметрах.
  • Можем ли мы переопределить статические методы в Java? Мы можем объявить статические методы с такой же сигнатурой в подклассе, но это не считается переопределением, поскольку не будет никакого полиморфизма во время выполнения. Следовательно, ответ - «Нет» . Статические методы нельзя переопределить, потому что переопределение метода происходит только в контексте динамического (т.е. во время выполнения) поиска методов. Статические методы (по их имени) ищутся статически (то есть во время компиляции).

Читать далее

Q2. Почему в java основной метод статичен?
Метод статический, потому что в противном случае возникла бы двусмысленность: какой конструктор следует вызвать? Особенно, если ваш класс выглядит так:

 открытый класс JavaClass
{
  защищенный JavaClass (int x)
  {}
   public void main (String [] args) 
   {

    }
}

Должна ли JVM вызывать новый JavaClass (int)? Что он должен принимать за x? Если нет, должна ли JVM создавать экземпляр JavaClass без запуска какого-либо метода конструктора? потому что это будет особым случаем всего вашего класса - иногда у вас есть экземпляр, который не был инициализирован, и вам нужно проверять его в каждом методе, который может быть вызван. Слишком много крайних случаев и двусмысленностей, чтобы JVM имела смысл создавать экземпляр класса до вызова точки входа. Вот почему main статичен.

Q3. Что произойдет, если вы удалите статический модификатор из основного метода?
Программа успешно компилируется. Но во время выполнения выдает ошибку «NoSuchMethodError».

Q4. Каков объем переменных в Java в следующих случаях?

  • Переменные-члены (область действия на уровне класса): переменные-члены должны быть объявлены внутри класса (вне любой функции). К ним можно получить прямой доступ в любом месте класса.
  • Локальные переменные (область уровня метода): переменные, объявленные внутри метода, имеют область действия уровня метода и не могут быть доступны вне метода.
  • Переменные цикла (область действия блока): переменная, объявленная в паре скобок «{» и «}» в методе, имеет область видимости только в скобках.

Читать далее

Q5. Что такое ключевое слово this в java ?
Внутри метода экземпляра или конструктора это ссылка на текущий объект - объект, метод или конструктор которого вызывается. Вы можете ссылаться на любой член текущего объекта из метода экземпляра или конструктора, используя this.
Использование этого ключевого слова

  • Используется для ссылки на переменную экземпляра текущего класса.
  • Для вызова конструктора текущего класса.
  • Его можно передать как аргумент при вызове метода.
  • Его можно передать как аргумент при вызове конструктора.
  • Используется для возврата текущего экземпляра класса.
  • Используется для вызова метода текущего класса (неявно)

Q6. Что такое абстрактный класс ? Чем абстрактные классы похожи или отличаются в Java от C ++?
Абстрактные классы - это классы, содержащие один или несколько абстрактных методов. Абстрактный метод - это метод, который объявлен, но не содержит реализации. Абстрактные классы не могут быть созданы, и для них требуются подклассы для реализации абстрактных методов.

  • Как и в C ++, в Java нельзя создать экземпляр абстрактного класса, однако у нас могут быть ссылки на тип абстрактного класса.
  • Как и C ++, абстрактный класс может содержать конструкторы в Java. И конструктор абстрактного класса вызывается при создании экземпляра унаследованного класса.
  • В Java у нас может быть абстрактный класс без какого-либо абстрактного метода. Это позволяет нам создавать классы, экземпляры которых нельзя создать, а можно только наследовать.
  • Абстрактные классы также могут иметь методы final (методы, которые нельзя переопределить). Например, следующая программа компилируется и работает нормально.

Читать далее

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

Q8. Можем ли мы перегрузить метод main ()?
Основной метод в Java - это не внеземной метод. Помимо того, что main () похож на любой другой метод и может быть перегружен аналогичным образом, JVM всегда ищет сигнатуру метода для запуска программы.

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

Читать далее

Q9. Что такое клонирование объекта ?
Клонирование объекта означает создание точной копии исходного объекта. Если классу необходимо поддерживать клонирование, он должен реализовать интерфейс java.lang.Cloneable и переопределить метод clone () из класса Object. Синтаксис метода clone ():

 защищенный объект clone () выдает исключение CloneNotSupportedException

Если класс объекта не реализует интерфейс Cloneable, он выдает исключение CloneNotSupportedException.

Читать далее

Q10. Чем наследование в C ++ отличается от Java?

  1. В Java все классы прямо или косвенно наследуются от класса Object. Следовательно, в Java всегда существует одно дерево наследования классов, и класс Object является корнем дерева.
  2. В Java члены класса grandparent недоступны напрямую. См. Этот G-факт для более подробной информации.
  3. Значение спецификатора доступа к защищенному члену в Java несколько иное. В Java защищенные члены класса «A» доступны в другом классе «B» того же пакета, даже если B не наследуется от A (они оба должны быть в одном пакете).
  4. Java использует ключевое слово extends для наследования. В отличие от C ++, Java не предоставляет спецификаторы наследования, такие как общедоступный, защищенный или частный. Следовательно, мы не можем изменить уровень защиты членов базового класса в Java, если какой-либо член данных является общедоступным или защищенным в базовом классе, тогда он остается открытым или защищенным в производном классе. Как и C ++, частные члены базового класса недоступны в производном классе.
    В отличие от C ++, в Java нам не нужно запоминать те правила наследования, которые представляют собой комбинацию спецификатора доступа к базовому классу и спецификатора наследования.
  5. В Java методы по умолчанию являются виртуальными. В C ++ мы явно используем ключевое слово virtual. См. Этот G-факт для получения более подробной информации.
  6. Java использует отдельный интерфейс ключевых слов для интерфейсов и абстрактных ключевые слова для абстрактных классов и абстрактных функций.
  7. В отличие от C ++, Java не поддерживает множественное наследование. Класс не может наследовать более чем от одного класса. Однако класс может реализовывать несколько интерфейсов.
  8. В C ++ конструктор родительского класса по умолчанию вызывается автоматически, но если мы хотим вызвать параметризованный конструктор родительского класса, мы должны использовать список инициализаторов. Как и C ++, конструктор родительского класса по умолчанию автоматически вызывается в Java, но если мы хотим вызвать параметризованный конструктор, мы должны использовать super для вызова родительского конструктора.

См. Примеры здесь

Q11. Почему перегрузка метода невозможна путем изменения типа возвращаемого значения в java?
В C ++ и Java функции не могут быть перегружены, если они отличаются только возвращаемым типом. Тип возвращаемого значения функции не является частью искаженного имени, которое генерируется компилятором для однозначной идентификации каждой функции. Число аргументов, Тип аргументов и Последовательность аргументов - это параметры, которые используются для генерации уникального искаженного имени для каждой функции. Именно на основе этих уникальных искаженных имен компилятор может понять, какую функцию вызывать, даже если имена совпадают (перегрузка).

Q12. Можем ли мы переопределить частные методы в Java?
Нет, частный метод нельзя переопределить, поскольку он не виден из других классов. Читать далее

Q13. Что такое пустая конечная переменная ?
Конечной переменной в Java может быть присвоено значение только один раз, мы можем присвоить значение либо в объявлении, либо позже.

 заключительный интервал я = 10;
    i = 30; // Ошибка, потому что i - final.

Пустая конечная переменная в Java - это конечная переменная, которая не инициализируется во время объявления. Ниже приведен простой пример пустого финала.

 // Простой пустой финальный пример 
    final int i;
    i = 30;

Читать далее

В14. Что такое ключевое слово super в java ?
Ключевое слово super в java - это ссылочная переменная, которая используется для ссылки на объекты родительского класса. Ключевое слово «супер» появилось в картине вместе с концепцией наследования. Всякий раз, когда вы создаете экземпляр подкласса, экземпляр родительского класса создается неявно, то есть на него ссылается супер-ссылочная переменная.
Различные сценарии использования java super Keyword:

  • super используется для ссылки на непосредственную родительскую переменную экземпляра
  • super используется для вызова метода родительского класса
  • super () используется для вызова непосредственного родительского конструктора

Читать далее

Q15. Что такое статическая переменная в Java ?
Ключевое слово static в java используется в основном для управления памятью. Мы можем применить ключевое слово java static с переменными, методами, блоками и вложенным классом. Ключевое слово static принадлежит классу, а не экземпляру класса.

Статика может быть:

  • переменная (также известная как переменная класса)
  • метод (также известный как метод класса)
  • блокировать
  • вложенный класс

Q16. Различия между HashMap и HashTable в Java .
1. HashMap не синхронизирован. Он не является потокобезопасным и не может использоваться многими потоками без надлежащего кода синхронизации, тогда как Hashtable синхронизируется. Он потокобезопасен и может использоваться многими потоками.
2. HashMap допускает один нулевой ключ и несколько нулевых значений, тогда как Hashtable не допускает никаких нулевых ключей или значений.
3. HashMap обычно предпочтительнее HashTable, если синхронизация потоков не требуется.
Читать далее

В17. Как объекты Java хранятся в памяти ?
В Java все объекты динамически размещаются в куче . Это отличается от C ++, где объектам может быть выделена память либо в стеке, либо в куче. В C ++, когда мы выделяем abject с помощью new (), объект выделяется в Heap, в противном случае - в Stack, если он не является глобальным или статическим.
В Java, когда мы объявляем только переменную типа класса, создается только ссылка (память для объекта не выделяется). Чтобы выделить память для объекта, мы должны использовать new (). Таким образом, объекту всегда выделяется память в куче. Читать далее

В18. Какие функции C ++ отсутствуют в Java?
Попробуйте ответить на этот вопрос самостоятельно, прежде чем увидите ответ - здесь.

Смотрите также:

  • Часто задаваемые вопросы на собеседовании по Java | Комплект 1
  • Вопросы для собеседований для профессионалов Java
  • Вопросы Java с несколькими вариантами ответов
  • Вопросы по программированию
  • Статьи по Java

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

Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .