Публікації

Показано дописи з червень, 2023

29. Соб. Как примитивные типы приводятся к непримитивным аналогам? Как непримитивные типы приводятся к примитивным? Как сравниваются примитивные и непримитивные типы? Всегда ли создается новый объект при операции autoboxing? Как работает кэширование при операции autoboxing? Для каких типов и/или значений работает кэширование?

  5. Як примітивні типи приводяться до не примітивних аналогів? Компілятор використовує метод valueOf() чтобы перетворити примитивні типи у відповідні об’єкти. int x = 3; Integer y = Integer.valueOf(x);   6. Як непримитивні типи приводяться до примітивних? За допомогою методів intValue (), doubleValue (), …, Java -компілятор перетворює об’єкти у відповідні примітиви: Boolean b = Boolean.FALSE; boolean a = b.booleanValue();   але: Integer x = null; int y = x.intValue(); - вилетить виняток java.lang.NullPointerException.   7. Як порівнюються примітивні та не примітивні типи? За допомогою «==»   та equals () примітивний та не примітивний типи порівнюються як примітиви за значенням. --- Використання оператора порівняння ==   можливе і для об’єктів класів-обгорток якщо значення, які вони містять є кешованими (від -128 до 127, true / false ), інакше – порівняння значень об’єктів класів –обгорток можливе   за допомогою методу e...

29. Соб. І Что такое autoboxing? Зачем используется autoboxing? Альтернативы autoboxing? Типы-обертки для примитивных типов mutable или immutable?

  1.                 Що таке autoboxing ? Autoboxing – упакування –   виконуване Java -компілятором автоматичне перетворення значень примітивних типів у об’єкти відповідних їм класів-обгорток. Наприклад, перетворення int на Integer, double на Double тощо. І навпаки, перетворення об’єктів у значення відповідних примітивних типів називається boxing – розпакування. Компілятор Java застосовує авто упаковку коли значення примітивного типу передається як параметр методу, який очікує об’єкт відповідного класу-обгортки або присвоюється змінній відповідного класу-обгортки. Найпростіший приклад автобоксингу: Character ch = 'a';   2.                  Для чого використовується autoboxing ? Для синхронізації, серіалізації, роботою з колекціями та дженериками використовуємо об’єкти,   а не примітивні типи. А utobox...

29. Гугл. Горячие клавиши Intellij IDEA

  1.Як засобами Intellij IDEA перейменувати ( rename ) змінну? Shift + F 6 2. Як засобами Intellij IDEA зробити заміну ( replace ) одного коду на інший? Ctrl + Shift + R 3. Як засобами Intellij IDEA зробити так, щоб змінна, на якій стоїть курсор, підсвічувалась? Ctrl + Shift + F 7 4. Як засобами Intellij IDEA перейменувати метод? Shift + F 6 5. Як засобами Intellij IDEA перейменувати клас? Shift + F 6 6. Як засобами Intellij IDEA огорнути частину коду в try - catch ? Ctrl + Alt + T 7. Як засобами Intellij IDEA швидко створити конструктор? Alt+insert -> constructor 8. Як засобами Intellij IDEA   створити geter ’и та setter ’и? Alt + insert -> getter / setter 9. Як засобами Intellij IDEA реалізувати ( implements ) відсутні методи класу? Ctrl + I / Alt + insert   -> Implement Methods 10. Як засобами Intellij IDEA перевизначити методи батьківського класу? Ctrl + O / Alt+insert   -> Override Methods

28. Соб 2. Зачем нужен класс ThreadPoolExecutor? Сколько способов создать нить вы знаете? (Thread, Runnable, Callable) Для чего используется класс Future? В чем преимущества Callable над Runnable? Можно ли отменить выполнение задачи, если использовать класс Future?

  6. Навіщо потрібен клас  ThreadPoolExecutor ? public class ThreadPoolExecutor extends AbstractExecutorService. ExecutorService, виконує кожне надіслане завдання за допомогою одного або кількох об’єднаних потоків, зазвичай створених за допомогою методів Executors. Пули потоків вирішують дві різні проблеми: вони зазвичай забезпечують покращену продуктивність під час виконання великої кількості асинхронних завдань завдяки зменшенню накладних витрат на виклик кожного завдання, і вони забезпечують засоби обмеження та керування ресурсами, включаючи потоки, використовувані під час виконання набору задач. Кожен ThreadPoolExecutor також підтримує деяку базову статистику, таку як кількість виконаних завдань. Щоб бути корисним у широкому діапазоні контекстів, цей клас надає багато настроюваних параметрів. Проте програмістам рекомендується використовувати більш зручні методи фабрики Executors Executors.newCachedThreadPool() (необмежений пул потоків, з автоматичним відновленням потоків),...

28. Соб 1. Какие приоритеты нитей бывают? Можно ли остановить нить, снизив ее приоритет до 0? Зачем нужен класс ThreadGroup? В какой группе нитей состоит main-thread? Что такое паттерн ThreadPool?

  1. Які бувають пріоритети ниток? Пріоритет ниток використовується для оптимізації коду.  Встановлюється методом public final void setPriority ( int newPriority ) , де newPriority – число від 1, або Thread . MIN _ PRIORITY (найнижчий пріоритет) до 10 або Thread . MAX _ PRIORITY (найвищий пріоритет). Середній пріоритет 5 ( Thread . NORM _ PRIORITY ) встановлюється за замовчуванням) при створенні нитки .  Встановлений пріоритет є «рекомендацією» для JVM – Java - машина керує нитками за власними алгоритмами. -- public final int getPriority() – отримати пріоритет нитки.     2. Чи можна зупинити нитку, знизивши її пріоритет до 0? Ні, при встановленні пріоритету 0 вилетить виняток IllegalArgumentException, так як допустимий діапазон пріоритетів [1; 10]. Дати рекомендацію планувальнику потоків для зупинки нитки можна використовуючи метод interrupt ().     3. Навіщо потрібен клас ThreadGroup ? ThreadGroup необхідний для захист...

28. Гугл 2 Что такое FactoryMethod? Что такое DDD? Что такое TDD? Что такое dump? Что такое Pool?

  6. Що таке FactoryMethod? Factory Method – паттерн проектування, широко використовується в коді Java для  забезпечення високого рівня гнучкості коду - вирішує проблему створення об’єктів продукту без визначення їх конкретних класів. Фабричний метод визначає метод, який слід використовувати для створення об’єктів замість використання прямого виклику конструктора (оператор new). Підкласи можуть перевизначити цей метод, щоб змінити клас об’єктів, які будуть створені. Фабричні методи можна розпізнати за методами створення, які створюють об’єкти з конкретних класів. Хоча конкретні класи використовуються під час створення об’єкта, тип повернення методів фабрики зазвичай оголошується або як абстрактний клас, або як інтерфейс.     7.  Що таке  DDD ? Domain-Driven Design (DDD) – це набір принципів та патернів, які допомагають розробникам створювати елегантні об'єктні системи. При правильному застосуванні  DDD   може призвести до програмних абстракці...

28 Гугл 1 Как получить список живых нитей из группы ThreadGroup? Как получить список мертвых нитей из группы ThreadGroup? Аналоги ThreadPoolExecutor? Что такое ThreadWorker? Что такое ThreadPool?

  28.  1. Як отримати список живих ниток з групи ThreadGroup ? Метод public int enumerate( Thread [] list) Копіює у вказаний масив кожен активний програмний потік (нитку) у цій групі потоків та її підгрупах. Виклик цього методу поводиться точно так само, як і виклик enumerate(list, true). Параметри: list - масив, у який потрібно помістити список потоків Повертає: кількість потоків, поміщених у масив Винятки: SecurityException - якщо checkAccess визначає, що поточний потік не може отримати доступ до цієї групи потоків                                 Метод public int enumerate( Thread [] list, boolean recurse) Копіює у вказаний масив кожен активний потік у цій групі потоків. Якщо рекурсія має значення true, цей метод рекурсивно перераховує всі підгрупи цієї групи потоків і також включає поси...

27. Соб.2 Что происходит после вызова метода notifyAll? Какие выгоды получает объект, если он immutable? Что такое «thread-safe»? Что такое «happens-before»? Что такое JMM? Какое исключение вылетит, если вызвать wait не в блоке synchronized?

    27.6  Що відбувається після виклику метода notifyAll? notifyAll () надсилає сповіщення всім ниткам у стані очікування звільнення об’єкта-мютекса; всі нитки пробуджуються; як тільки поточна нитка вийде з блока  synchronized , одна з пробуджених ниток займе мютекс; решта ниток після перевірки умови цикла знов перейдуть у стан очікування (хибне пробудження).   27.7  Які переваги отримує об’єкт, якщо він immutable? Immutable   (незмінний)  об’єкт – це об’єкт, стан якого після створення неможливо змінити (всі поля екземпляру позначені  final ).  Найпростіший приклад –  java . lang . String . Всі методи, які викликаються повертають новий рядок, а не модифікований вихідний. Переваги  immutable -об ’ єктів: 1)        Потокобезпечність – І m - o   не вимагають синхронізації при багато потоковому доступі, їх вільно можна використовувати з різних потоків. 2)     ...

27 Соб.1 Что такое дедлок? Какие вы знаете стратегии, предотвращающие появление дедлоков? Могут ли возникнуть дедлоки при использовании методов wait-notify? Что чаще используется: notify или notifyAll? Метод wait рекомендуется использовать с конструкциями if или while?

    27.1     Що таке дедлок?   Дедлок (англ..  deadlock ) - взаємне блокування – ситуація, при якій два чи більше програмних потоків не можуть продовжити роботу, так як знаходяться в стані очікування ресурсів, зайнятих один одним, і жоден з них не може продовжити роботу. Н-д: Є дві нитки ( thread ), кожній нитці потрібно захопити два мютекси -> перша нитка захопила перший мютекс -> друга нитка захопила другий мютекс -> перша впоралась з роботою, чекає звільнення другого мютексу (у другому ще виконує дії друга нитка) -> друга нитка виконала дії, чекає звільнення першого мютексу (перший зайнятий першою ниткою, яка очікує).    Н-д: менеджер зробив термінове замовлення у постійного постачальника, який працює по передоплаті, керівник забороняє оплачувати рахунок поки не буде прийнятий товар. Нитка бухгалтер взяла рахунок - >  нитка постачальник оформила замовлення - > нитка бухгалтер очікує підтвердження прийняття товару, що...