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

Вопросы для собеседования на Java с опытом работы от 4 до 7 лет

В этом посте мы увидим вопросы для собеседования на Java с опытом работы от 5 до 6 лет. Когда у вас будет 5 лет… С пометкой java, программирование, интервью.

В этом посте мы увидим Вопросы для собеседования на Java с опытом работы от 5 до 6 лет. Когда у вас есть 5-летний опыт работы в качестве разработчика java , вам необходимо хорошо разбираться в концепциях collections , многопоточности .

Если вы ищете нижеприведенные запросы, то этот пост также поможет вам.

  • Вопросы для собеседования на Java с 4-летним опытом работы
  • Вопросы для интервью на Java с 6-летним опытом работы
  • Вопросы для интервью на Java с 7-летним опытом работы

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

1. Угадайте результат приведенной ниже программы.

package org.arpit.java2blog;
class A
{
    void m1()
    {
        System.out.println("In m1 A");
    }
}
class B extends A
{
    void m1()
    {
        System.out.println("In m1 B");
    }
    void m2()
    {
        System.out.println("In m2 B");
    }
}
public class Test {

    public static void main(String[] args) {
        A a=new B();
        a.m2();
    }
}

Каким будет результат? A. В m2 B B. Ошибка во время компиляции C. Ошибка во время выполнения

B. Ошибка во время компиляции Будет ошибка во время компиляции. Несмотря на то, что мы присваиваем объекту B в качестве ссылки, мы можем вызывать только методы, которые находятся в A, из ссылки.

2. Угадайте результат приведенной ниже программы.

package org.arpit.java2blog;

class A
{
    void m1() throws ArrayIndexOutOfBoundsException
    {
        System.out.println("In m1 A");
    }
}
class B extends A
{
    void m1() throws IndexOutOfBoundsException
    {
        System.out.println("In m1 B");
    }
}
public class Test {

    public static void main(String[] args) {
        A a=new B();
        a.m1();
    }
}

Каким будет результат? A. В m1 B B. Ошибка во время компиляции C. Ошибка во время выполнения

A. В m1 B это будет работать нормально, поскольку ArrayIndexOutOfBoundsException и IndexOutOfBoundsException являются исключениями во время выполнения, и нет правила для исключений во время выполнения при переопределении метода.

3. Угадайте результат приведенной ниже программы.

package org.arpit.java2blog;

import java.io.IOException;

class A
{
    void m1() throws IOException
    {
        System.out.println("In m1 A");
    }
}
class B extends A
{
    void m1() throws Exception
    {
        System.out.println("In m1 B");
    }
}
public class Test {

    public static void main(String[] args) {
        A a=new B();
        try {
            a.m1();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Каким будет результат? A. В m1 B B. Ошибка во время компиляции C. Ошибка во время выполнения

B. Ошибка во время компиляции, поскольку IOException и Exception являются проверяемыми исключениями, поэтому вы не можете расширить область исключения при переопределении метода.

4. Что произойдет в случае приведенной ниже программы?

class A
{
    synchronized void m1()
    {
        System.out.println("In m1 A");
    }
    void m2()
    {
        System.out.println("In m2 A");
    }
}

Есть два потока T1 и T2. T1 – это доступ к методу m1. Сможет ли T2 получить доступ к методу m2 в одном и том же экземпляре в одно и то же время?

Да, T2 сможет получить доступ к m2, поскольку для доступа к методу m2 не требуется блокировка./div>

5. Что произойдет в случае приведенной ниже программы?

class A
{
    synchronized void m1()
    {
        System.out.println("In m1 A");
    }
    synchronized void m2()
    {
        System.out.println("In m2 A");
    }
}

Есть два потока T1 и T2. T1 – это доступ к методу m1. Сможет ли T2 получить доступ к методу m2 в одном и том же экземпляре в одно и то же время?

Нет, T2 не сможет получить доступ к m2, так как для доступа к методу m2 требуется блокировка, которая уже используется потоком T1.

6. Что произойдет в случае приведенной ниже программы?

class A
{
    synchronized static void m1()
    {
        System.out.println("In m1 A");
    }
    synchronized void m2()
    {
        System.out.println("In m2 A");
    }
}

Есть два потока T1 и T2. T1 – это доступ к методу m1. Сможет ли T2 получить доступ к методу m2 в одном и том же экземпляре в одно и то же время?

Да, T2 сможет получить доступ к m2, поскольку для доступа к методу m2 требуется блокировка на уровне объекта, а поток T1 получил блокировку на уровне класса. Вы можете прочитать больше о Блокировке уровня объекта против блокировки уровня класса .

7. Угадайте результат приведенной ниже программы.

package org.arpit.java2blog;

import java.util.HashSet;

public class Customer {

    String name;
    int age;
    
    Customer(String name,int age)
    {
        this.name=name;
        this.age=age;
    }
    public static void main(String[] args) {
        
        Customer c1= new Customer("John",20);
        Customer c2= new Customer("John",20);
        
        HashSet customerSet=new HashSet<>();
        customerSet.add(c1);
        customerSet.add(c2);
        System.out.println(customerSet.size());
    }

    // getters and setters
}

Результат будет равен 2, так как мы не реализовали метод hashcode и equals в классе Customer.

8. Угадайте результат приведенной ниже программы.

package org.arpit.java2blog;

public class Employee {
    String name;
    int age;
    
    public Employee(String name,int age)
    {
        this.name=name;
        this.age=age;
    }
    
    
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Employee other = (Employee) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }   
}

Основной класс

package org.arpit.java2blog;

import java.util.HashMap;
import java.util.Map;

public class HashMapMain {

    public static void main(String[] args) {
        Employee emp1=new Employee("Martin",27);
        Map hm=new HashMap();
        hm.put(emp1, "Verified");
        emp1.setName("John");
        System.out.println(hm.get(emp1));
    }
}

[showhide] Вывод будет равен нулю. Мы внедрили метод hashcode и equals сотрудника, используя атрибуты name и age, поэтому, когда вы помещаете emp1 в качестве ключа в hashmap, он будет использовать метод hashcode и equals и будет помещен в HashMap.

9. Как определить размер молодого поколения и старого поколения для вашего приложения?

Это зависит от характера применения. Если у вас много временных объектов, то будет много второстепенных проблем. Вы можете привести аргументы в пользу распределения 50% среди молодого поколения и 50% среди пожилых. По умолчанию, следовательно, молодое поколение составляет 1/3 от общей кучи. Аналогично, если у вас слишком много долгоживущих объектов, вам может потребоваться увеличить размер пространства владения, установив высокое значение NewRatio.

10. Что такое сборка мусора в java?

Сборка мусора – это процесс идентификации используемых и неиспользуемых объектов в куче java и удаления неиспользуемого объекта из кучи. Живой объект означает, что объект все еще ссылается на какую-то часть программы. Неиспользуемый объект означает, что объект не передается какой-либо частью программы и имеет право на сборку мусора. Программисту не нужно выполнять ручную сборку мусора, как в C или C++. Java заботится о

11. Каковы типы сборщиков мусора в java?

Вы можете увидеть подробный ответ здесь.

12. В чем разница между коллекцией.synchronizedMap(карта) и ConcurrentHashMap?

Когда вы делаете карту потокобезопасной с помощью Collection.synchronizedMap(карта), он блокирует весь объект карты, но ConcurrentHashMap не блокирует всю карту, он просто блокирует ее часть (сегмент). Вы можете прочитать больше о ConcurrentHashMap здесь/| .

13. Что произойдет, когда вы запустите приведенный ниже код

package org.arpit.java2blog;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;

public class IterateMapMain {

    public static void main(String args[])
    {
        // HashMap with Country as key and capital as value
        HashMap map=new HashMap();
        map.put("India","Delhi");
        map.put("Japan","Tokyo");
        map.put("France","Paris");
        map.put("Russia","Moscow");

        
        // Iterating java iterator
        System.out.println("Iterating java Iterator");
        Iterator countryKeySetIterator=map.keySet().iterator();
        while(countryKeySetIterator.hasNext()){
            String countryKey=countryKeySetIterator.next();
            map.put("Nepal", "KathMandu");
            System.out.println(countryKey);

        }
        System.out.println("-----------------------------");
    }

}

Вы получите нижеприведенный результат

Повторение исключения java-итератора в потоке “main” java.util. ConcurrentModificationException в java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1489) в java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1512) в org.arpit.java2blog. Выполнить итерацию Map Main.main(IterateMapMain.java:24) Япония

Всякий раз, когда вы пытаетесь изменить количество хэш-карт во время итерации, он выдает java.util. ConcurrentModificationException, потому что мы вызываем итератор.далее он проверяет modCount и начальное количество, если оно не совпадает, он выдаст ConcurrentModificationException.

14. Написать программу для печати нечетных четных чисел с использованием последовательных потоков?

Вот программа для печати нечетных и четных чисел с использованием потоков в последовательности .

15. Какой шаблон дизайна вы использовали в своем проекте?

Вы можете назвать несколько шаблонов проектирования, таких как Singleton, Observer и т.д. который вы, возможно, использовали в своем проекте.

16. Что такое двухуровневая блокировка в одноэлементном шаблоне проектирования?

Двухуровневая блокировка в одном шаблоне проектирования используется для обеспечения потокобезопасности.

public static Singleton getInstance()
    { 
        if (_instance == null) { // Single Checked 
            synchronized (Singleton.class) 
            { 
                if (_instance == null)// Double checked 

                { 
                    _instance = new Singleton(); 
                }
            } 
        } return _instance; 
    }

Допустим, два потока (T1 и T2) проверены на null, и оба достигли синхронизированного (Singleton.class ) . T1 получает блокировку и создает экземпляр Singleton и возвращает. Теперь T2 входит в синхронизированный блок, так как мы снова проверили значение null, он больше не создаст объект.

17. Написать программу для реализации проблемы производитель-потребитель с использованием BlockingQueue?

Вы можете найти подробный ответ здесь

18. Вы работали над Java 8? Можете ли вы поделиться основными изменениями в Java 8?

Если вы работали на Java 8, вы можете поделиться основными изменениями, такими как Stream, выражение lambada, метод defaults в интерфейсе и т.д.

19. Вы работали над сериализацией? Можете ли вы определить разницу между сериализуемым и экстернализуемым?

Вы можете найти подробный ответ здесь

20. Как вы обнаружите утечку памяти в своем приложении?

На этот вопрос нет простого ответа. Вы можете взять дамп потока через JVisualVM и выполнить анализ в eclipse memory analyzer tool . Это все о Вопросы для собеседования на Java с опытом работы от 5 до 6 лет . Вам также может понравиться:

Оригинал: “https://dev.to/arpitmandliya/java-interview-questions-for-4-to-7-years-experience-17k9”