Java Interview Tasks
3.89K subscribers
185 photos
1 file
121 links
Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.

Автор канала - @alexzelentsov

По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks
Download Telegram
Этот код компилируется, но выдает совершенно неправильный результат:
[0, -1, -2, -3, 3, 1, 2]
Для Comparator, необходимо реализовать один метод compare(), который принимает два integer значения и возвращают int значение, знак которого показывает, какой из входных параметров больше.
Метод Integer.max() принимает два целочисленных значения и возвращает int, поэтому с точки зрения Java, он соответствует интерфейсу Comparator. Однако знак возвращаемого значения не показывает, какой из входных данных больше. Например max(2,3)=3, а в случае компаратора должен был бы вернуть отрицательное значение. Поэтому сортировка работает некорректно.
Чтобы исправить этот код, вы можете указать Comparator.naturalOrder().
👍15🔥4👏2🐳1
Что напечатает код?
👍5🔥3😁2
Ответ к вопросу про EntDto:
На первый взгляд может показаться, что все в порядке.
Однако это не работает: любая попытка создание экземпляра EntDto приводит к исключению NullPointerException. Инициализация поля random фактически является частью класса EntDto. конструктор, который выполняется после конструктора суперкласса. Когда выполняется конструктор суперкласса, поля подкласса не инициализируются. Однако мы вызываем переопределенный метод generateId(), который предполагает, что random уже инициализировано.
👍9🔥4🐳21
Что напечатает код?
👍9💩7
🔥8👍2
Ответ на вопрос про порядок инициализации:
ответ null, потому что Y.Y_FIELD в этом случае будет null, что бы понять это,
давайте посмотрим шаги инициализации этого кода:
Class X initializer starts
Class Y initializer starts
Y_FIELD = X.X_FIELD; // X.X_FIELD = null
Class Y initializer ends
X.y = new Y();
X.X_FIELD = "ttt".toUpperCase();
Class X initializer ends

То есть когда X_FIELD присваивается в переменную класса Y, поле еще null.
🔥14👍1
Чему равен average?
🔥7👍1
👍7🔥4
Ответ на вопрос про среднее значение двух интов:
Проблема в коде возникает из-за переполнения переменной типа int, так как значение суммы переменных a и b превышает максимально допустимое значение для типа int.
В языке Java int занимает 4 байта (32 бита), что позволяет хранить целые числа в диапазоне от -2,147,483,648 до 2,147,483,647.
Сумма a и b:
( a + b = 1,500,000,000 + 1,500,000,000 = 3,000,000,000 )
Это значение больше, чем максимальное значение для типа int (2,147,483,647). Поэтому происходит переполнение.
Когда происходит переполнение, результат «оборачивается» и начинает считаться от минимального значения переменной. Поэтому мы получим отрицательное значение. И в итоге будет -647483648
👍12🔥3
Что напечатает код?
🔥6👍1
Что напечатает код?
Anonymous Quiz
51%
1.0
27%
1.5
5%
2.0
16%
другое
1%
узнать ответ
👍6🔥5
Здесь перед присваиванием будет выполнено целочисленное деление, в результате которого дробная часть будет отбрасываться. В результате переменная half никогда не будет содержать дробную часть, и, например, функции process(2) и process(3) будут возвращать один и тот же результат.

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

В случае необходимости дробной части используйте явную константу с плавающей точкой или оператор приведения типа:

double half = value / 2.0; (явная константа double 2.0)
double half = (double) value / 2; (явный оператор приведения)
👍161
В компании 20% сотрудников работают на удаленке. Если сотрудник работает на удаленке, то вероятность того, что он работает каждый день меньше 8 часов, составляет 50%. Если сотрудник работает в офисе, то вероятность того, что он работает меньше , составляет 10%. Вопрос: Какова вероятность того, что сотрудник работает на удаленке, если известно, что он работает меньше 8 часов в день?
👍6🔥3
Решение задачи про удаленную работу:
Процент сотрудников на удаленке: 20% (то есть из 100 сотрудников 20 работают на удаленке и 80 — в офисе).
Вероятность, что удаленный сотрудник работает меньше 8 часов: 50% (из 20 удаленных сотрудников, 10 работают меньше 8 часов).
Вероятность, что офисный сотрудник работает меньше 8 часов: 10% (из 80 офисных сотрудников, 8 работают меньше 8 часов).

Считаем общее количество сотрудников, которые работают меньше 8 часов.
Удаленные сотрудники: 10 (из 20).
Офисные сотрудники: 8 (из 80).
Итого сотрудников, работающих меньше 8 часов: [ 10 + 8 = 18 ]
Выясняем, сколько из работающих меньше 8 часов — это удаленные сотрудники.
У нас 10 удаленных сотрудников, которые работают меньше 8 часов.
Теперь находим долю удаленных сотрудников среди всех, кто работает меньше 8 часов.

Из 18 сотрудников, работающих меньше 8 часов, 10 являются удаленными.
Вероятность того, что сотрудник работает на удаленке, если он работает меньше 8 часов:

Это 10 удаленных сотрудников из 18 работающих меньше 8 часов: [ 10/18 = 0.56 ]
Ответ:
Таким образом, вероятность того, что сотрудник работает на удаленке, если он работает меньше 8 часов в день, составляет примерно 56%
🔥10👍4
Чему равно v?
🔥6🤔2
Ответ на задачу про вычисление среднего: При использовании выражения LongStream.of(Long.MAX_VALUE, Long.MAX_VALUE) внутренняя работа функции average() сначала вычисляет сумму элементов. Поскольку оба значения равны Long.MAX_VALUE, сумма превышает Long.MAX_VALUE: [ Long.MAX_VALUE + Long.MAX_VALUE = 2 \times (2^{63} - 1) = 2^{64} - 2 ] Однако 2^{64} - 2 не может быть представлено типом long (она превышает Long.MAX_VALUE), в результате чего происходит переполнение.

Поскольку sum фактически переполняется и становится отрицательным (из-за переполнения), результатом вычисления среднего может стать отрицательное значение, что является контринтуитивным.
🔥8👍2
Сколько элементов будет в result?
👍5🔥5
Сколько элементов будет в result?
Anonymous Quiz
16%
6
20%
7
17%
8
6%
1
4%
0
18%
узнать сколько
19%
другой ответ
👍7🔥5