JavaRush /جاوا بلاگ /Random-UR /لیول 30۔ لیول کے موضوع پر انٹرویو کے سوالات کے جوابات
DefNeo
سطح

لیول 30۔ لیول کے موضوع پر انٹرویو کے سوالات کے جوابات

گروپ میں شائع ہوا۔
لیول 30۔ لیول - 1 کے موضوع پر انٹرویو کے سوالات کے جوابات
  1. NaN کیا ہے؟

    NaN (انگریزی Not-a-Number) فلوٹنگ پوائنٹ نمبر کی خاص حالتوں میں سے ایک ہے۔ بہت سے ریاضیاتی لائبریریوں اور ریاضی کے کوپروسیسر میں استعمال کیا جاتا ہے۔ یہ حالت مختلف صورتوں میں ہو سکتی ہے، مثال کے طور پر، جب کوئی پچھلا ریاضیاتی آپریشن کسی غیر متعینہ نتیجہ کے ساتھ مکمل ہو گیا ہو، یا اگر کوئی ایسی تعداد جو شرائط کو پورا نہیں کرتی ہو، میموری سیل میں داخل کی گئی ہو۔

    IEEE 754 کے مطابق، اس حالت کو مخصوص قیمت 11...11، اور مینٹیسا کو 0 (مشین انفینٹی کے لیے مخصوص قدر) کے علاوہ کسی بھی چیز پر متعین کر کے متعین کیا جاتا ہے۔ سائن اور مینٹیسا کچھ اضافی معلومات لے سکتے ہیں: بہت سی لائبریریاں "منفی" NaN کو -NaN کے طور پر آؤٹ کرتی ہیں۔

    جواب کے طور پر NaN کے نتیجے میں ہونے والی کارروائیوں میں شامل ہیں:

    • تمام ریاضیاتی آپریشنز جن میں NaN ایک آپرینڈ کے طور پر ہوتا ہے۔
    • صفر کو صفر سے تقسیم کرنا؛
    • لامحدودیت کو لامحدود سے تقسیم کرنا؛
    • صفر کو لامحدود سے ضرب کرنا؛
    • مخالف علامت کی لامحدودیت کے ساتھ لامحدودیت کا اضافہ؛
    • منفی نمبر کے مربع جڑ کا حساب لگانا[1]؛
    • منفی نمبر کا لوگارتھم لینا۔

    کچھ پروگرامنگ زبانوں میں "خاموش" اور "سگنل" NaN ہوتا ہے: پہلی، کسی بھی آپریشن میں شامل ہونے پر، NaN لوٹاتی ہے، دوسری ہنگامی صورتحال کا سبب بنتی ہے۔ عام طور پر، "خاموش" یا "سگنل" کا تعین مینٹیسا کے سب سے اہم حصے سے ہوتا ہے۔

    NaN کسی دوسری قدر کے برابر نہیں ہے (خود بھی نہیں[2])؛ اس کے مطابق، NaN کے نتیجے کی جانچ کرنے کا سب سے آسان طریقہ یہ ہے کہ نتیجے میں آنے والی قدر کا خود سے موازنہ کیا جائے۔

    دوسرے موازنہ آپریٹرز کا طرز عمل زبان کے لحاظ سے مختلف ہوتا ہے۔ کچھ زبانیں غلط پیدا کرتی ہیں[3] (تاکہ ایک <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 NaN
    انفینٹی - انفینٹی NaN
    ±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