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

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

Java Multithreading
10 уровень , 14 лекция
Открыта

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

  Вопросы к собеседованиям
1 Что такое NaN?
2 Как получить бесконечность в Java?
3 Как проверить, что в результате вычисления получилась бесконечность?
4 Что такое битовая маска?
5 Где применяют битовые маски?
6 Как установить бит в единицу в битовой маске?
7 Как установить бит в ноль в битовой маске?
8 Как получить значение определенного бита в битовой маске?
9 Что такое ленивое вычисление выражения?
10 Чем отличается использование && и & для типа boolean?
Комментарии (18)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
FutureDev Уровень 42
6 мая 2023
Все вопросы прямо по теме "Java Multithreading")))
YahveSmerciful Уровень 43 Expert
6 марта 2023
Что то не понял про Битовые маски, нашел хорошее видео https://youtu.be/RIyz2_0FTbE может кому пригодиться
PaiMei in J# Уровень 35
1 октября 2021
Почему корень из отрицательного числа NAN? А как же комплексные числа, всякие там "мнимые единицы"?🤔
Ars Уровень 41
13 ноября 2021
Видимо их поддержку не завезли в java.
Kurama Уровень 50
4 декабря 2022
Да, в джаве такого нет, да и не нужно оно вообще здесь Сам когда-то задавлся вопросом
Denis Odesskiy Уровень 47
28 июля 2024
Есть разные библиотеки для этого, можно самому написать класс или использовать для этого пайтон (туда завезли)😄
Дмитрий Уровень 41
8 июля 2021
Вопросы к Собеседованию (Ответы) - Часть 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
Вопросы к Собеседованию (Ответы) - Часть 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
Вопросы к Собеседованию (Ответы) - Часть 3 8. Как получить значение определенного бита в битовой маске? Для того чтобы получить значение определенного бита в битовой маске необходимо умножить эту маску на другую маску, в которой все биты кроме интересующего имеют значение 0 и сравнить результат вычислений с нулем.

boolean b = c & 0b00010000 != 0; //Определяем выставлен ли в 1 пятый младший бит в переменной c
9. Что такое ленивое вычисление выражения? Ленивые вычисления (англ. lazy evaluation, также отложенные вычисления) — применяемая в некоторых языках программирования стратегия вычисления, согласно которой вычисления следует откладывать до тех пор, пока не понадобится их результат. Ленивые вычисления относятся к нестрогим вычислениям. В Python, C#, Java 8 и ряде других языков ленивые вычисления реализованы с помощью функций-генераторов и ключевого слова yield. Для использования ленивых вычислений не обязательна встроенная поддержка на стороне языка программирования, во многих случаях отложенные вычисления могут быть реализованы любыми доступными средствами. Например, в практике многих языков широко применяется шаблон проектирования «отложенная инициализация», предписывающий переносить выполнение ресурсоёмких операций по созданию объектов или получения значения непосредственно перед использованием. Источник: Ленивые Вычисления
Дмитрий Уровень 41
8 июля 2021
10. Чем отличается использование && и & для типа boolean? && — это логическое «И» ⠀• Тут работает принцип ленивых вычислений (вычислений только при необходимости). Если при ⠀⠀вычислении части выражения ответ уже и так понятен, то остальная часть выражения не ⠀⠀вычисляется.) & — это побитовое «И» ⠀• Этот оператор можно применять к boolean-переменным ⠀• При его применении ленивых вычислений не происходит
22 сентября 2021
Спасибо
Дмитрий Б.Г. Уровень 32
6 октября 2021
На 3 Вопрос правильный ответ: Double.isInfinite(double x) Определенно, когда в программе нужно убедится, что число не является бесконечностью, вы не будете выводить его в консоль и в зависимости от увиденого выбрасывать ошибку или продолжать вычисления вручную.
Denis Odesskiy Уровень 47
29 июля 2024
Нет. Это не проверка, повторю ниже, уже отписывался в той статье откуда Вы видимо взяли этот материал.

Вопросы к Собеседованию (Ответы) - Часть 2

3. Как проверить, что в результате вычисления получилась бесконечность?
С помощью System.out.println()
Нет Вы тут не проверяете, а выводите результат в консоль. А если выводить в консоль не требуется? А если это условие должно учувствовать в другом выражении? ИМХО лучше делать тут так:

        double number = Double.POSITIVE_INFINITY; // Тут будет Infinity.
        boolean isInf = Double.isInfinite(number); // Проверяем, - тут будет true.
9 мая 2021
такое будет работать? a.equal(Double.INFINITY) или if a + (-1 * a) == 0 число обычное else бесконечность либо NaN а по ссылке в комментах намек только на визуальную составляющую...
Bahis Уровень 41
4 января 2019
кто здесь? )
Илья Уровень 41
25 января 2021
йа
Александр Уровень 35
5 января 2018
Побуду кэпом: http://info.javarush.ru/DefNeo/2016/09/05/Ответы-на-вопросы-к-собеседованию-Level30.html