Рубрики
Без рубрики

Топ-21 Вопросов для интервью для разработчиков Java Ты Точно Должен Знать

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

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

1. ” Разберите” public static void main(String args[]).

Один из популярных вопросов для интервью на java для новичков, и он очень прост.

  • public – это модификатор доступа. Мы используем его, чтобы указать доступ к этому методу. Здесь модификатор “общедоступный”, поэтому любой класс имеет доступ к этому методу.
  • статический. Это ключевое слово Java означает, что мы используем этот метод без создания нового объекта класса.
  • Void – это возвращаемый тип метода. Это означает, что метод не возвращает никакого значения.
  • main – это имя метода. JVM “знает” его как точку входа в приложение (у него должна быть определенная подпись). Main – это метод, в котором происходит основное выполнение.
  • Строковые аргументы[]. Это параметр, передаваемый основному методу. Здесь у нас есть аргументы строкового типа, которые ваше Java-приложение принимает при его запуске. Вы можете ввести их на терминале.

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

Во-первых, ” == ” – это оператор, тогда как equals() – это метод. Мы используем == оператор для сравнения ссылок (или сравнения адресов) и equals() метод для сравнения содержимого. Это означает, что == проверяет, указывают ли оба объекта на одну и ту же ячейку памяти, в то время как equals() сравнивает значения в объектах.

3. Можем ли мы выполнить программу без метода main()?

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

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

class Example{
 Static{ 
System.out.println("static block is invoked"); 
} 
  public static void main(String args[]){ 
   System.out.println("Now main method"); 
  } 
}

Результатом является:

**static** block is invoked 
Now main method

Как насчет полного отсутствия основного метода? Если вы попытаетесь запустить обычный класс вообще без метода main, вы получите следующую ошибку:

Основной метод не найден в тесте класса, пожалуйста, определите основной метод как: public static void main (String [] args) или класс приложения JavaFX должен расширять javafx.application. Приложение . Сама ошибка говорит о том, что если это приложение JavaFX и класс унаследован от javafx.application. Application , тогда это возможно.

4. Что такое неизменяемый объект? Можете ли вы создать неизменяемый объект?

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

Хорошим примером является String , это неизменяемый в Java. Это означает, что вы не можете изменить сам объект, но вы можете изменить ссылку на объект.

5. Сколько объектов создается в следующем коде?

Один из вопросов технического интервью Java, который заменяет # 4.

String s1="Hello"; 
String s2="Hello"; 
String s3="Hello";

Ответ – “только один”, потому что в Java есть пул строк. Когда мы создаем строковый объект с помощью оператора new() , он создает новый объект в кучной памяти. Если мы используем синтаксис строкового литерала, как в нашем примере, он может вернуть существующий объект из пула строк, если он уже существует.

6. Сколько объектов создается в следующем коде?

String s = new String("Hello");

Есть 2 объекта. Один находится в пуле строковых констант, а другой – в куче.

7. В чем разница между классами String, StringBuilder и StringBuffer в Java?

Это один из лидеров по лучшим вопросам интервью на java.

Прежде всего String – это неизменяемый класс. Это означает, что вы не можете изменять его содержимое после создания. В то время как StringBuffer и StringBuilder являются изменяемыми классами, поэтому вы можете изменить их позже. Если мы изменим содержимое String object, это создаст новую строку, следовательно, она не изменит исходную. Вот почему производительность с StringBuffer лучше, чем с String .

Основное различие между StringBuffer и StringBuilder это Методы StringBuffer синхронизируются во время StringBuilder – это не так.

8. Есть ли какая-либо разница в строке, которая была создана с использованием литерала и с помощью оператора new()?

Это. Если мы создадим строку с помощью оператора new() , она появится в куче и не будет добавлена в пул строк. Если вы создаете String с помощью литерала, он создается в пуле String , который существует в области кучи.

9. Можете ли вы переопределить частный или статический метод в Java?

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

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

Статические методы также не могут быть переопределены, поскольку статические методы являются частью самого класса, а не частью какого-либо объекта класса. Конечно, вы можете объявить тот же static метод с той же сигнатурой в дочерних классах, но опять же, они будут рассматриваться как новые методы.

10. Разница между абстрактным классом и интерфейсом

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

11. Можем ли мы объявлять статические переменные и методы в абстрактном классе?

Да, можно объявить статические переменные и методы в абстрактном методе. Нет необходимости создавать объект для доступа к статическому контексту. Таким образом, нам разрешен доступ к статическому контексту, объявленному внутри класса abstract , используя имя класса abstract .

12. Какие типы областей памяти выделяются JVM?

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

Куча – это область данных среды выполнения, в которой объектам выделяется память.

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

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

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

13. Почему множественное наследование не разрешено в java?

Это было бы действительно сложно. Представьте себе три класса A , B и C и C наследует A и B . Теперь, Классы A и B имеют один и тот же метод, и вы вызываете его из объекта дочернего класса… Какой? A ‘s или B ‘s? Здесь мы имеем дело с двусмысленностью. Если вы пытаетесь наследовать два класса, Java выдает ошибку во время компиляции.

14. Можем ли мы перегрузить метод main()?

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

15. Можем ли мы объявить конструктор как окончательный?

Нет. Конструктор не может быть объявлен как final , потому что он не может быть унаследован. Так что бессмысленно объявлять конструкторы как final . Однако, если вы попытаетесь это сделать, компилятор Java выдаст вам сообщение об ошибке.

16. Можем ли мы объявить интерфейс окончательным?

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

17. В чем разница между статической привязкой и динамической привязкой?

Привязка , которая может быть разрешена компилятором во время компиляции, называется статической или ранней привязкой. Привязка всех статических , частных/| и final методы выполняются во время компиляции.

В Динамическая привязка компилятор не может выбрать метод для вызова. Переопределение – прекрасный пример динамической привязки . При переопределении оба родительских и дочерних класса имеют один и тот же метод.

Static Binding 
class Cat{ 
 private void talk() 
{System.out.println("cat is mewing..."); 
} 

 public static void main(String args[]){ 
  Cat cat=new Cat(); 
  cat.talk(); 
 } 
} 
Dynamic Binding 
class Animal{ 
 void talk(){ 
System.out.println("animal is talking..."); 
} 
} 
class Cat extends Animal{ 
 void talk(){ 
System.out.println("cat is talking...");
} 
 public static void main(String args[]){ 
  Animal animal=new Cat(); 
  animal.talk(); 
 } 
}

18. Как создать класс, доступный только для чтения, в Java?

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

public class HockeyPlayer{ 
private String team ="Maple leaf"; 
public String getTeam(){ 
return team; 
} 
}

19. Как создать класс, доступный только для записи, в Java?

Опять же, вы должны сделать все поля класса закрытыми . Теперь ваш класс, доступный только для записи, должен иметь только методы установки и никаких геттеров. Следовательно, мы не можем прочитать свойства класса.

public class HockeyPlayer{ 
private String team; 
public void setTeam(String college){ 
this.team = team; 
} 
}

20. За каждым блоком try должен следовать блок catch, не так ли?

Нет. Это не является необходимостью. Каждый блок try может быть без блока catch. За ним может следовать либо блок catch , либо блок finally, либо даже вообще без них.

public class Main{ 
     public static void main(String []args){ 
        try{ 
            int variable = 1; 
            System.out.println(variable/0); 
        } 
        finally 
        { 
            System.out.println("the other part of the program..."); 
        } 
     } 
}

Выход:

class Main {
        public static void main(String[] args) throws IOException {
            try(InputStreamReader inputStreamReader = new InputStreamReader(System.in);
                BufferedReader reader = new BufferedReader(inputStreamReader)){
                System.out.println("test");
            }
        }
    }

P.S.: До Java 8 методы в интерфейсах могли быть только абстрактными. В Java 8 или более поздней версии стало возможным определять методы по умолчанию и реализовывать их непосредственно в интерфейсе.

21. В чем разница между ключевыми словами throw и throws?

Throws используется для объявления исключения, поэтому он работает аналогично блоку try-catch . Ключевое слово Throw используется для явного вызова исключения из метода или любого другого блока кода.

За Throw следует экземпляр класса Exception , а за throws следуют имена классов исключений.

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

Разрешено создавать одно исключение за раз, но вы можете обрабатывать несколько исключений, объявляя их с помощью ключевого слова throw . Вы можете объявить несколько исключений, например, метод public void() вызывает исключение IOException , Исключение SQLException .

Здесь у нас было всего несколько вопросов и ответов на интервью по java. Эта статья является первой из серии интервью. Следующий (скоро будет) посвящен вопросам структуры данных.

Впервые было опубликовано в блоге CodeGym .

Оригинал: “https://dev.to/codegym_cc/top-21-interview-questions-for-java-developers-you-totally-should-know-4n3l”