seniorjavist | Unsorted

Telegram-канал seniorjavist - Senior Java Developer

-

Изучаем Java. По вопросам сотрудничества: @seniorvladislav

Subscribe to a channel

Senior Java Developer

#вопросы_с_собеседований
Реализуйте симметрическую разность двух коллекций, используя методы Collection (addAll(...), removeAll(...), retainAll(...)).

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

Читать полностью…

Senior Java Developer

alibaba/fastjson

Библиотека для быстрого преобразования любых произвольных Java-объектов в JSON-представление и обратно. Поддерживает даже объекты со сложной структурой (глубокими иерархиями наследования и использованием универсальных типов).
FastJson улучшает производительность сервера и клиента и позволяет использовать для объектов любые пользовательские представления.

https://github.com/alibaba/fastjson

Читать полностью…

Senior Java Developer

TheAlgorithms/Java

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

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

https://github.com/TheAlgorithms/Java

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Какой результат выведет вызов метода foo()?

Ответ:
“HelloHello”

Разберем решение детально: С первым выводом Hello вопросов быть не должно, далее в метод bar передаем копию ссылки на строку, теперь на данную строку ссылаются две переменные: m из метода foo и m из метода bar. Так как строки в Java являются immutable, при попытке присоединить к уже существующей строке дополнительное значение World!, в методе bar произойдет создание новой строки и локальная переменная m этого метода будет ссылаться на новую строку со значением Hello World!, при этом в методе foo в результат будет выведено значение переменной m которая по прежнему ссылается на строку Hello.

Читать полностью…

Senior Java Developer

Телеграм-канал MY GAMEDEV проводит стрим для айтишников, которые хотят построить карьеру в геймдеве. 8 декабря в 18:00 Мск менеджер IT-подбора в MY.GAMES Ксения Сухорукова и руководитель проекта в Allods Team Виктор Щепкин расскажут:

✅ про роли разработчиков внутри геймдев-команд
✅ какие бывают карьерные траектории и поделятся успешными переходами в геймдев
✅ как составить резюме и написать сопроводительное письмо
✅ какие навыки особенно пригодятся

Кроме того, для всех участников стрима будет проведен конкурс. Условия участия:

🔔 быть подписанным на канал MY GAMEDEV
📝 пройти тест, ответы на который вы сможете найти в самой трансляции

Среди всех подписчиков, которые наберут максимальное количество правильных ответов, будет разыграно три набора мерча от MY.GAMES.

📆 Добавляйте в календари: 08.12 18:00, телеграм-канал MY GAMEDEV

🔗 Ссылка на стрим

Читать полностью…

Senior Java Developer

❗️Тест по Kotlin от OTUS.

Пройдите вступительный тест и проверьте, насколько вы готовы к обучению на курсе — "Kotlin Backend Developer". Результат теста получите сразу.

👉  ПРОЙТИ ТЕСТ —  https://otus.pw/O0hQ/

💣  Выполните успешно тест - получите доступ к курсу по специальной цене + курс по Git и доступ к 2 открытым урокам курса.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Могут ли у разных объектов быть одинаковые hashCode()?

Да, могут. Метод hashCode() не гарантирует уникальность возвращаемого значения. Ситуация, когда у разных объектов одинаковые хэш коды называется коллизией. Вероятность возникновения коллизии зависит от используемого алгоритма генерации хэш кода.

Читать полностью…

Senior Java Developer

assert может принимать 2 аргумента

Обычно assert используется для проверки некоторого условия и бросает AssertionError если условие не удовлетворяется. Чаще всего проверка выглядит так(см 1 на картинке)

Однако, она может быть и такой(см 2 на картинке)

Сообразительный читатель уже догадался, что второе выражение (кстати, оно ленивое) возвращает значение типа Object, которое передаётся в AssertionError и несёт пользователю дополнительные сведения об ошибке. Более формальное описание можно посмотреть тут.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Какое худшее время работы метода add() для ArrayList?

O(N). Вставка элемента в конец списка осуществляется за время O(1), но если вместимость массива недостаточна, то происходит создание нового массива с увеличенным размером и копирование всех элементов из старого массива в новый.

Читать полностью…

Senior Java Developer

😀 Хотите выучить html с нуля? Тогда этот бесплатный справочник по html то, что вам нужно.

🎁 Оставьте заявку на тест-драйв курса специализация «Fullstack developer» и получите:
- справочник по html;
- приглашение на бесплатные уроки курса по html, css, javascript

👉 https://vk.cc/cjlCC8

Читать полностью…

Senior Java Developer

Узнаем IP-адрес своего компьютера

InetAddress.getLocalHost() используется для поиска частных IP - адресов, используемых в локальной сети или любой другой локальной сети.

Подробнее объяснение кода можно найти здесь.

Читать полностью…

Senior Java Developer

Что такое механизм try-with-resources?

Данная конструкция, которая появилась в Java 7, позволяет использовать блок try-catch не заботясь о закрытии ресурсов, используемых в данном сегменте кода. Ресурсы объявляются в скобках сразу после try, а компилятор уже сам неявно создаёт секцию finally, в которой и происходит освобождение занятых в блоке ресурсов. Под ресурсами подразумеваются сущности, реализующие интерфейс java.lang.Autocloseable.

Стоит заметить, что блоки catch и явный finally выполняются уже после того, как закрываются ресурсы в неявном finally.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?

Метод clone() объявлен в классе Object с указанием модификатора native, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как protected, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс Cloneable является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода clone() у не Cloneable объекта вызовет выбрасывание CloneNotSupportedException.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
О чем говорит ключевое слово throws?

Ответ:
Модификатор throws прописывается в заголовке метода и указывает на то, что метод потенциально может выбросить исключение с указанным типом.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что такое «блокирующий метод»?

Блокирующий метод – метод, который блокируется, до тех пор, пока задание не выполнится, например метод accept() у ServerSocket блокируется в ожидании подключения клиента. Здесь блокирование означает, что контроль не вернётся к вызывающему методу до тех пор, пока не выполнится задание. Так же существуют асинхронные или неблокирующиеся методы, которые могут завершится до выполнения задачи.

Читать полностью…

Senior Java Developer

Преобразование строки в дату

Класс SimpleDateFormat имеет некоторые дополнительные методы, в частности parse(), который в Java поможет нам перевести строку в дату соответствии с форматом, хранящимся в данном объекте SimpleDateFormat. Пример на картинке.

Читать полностью…

Senior Java Developer

ReactiveX/RxJava

Библиотека RxJava, основанная на API ReactiveX. Она позволяет писать асинхронные событийно-управляемые программы для виртуальной Java машины, поддерживает последовательности событий и их комбинации. В основе работы лежит классический паттерн Наблюдатель, только вместо одного объекта используется целый поток данных.

C RxJava можно больше не беспокоиться о низкоуровневом распараллеливании, синхронизации, потокобезопасности и обработке ошибок.

https://github.com/ReactiveX/RxJava

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Каким будет результат сравнения в следующем коде?

Ответ:
s1 == s2 ? true

s1 == s3 ? false

s1 equals s3 ? true

Вопрос на понимание работы пула строк в Java и на понимание сравнения строк. Разберем детально: Переменная s1 ссылается на строку в пуле уникальных строк в памяти, переменная s2 ссылается на ту же саму строку в пуле уникальных строк, что и переменная s1, первое сравнение будет true, так как s1 и s2 ссылаются на один и тот же объект. Переменная s3 ссылается на новый объект, который не находится в пуле уникальных строк, так как он создан через new, следовательно второе сравнение будет false, так как сравниваем переменные которые ссылаются на на два разных объекта. Третье сравнение будет true, так как мы сравниваем строки посимвольно на эквивалентность через equals, а содержимое данных строк одинаково.

Читать полностью…

Senior Java Developer

Метод matches()

Возвращает значение true, если, и только в том случае, если эта строка соответствует заданному регулярному выражению.

Читать полностью…

Senior Java Developer

Генерируем код и пароль

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

Иногда мы получаем доступ к нашим банковским счетам во время покупок в интернет-магазине и чтобы подтвердить наш переход с банковского счета, нам отправляют нам OTP (одноразовый пароль) на наш зарегистрированный номер телефона или адрес электронной почты.

Следующий код объясняет, как быстро генерировать такие пароли и OTP.

Читать полностью…

Senior Java Developer

Зубчатый массив в Java

Зубчатый массив — это массив массивов, в котором массивы элементов могут быть разных размеров, т. е. мы можем создать двумерный массив, но с переменным числом столбцов в каждой строке. Эти типы массивов также известны как зубчатые массивы.

Подробнее о зубчатых массивах можно почитать здесь.

Читать полностью…

Senior Java Developer

Хотите развиваться в карьере тестировщика? Освойте автоматизацию тестирования с нуля в школе QA.GURU

Сделайте первые шаги навстречу своей новой профессии! Уже 14-го декабря в 20:00 по МСК пройдет открытый урок “Разрабатываем первый автотест на Java/Selenide”

Почему стоит сходить?
- расскажем о профессии инженер по тестированию
- разработаем ваш первый автотест на форму авторизации и на поиск в Google
- поговорим о рынке QA
- расскажем про актуальный фреймворк на Java
- покажем боевой проект с полной инфраструктурой (Web, Mobile, API)
- проведем сессию вопросов с QA Lead

📒 Каждый участник получит домашнее задание, а мы проверим его.

Для участия вступайте в чат - @qa_guru_chat или регистрируйся на сайте - https://clck.ru/32efFZ

Читать полностью…

Senior Java Developer

Очень скоро долгожданный митап Сбера в Рязани – 8 декабря в 19:00 поговорим о Service Mesh и SBER NDR.

Ещё недавно Service Mesh был самой хайповой технологией, а сейчас стал стандартом для проектирования backend сервисов. Максим Чудновский, лидер направления мультикластерных сервисов в проекте Platform V Synapse Service Mesh, расскажет, как получить Service Mesh из коробки в gRPC, используя протокол XDS.

О попытке объять необъятное, или о том, как была разработана система по детектированию и анализу сетевых атак, узнаете из доклада владельца продукта Sber NDR, руководителя направления Центра киберзащиты Сбера, Алины Светловой.

Также в программе вечера нетворкинг, кофе-брейки и вручение призов.

Встречаемся в четверг, 8 декабря, на площадке «Свобода Лофт».

Регистрируйтесь на митап по ссылке.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Как одной строчкой скопировать элементы любой collection в массив?

Ответ на картинке.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что такое «ссылка на метод»?

Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:

имя_класса::имя_статического_метода для статического метода;
объект_класса::имя_метода для метода экземпляра;
название_класса::new для конструктора.
Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.

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

Читать полностью…

Senior Java Developer

Замер времени с помощью Instant и Duration

В Java 8 добавили новый java.time API. В частности, ля измерения времени подойдут два новых класса – Instant и Duration. Оба эти класса иммутабельны.

Instant обозначает момент времени с начала эпохи Unix (1970-01-01T00:00:00Z). Для создания момента мы используем метод Instant.nоw(). После того, как мы создали два момент, вычислим разницу в миллисекундах.

Рекомендуется использовать именно этот подход в Java 8 и выше.

Читать полностью…

Senior Java Developer

Проверка нечетности

Можно ли использовать первый код для точного определения нечетности числа?

Надеюсь, вы заметили подвох. Если мы решим проверить таким образом отрицательное нечетное число (-5, к примеру), остаток от деления не будет равен единице (а чему он равен?). Поэтому используйте более точный второй метод.

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

Читать полностью…

Senior Java Developer

Метод equalsIgnoreCase()

Сравнивает данную строку с другой строкой, игнорируя регистр. Две строки считаются равными, если они имеют одинаковую длину и соответствующие символы у двух строк равны, игнорируя регистр букв.

Возвращает значение true, если аргумент не равен null и строки равны, без учета регистра букв; в противном случае значение false.

Читать полностью…

Senior Java Developer

Метод before()

Метод before() класса Date проверяет, была ли наша дата раньше той, которую мы передаем в качестве аргумента.

Читать полностью…

Senior Java Developer

Дайте краткую характеристику Enum в Java

Enum — перечисление, набор строковых констант, объединенных общим типом. Объявляется через ключевое слово — enum.

Вот пример с enum — допустимые роли в некоторой школе (см. картинку).

Слова, написанные большими буквами, и есть те самые константы перечисления, которые объявляются упрощенно, без использования оператора new.

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

Читать полностью…
Subscribe to a channel