Java задачи с собеседований
6.27K subscribers
588 photos
6 videos
19 files
245 links
Задачи, тесты и теоретические вопросы по JAVA.

Репозиторий: https://github.com/proghub-official/java-interview
Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
加入频道
Что напечатает следующий код:
Anonymous Quiz
10%
012
69%
112
6%
123
10%
011
3%
001
2%
Не знаю
Каким будет результат выполнения программы?
Из какой структуры данных "сборщик мусора" удалит все элементы у которых исчезла последняя ссылка на их ключ в этой структуре?
Anonymous Quiz
13%
HashMap
25%
LinkedHashMap
44%
WeakHashMap
8%
IdentityHashMap
9%
Не знаю
Каков результат выполнения этой программы?
Что выведет следующий код?
Что будет выведено на печать после выполнения данного кода?
Несколько вопросов по многопоточности

1. Каким образом можно создать поток?
2. Чем различаются Thread и Runnable?
3. В чём заключается разница между методами start() и run()?

#вопрос_на_собеседовании
Каким образом можно создать поток?
- Создать потомка класса Thread и переопределить его метод run();
- Создать объект класса Thread, передав ему в конструкторе экземпляр класса, реализующего интерфейс Runnable. Этот интерфейс содержит метод run(), который будет выполняться в новом потоке. Поток закончит выполнение, когда завершится его метод run().
- Вызвать метод submit() у экземпляра класса, реализующего интерфейс ExecutorService, передав ему в качестве параметра экземпляр класса, реализующего интерфейс Runnable или Callable (содержит метод call(), в котором описывается логика выполнения).

Чем различаются Thread и Runnable?
Thread - это класс, некоторая надстройка над физическим потоком.
Runnable - это интерфейс, представляющий абстракцию над выполняемой задачей.
Помимо того, что Runnable помогает разрешить проблему множественного наследования, несомненный плюс от его использования состоит в том, что он позволяет логически отделить логику выполнения задачи от непосредственного управления потоком.

В чём заключается разница между методами start() и run()?
Несмотря на то, что start() вызывает метод run() внутри себя, это не то же самое, что просто вызов run(). Если run() вызывается как обычный метод, то он вызывается в том же потоке и никакой новый поток не запускается, как это происходит в случае, когда вы вызываете метод start().
Какие из следующих методов выбрасывает исключение InterruptedException?
Anonymous Quiz
19%
yield
52%
wait
19%
notify
10%
Не знаю
[SQL] Пусть дана таблица Income, два столбца которой имеют значения:
Каким будет результат выполнения следующего кода?
Каким будет результат выполнения следующего кода?
Anonymous Quiz
15%
false
18%
true
21%
Result: false
43%
Result: true
2%
Не знаю
Можно ли при объявлении класса использовать модификаторы abstract и final одновременно?
Anonymous Quiz
25%
Да
72%
Нет
3%
Не знаю
Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?

#вопрос_на_собеседовании
ArrayList:
- Доступ к произвольному элементу по индексу за константное время O(1);
- Доступ к элементам по значению за линейное время O(N);
- Вставка в конец в среднем производится за константное время O(1);
- Удаление произвольного элемента из списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется);
- Вставка элемента в произвольное место списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку вправо;
- Минимум накладных расходов при хранении.

LinkedList:
- На получение элемента по индексу или значению потребуется линейное время O(N);
- На добавление и удаление в начало или конец списка потребуется константное O(1);
- Вставка или удаление в/из произвольного места за константное O(N);
- Требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся ещё указатели на следующий и предыдущий элементы списка.

В целом, LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.
Является ли импортирование пакета java.awt, записанное в программе следующим образом: