Каким будет результат выполнения программы?
Anonymous Quiz
28%
fa fa
46%
fa la
6%
la la
18%
Ошибка компиляции
0%
Ошибка времени выполнения
2%
Не знаю
Из какой структуры данных "сборщик мусора" удалит все элементы у которых исчезла последняя ссылка на их ключ в этой структуре?
Anonymous Quiz
13%
HashMap
25%
LinkedHashMap
44%
WeakHashMap
8%
IdentityHashMap
9%
Не знаю
Каков результат выполнения этой программы?
Anonymous Quiz
37%
Код не компилируется, так как операция ++ не может быть применена к символьным переменным
18%
Ничего не напечатает
10%
Программа зациклится
33%
Напечатает цифры от 0 до 9-ти
3%
Не знаю
Что выведет следующий код?
Anonymous Quiz
8%
Go-Go!Bo-Bo!Hello, World!
56%
Bo-Bo!Go-Go!
1%
Go-Go!Bo-Bo!
29%
Bo-Bo!Hello, World!Go-Go!
6%
Не знаю
Что будет выведено на печать после выполнения данного кода?
Anonymous Quiz
8%
Будет напечатано null
5%
Будет напечатано Number: 300
6%
Результат невозможно предугадать
64%
Будет напечатано Number: 200
6%
Будет напечатано Number: 100
7%
Произойдет ошибка компиляции, т.к. в интерфейсе Map нет метода put()
5%
Не знаю
Несколько вопросов по многопоточности
1. Каким образом можно создать поток?
2. Чем различаются Thread и Runnable?
3. В чём заключается разница между методами start() и run()?
#вопрос_на_собеседовании
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().
- Создать потомка класса 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%
Не знаю
Forwarded from BackendQuiz - задачи с собеседований по бэкенду
[SQL] Пусть дана таблица Income, два столбца которой имеют значения:
Forwarded from BackendQuiz - задачи с собеседований по бэкенду
[SQL] Пусть дана таблица Income, два столбца которой имеют значения:
Anonymous Quiz
3%
1
15%
2
6%
3
4%
4
15%
5
30%
Запрос содержит синтаксическую ошибку и не выполнится
17%
Запрос не выполнится, поскольку к таким значениям столбцов он не применим
9%
Не знаю
Каким будет результат выполнения следующего кода?
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 предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.
- Доступ к произвольному элементу по индексу за константное время O(1);
- Доступ к элементам по значению за линейное время O(N);
- Вставка в конец в среднем производится за константное время O(1);
- Удаление произвольного элемента из списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется);
- Вставка элемента в произвольное место списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку вправо;
- Минимум накладных расходов при хранении.
LinkedList:
- На получение элемента по индексу или значению потребуется линейное время O(N);
- На добавление и удаление в начало или конец списка потребуется константное O(1);
- Вставка или удаление в/из произвольного места за константное O(N);
- Требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся ещё указатели на следующий и предыдущий элементы списка.
В целом, LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.