seniorjavist | Unsorted

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

-

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

Subscribe to a channel

Senior Java Developer

#вопросы_с_собеседований
Сколько элементов будет пропущено, если Iterator.nеxt() будет вызван после 10-ти вызовов Iterator.hasNext()?

Ответ:
Нисколько - hasNext() осуществляет только проверку наличия следующего элемента.

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

Senior Java Developer

Play Framework позволяет легко разрабатывать расширяемые вебприложения на Java и Scala.

https://github.com/playframework/playframework

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

Senior Java Developer

Как вывести на экран 5 случайных чисел в порядке возрастания в одну строку?

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

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

Senior Java Developer

Многопоточность в Java

Смотреть статью

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

Senior Java Developer

Что такое ReadWriteLock?

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

Существует реализующий интерфейс ReadWriteLock класс ReentrantReadWriteLock, который поддерживает до 65535 блокировок записи и до стольки же блокировок чтения.

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

Senior Java Developer

#вопросы_с_собеседований
Даны 3 потока: Т1, Т2 и Т3. Как реализовать выполнение в последовательности Т1, Т2, Т3?

Такой последовательности выполнения можно достичь многими способами, например, просто воспользоваться методом join(), чтобы запустить поток в момент, когда другой уже закончит своё выполнение. Для реализации заданной последовательности, нужно запустить последний поток первым, и затем вызывать метод join() в обратном порядке, то есть Т3 вызывает Т2.join, а Т2 вызывает Т1.join, таким образом Т1 закончит выполнение первым, а Т3 последним.

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

Senior Java Developer

#вопросы_с_собеседований
Какова роль equals() и hashCode() в HashMap?

hashCode позволяет определить корзину для поиска элемента, а equals используется для сравнения ключей элементов в списке корзины и искомого ключа.

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

Senior Java Developer

eclipse-vertx/vert.x

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

Фреймворк решает такие низкоуровневые задачи, как поддержка протоколов HTTP, TCP и доступ к файловой системе.

https://github.com/eclipse-vertx/vert.x

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

Senior Java Developer

#вопросы_с_собеседований
Какая основная разница между String, StringBuffer, StringBuilder?

Класс String является неизменяемым (immutable) - модифицировать объект такого класса нельзя, можно лишь заменить его созданием нового экземпляра.

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

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

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

Senior Java Developer

Как написать свою змейку на Java за 15 минут

Смотреть статью

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

Senior Java Developer

Регулярное выражение для электронной почты

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

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

Senior Java Developer

Как сделать анимацию с помощью MotionLayout

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

Смотреть статью

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

Senior Java Developer

LeetCode теперь в Telegram!

LeetCode — это сайт, который позволяет быстро готовиться к техническим собеседованиям по программированию. Там публикуются задачи с собеседований в Google и Microsoft с решениями.

Подписывайтесь: @leetcode

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

Senior Java Developer

#вопросы_с_собеседований
Как объединить два списка в Java?

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

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

Senior Java Developer

#вопросы_с_собеседований
Что такое deadlock?

Взаимная блокировка (deadlock)
- явление, при котором все потоки находятся в режиме ожидания. Происходит, когда достигаются состояния:

1) взаимного исключения: по крайней мере один ресурс занят в режиме неделимости и, следовательно, только один поток может использовать ресурс в любой данный момент времени.
2) удержания и ожидания: поток удерживает как минимум один ресурс и запрашивает дополнительные ресурсов, которые удерживаются другими потоками.
3) отсутствия предочистки: операционная система не переназначивает ресурсы: если они уже заняты, они должны отдаваться удерживающим потокам сразу же.
4) цикличного ожидания: поток ждёт освобождения ресурса, другим потоком, который в свою очередь ждёт освобождения ресурса заблокированного первым потоком.

Простейший способ избежать взаимной блокировки – не допускать цикличного ожидания. Этого можно достичь, получая мониторы разделяемых ресурсов в определённом порядке и освобождая их в обратном порядке.

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

Senior Java Developer

Росбанк F*ckup Night

Бесплатное мероприятие для IT-специалистов, которые понимают, что ошибаться — это нормально. Будем говорить про фейлы и уроки в формате коротких питчей и обсуждений.

🔵 Как выстроить работу с джунами и не поймать «биг бадабум»;
🔵 Платить ли за T-shape;
🔵 «Проблема не на нашей стороне или все же…»;
Полный список тем и спикеров узнайте на нашем сайте.

Мероприятие можно посмотреть онлайн или посетить лично — оно пройдет в офисе Росбанка в башне ОКО II бизнес-центра "Москва-Сити".

10 марта, в 19:00
Online / offline

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

Senior Java Developer

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

ClassCastException (потомок RuntimeException) — исключение, которое будет выброшено при ошибке приведения типа.

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

Senior Java Developer

Java RegEx: использование регулярных выражений на практике

Рассмотрим регулярные выражения в Java, затронув синтаксис и наиболее популярные конструкции, а также продемонстрируем работу RegEx на примерах.

Смотреть статью

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

Senior Java Developer

Tapestry

Tapestry — объектно-ориентированный Java фреймворк для создания веб-приложений, реализующих модель MVC. Tapestry был создан Howard Lewis Ship и продолжает активно развиваться. Фреймворк является проектом верхнего уровня в организации Apache Software Foundation.

Посмотреть документацию можно здесь.

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

Senior Java Developer

Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana

В этой статье вы увидите пошаговое создание cloud-native микросервиса на Amazon AWS, пригодное для "чтения с листа". Чтобы понять, что здесь происходит, не нужно разворачивать проект - достаточно обладать живым воображением и прочитать текст по диагонали. Если же вы всё-таки захотите повторить шаги, вам будут жизненно нужны знания вида, как создавать классы в IDE и что такое Spring.

Смотреть статью

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

Senior Java Developer

#вопросы_с_собеседований
Возможна ли ситуация, когда HashMap выродится в список даже с ключами имеющими разные hashCode()?

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

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

Senior Java Developer

Guava

Guava — это сборник множества библиотек от Google. Он включает в себя:

☕️ несколько новых типов коллекций, неизменяемые коллекции;
☕️ библиотеку, реализующую работу с графами;
☕️ работу с вводом\выводом, хешированием, кэшированием, строками и многим другим.

Например, часто в коде можно встретить повторяющиеся блоки, реализующие низкоуровневую конкатенацию строк (см. пример кода). Согласитесь, код с Guava выглядит лаконичнее, понятнее, а главное, выполняет эту операцию самым оптимальным образом.

На эту библиотеку определённо стоит обратить внимание как минимум по причинам. Во-первых, она разработана спецами из Google. Во-вторых, эти же спецы из Google сами её используют. Репозиторий с документацией и инструкцией к установке тут.

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

Senior Java Developer

Object[] vs custom Class

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

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

Senior Java Developer

Java - что нужно, чтобы найти работу и как это учить

Смотреть видео

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

Senior Java Developer

Пишем Java веб-приложение на современном стеке. С нуля до микросервисной архитектуры. Часть 1

Смотреть статью

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

Senior Java Developer

Какое из следующих утверждений о потоках неверно?

1. Если метод start() вызывается дважды для одного и того же объекта Thread, во время выполнения генерируется исключение.
2. Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения генерируется исключение.
4. Если метод sleep() вызывается для потока, во время выполнения синхронизированного кода, блокировка не снимается.

Правильный ответ: 3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения исключение не генерируется. Однако, код, написанный в методе run() будет выполняться текущим, а не новым потоком. Таким образом, правильный способ запустить поток – это вызов метода start(), который приводит к выполнению метода run() новым потоком.

Вызов метода
start() дважды для одного и того же объекта Thread приведёт к генерированию исключения IllegalThreadStateException во время выполнения, следовательно, утверждение 1 верно. Утверждение 2 верно, так как порядок, в котором выполняются потоки, определяется Планировщиком потоков, независимо от того, какой поток запущен первым. Утверждение 4 верно, так как поток не освободит блокировки, которые он держит, когда он переходит в состояние Ожидания.

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

Senior Java Developer

Графический интерфейс для bash, делаем работу в командной строке удобнее

Когда пишешь код в IntelliJ IDEA, привыкаешь что везде есть подсказки, везде где можно работает комплишен, всегда можно одним кликом перейти на декларацию метода или на его юсаджи.

Смотреть статью

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

Senior Java Developer

Холостые циклы в Java

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

Смотреть статью

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

Senior Java Developer

📌 Maven — один из самых популярных инструментов для разработки с java.

Он отвечает за компиляцию, создание jar-файлов (Java-архивов), создание дистрибутива программы, генерацию документации.

Структура проекта (зависимости, конфигурации) описывается в файле pom.xml (POM – Project Object Model), который должен находиться в корневой папке проекта.

Из недостатков можно выделить только излишнюю многословность синтаксиса. С документацией можно ознакомиться по ссылке: https://maven.apache.org/guides/

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

Senior Java Developer

Советы по оптимизации кода на Java: как не наступать на грабли

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

Смотреть статью

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