Java Interview Review

@JavaSobes Нравится 2 4 000 + ВП

Популярные вопросы и ответы с собеседований на Java-разработчика.
Канал для Android-разработчиков @AndroidSobes
Связаться с нами @SobesAdmin
http://itsobes.ru/
Гео и язык канала
Россия, Русский
Категория
Образование


Написать автору
Гео канала
Россия
Язык канала
Русский
Категория
Образование
Добавлен в индекс
18.03.2019 05:12
реклама
Нужна дешевая реклама в ТГ?
От 100Р за 1000 показов в чистых каналах в 2 клика.
Монетизация в telegram 2021?
TAGIO.PRO это сделал еще в 2020! Присоединяйся!
Продажа рекламы на полном автопилоте!
TAGIO профессиональная рекламная платформа для админов
6 696
подписчиков
~0
охват 1 публикации
~189
дневной охват
N/A
постов в день
N/A
ERR %
11.21
индекс цитирования
Репосты и упоминания канала
42 упоминаний канала
22 упоминаний публикаций
3 репостов
WebDev
IT Channels
My Archive
IT 1ess0ns
Java Memes
IT Библиотека
IT лекции
Java Developer
Android Interview Review
Говнокод
WebDEV
Clean Code
IT Channels
EPAM Training Center Belarus
Android Live 🤖
IT Channels
Java Developer
Android Live 🤖
Android Interview Review
Android Interview Review
Программист
Библиотека джависта
Продакшн
Clean Code
Новые каналы
Sırımnıñ arnası
Android Interview Review
Android Interview Review
Android Interview Review
Android Interview Review
Android Interview Review
Android Interview Review
Clean Code
Next Time
Kosmos Time | Наука | Физика
Android Interview Review
Android Interview Review
Android Interview Review
Android Interview Review
Android Live 🤖
Лысый из браузера
Android Interview Review
Android Interview Review
Android Interview Review
Android Interview Review
Каналы, которые цитирует @JavaSobes
Мобильная разработка
Java Memes
Java Developer
AppSell - новости и анонсы
Канал paradiSEcurity Group
Яндекс нанимает
Benchmark
WebFilter
WebServlet
Android Live 🤖
WebServlet
Java: fill the gaps
Java Developer
embeddable
Oracle Developer👨🏻‍💻
Android Interview Review
Java: fill the gaps
Android Interview Review
Channel
Android Interview Review
trgt
Лысый из браузера
Android Interview Review
Android Interview Review
Последние публикации
Удалённые
С упоминаниями
Репосты
Java Interview Review 16 Dec 2020, 18:00
Мобильная разработка — новый канал, авторы которого рассказывают о тонкостях разработки приложений под Android, iOS и кроссплатформу.

Подключайтесь: @mobi_dev
Java Interview Review 14 Dec 2020, 18:00
Что такое Java-модули?

Java Platform Module System (JPMS) – система модулей, появившаяся в Java версии 9. Она разрабатывалась под названием Project Jigsaw, и ожидалась еще с Java 7.

Модуль – группа связанных пакетов и ресурсов. Механизм модулей определяет видимость содержимого одних модулей для других. Скрытые модули недоступны ни для обычного использования в коде, ни даже для рефлекшна: Class.forName() выбросит ClassNotFoundException.

Вдобавок, модули инкапсулируют собственные ресурсы – конфиги и медиафайлы больше не хранятся в общей куче.

Модуль определяется файлом объявления module-info.java. Поговорим о его содержимом и о применении модулей вообще в будущих постах постах.

JVM может работать относительно модулей в трех режимах:

• Legacy mode – применяется, когда код компилируется в режиме совместимости с версиями Java 8 и меньше. Весь код работает как безымянный модуль, флаги для настройки модулярности не работают.

• Single module mode – когда не используется флаг --module-source-path. Структура проекта остается старой, файл module-info.java лежит в директории /src. Поэтому иметь несколько модулей в одном проекте не получится.

• Multi-module mode – каждый модуль находится в собственной директории. Общая корневая директория передается в --module-source-path. Полноценное использование JPMS.

#Модули
Читать полностью
Java Interview Review 11 Dec 2020, 10:00
🔥Разработчик, время с умом используй — на бесплатных демо-уроках онлайн-курсов по backend-разработке на Kotlin и Android-разработке на Kotlin от OTUS и Альфа-Банка:

📌Сегодня, 11.12 - «Unit-тестирование в Android»: https://otus.pw/FFGH/
— Изучим Unit-тесты. Научимся тестировать компоненты, классы и методы в Java. Рассмотрим технологию TDD.

📌17.12 - «Пересмотр «12 факторов»: создаём современный микросервис на Kotlin»: https://otus.pw/IhlG/
— Обсудим, как расширить исходные рекомендации, чтобы помочь вам создавать приложения, которые не только функционируют в облаке, но и процветают.

👉🏻Регистрируйтесь сейчас — напомним в день вебинара!
Читать полностью
Java Interview Review 9 Dec 2020, 18:00
Всем привет!
Мы сделали сервис, который отбирает вакансии по вашим интересам.
Настройте личные фильтры: локация, точный технологический стек, и, конечно, не забудьте о деньгах.

Все самые подходящие предложения рынка – в @GetMeIT_bot
Java Interview Review 9 Dec 2020, 12:30
Как сделать код с арифметикой кроссплатформенным?

Степень платформонезависимости Java явно определяется её спецификацией. Согласно спецификации, когда мы работаем с числами с плавающей точкой, на продакшне результат арифметических вычислений может отличаться от локального. Это не всегда проблема, но об этом стоит помнить.

Во-первых, разберемся насколько сильно результатам позволено расходиться. В документации разных методов из Math эта величина выражается в единицах ulp (unit in the last place). Это то, насколько увеличится число, если его битовое выражение увеличить на 1 бит. Для разных чисел значение ulp будет различаться. Получить его можно методом Math.ulp(x).

Если объявленной точности не хватает, на помощь придет класс StrictMath. В нём находится примерно такой же набор инструментов как в Math, но с повторяемыми результатами, которые можно получить стандартизованными алгоритмами на C.

Для обычных языковых выражений вроде инициализаторов и операторов введено понятие свойства FP-strict. Выражения с этим свойством будут кроссплатформенным. Чтобы добавить свойство всем операторам, на методе используется модификатор strictfp (о котором мы уже упоминали).

#Язык
Читать полностью
Java Interview Review 7 Dec 2020, 18:01
Hibernate кажется слишком сложным? Jdbc - вгоняет в тоску многословностью? Spring Data - чересчур абстрактный? А MyBatis - просто пресный и скучный?

Попробуйте Spring Data Jdbc - это комбинация лучшего из возможных миров.

15 декабря в 20:00 мск пройдет открытый вебинар курса «Java Developer Professional», на котором вы познакомитесь с этим интересным инструментом.

Сдавайте вступительный тест и записывайтесь на вебинар уже сегодня: https://otus.pw/HuwIA/
Читать полностью
Java Interview Review 6 Dec 2020, 16:00
Как работает инъекция прототипа в синглтон?

Раньше мы уже рассматривали различия скоупов singleton и prototype в Spring Framework. Допустим ситуацию, когда в singleton-компонент внедряется зависимость со скоупом prototype – когда будет создан её объект?

Если просто добавить к определению бина аннотацию @Scope(SCOPE_PROTOTYPE), и использовать этот бин в синглтоне через аннотацию @Autowired – будет создан только один объект. Потому что синглтон создается только однажды, и обращение к прототипу случится тоже однажды при его создании (при внедрении зависимости).

Примитивный способ получать новый объект при каждом обращении – отказаться от @Autowired, и доставать его из контекста вручную. Для этого нужно вызывать context.getBean(MyPrototype.class).

Воспользоваться автоматическим внедрением зависимостей можно через внедрение метода (паттерн «Команда»). Автовайрится не сам объект, а производящий его метод.

Более красивый декларативный способ – правильно настроить определение бина. В аннотации @Scope кроме самого scopeName доступен второй параметр – proxyMode. По умолчанию его значение NO – прокси не создается. Но если указать INTERFACES или TARGET_CLASS, то под @Autowired будет внедряться не сам объект, а сгенерированный фреймворком прокси. И когда проксируемый бин имеет скоуп prototype, то объект внутри прокси будет пересоздаваться при каждом обращении.

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

#Spring
Читать полностью
Java Interview Review 3 Dec 2020, 18:00
JavaQuiz - канал на котором публикуются интересные задачки и вопросы по Java и их разбор.
Java Interview Review 1 Dec 2020, 18:00
Под каким типом хранить период времени?

В стандартной библиотеке современных версий Java для этих целей есть два класса:

Period – календарный период. Количество дней, месяцев и лет. Одним днем здесь считается день в терминах ZonedDateTime.

Duration – длительность времени. Количество наносекунд, секунд, минут, часов, и тоже дней. Здесь один день – ровно 24 часа.

Оба класса реализуют общий интерфейс TemporalAmount – период времени вообще. Оба иммутабельны, и как следствие, потокобезопасны. Любая модифицирующая операция вроде plusX() возвращает новый экземпляр с измененным значением.

Экземпляры обоих классов могут быть созданы из значений отдельных компонентов, из двух моментов времени методом between, или из строки. Строковое представление Duration: "P2DT3H4M", Period: "P1Y2M3D".

До Java 8 основным способом хранения периода были числовые примитивы. В этом подходе есть много недостатков, среди которых в первую очередь неограниченность значений и ненаглядность. Чтобы в Java 8+ получить период числом, используется метод between() нужного элемента енама ChronoUnit.

#Классы
Читать полностью
Java Interview Review 30 Nov 2020, 16:28
Java — просто

Всем привет! Меня зовут Дмитрий и я Java-разработчик. Хочу познакомить вас со своим каналом @java_developer. Там я выкладывает заметки, книги, ссылки на статьи, вопросы с собеседований. Беру интервью у коллег и провожу обучающие марафоны для начинающих.

Ещё я веду @java_memes. Это канал с топовыми, но иногда сложными мемами про внутренности айти (некоторые из моих мемов уже разлетелись по многим каналам и чатам)

Подписывайтесь, задавайте вопросы @java_developer | @java_memes
Читать полностью
Java Interview Review 26 Nov 2020, 18:01
Хочешь выгодно продать свое приложение или игру?

Мы запустили первую в РУ сегменте платформу для продажи и покупки приложений и исходников IOS/Android.
Все сделки абсолютно безопасны, доступны удобные выплаты.
Широкий охват аудитории. Более 4500 человек в нашей тусовке.
Постоянное развитие и техническая поддержка новичков.
Закрытые чаты для партнеров с актуальной информацией по заработку.

Линк на проект - appsell.mobi
Чат проекта - https://t.me/AjaxChat
Канал - https://t.me/AppSellMobi
Любые вопросы можно задать @AppSellAnton
Читать полностью
Java Interview Review 25 Nov 2020, 18:26
Опишите синтаксис javadoc-комментария (2/2)

Комментарий состоит из двух частей: описание и блок тегов. Первый блок содержит всю информацию в свободной форме. Во втором находятся теги (ранее уже упоминали их). Каждый тег начинается с новой строки, через пробел за ним следует значение.

Один тег можно использовать в блоке описания – @link. Он не обязан быть на новой строке, обрамляется фигурными скобками, и при рендеринге превращается в со ссылкой на другую страницу документации.

Среди всех тегов обязательными считаются только
@param для каждого параметра метода, и @return для не-void методов. Они применимы только для методов. А теги @author и @version наоборот, используются только в документации классов. Остальные блочные теги можно использовать везде:

@deprecated
@exception (то же что @throws)
@see
@since
@serial (то же что @serialField или @serialData)

Теги @author, @param, @throws и @see могут входить в один комментарий в нескольких экземплярах.

#Инструменты
Читать полностью
Java Interview Review 24 Nov 2020, 18:19
Java ждет тебя, или как найти себя в IT

Обучающих и вводных в профессию ивентов множество, но только на онлайн-митапе 25–26 ноября образовательной экосистемы GeekBrains от Mail.Ru Group «Найди себя в IT» ты получишь исчерпывающую информацию о профессии разработчика.

Крупные компании Miro, Mail.Ru Group и GeekBrains расскажут, как начать карьеру и попасть джуном в крутую команду, чтобы быстро вырасти в профессиональном плане.

25 ноября — для начинающих разработчиков: как войти в профессию и попасть на работу в компанию мечты.
26 ноября — для middle-разработчиков: куда развиваться и как расти (опыт компании Miro).

Окунитесь в мир Java → https://geekbrains.ru/link/dRtg-W
Читать полностью
Java Interview Review 23 Nov 2020, 12:01
Опишите синтаксис javadoc-комментария (1/2)

Javadoc-комментарии к классам и их членам заключаются между /** и */. С точки зрения синтаксиса Java это обычные многострочные комментарии, но вторая * позволяет различным инструментам воспринимать их как документацию API. Изначально для этого использовалась стандартная утилита javadoc, которая генерировала HTML-документацию, сейчас джавадок активно используется прямо в IDE.

До Java 1.4 каждая строка комментария обязана была начинаться со *. Сейчас это требование необязательное, но следовать ему всё ещё принято.

Первое предложение комментария принимается в качестве заголовка описания элемента. В HTML именно оно попадает на страницу индекса. Предложение заканчивается точкой с последующим разделительным символом.

В javadoc разрешено использовать HTML-теги. Фрагменты кода рекомендуется обрамлять тегом , для списка с буллетами применяется , параграфы отделяются . В документации библиотеки Reactor активно используются с диаграммами.

#Инструменты
Читать полностью
Java Interview Review 19 Nov 2020, 18:01
♨️24 ноября в 20:00 (мск) приглашаем на открытый вебинар «Сборка мусора в Java», который пройдет в рамках онлайн курса «Оптимизация в Java».

Запишитесь сейчас - напомним в день вебинара: https://otus.pw/QGe5/

❗️Мы с вами разберем параметры запуска VM, сборщик мусора, виды сборок, разделение памяти под разные поколения объектов. ❗️Детальнее погрузимся в виды сборщиков, JMX.
❗️Научимся управлению приложением из jconsole, OutOfMemory, dump памяти.

Не пропустите трансляцию!
Читать полностью
Java Interview Review 18 Nov 2020, 18:00
Когда стоит выбрать char[] вместо String?

Первая, очевидная причина – оптимизация. Если вам заранее известен размер строки, и он фиксирован, может быть полезно выбрать массив. Если программа работает с неизменяемыми подстроками, удобно представить их в виде offset-ов общего массива (как это было сделано раньше в самом String).

Следует помнить, что оптимизировать нужно осознанно и своевременно. JVM тоже прикладывает усилия по оптимизации строк (вроде интернирования), которые могут оказаться эффективнее ваших.

Вторая, менее очевидная причина – безопасность. Строки в Java иммутабельны. Это значит, что когда вы сохраняете пароль в объекте типа String, физически уничтожить его из памяти может только сборщик мусора.

Существует способ алгоритмической атаки на систему, когда хакер своими действиями вызывает переполнение памяти, и конфиденциальная информация попадает в heap dump.

Если пароль хранится в массиве, программист может самостоятельно «занулить» значение после использования.

#Классы
#Безопасность
Читать полностью
Java Interview Review 17 Nov 2020, 18:00
🔥 Подойдет ли вам углубленный онлайн-курс «Java Developer. Professional»? Покажет вступительный тест. Вас ждут хардкорные темы и практические задачи!

Пройдите вступительный тест и успейте словить ❗️спец. цену❗️ на курс: https://otus.pw/k69l/
Java Interview Review 16 Nov 2020, 18:01
Лишает ли var строгой типизации?

Спасибо подписчикам, которые недавно подняли этот вопрос в чате-обсуждении.

Ключевое слово var появилось в Java 10. Указание var вместо типа локальной переменной применяет к ней механизм вывода типов (type inference). Тип будет вычислен на этапе компиляции из того, чем переменная инициализируется.

Отсюда несколько выводов. Во-первых, нельзя использовать var в полях класса, параметрах метода, и где-либо еще кроме локальных переменных. Во-вторых, обязана быть инициализация с понятным типом – варианты var x; или var x = null; не скомпилируются.

И главное следствие – к концу компиляции у таких переменных фиксированный и известный тип, который не может быть изменен позднее. А это и есть определение строгой типизации.

Ответ: нет, выводимый тип – строгий. Более того, типизация остается статической.

Главное упущение – в инициализации разрешено использовать diamond operator. В обычных обстоятельствах в нём выведется правильный generic-тип, но в случае var информации недостаточно, и типом-параметром будет Object.

#Язык
Читать полностью
Java Interview Review 12 Nov 2020, 18:01
Joker возвращается с очередной порцией хардкора и ламповой™ атмосферы уже 25–28 ноября, Online.

Технические доклады о рантайме, виртуальных машинах, компиляторах, оптимизации от Java-потрошителей и чемпионов со всего мира.
А также интервью с экспертами, воркшопы, нетворкинг и дискуссионные зоны для лютых холиваров.

В программе:
— Создатель Concurnas Jason Tatton расскажет о создании надежных многопоточных, распределенных и параллельных систем с использованием JVM. Если вы ищете средства для создания таких продуктов, вам однозначно понравится.
— Профессиональный спикер и автор блога JavaSpecialists.eu Heinz Kabutz в компании с соратником John Green расскажут о многопоточном программировании с использованием Phaser, StampedLock и VarHandle.
— Один из разработчиков Kotlin Роман Елизаров даст большое интервью с Q&A-сессией. Можно будет в прямом эфире расспросить его о перспективах языка, его эволюции и компромиссах, на которые приходится идти в работе.
Обзор всей программы.

Билеты со скидкой по промокоду javasobes2020JRGpc на сайте.
Читать полностью
Java Interview Review 11 Nov 2020, 18:01
Сгенерируйте случайное число в интервале

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

Самые стандартные классы-генераторы случайных чисел создают равномерно распределенные значения. Любое число возникает с одинаковой вероятностью – это ожидаемое поведение для большинства задач. Например, метод Random.nextInt(1) будет генерировать примерно одинаковое количество значений 0 и 1.

Однако, программист легко может "испортить" равномерность значений последующими операциями. Возьмем вместо предыдущего примера Random.nextInt(2)%2. Такая конструкция тоже будет возвращать 0 или 1. Однако, третье возможное значение из генератора, 2, будет тоже превращено в 0. Значит, ответ 0 будет возникать в два раза чаще чем 1.

Это та причина, по которой лучше не пользоваться общепринятым «школьным» арифметическим ограничением с помощью оператора %. Вместо этого следует оставить заботу о распределении разработчикам библиотеки, и пользоваться в прикладном коде готовыми методами с границами.

Если задача подразумевает более плотную работу с распределениями, стоит воспользоваться специализированной библиотекой вроде Apache Commons Math.

#Классы
Читать полностью