JavaRush/Курсы/Java Multithreading/Вопросы с собеседования 10 уровень

Вопросы с собеседования 10 уровень

Открыта

— Привет, Амиго!

  Вопросы к собеседованиям
1 Что такое NaN?
2 Как получить бесконечность в Java?
3 Как проверить, что в результате вычисления получилась бесконечность?
4 Что такое битовая маска?
5 Где применяют битовые маски?
6 Как установить бит в единицу в битовой маске?
7 Как установить бит в ноль в битовой маске?
8 Как получить значение определенного бита в битовой маске?
9 Что такое ленивое вычисление выражения?
10 Чем отличается использование && и & для типа boolean?
Комментарии (18)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
FutureDevJava Student в Home Corporation ®
6 мая 2023, 20:27
Все вопросы прямо по теме "Java Multithreading")))
YahveSmercifulПервый заместитель Главы в СБУExpert
6 марта 2023, 14:34
Что то не понял про Битовые маски, нашел хорошее видео https://youtu.be/RIyz2_0FTbE может кому пригодиться
PaiMei in J#Grand Master в Eagles' Claw
1 октября 2021, 09:26
Почему корень из отрицательного числа NAN? А как же комплексные числа, всякие там "мнимые единицы"?🤔
Ars
Уровень 41
13 ноября 2021, 13:42
Видимо их поддержку не завезли в java.
Kurama
Уровень 50
4 декабря 2022, 20:39
Да, в джаве такого нет, да и не нужно оно вообще здесь Сам когда-то задавлся вопросом
Denis Odesskiy Full Stack Developer
28 июля 2024, 14:17
Есть разные библиотеки для этого, можно самому написать класс или использовать для этого пайтон (туда завезли)😄
Дмитрий
Уровень 41
8 июля 2021, 15:51
Вопросы к Собеседованию (Ответы) - Часть 1 1. Что такое NaN? NAN (англ. Not-a-Number, «не число») — одно из особых состояний числа с плавающей запятой. Используется во многих математических библиотеках и математических сопроцессорах. Данное состояние может возникнуть в различных случаях, например, когда предыдущая математическая операция завершилась с неопределённым результатом или если в ячейку памяти попало не удовлетворяющее условиям число. В соответствии с IEEE 754, такое состояние задаётся через установку показателя степени в зарезервированное значение 11…11, а мантиссы — во что угодно, кроме 0 (зарезервированное значение для машинной бесконечности). Знак и мантисса могут нести какую-то дополнительную информацию: многие библиотеки «отрицательный» NaN выводят как -NaN. К операциям, приводящим к появлению NaN в качестве ответа, относятся: ⠀• все математические операции, содержащие NaN в качестве одного из операндов; ⠀• деление нуля на ноль; ⠀• деление бесконечности на бесконечность; ⠀• умножение нуля на бесконечность; ⠀• сложение бесконечности с бесконечностью противоположного знака; ⠀• вычисление квадратного корня отрицательного числа; ⠀• логарифмирование отрицательного числа; Источник: NaN 2. Как получить бесконечность в Java? В Java тип double имеет специальные значения для понятий «плюс бесконечность» и «минус бесконечность». Положительное число, разделенное на 0.0, дает «плюс бесконечность», а отрицательное – «минус бесконечность». Этим понятиям соответствуют специальные константы типа Double:
public static final double POSITIVE_INFINITY = 1.0 / 0.0; //плюс бесконечность
public static final double NEGATIVE_INFINITY = -1.0 / 0.0; //минус бесконечность
Дмитрий
Уровень 41
8 июля 2021, 16:00
Вопросы к Собеседованию (Ответы) - Часть 2 3. Как проверить, что в результате вычисления получилась бесконечность? С помощью System.out.println()
double inf = Double.POSITIVE_INFINITY;
System.out.println(inf); // Бесконечность
System.out.println(inf + 1); //Бесконечность+1 ==Бесконечность
System.out.println(inf + 10); //Бесконечность+10 ==Бесконечность
System.out.println(inf * -1); //равно «минус бесконечность»
Double.NEGATIVE_INFINITY

ВЫВОД:
⠀Infinity
⠀Infinity
⠀Infinity
⠀-Infinity
4. Что такое битовая маска? Битовая маска – это когда мы храним много различных логических значений (true/false) в виде одного целого числа. При этом каждому boolean-значению соответствует определенный бит. 5. Где применяют битовые маски? В основном там, где надо компактно хранить много информации об объектах. Когда хранишь много информации об объекте, всегда наберется пара десятков логических переменных. Вот их всех удобно хранить в одном числе. Именно хранить. Т.к. пользоваться им в работе не так уж удобно. 6. Как установить бит в единицу в битовой маске? Побитово сложить ее с маской, в которой все биты кроме нужного - нулевые:
byte b = 0b00000000;
b |= 0b00100000; //третий старший бит будет выставлен в 1
7. Как установить бит в ноль в битовой маске? Побитово умножить ее на маску, в которой все биты кроме нужного - единичные:
byte b = 0b01011010;
b &= 0b10111111; //второй старший бит будет выставлен в 0
Дмитрий
Уровень 41
8 июля 2021, 16:03
Вопросы к Собеседованию (Ответы) - Часть 3 8. Как получить значение определенного бита в битовой маске? Для того чтобы получить значение определенного бита в битовой маске необходимо умножить эту маску на другую маску, в которой все биты кроме интересующего имеют значение 0 и сравнить результат вычислений с нулем.
boolean b = c & 0b00010000 != 0; //Определяем выставлен ли в 1 пятый младший бит в переменной c
9. Что такое ленивое вычисление выражения? Ленивые вычисления (англ. lazy evaluation, также отложенные вычисления) — применяемая в некоторых языках программирования стратегия вычисления, согласно которой вычисления следует откладывать до тех пор, пока не понадобится их результат. Ленивые вычисления относятся к нестрогим вычислениям. В Python, C#, Java 8 и ряде других языков ленивые вычисления реализованы с помощью функций-генераторов и ключевого слова yield. Для использования ленивых вычислений не обязательна встроенная поддержка на стороне языка программирования, во многих случаях отложенные вычисления могут быть реализованы любыми доступными средствами. Например, в практике многих языков широко применяется шаблон проектирования «отложенная инициализация», предписывающий переносить выполнение ресурсоёмких операций по созданию объектов или получения значения непосредственно перед использованием. Источник: Ленивые Вычисления
Дмитрий
Уровень 41
8 июля 2021, 16:03
10. Чем отличается использование && и & для типа boolean? && — это логическое «И» ⠀• Тут работает принцип ленивых вычислений (вычислений только при необходимости). Если при ⠀⠀вычислении части выражения ответ уже и так понятен, то остальная часть выражения не ⠀⠀вычисляется.) & — это побитовое «И» ⠀• Этот оператор можно применять к boolean-переменным ⠀• При его применении ленивых вычислений не происходит
22 сентября 2021, 19:08
Спасибо
Дмитрий Б.Г.
Уровень 32
6 октября 2021, 06:10
На 3 Вопрос правильный ответ: Double.isInfinite(double x) Определенно, когда в программе нужно убедится, что число не является бесконечностью, вы не будете выводить его в консоль и в зависимости от увиденого выбрасывать ошибку или продолжать вычисления вручную.
Denis Odesskiy Full Stack Developer
29 июля 2024, 12:55
Нет. Это не проверка, повторю ниже, уже отписывался в той статье откуда Вы видимо взяли этот материал.
Вопросы к Собеседованию (Ответы) - Часть 2

3. Как проверить, что в результате вычисления получилась бесконечность?
С помощью System.out.println()
Нет Вы тут не проверяете, а выводите результат в консоль. А если выводить в консоль не требуется? А если это условие должно учувствовать в другом выражении? ИМХО лучше делать тут так:
double number = Double.POSITIVE_INFINITY; // Тут будет Infinity.
boolean isInf = Double.isInfinite(number); // Проверяем, - тут будет true.
9 мая 2021, 07:55
такое будет работать? a.equal(Double.INFINITY) или if a + (-1 * a) == 0 число обычное else бесконечность либо NaN а по ссылке в комментах намек только на визуальную составляющую...
Sergey
Уровень 41
3 июля 2019, 18:14
Bahis
Уровень 41
4 января 2019, 22:28
кто здесь? )
ИльяBackend Developer в СберТех
25 января 2021, 17:56
йа
Александр
Уровень 35
5 января 2018, 16:56
Побуду кэпом: http://info.javarush.ru/DefNeo/2016/09/05/Ответы-на-вопросы-к-собеседованию-Level30.html