PerfectArt · июль 2024

Тех собес на middle-senior Java Разработчик в PerfectArt

middle-senior Тех собес 18 вопросов 1 задача
1

Java

1. Что вернется в каждом случае и почему? "Hello мир".length и "Hello мир".getBytes().length

2. Что выведет консоль?

String a1 = "a";
String a2 = "а";
String a3 = new String("а");

System.out.println(a1 == a2);
System.out.println(a1 == a3);
System.out.println(a1.equals(a2));
System.out.println(a1.equals(a3));

3. Какие примитивные переменные есть и сколько памяти они занимают?

4. Какие значения может принимать integer?

5. Как создать immutable класс, у которого одно из полей типа List?

6. Какие есть полезные инструменты в concurrent пакете?

7. Для чего нужен ExecutorService?

8. Какова внутренняя реализация атомиков?

9. Что такое happens before?

10. Какие интерфейсы и классы есть в Collections?

11. Как работает HashMap?

12. Что такое лямбды, для чего нужны и как используются?

13. Как работают стримы?

14. Каково устройство памяти JVM?

15. Как работает сборщик мусора?

2

Spring

16. Для чего нужен Spring, какие преимущества и какие недостатки у него?

17. Какие есть скоупы у бинов?

18. Каков жизненный цикл бинов?

3

Задача на мультипоточность

Практика

19. Задача: Исправить шаблон для синхронизации ног робота по очереди (left-right)

public class WalkingRobot {
    
    private final int n;

    public WalkingRobot(int n) {
        this.n = n;
    }
    public void left() {
        for (int i = 0; i < n; i++) {
                System.out.println("left");
        }
    }

    public void right() {
        for (int i = 0; i < n; i++) {
                System.out.println("right");
            }
    }
    
    public static void main(String[] args) {
        WalkingRobot robot = new WalkingRobot(100);
        new Thread(robot::left).start();
        new Thread(robot::right).start();
    }
}