13937
Обучающий канал по Java Ссылка для друга - https://t.me/+ZEYYht6-46w5MDM6 По всем вопросам @valentin_mascarov Реклама на бирже - https://telega.in/c/Java_per_month
⚙️ Stream.generate()
Метод Stream.generate() используется для создания бесконечного потока элементов, генерируемых функцией. Это полезно для создания потоков случайных данных, шаблонов или повторяющихся значений.
Java Learning 👩💻
🚫 Антипаттерн недели: Использование списков для проверки на принадлежность
Использование списка List для проверки наличия элемента приводит к линейной сложности O(n), что делает такую операцию медленной для больших наборов данных.
✔️ Используйте Set, который обеспечивает время выполнения O(1) для операций поиска.
Java Learning 👩💻
🔥Что делать, если система не справляется с нагрузкой? Узнайте, как эффективно справляться с нагрузками и обеспечивать бесперебойную работу ваших приложений!
🔥23 января в 20.00 мск. приглашаем на открытый вебинар в OTUS, где мы обсудим подходы для решения проблем, связанных с производительностью системы.
Вопросы вебинара:
- Как правильно реализовать один сервис?
- Что такое нагрузочное тестирование, и как его проводить?
- Как оптимизировать код и улучшить производительность?
- Зачем нужны OpenTelemetry и платформа наблюдаемости?
- Как провести трассировку запроса и оптимизацию запросов к БД?
- Что такое репликация и шардирование в MSA?
Убедитесь, что ваша система готова к любым нагрузкам!
👉Регистрация https://otus.pw/kJLX/?erid=2W5zFK8gy2Y
#реклама
О рекламодателе
⚙️ Collectors.partitioningBy
Метод partitioningBy из класса Collectors используется для разделения элементов потока на две группы, основываясь на предикате. Он возвращает карту с двумя списками: одна группа удовлетворяет предикату, другая — нет.
Java Learning 👩💻
Стань JAVA-разработчиком с EdMe: 6-8 месяцев, гарантия трудоустройства, оплата обучения после выхода на работу
Образовательный проект EdMe открывает набор на курс по Java-разработке. Программа подойдет для начинающих с нуля и для тех, кто стремится улучшить свои навыки. Обучение построено на менторстве и направлено на комплексную подготовку к трудоустройству. За 6-8 месяцев вы сможете достичь уровня middle-разработчика, для этого нужно уделять обучению от 20 часов в неделю.
Вы будете взаимодействовать с опытным разработчиком, который объяснит, что нужно учить и как это делать, а также чего избегать, чтобы быстрее освоить необходимые навыки и получить оффер. Ментор будет направлять вас, советовать, как решать технические вопросы, мотивировать и помогать готовиться к собеседованиям.
🚩Плюсы курса:
➕Гарантированное трудоустройство с зарплатой от 140 000 рублей.
➕Оплата после выхода на работу: вы платите только 20% от зарплаты в течение 18 месяцев.
➕Карьерная поддержка даже после окончания курса.
➕Если по каким-то причинам вы не сможете завершить обучение, это можно сделать без оплаты.
Во время обучения вы будете использовать Jira, Confluence, Bitbucket, GitLab – те самые системы, с которыми вы столкнетесь на реальных проектах.
🚩Программа курса включает:
▪️ Основы Java: Java Core, List, JDBC, Hibernate, Spring (Core, MVC, Security), Spring Boot, Git.
▪️ Проект.
▪️ Подготовка к собеседованиям (составление резюме, прохождение тестовых собеседований).
▪️ Прохождение реальных собеседований.
🖋 Узнать подробности и записаться на курс «JAVA-разработчик» можно на EdMe.pro
Отбор включает несложное тестовое задание, которое под силу выполнить человеку без опыта, и собеседование.
Реклама. ООО "БАКСЭТ", ИНН 4345115602. Erid 2Vtzqv75CPV
❓ Вопрос на собеседовании
Что такое эффективная финализация (Effective Finality) в Java и как она связана с анонимными классами и лямбда-выражениями?
Ответ ⬇️
Эффективная финализация означает, что переменные, используемые внутри анонимных классов или лямбда-выражений, должны быть либо явно объявлены как final, либо эффективно финализированными — то есть не изменяться после своей инициализации. Это необходимо, чтобы гарантировать, что значение переменной не изменится, пока анонимный класс или лямбда-выражение её использует.
Пример использования ⚙️
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
int number = 10;
Consumer<Integer> consumer = value -> {
System.out.println(value + number); // Использование effectively final переменной
};
consumer.accept(5); // Вывод: 15
// number = 20; // Ошибка: переменная number должна быть эффективно финализированной
}
}
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Метод append добавляет " World" в конец строки, а insert вставляет запятую на позицию 5 (после Hello). Результирующая строка: Hello, World. Код выполняется корректно.
Добро пожаловать на Виртуальную Стажировку Java
https://stepik.org/course/210937/promo
Это уникальный проект в котором вас ждет мир коммерческой разработки на Java. Вы под руководством опытного ментора реализуете проект от самого начала до деплоя на прод. В процессе работы над проектом вы познакомитесь и изучите современные технологии и библиотеки применяемые для создания современных Java Backend приложений.
## Технологии и инструменты используемые в проекте:
- VCS, Git, GitHub
- Build Tool Gradle
- Spring Framework, Spring Boot
- Design patterns: IoC, Builder, DTO, Factory, Strategy, etc.
- HTTP, REST, WEB MVC
- SQL, MySQL, H2, JDBC, ORM, JPA, Hibernate, Liquibase
- JUnit, Mockito
- Lombok, Immutable Objects
- Logging, metrics
- JAR, WAR, Java Web Server, Apache Tomcat
- JSON, XML
- Containers, Docker
- Message Broker, RabbitMQ
- и многое другое.
Это уникальный проект на практике обучающий разработке современных Java Backend приложений. Работа над этим проектом расширит ваш кругозор, откроет глаза на многие детали и тонкости применения подходов и технологий.
Главной целью этого проекта является прививание инженерного мышления. Мы хотим, чтобы вы стали не просто кодерами, а настоящими инженерами способными с помощью ИТ технологий эффективно решать реальные задачи бизнеса. Именно поэтому проект основан на реальных бизнес требованиях.
## Основные темы проекта:
- Архитектура приложения
- Дизайн паттерны
- Работа с требованиями
- Надёжность
- Тестирование
- Развертывание
- Observability (логи, метрики)
- Domain Driven Design (DDD)
- Clean code, refactoring
- Работа с базой данных
- Интеграция приложений
- и многое другое.
Завершив работу над этим проектом вы получите опыт коммерческой разработки, знания подкрепленные практикой и уникальный проект в свое портфолио.
Работая над этим проектом вы получите опыт
разработки равноценный стажировке или первой работе.
У любого желающего есть возможность бесплатно пройти виртуальную стажировку и получить опыт разработки коммерческих приложений.
Для всех, кто владеет основами Java Core и хочет получить новые знания.
По всем вопроса пишите автору и ментору проекта:
- Телеграмм (@javagurulv)
- Емейл (javagurulv@gmail.com)
Телеграмм группа проекта Виртуальная Стажировка Java:
/channel/+mvRhG9YECTlkZjQ0
Moving Java Forward {JG}
⚙️ UUID.randomUUID()
Метод UUID.randomUUID() из пакета java.util генерирует случайный UUID. Это полезно для создания уникальных идентификаторов в приложениях.
Java Learning 👩💻
⚙️ Phaser.arriveAndAwaitAdvance()
Метод Phaser.arriveAndAwaitAdvance() из пакета java.util.concurrent синхронизирует выполнение нескольких потоков, ожидая, пока все участники завершат текущую фазу, прежде чем перейти к следующей. Это полезно для организации этапов выполнения в многопоточных задачах.
Java Learning 👩💻
❓ Вопрос на собеседовании
Как работают immutable коллекции в Java, и когда их стоит использовать?
Ответ ⬇️
Immutable коллекции в Java — это неизменяемые структуры данных, которые нельзя модифицировать после их создания. Они были введены в Java 9 через методы List.of(), Set.of(), Map.of(). Immutable коллекции полезны для повышения безопасности и читаемости кода, а также для работы в многопоточной среде, где изменение данных может привести к ошибкам.
Пример использования ⚙️
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> immutableList = List.of("A", "B", "C");
System.out.println(immutableList); // [A, B, C]
// Попытка модификации вызовет исключение
// immutableList.add("D"); // UnsupportedOperationException
}
}
❓ Вопрос на собеседовании
Что такое Optional.empty(), и как оно помогает избежать null в Java?
Ответ ⬇️
Optional.empty() — это метод в классе Optional, который возвращает пустой объект Optional, указывающий на отсутствие значения. Вместо использования null, Optional помогает явно работать с отсутствующими значениями, минимизируя вероятность NullPointerException. Он предоставляет методы, такие как orElse, orElseThrow, и ifPresent, для управления ситуациями, когда значение отсутствует.
Пример использования ⚙️
import java.util.Optional;
public class Main {
public static void main(String[] args) {
Optional<String> optional = Optional.empty();
// Проверка наличия значения
System.out.println(optional.orElse("Значение отсутствует")); // Значение отсутствует
// Работа с методом ifPresent
optional.ifPresent(value -> System.out.println("Значение: " + value));
}
}
⚙️ Stream.flatMapToInt()
Метод Stream.flatMapToInt() используется для преобразования элементов потока в другой поток примитивов int. Это удобно для обработки вложенных структур данных и работы с примитивами.
Java Learning 👩💻
❓ Вопрос на собеседовании
Что такое Optional.empty(), и как оно помогает избежать null в Java?
Ответ ⬇️
Optional.empty() — это метод в классе Optional, который возвращает пустой объект Optional, указывающий на отсутствие значения. Вместо использования null, Optional помогает явно работать с отсутствующими значениями, минимизируя вероятность NullPointerException. Он предоставляет методы, такие как orElse, orElseThrow, и ifPresent, для управления ситуациями, когда значение отсутствует.
Пример использования ⚙️
import java.util.Optional;
public class Main {
public static void main(String[] args) {
Optional<String> optional = Optional.empty();
// Проверка наличия значения
System.out.println(optional.orElse("Значение отсутствует")); // Значение отсутствует
// Работа с методом ifPresent
optional.ifPresent(value -> System.out.println("Значение: " + value));
}
}
⚙️ Files.probeContentType()
Метод Files.probeContentType() определяет тип содержимого файла (MIME type). Это полезно для работы с различными типами данных в файлах.
Java Learning 👩💻
⚙️ MethodHandle.invokeExact()
Метод MethodHandle.invokeExact() из пакета java.lang.invoke позволяет вызывать метод или конструктор через ссылку MethodHandle. Это мощный инструмент для динамического вызова методов с высокой производительностью.
Java Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Когда класс реализует два интерфейса с одинаковыми default методами, требуется явное указание, какой метод вызывать. В данном коде в методе show() вызываются A.super.show() и B.super.show(), поэтому выполняются оба метода. Код компилируется и корректно выводит A's show и B's show.
⚙️ Collectors.teeing
Метод Collectors.teeing, представленный в Java 12, позволяет объединять результаты двух различных коллекторов в одном Stream. Это делает его полезным для выполнения нескольких операций над потоком данных одновременно.
Java Learning 👩💻
⚙️ Instant.now()
Метод Instant.now() из пакета java.time возвращает текущее время в UTC с высокой точностью. Это полезно для работы с временными метками в приложениях, где важна точность времени.
Java Learning 👩💻
⚙️ Stream.iterate()
Метод Stream.iterate() используется для создания бесконечного или конечного потока, начиная с начального значения и применяя к нему функцию обновления. Это полезно для генерации последовательностей или потоков данных.
Java Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
При попытке деления на ноль возникает исключение ArithmeticException, которое перехватывается в блоке catch. Блок finally всегда выполняется независимо от того, произошло ли исключение. Поэтому вывод включает обе строки.
⚙️ CompletableFuture.thenCombine()
Метод CompletableFuture.thenCombine() позволяет объединить результаты двух асинхронных задач после их завершения. Это полезно для выполнения зависимых операций без блокирования потоков.
Java Learning 👩💻
⚙️ Files.isReadable()
Метод Files.isReadable() из java.nio.file проверяет, доступен ли файл для чтения. Это полезно для предварительной проверки перед открытием файла.
Java Learning 👩💻
LeetCode теперь в Telegram!
LeetCode — это сайт, который позволяет быстро готовиться к техническим собеседованиям по программированию. Там публикуются задачи с собеседований в Google и Microsoft с решениями.
Подписывайтесь: @leetcode
🚫 Антипаттерн недели: Использование явных циклов для поиска
Вместо того чтобы использовать явные циклы для поиска элемента в коллекции, Java предоставляет методы для упрощения и оптимизации таких операций, особенно с использованием Stream API.
✔️ Используйте Stream API для лаконичного и производительного поиска элементов.
Java Learning 👩💻
Друзья, на связи ваш админ.
Я тут сделал бота для знакомств @tinder. Буду рад, если вы оцените и воспользуетесь. Если буду какие-то замечания, пишите, буду благодарен)
📢Собеседование по Spring? Будьте на шаг впереди интервьюера!
Узнайте, как отвечать на самые хитрые вопросы по Spring Framework — от базовых до неожиданных. Всё, что нужно, чтобы уверенно пройти интервью.
📚Прокачайте свои знания, научитесь формулировать ответы, разберите типичные и нетипичные вопросы вместе с экспертом.
Регистрируйтесь на открытый вебинар 15 января в 20:00 мск! Участники получат скидку на большое обучение «Разработчик на Spring Framework».
🗓Регистрация открыта: https://clck.ru/3FemiC
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Статические методы не наследуются и не переопределяются. Вызов p.print() обращается к статическому методу класса Parent, так как переменная p имеет тип Parent. Метод Child.print() не вызывается.
⚡️ В сети начали массово сливать курсы и книги известных онлайн школ
Вот отсортированная база с тонной материала(постепенно пополняется):
БАЗА (4687 видео/книг):
(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(107 видео, 43 книги) — СисАналз
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — UI/UX
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — Ruby
Скачивать ничего не нужно — все выложили в Telegram
⚙️ Files.copy()
Метод Files.copy() позволяет копировать содержимое файлов или потоков данных.
Java Learning 👩💻