Size: a a a

Библиотека джависта

2020 May 21
Библиотека джависта
#вопросы_с_собеседований
Для Enum есть специальный класс java.util.EnumSet. Зачем? Чем авторов не устраивал HashSet или TreeSet?
источник
2020 May 22
Библиотека джависта
EnumSet - это реализация интерфейса Set для использования с перечислениями (Enum). В структуре данных хранятся объекты только одного типа Enum, указываемого при создании. Для хранения значений EnumSet использует массив битов (bit vector), - это позволяет получить высокую компактность и эффективность. Проход по EnumSet осуществляется согласно порядку объявления элементов перечисления.

Все основные операции выполняются за O(1) и обычно (но не гарантированно) быстрее аналогов из HashSet, а пакетные операции (bulk operations), такие как containsAll() и retainAll() выполняются даже гораздо быстрей.

Помимо всего EnumSet предоставляет множество статических методов инициализации для упрощенного и удобного создания экземпляров.
источник
Библиотека джависта
#вопросы_с_собеседований
Пара вопросов по многопоточности:
1. Почему не рекомендуется использовать метод Thread.stop()?
2. Что происходит, когда в потоке выбрасывается исключение?
источник
2020 May 23
Библиотека джависта
1. При принудительной остановке (приостановке) потока, stop() прерывает поток в недетерменированном месте выполнения, в результате становится совершенно непонятно, что делать с принадлежащими ему ресурсами. Поток может открыть сетевое соединение - что в таком случае делать с данными, которые еще не вычитаны? Где гарантия, что после дальнейшего запуска потока (в случае приостановки) он сможет их дочитать? Если поток блокировал разделяемый ресурс, то как снять эту блокировку и не переведёт ли принудительное снятие к нарушению консистентности системы? То же самое можно расширить и на случай соединения с базой данных: если поток остановят посередине транзакции, то кто ее будет закрывать? Кто и как будет разблокировать ресурсы?
источник
Библиотека джависта
2. 🔵 Если исключение не поймано – поток «умирает» (переходит в состяние мёртв (dead)).

🔵 Если установлен обработчик непойманных исключений, то он возьмёт управление на себя. Thread.UncaughtExceptionHandler – интерфейс, определённый как вложенный интерфейс для других обработчиков, вызываемых, когда поток внезапно останавливается из-за непойманного исключения. В случае, если поток собирается остановиться из-за непойманного исключения, JVM проверяет его на наличие UncaughtExceptionHandler, используя Thread.getUncaughtExceptionHandler(), и если такой обработчик найден, вызовет у него метод uncaughtException(), передав этот поток и исключение в виде аргументов.
источник
2020 May 24
Библиотека джависта
Программирование на Java. Игра Puzzle.

https://proglib.io/w/5787148e
источник
Библиотека джависта
#вопросы_с_собеседований
Зачем нужен HashMap, если есть Hashtable?
источник
2020 May 25
Библиотека джависта
🔵 Методы класса Hashtable синхронизированы, что приводит к снижению производительности, а HashMap - нет;
🔵 HashTable не может содержать элементы null, тогда как HashMap может содержать один ключ null и любое количество значений null;
🔵 Iterator у HashMap, в отличие от Enumeration у HashTable, работает по принципу «fail-fast» (выдает исключение при любой несогласованности данных).

Hashtable - это устаревший класс и его использование не рекомендовано.
источник
Библиотека джависта
​​Идет набор на профессиональный онлайн-курс "Java QA Engineer". Знакомьтесь с программой, проходите тестирование и присоединяйтесь к новой группе: https://otus.pw/Vj03/

Для кого подойдет курс?
- Специалистов по ручному тестированию, проявляющих интерес к переходу в автоматизацию тестирования на Java;
- Разработчиков автоматизированного тестирования на Java с опытом работы до 1 года и желающих углубить и систематизировать свои знания;
- Специалистов, планирующих внедрить автоматизацию тестирования на своем проекте.

За 4 месяца вы:
- Освоите обязательные для автоматизатора паттерны PageObject, PageFactory и ScreenPlay, паттерны проектирования для более эффективной разработки;
- Научитесь внедрять инструменты и разрабатывать тесты в стиле BDD, близко познакомитесь с Cucumber и аналогами;
- Узнаете, как выполнять тесты в несколько потоков, используя Selenium Grid, Selenoid и другие инструменты для распараллеливания тестов;
- Сможете организовывать CI-процесс, используя Jenkins, Docker и Allure для отчетов;
- Будете отлично разбираться в различных расширениях и библиотеках, познакомитесь с массивом стандартных инструментов, использующихся в самых разных компаниях.

Проходите вступительное тестирование и поступайте на курс с welcome-скидкой: https://otus.pw/Vj03/
источник
Библиотека джависта
#вопросы_с_собеседований
Что такое механизм try-with-resources?
источник
2020 May 26
Библиотека джависта
🔝 Топовый Вечный! По смехотворной цене! 🔝

8 ГБ RAM / 4x4.5 ГГц CPU / 80 ГБ NVMe / 500 Мбит/сек / anti-DDoS

Размещение в лучшем московском дата-центре Datapro, подключение к каналу 500 Мбит/сек, выделенный IPv4 адрес, защита от DDoS.

🔥Спешите узнать подробней и заказать
https://proglib.io/w/01414be7
источник
Библиотека джависта
Ответ на предыдущий вопрос
Данная конструкция, которая появилась в Java 7, позволяет использовать блок try-catch не заботясь о закрытии ресурсов, используемых в данном сегменте кода. Ресурсы объявляются в скобках сразу после try, а компилятор уже сам неявно создаёт секцию finally, в которой и происходит освобождение занятых в блоке ресурсов. Под ресурсами подразумеваются сущности, реализующие интерфейс java.lang.Autocloseable. Стоит заметить, что блоки catch и явный finally выполняются уже после того, как закрываются ресурсы в неявном finally.
источник
Библиотека джависта
Общий вид конструкции
источник
Библиотека джависта
#вопросы_с_собеседований
Для чего используется оператор assert?
источник
2020 May 27
Библиотека джависта
Assert (Утверждение) — это специальная конструкция, позволяющая проверять предположения о значениях произвольных данных в произвольном месте программы. Утверждение может автоматически сигнализировать об обнаружении некорректных данных, что обычно приводит к аварийному завершению программы с указанием места обнаружения некорректных данных.

Утверждения существенно упрощают локализацию ошибок в коде. Даже проверка результатов выполнения очевидного кода может оказаться полезной при последующем рефакторинге, после которого код может стать не настолько очевидным и в него может закрасться ошибка.

Обычно утверждения оставляют включенными во время разработки и тестирования программ, но отключают в релиз-версиях программ.

Т.к. утверждения могут быть удалены на этапе компиляции либо во время исполнения программы, они не должны менять поведение программы. Если в результате удаления утверждения поведение программы может измениться, то это явный признак неправильного использования assert. Таким образом, внутри assert нельзя вызывать методы, изменяющие состояние программы, либо внешнего окружения программы.

В Java проверка утверждений реализована с помощью оператора assert, который имеет форму:

assert [Выражение типа boolean]; или assert [Выражение типа boolean] : [Выражение любого типа, кроме void];

Во время выполнения программы в том случае, если поверка утверждений включена, вычисляется значение булевского выражения, и если его результат false, то генерируется исключение java.lang.AssertionError. В случае использования второй формы оператора assert выражение после двоеточия задаёт детальное сообщение о произошедшей ошибке (вычисленное выражение будет преобразовано в строку и передано конструктору AssertionError).
источник
Библиотека джависта
Подходит ли вам онлайн-курс «Разработчик Golang»? Фаст чек за 5 секунд:

- Хотите работать над сложным интересным софтом?
- Знаете, как потратить зарплату от 130 тыс. рублей?
- Подумываете устроиться в крупную IT-корпорацию?
- Готовы к 5 месяцам интенсивных занятий и практики?
- Имеете опыт разработки на любом языке ООП от 1 года и знаете Git?

Если ответили ДА на все вопросы, приходите в OTUS изучать Golang и писать на нем свой микросервис под руководством экспертов.

Занятия начались, но вы еще можете успеть. Проходите вступительный тест, чтобы занять место в группе по специальной цене https://otus.pw/iKvQ/
источник
Библиотека джависта
#вопросы_с_собеседований
1. Какова роль equals() и hashCode() в HashMap?
2. Каково максимальное число значений hashCode()?
источник
2020 May 28
Библиотека джависта
​​Начни карьеру в IT без вложений. Программа подготовки востребованных Java разработчиков с личным ментором online. Оплата только после трудоустройства.
У нас ты изучишь востребованный стек технологий и получишь опыт коммерческой разработки в проекте. Если не найдешь работу, то обучение за наш счет.

Пройти тестовое задание 🙋‍♂️👉 https://clck.ru/Nez5g

👇Что ждет студента:
1. Подготовка с личным ментором online по индивидуальной программе за 6 месяцев
2. Жесткий контроль знаний на каждом этапе
3. Обучение востребованному на рынке стеку технологий: Java Core, Maven, Git, Junit, Tomcat, Servlet, Spring MVC, Core, Security, Hibernate
4. Отработка знаний в настоящем бизнес проекте, который дает опыт и строчку для резюме
5. Общение с одногруппниками и студентами-разработчиками других потоков групповом чате slack (уже более 1500 участников)
6. Быстрое карьерное и финансовое развитие за счет программы поддержки на 2 года: митапы, мастер-классы, закрытые лекции со спикерами и offline интенсивы
7. Гарантированное трудоустройство и первая зарплата от 100 000 рублей

Требования к кандидату:
• Обучение минимум 25 часов в неделю
• Проживание или готовность к переезду в Москву для трудоустройства
источник
Библиотека джависта
1. hashCode позволяет определить корзину для поиска элемента, а equals используется для сравнения ключей элементов в списке корзины и искомого ключа.

2. Число значений следует из сигнатуры int hashCode() и равно диапазону типа int — 2 в степени 32.
источник
Библиотека джависта
Как вы поддерживаете и развиваете свои профильные знания в онлайне?
Анонимный опрос
14%
Читаю документацию
19%
Читаю профильную литературу
22%
Читаю статьи на Хабре/Medium/Proglib
7%
Изучаю исходники кода в github/bitbucket/gitlab
12%
Смотрю онлайн-митапы/конференции
1%
Участвую в хакатонах/конкурсах
12%
Занимаюсь своими пет-проектами
8%
Работы хватает, ничего не делаю
4%
Другое
Проголосовало: 2657
источник