JavaRush /جاوا بلاگ /Random-SD /ليول 30. ليول جي موضوع تي انٽرويو سوالن جا جواب
DefNeo
سطح

ليول 30. ليول جي موضوع تي انٽرويو سوالن جا جواب

گروپ ۾ شايع ٿيل
ليول 30. ليول جي موضوع تي انٽرويو سوالن جا جواب - 1
  1. NaN ڇا آهي؟

    NaN (انگريزي Not-a-Number) هڪ سچل پوائنٽ نمبر جي خاص رياستن مان هڪ آهي. ڪيترن ئي رياضياتي لائبريرين ۽ رياضياتي coprocessors ۾ استعمال ڪيو. اها حالت مختلف صورتن ۾ ٿي سگهي ٿي، مثال طور، جڏهن ڪو اڳوڻو رياضياتي آپريشن اڻڄاتل نتيجن سان پورو ٿيو، يا جيڪڏهن ڪو انگ جيڪو شرطن کي پورو نٿو ڪري، ميموري سيل ۾ داخل ڪيو ويو هجي.

    IEEE 754 جي مطابق، هن رياست کي مخصوص ڪيل قيمت 11...11 تي ايڪسپونٽ مقرر ڪندي، ۽ مينٽيسا کي 0 کان سواءِ ڪنهن به شيءِ لاءِ مقرر ڪيو ويو آهي (مشين لامحدوديت لاءِ مخصوص قدر). نشاني ۽ مينٽيسا شايد ڪجھ اضافي معلومات کڻي سگھن ٿا: ڪيتريون ئي لائبريريون "منفي" NaN جيئن -NaN ڪڍن ٿيون.

    آپريشنز جن جي نتيجي ۾ NaN جي جواب ۾ شامل آھن:

    • سڀ رياضياتي عمل جنهن ۾ NaN شامل آهي هڪ آپرينڊ جي طور تي؛
    • صفر کي صفر سان ورهائڻ؛
    • لامحدوديت کي لامحدود سان ورهائڻ؛
    • صفر کي لامحدود سان ضرب ڪرڻ؛
    • مخالف نشاني جي لامحدوديت سان لامحدوديت جو اضافو؛
    • ناڪاري انگ جي چورس روٽ کي ڳڻڻ[1]؛
    • هڪ ناڪاري انگ جو لوگارٿم وٺڻ.

    ڪجهه پروگرامنگ ٻولين ۾ "خاموش" ۽ "سگنل" NaN آهن: پهرين، جڏهن ڪنهن به آپريشن ۾ شامل ٿي، NaN موٽائي ٿي، ٻي ايمرجنسي سبب. عام طور تي، "خاموش" يا "سگنل" مانيسا جي سڀ کان اهم ساٽ طرفان طئي ڪيو ويندو آهي.

    NaN ڪنهن ٻئي قدر جي برابر ناهي (جڏهن ته پاڻ به نه[2])؛ ان جي مطابق، NaN لاء نتيجو چيڪ ڪرڻ جو آسان طريقو اهو آهي ته نتيجو قيمت پاڻ سان مقابلو ڪرڻ.

    ٻين مقابلي جي آپريٽرن جو رويو ٻولي جي لحاظ کان مختلف آهي. ڪجهه ٻوليون غلط پيدا ڪن ٿيون[3] (انهي ڪري ته a <b ۽ b> هڪ NaN سان مختلف طريقي سان عمل ڪن ٿا)، ٻيون "خاموش" NaN لاءِ به هڪ حادثو اُڇليندا آهن.

    ڪو به غير معمولي عمل جيڪو هڪ خاموش NaN کي دليل طور وٺي ٿو هميشه NaN واپس ڪندو، قطع نظر ٻين دليلن جي قيمت جي. هن قاعدي ۾ صرف استثنا آهن وڌ کان وڌ ۽ منٽ افعال، جيڪي "سيڪنڊ" دليل جي قيمت (NaN کان سواء) واپس ڪن ٿا. معمولي آپريشن جيڪي سڃاڻپ آهن خاص طور تي علاج ڪيا ويا آهن: مثال طور، 1NaN برابر 1.

  2. جاوا ۾ لامحدود ڪيئن حاصل ڪجي؟

    جاوا ۾، قسم جي doubleخاص معنيٰ آهي پلس انفنيٽي ۽ مائنس انفنيٽي لاءِ. 0.0 سان ورهايل هڪ مثبت نمبر ڏئي ٿو "پلس لامحدود"، ۽ هڪ منفي نمبر - "مائنس لامحدود". اهي تصورات قسم جي خاص مستقلن سان ملن ٿا Double:

    ڪوڊ وصف
    public static final double POSITIVE_INFINITY = 1.0 / 0.0; گڏوگڏ لامحدود
    public static final double NEGATIVE_INFINITY = -1.0 / 0.0; مائنس لامحدود
    1. اسان اسٽرنگ کي عدد ۾ تبديل ڪندا آهيون، ۽ ان ۾ اکر شامل آهن. جواب آهي NaN
    2. لامحدود مائنس لامحدود. جواب آهي NaN
    3. ڪيتريون ئي ٻيون حالتون آهن جتي اهي جواب ۾ هڪ انگ جي اميد رکندا آهن، پر نتيجو اڻڄاتل آهي.

    ڪو به آپريشن جيڪو NaN تي مشتمل آهي NaN ۾ نتيجا.

    لامحدود عمل:
    اظهار نتيجو
    n ÷ ± لامحدود 0
    ±لامحدود × ±لامحدود ±لامحدود
    ±(صفر نه) ÷ ±لامحدود
    لاتعداد + لاتعداد لاتعداد
    ±0 ÷ ±0 نان
    لاتعداد- لاتعداد نان
    ±Infinity ÷ ±Infinity NaN
    ±Infinity × 0 NaN
  3. Как проверить, что в результате вычисления получилась бесконечность?

    Есть ответ на StackOverFlow.

    Все сводится к выводу System.out.println()

  4. What такое битовая маска?

    Битовая маска — это когда хранится много различных логических значений (true/false) в виде одного целого числа. При этом каждому boolean-значению соответствует определенный бит.

  5. Где применяют битовые маски?

    В основном там, где надо компактно хранить много информации об an objectх. Когда хранишь много информации об an objectе, всегда наберется пара десятков логических переменных. Вот их всех удобно хранить в одном числе. Именно хранить. Т.к. пользоваться им в работе не так уж удобно.

  6. Как установить бит в единицу в битовой маске?

    Опираясь на лекции можно ответить таким codeом:

    Здесь использовал метод Integer.toBinaryString(), дабы проверить себя, а вдруг)

    public class BitMask {
    
        public static void main(String[] args) {
            int a = 9;
    
           a |= (1<<2); // установить в 1 бит 2
    
    
            System.out.println(Integer.toBinaryString(a) + " "+ a);
        }
    }

    Вывод такой:

    1101 13

  7. Как установить бит в ноль в битовой маске?

    public class BitMask {
    
    public static void main(String[] args) {
    int a = 15;
    
    a &= ~(1<<2); // установить в 0 бит 2
    System.out.println(Integer.toBinaryString(a) + " "+ a);
    
        }
    }

    Вывод:

    1011 11

    Я взял число 15, так How на нем более наглядно видно, куда устанавливается 0.

  8. Как получить meaning определенного бита в битовой маске?

    public class BitMask {
    
    public static void main(String[] args) {
         int a = 15;
    
         a &= ~(1<<2); // установить в 0 бит 2
    
         int c = a & (1<<2); // узнаем про 2 бит
         int d = a & (1<<3); // узнаем про 3 бит
        System.out.println(Integer.toBinaryString(a) + " "+ a + " " + c +" "+ d);
    
        }
    }

    Вывод:

    1011 11 0 8

    C 0 все понятно, на том месте и вправду 0. А переменная d возвращает meaning запрашиваемого бита (в 10-ой системе).

  9. What такое ленивое вычисление выражения?

    Статья: Ленивое программирование и ленивые вычисления

    Это ленивые вычисления (lazy evaluation). В ленивых вычислениях ни один параметр не вычисляется, пока в нем нет необходимости. Программы фактически начинаются с конца и работают от конца к началу. Программа вычисляет, что должно быть возвращено, и продолжает движение назад, чтобы определить, Howое meaning для этого требуется. В сущности каждая функция вызывается с promise'ами для каждого параметра. Когда для вычисления необходимо meaning, тогда выполняется promise. Поскольку code выполняется только тогда, когда необходимо meaning, это называется вызов по необходимости (call-by-need). В традиционных языках программирования instead of promise'ов передаются значения, это называется вызов по значению(call-by-value).

    Технология программирования "вызов по необходимости" имеет ряд преимуществ. Потоки имплементируются автоматически. Ненужные значения никогда не вычисляются. Однако, поведение ленивых программ часто трудно предсказать. В программах типа "вызов по значению" порядок вычисления довольно предсказуем, поэтому любые time- or sequence-based вычисления относительно легко имплемнтировать. В ленивых языках, где специальные конструкции, например, monads, необходимы для описания явно упорядоченных событий, это намного труднее. Все это также делает связь с другими языками более трудной.

    Существуют языки программирования, например, Haskell и Clean, использующие ленивое программирование по умолчанию. Кроме того, для некоторых языков, таких How Scheme, ML и другие, существуют ленивые версии.

    Иногда, откладывая вычисления до тех пор, пока не понадобится их meaning, вы можете оптимизировать speed выполнения программы or реструктурировать программу в более понятную форму. Несмотря на свою ценность, методы ленивого программирования не слишком широко используются or даже не очень известны. Подумайте о том, чтобы добавить их в ваш арсенал.

  10. Чем отличается использование && и & для типа boolean?

    && — это логическое «и». (В этом случае имеют место ленивые вычисления: некоторые вычисления опускаются, когда результат и так ясен)

    & — это побитовое «и» (Если применить этот оператор к переменным типа Boolean, то ленивых вычислений происходить не будет)

تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION