Что напечатает код?
Anonymous Quiz
16%
идишник дто
51%
напечатает то, что возвращает Object.toString()
18%
код не скомпилируется
7%
рантайм ошибка будет
8%
узнать что будет
🔥7👍2👏1
Ответ к вопросу про EntDto:
На первый взгляд может показаться, что все в порядке.
Однако это не работает: любая попытка создание экземпляра EntDto приводит к исключению NullPointerException. Инициализация поля random фактически является частью класса EntDto. конструктор, который выполняется после конструктора суперкласса. Когда выполняется конструктор суперкласса, поля подкласса не инициализируются. Однако мы вызываем переопределенный метод generateId(), который предполагает, что random уже инициализировано.
На первый взгляд может показаться, что все в порядке.
Однако это не работает: любая попытка создание экземпляра EntDto приводит к исключению NullPointerException. Инициализация поля random фактически является частью класса EntDto. конструктор, который выполняется после конструктора суперкласса. Когда выполняется конструктор суперкласса, поля подкласса не инициализируются. Однако мы вызываем переопределенный метод generateId(), который предполагает, что random уже инициализировано.
Telegram
Java Interview Tasks
Что напечатает код?
👍9🔥4🐳2❤1
Что напечатает код?
Anonymous Quiz
35%
TTT
0%
Ttt
2%
ttt
6%
Ничего не напечатает
16%
null
35%
Будет ошибка
6%
Узнать ответ
🔥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.
ответ 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.
Telegram
Java Interview Tasks
Что напечатает код?
🔥14👍1
Чему равен average?
Anonymous Quiz
25%
1_500_000_000
9%
1_499_999_999
3%
0
10%
-1
40%
чему-то еще
13%
узнать ответ
👍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
Проблема в коде возникает из-за переполнения переменной типа 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
Telegram
Java Interview Tasks
Чему равен average?
👍12🔥3
👍6🔥5
Здесь перед присваиванием будет выполнено целочисленное деление, в результате которого дробная часть будет отбрасываться. В результате переменная half никогда не будет содержать дробную часть, и, например, функции process(2) и process(3) будут возвращать один и тот же результат.
Способы избежать этой ошибки:
Будьте внимательны при делении. Всегда спрашивайте себя, хотите ли вы получить округленный результат или вам нужна дробная часть.
В случае необходимости дробной части используйте явную константу с плавающей точкой или оператор приведения типа:
double half = value / 2.0; (явная константа double 2.0)
double half = (double) value / 2; (явный оператор приведения)
Способы избежать этой ошибки:
Будьте внимательны при делении. Всегда спрашивайте себя, хотите ли вы получить округленный результат или вам нужна дробная часть.
В случае необходимости дробной части используйте явную константу с плавающей точкой или оператор приведения типа:
double half = value / 2.0; (явная константа double 2.0)
double half = (double) value / 2; (явный оператор приведения)
Telegram
Java Interview Tasks
Что напечатает код?
👍16❤1
В компании 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%
Процент сотрудников на удаленке: 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%
Telegram
Java Interview Tasks
В компании 20% сотрудников работают на удаленке. Если сотрудник работает на удаленке, то вероятность того, что он работает каждый день меньше 8 часов, составляет 50%. Если сотрудник работает в офисе, то вероятность того, что он работает меньше , составляет…
🔥10👍4
Ответ на задачу про вычисление среднего: При использовании выражения 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 фактически переполняется и становится отрицательным (из-за переполнения), результатом вычисления среднего может стать отрицательное значение, что является контринтуитивным.
Поскольку sum фактически переполняется и становится отрицательным (из-за переполнения), результатом вычисления среднего может стать отрицательное значение, что является контринтуитивным.
Telegram
Java Interview Tasks
Чему равно v?
🔥8👍2
Сколько элементов будет в result?
Anonymous Quiz
16%
6
20%
7
17%
8
6%
1
4%
0
18%
узнать сколько
19%
другой ответ
👍7🔥5
Ответ на вопрос про перемножение iSet и jSet:
Элементов 8, так как 0 .0 и -0.0 считаются уникальными значениями
В стандартном IEEE 754, который используется для представления чисел с плавающей точкой, существуют два разных значения для нуля:
0.0 (положительный ноль)
-0.0 (отрицательный ноль)
В Java, хотя 0.0 и -0.0 эквивалентны при использовании оператора ==, они могут рассматриваться как отдельные значения:
HashSet использует hashCode() для определения уникальности объектов, и метод hashCode() для Double возвращает разные хэш-коды для 0.0 и -0.0. Из-за этого оба значения могут храниться в HashSet.
Таким образом, result будет содержать:
0.0 (положительный ноль)
-0.0 (отрицательный ноль)
0.25
-0.25
0.5
-0.5
1.0
-1.0
Поэтому result.size() возвращает 8, поскольку 0.0 и -0.0 считаются разными значениями в HashSet из-за нюансов представления чисел с плавающей точкой в Java (см. IEEE 754).
Элементов 8, так как 0 .0 и -0.0 считаются уникальными значениями
В стандартном IEEE 754, который используется для представления чисел с плавающей точкой, существуют два разных значения для нуля:
0.0 (положительный ноль)
-0.0 (отрицательный ноль)
В Java, хотя 0.0 и -0.0 эквивалентны при использовании оператора ==, они могут рассматриваться как отдельные значения:
HashSet использует hashCode() для определения уникальности объектов, и метод hashCode() для Double возвращает разные хэш-коды для 0.0 и -0.0. Из-за этого оба значения могут храниться в HashSet.
Таким образом, result будет содержать:
0.0 (положительный ноль)
-0.0 (отрицательный ноль)
0.25
-0.25
0.5
-0.5
1.0
-1.0
Поэтому result.size() возвращает 8, поскольку 0.0 и -0.0 считаются разными значениями в HashSet из-за нюансов представления чисел с плавающей точкой в Java (см. IEEE 754).
Telegram
Java Interview Tasks
Сколько элементов будет в result?
👍12🔥11🕊2❤1