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
Ответ на вопрос про Integer.MIN_VALUE/-Integer.MIN_VALUE:
Выражение System.out.println(Integer.MIN_VALUE == -Integer.MIN_VALUE); выводит true.
Давайте поймем почему так:
Integer.MIN_VALUE — это константа в Java, представляющая наименьшее возможное значение для типа int. Для 32-битного целочисленного типа это значение равно -2,147,483,648 (или −(2^31)).

Когда мы берем отрицательное значение от Integer.MIN_VALUE, мы вычисляем:
-Integer.MIN_VALUE = -(-2,147,483,648) = 2,147,483,648
Однако 2,147,483,648 не может быть представлено в типе int, так как максимальное значение для int — это 2,147,483,647 (или 2^31 - 1). Поэтому при попытке установить такое значение происходит переполнение.

При преобразовании 2,147,483,648 в тип int происходит переполнение. Оно «оборачивается» назад по кругу и становится равным Integer.MIN_VALUE, то есть -2,147,483,648.
🔥22👍5🙏1
Есть ли проблемы в этом коде?
🔥4🙏1🏆1
Может ли Math.abs() вернуть отрицательный результат?
Anonymous Quiz
49%
нет
30%
да
8%
узнать ответ
13%
что за бред?)
🔥5👍3🙏1
Ответ на вопрос про Math.abs:

Когда вы вызываете Math.abs(Integer.MIN_VALUE) в Java, результатом будет Integer.MIN_VALUE, и вы получите отрицательное значение. Давайте разберемся, почему так происходит.

Метод Math.abs() возвращает абсолютное значение числа. То есть он возвращает положительное значение, если число отрицательное, и само число, если оно положительное.

Integer.MIN_VALUE представляет собой наименьшее возможное значение для типа int в Java, которое равно -2,147,483,648 (или −(2^31)).

Когда вы вызываете Math.abs(-2,147,483,648), метод пытается вернуть положительное значение этого числа. Однако в диапазоне int не существует представления для 2,147,483,648, так как максимальное положительное значение int — это 2,147,483,647 (или 2^31 - 1).
Следовательно, попытка преобразовать Integer.MIN_VALUE в положительное значение приводит к переполнению.

По сути, когда Math.abs() пытается вернуть -(-2,147,483,648), это значение не может быть представлено в типе int, и в результате вы получите Integer.MIN_VALUE, а не ожидаемое положительное число.

Как вариант решения можно использовать Math.absExact, он в этом случае кидает ArithmeticError.
Так же обратите внимание на метод Math.floorMod как замену для Math.abs() % intVal
🔥12👍8👏2
Сколько есть примитивных типов в джаве?
Anonymous Quiz
1%
1
2%
2
10%
4
26%
6
58%
8
2%
Что это?
3%
Не знаю
👍8🔥3👌1
Ответ на вопрос про количество примитивных типов в java:

В Java существует восемь примитивных типов данных:

byte - 8-битное целое число.
short - 16-битное целое число.
int - 32-битное целое число.
long - 64-битное целое число.
float - 32-битное число с плавающей точкой.
double - 64-битное число с плавающей точкой.
char - 16-битный символ (представляет символ в кодировке UTF-16).
boolean - логический тип (может принимать значения true или false).
🔥5👍3🐳2
Правильно ли реализован метод?
👍6🔥21
Правильно ли реализован метод?
Anonymous Quiz
48%
нет
46%
да
3%
не знаю
3%
узнать
👍7🔥1🙏1
Проблемы метода isOdd:
Метод будет правильно работать для положительных нечетных чисел, но он не будет правильно обрабатывать отрицательные нечетные числа. В частности, для отрицательных нечетных чисел, остаток от деления на 2 будет -1, что не соответствует условию. Например:
Для value = -3, возвращаемое значение будет равно:
-3 % 2 == -1 // это не то, что мы ожидаем, метод вернет false

Чтобы метод корректно определял нечетность для всех целых чисел (как положительных, так и отрицательных), вы можете использовать такую реализацию:

public boolean isOdd(int value) {
return value % 2 != 0;
}
👍10🐳3🔥2
Правильно ли работает метод?
🔥6👍3👎1🙏1
Правильно ли работает метод to0_100Range() ?
Anonymous Quiz
23%
да
67%
нет
3%
другой ответ
8%
узнать ответ
👍6🔥1🙏1
Пояснение к to0_100Range():
Тут неправильное использование Math.min и Math.max: используется Math.max(value, 100), чтобы ограничить значение, но при этом вызывается Math.min(0, ...).
Это означает, что если value не меньше 100, то после выполнения этой операции value будет всегда 0, так как Math.min(0, ...) вернет 0 независимо от второго аргумента, если он больше 0.
Ожидаемое поведение - предполагается, что надо ограничить value в диапазоне от 0 до 100, включая крайние значения. Однако текущий код этого не делает. На самом деле, после выполнения этой строки:

Если value меньше 100, но больше 0, то ваше значение будет 0.
Если value больше 100, то оно останется 0 из-за Math.min.
Корректное решение:
Для ограничения значения value в диапазоне от 0 до 100, вы можете воспользоваться следующим кодом:
value = Math.max(0, Math.min(value, 100));
👍64🔥3
Что напечатает код?
🔥4👍3🙏1
👍4🔥4😁4
Ответ на вопрос про -1 * 0.0 :
Когда вы выполняете выражение -1 * 0.0 в Java, результат будет -0.0. Давайте разберем, почему это происходит.

В математике любое число, умноженное на 0, всегда дает 0. Однако в языке программирования, таком как Java, 0 может быть представлен как 0.0 (положительный ноль с плавающей точкой) и -0.0 (отрицательный ноль с плавающей точкой). Обратите внимание, что это не просто разные представления одного и того же числа — они могут повлиять на поведение программ, которые используют их.

В данном случае 0.0 — это значение с плавающей точкой, и операция умножения с -1 (который является целым числом) автоматически приводит -1 к типу double для выполнения операции. Таким образом, -1 * 0.0 выполняется как -1.0 * 0.0.

Когда вы умножаете -1.0 * 0.0, результатом будет -0.0. В Java, значение -0.0 действительно существует и может быть использовано, например, в сравнениях или в других математических операциях.
🔥7👍5😁1🙏1
У вас есть 3 монеты:
Первая монета имеет 2 орла (О, О).
Вторая монета имеет 2 решки (Р, Р).
Третья монета имеет 1 орел и 1 решка (О, Р).
Вы случайным образом выбираете одну монету и подбрасываете ее.
Какова вероятность того, что выпал орел?
👍72🔥1
Решение задачи про три монеты:
Определяем вероятности выбора монет:

У вас есть 3 монеты, и каждая монета имеет равные шансы быть выбранной. Это значит, что вероятность выбора каждой монеты равна 1/3.
Рассмотрим возможные исходы при выборе каждой монеты:

Первая монета (О, О): При подбрасывании этой монеты, вы всегда получите орел, поскольку у монеты оба lados — орлы.
Вторая монета (Р, Р): При подбрасывании этой монеты, вы никогда не получите орел, так как у нее только решки.
Третья монета (О, Р): При подбрасывании этой монеты, вы получите орел с вероятностью 50%, так как у нее один орел и одна решка.
Считаем шансы получить орел:

Теперь оценим, сколько случаев из возможных приведут к получению орла:
Из 3-х монет:
1-я монета всегда дает орел (1 случай).
2-я монета никогда не дает орел (0 случаев).
3-я монета дает орел в половине случаев (1 случай из 2, то есть 0.5).
Объединяем результаты:

У нас есть:
1 случай из 1 (первая монета).
0 случаев из 1 (вторая монета).
0.5 случаев из 1 (третья монета).
Тогда общее количество случаев, когда мы получаем орел:
( 1 + 0 + 0.5 = 1.5 )
Общее количество подбрасываний:

Поскольку мы выбираем одну из трех монет, фактически общее количество попыток — это 1 (от первой монеты) + 1 (от второй) + 0.5 (от третьей).
Таким образом, общее количество подбрасываний — 3 (так как мы рассматриваем сжатый вариант из природы случайной выборки).
Находим вероятность:

Таким образом, общая вероятность получения орла: [ P(орел) = 1.5/3 = 1/2 ]
Ответ:
Вероятность того, что выпал орел, составляет ( 1/2 ) или 50%.
👍10🔥42👎1
Чему равно значение переменной allMatch?
👍5🔥2🙏1
Чему равно значение переменной allMatch?
Anonymous Quiz
27%
true
63%
false
10%
узнать ответ
😭8👍3🔥2
Чему равно значение переменной anyMatch?
👍5🔥1🙏1
Чему равно значение переменной anyMatch?
Anonymous Quiz
24%
true
70%
false
6%
узнать ответ
👍71🔥1