ru
Feedback
Java задачи с собеседований

Java задачи с собеседований

Открыть в Telegram

Задачи, тесты и теоретические вопросы по JAVA. Репозиторий: https://github.com/proghub-official/java-interview Прислать задачу/вопрос в дар: @cyberJohnny Сотрудничество: @cyberJohnny

Больше
5 889
Подписчики
-124 часа
-87 дней
-2830 день
Архив постов
⚙️ Параллелизм в Java 8 В Java 8 было внесено несколько крупных изменений, улучшивших API параллелизма, включая метод newWork
⚙️ Параллелизм в Java 8 В Java 8 было внесено несколько крупных изменений, улучшивших API параллелизма, включая метод newWorkStealingPool(). 🗣️ Этот метод создает пул потоков, использующий алгоритм воровства работы, который может использовать доступные процессоры на желаемом уровне параллелизма. ➡️ Другие улучшения в API параллелизма включают: • Новые методы для ConcurrentHashMap: forEach(), forEachEntry(), forEachValue(), reduce(), merge() и search(). • CompletableFuture может явно устанавливать свое значение и статус. 👩‍💻 @javaquiz

➡️ Maven Maven — один из трёх самых популярных инструментов для сборки проектов на Java. Он отвечает за компиляцию, создание
➡️ Maven Maven — один из трёх самых популярных инструментов для сборки проектов на Java. Он отвечает за компиляцию, создание jar-файлов (Java-архивов), создание дистрибутива программы, генерацию документации. 🗣️ Maven — просто отличная штука, хоть поначалу и не очень понятная. Если вы никогда не использовали Maven раньше, вы многое потеряли. 🔗 Ссылочка на доку (https://maven.apache.org/guides/index.html) 👩‍💻 @javaquiz

➡️ Использование Iterator для перебора List В Java есть несколько способов перебрать список: цикл for с индексом, расширенный
➡️ Использование Iterator для перебора List В Java есть несколько способов перебрать список: цикл for с индексом, расширенный for и Iterator. Раньше я использовал цикл for с методом get(), как показано ниже: for (int i = 0; i < list.size(); i++) { String name = list.get(i); } 🗣️ Этот метод работает для ArrayList, но если список — это LinkedList или другая реализация без поддержки случайного доступа, время выполнения увеличится до O(N^2), потому что get() для LinkedList имеет O(n) сложность. Кроме того, при использовании циклов может возникнуть ошибка в многопоточном режиме, например, при работе с CopyOnWriteArrayList, когда один поток изменяет список, а другой пытается получить доступ к элементам, что может привести к IndexOutOfBoundsException. ✔️ Лучше использовать Iterator, который является стандартным способом перебора списка: Iterator itr = list.iterator(); while (itr.hasNext()) { String name = itr.next(); } Это безопаснее и предотвращает непредсказуемое поведение. 👩‍💻 @javaquiz

💻 Модели межсервисного взаимодействия Изучите различные модели взаимодействия между микросервисами и выберите оптимальный по
💻 Модели межсервисного взаимодействия Изучите различные модели взаимодействия между микросервисами и выберите оптимальный подход для вашего проекта Приглашаем на открытый урок. 🗓 28 мая в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Software Architect». На вебинаре вы узнаете: ✔️ Основные принципы и типы межсервисного взаимодействия. ✔️ Синхронные и асинхронные модели взаимодействия: плюсы и минусы. ✔️ Использование API Gateway и Service Mesh для управления трафиком. ✔️ Паттерны и лучшие практики для надежного и масштабируемого взаимодействия. ✔️ Примеры успешных реализаций межсервисного взаимодействия в реальных проектах. Вебинар будет полезен: - Разработчикам, работающим с микросервисной архитектурой. - Архитекторам ПО, стремящимся оптимизировать межсервисное взаимодействие. - Backend и Fullstack разработчикам, заинтересованным в улучшении взаимодействия между сервисами. - DevOps-инженерам, отвечающим за развертывание и управление микросервисами. 🎁 Всем участникам вебинара дарим промокод, который дает скидку на обучение - SoftwareArc_06 👉 Регистрация на вебинар: https://clck.ru/3MCYLm Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

⚡️Узнайте, как проектировать бизнес-ориентированные приложения с помощью Domain-Driven Design! 🔥27 мая в 20:00 мск приглашае
⚡️Узнайте, как проектировать бизнес-ориентированные приложения с помощью Domain-Driven Design! 🔥27 мая в 20:00 мск приглашаем на бесплатный вебинар «Практикум проектирования приложения с помощью DDD», где вы на практике разберёте: – что такое Domain-Driven Design и когда он действительно работает; – как выделять Bounded Context'ы и формировать Ubiquitous Language; – как строить архитектуру вокруг предметной области; – как проектировать API и интерфейсы, опираясь на модель; – и какие ошибки чаще всего допускают при внедрении DDD в командах. 🛠 В реальном времени спроектируем приложение по DDD на живом кейсе — от концепции до архитектурных решений. 👉Регистрация: https://clck.ru/3MDZvL Занятие приурочено к старту курса «Архитектура и шаблоны проектирования», где вы глубже освоите DDD, CQRS, Event Storming и другие архитектурные практики. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

➡️ Обработка CloneNotSupportedException и возврат экземпляра подкласса Несмотря на критику функции клонирования объектов в Ja
➡️ Обработка CloneNotSupportedException и возврат экземпляра подкласса Несмотря на критику функции клонирования объектов в Java, если вам нужно реализовать метод clone(), вот несколько лучших практик для упрощения задачи: public Course clone() { Course c = null; try { c = (Course)super.clone(); } catch (CloneNotSupportedException e) {} // Не произойдет return c; } 🗣️ Этот код использует тот факт, что метод clone() не вызовет CloneNotSupportedException, если класс реализует интерфейс Cloneable. Возврат подкласса называется ковариантным переопределением методов и доступен с Java 5, что позволяет избежать приведения типа на стороне клиента: Course javaBeginners = new Course("Java", 100, 10); Course clone = javaBeginners.clone(); Ранее, например, с классом Date, нужно было явно приводить результат метода clone(): Date d = new Date(); Date clone = (Date) d.clone(); 👩‍💻 @javaquiz

👀 Datafaker Datafaker создает фиктивные данные для ваших программ JVM за считанные минуты, используя широкий спектр из более
👀 Datafaker Datafaker создает фиктивные данные для ваших программ JVM за считанные минуты, используя широкий спектр из более чем 100 поставщиков данных. 🗣️ Это может быть очень полезно при генерации тестовых данных для заполнения базы данных, генерации данных для стресс‑теста или анонимизации данных из производственных сервисов. Давайте включим его в наши зависимости. 🔗 Ссылочка на доку (https://www.datafaker.net/documentation/getting-started/) 👩‍💻 @javaquiz

Ищете эффективные инструменты для создания DSL? Узнайте, как Kotlin может упростить разработку с помощью JsonBuilder! Приглаш
Ищете эффективные инструменты для создания DSL? Узнайте, как Kotlin может упростить разработку с помощью JsonBuilder! Приглашаем на открытый урок. 🗓 22 мая в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional». На открытом уроке вы разберете, как Kotlin позволяет создавать DSL (Domain-Specific Languages), оптимизируя процесс разработки. Мы покажем теорию и практику создания DSL на примере JsonBuilder. Вы не только научитесь создавать собственные DSL, но и освоите замыкания и extension-методы Kotlin, которые дадут вам дополнительные преимущества при написании чистого и гибкого кода. 🎁 Всем участникам вебинара дарим промокод, который дает скидку на обучение - Kotlin5 👉 Регистрация на вебинар: https://clck.ru/3MCXbf Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

👀 Случайные целочисленные числа Теперь более трудное задание. Не читайте решение. Посмотрите сможете ли вы найти ответ самос
👀 Случайные целочисленные числа Теперь более трудное задание. Не читайте решение. Посмотрите сможете ли вы найти ответ самостоятельно. Когда я запущу следующую программу: for (int i = 0; i < 10; i++) { System.out.println((Integer) i); } Иногда я получаю следующий вывод: 92 221 45 48 236 183 39 193 33 84 ➡️ Но как такое вообще возможно? Ответ в кроется в переопределении JDK кеша Integer через рефлексию, и затем в использовании auto-boxing и auto-unboxing. 👩‍💻 @javaquiz

👩‍💻 Хотите научиться эффективно работать с многопоточными приложениями на Java? На открытом уроке мы разберем потокобезопас
👩‍💻 Хотите научиться эффективно работать с многопоточными приложениями на Java? На открытом уроке мы разберем потокобезопасные очереди JDK, которые являются обязательной частью многопоточных приложений. Вы узнаете, как они устроены, какие внутренние механизмы лежат в их основе и как правильно их использовать в своих проектах. 🗓 26 мая в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional». Освоив принципы работы потокобезопасных очередей, вы сможете создать более производительные и стабильные многопоточные приложения. Эти знания откроют новые возможности для вашего профессионального роста в Java-разработке. 🔗 Ссылка на регистрацию: https://clck.ru/3MBpgJ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

⚙️ Оптимизация сборщика мусора с помощью -XX:+UseG1GC Java предоставляет множество возможностей для оптимизации производитель
⚙️ Оптимизация сборщика мусора с помощью -XX:+UseG1GC Java предоставляет множество возможностей для оптимизации производительности приложений. ✔️ Одной из таких возможностей является использование современного сборщика мусора G1 (Garbage First), который улучшает работу приложений с большим объемом данных и снижает задержки. ➡️ Чтобы включить использование G1GC, необходимо добавить флаг -XX:+UseG1GC при запуске Java-приложения: java -XX:+UseG1GC G1GCExample 👩‍💻 @javaquiz

👩‍💻 Как использовать SpEL в приложениях на Spring? Присоединяйтесь к открытому уроку «SpELые приложения на Spring» и узнайт
👩‍💻 Как использовать SpEL в приложениях на Spring? Присоединяйтесь к открытому уроку «SpELые приложения на Spring» и узнайте, как динамически выражать и обрабатывать данные в Spring-приложениях. SpEL (Spring Expression Language) — это мощный инструмент для внедрения динамических выражений, который широко применяется в проектировании приложений на Spring. 🗓 21 мая в 19:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework». Что вас ждёт: ✔️ Погружение в SpEL и его возможности. ✔️ Применение SpEL в реальных Spring-проектах. ✔️ Понимание, как Spring использует SpEL для обработки и динамических вычислений. Урок для Spring-разработчиков, Java-бэкенд-инженеров и архитекторов ПО. 🔗 Ссылка на регистрацию: https://clck.ru/3MAgGF Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

❓ Парадокс Comparator’а Если вам нужно написать Comparator для сортировки объектов по возрастанию, обычно он выглядит так: pu
❓ Парадокс Comparator’а Если вам нужно написать Comparator для сортировки объектов по возрастанию, обычно он выглядит так: public class ByScoreComparator implements Comparator { @Override public int compare(User u1, User u2) { return (int) signum(u2.getAge() - u1.getAge()); } } ➡️ Главная проблема — понять, от чего отнимать, чтобы порядок был правильным. Правильный ответ с первого раза получается редко, и часто мы замечаем ошибку уже после запуска кода. Теперь это не нужно. Можно использовать ссылки на методы: Comparator comparator = Comparator .comparingDouble(User::getAge) .thenComparing(User::getName); List hList = ...; hList.sort(comparator); 🗣️ Такой подход упрощает создание компараторов. 👩‍💻 @javaquiz

🔥Java и производительность — новая тема от онлайн-конференции Podlodka Java Crew С 26 по 30 мая вас ждет тематическая неделя
🔥Java и производительность — новая тема от онлайн-конференции Podlodka Java Crew С 26 по 30 мая вас ждет тематическая неделя, посвящённая продвинутым практикам оптимизации Java-приложений. В программе: — Доклад Владимира Плизги (Tibbo System) о подходах к профилированию и инструментах, которые действительно работают; — Воркшоп по JMH от Григория Кошелева (Контур) — научитесь писать микробенчмарки правильно; — Круглый стол с Антоном Курако (Т-Банк) и Михаилом Поливахой (Spring АйО) — сравнение Spring, Micronaut, Quarkus и Kora через призму производительности; — Опыт команды НСПК по нагрузочному тестированию в бою — расскажет Павел Митин. А ещё — JFR, корутины, Kubernetes и десятки инсайтов из продакшена. 🎯 Неделя для тех, кто держит перформанс под контролем. 🔗 Подключайся: podlodka.io/javacrew

Как получить карьерный буст и MacBook за подписку В интернете полно курсов по самопиару и карьерному развитию в IT, но все он
Как получить карьерный буст и MacBook за подписку В интернете полно курсов по самопиару и карьерному развитию в IT, но все они не сравнятся с реальными кейсами от действующих практиков. Не нужно покупать дорогие консультации, чтобы перенять чужой опыт — достаточно подписаться на папку, где собралось более 30 лучших экспертов из IT и digital Это люди, которые не только построили успешную карьеру с нуля, но и основали собственные компании. Они собрались, чтобы прокачать тебя в маркетинге и дизайне, а ещё провести розыгрыш. Подпишись на них и получи один из 3 призов: 🥇Главный приз — MacBook Air (M2) 🥈2 место: Яндекс Станция Лайт 2 🥉3 место: Наушники HUAWEI Freebuds 5i Участвуешь? 1. Подпишись на папку 2. Подтверди участие в боте 19 июня в прямом эфире опубликуем итоги розыгрыша!

➡️ Как объединить два списка в Java? Этот код демонстрирует, как объединить два списка list1 и list2 в Java, создав новый спи
➡️ Как объединить два списка в Java? Этот код демонстрирует, как объединить два списка list1 и list2 в Java, создав новый список mergedList, который содержит все элементы из обоих исходных списков. В результате выполнения кода будет напечатан объединенный список. 🗣️ Этот подход часто используется на практике при работе с коллекциями в Java. 👩‍💻 @javaquiz

⏳ Использование LocalDate и DateTimeFormatter для работы с датами LocalDate и DateTimeFormatter предоставляют удобные и безоп
⏳ Использование LocalDate и DateTimeFormatter для работы с датами LocalDate и DateTimeFormatter предоставляют удобные и безопасные методы для работы с датами в Java. 🗣️ Этот подход упрощает задачи форматирования и парсинга дат, что делает код более читаемым и менее подверженным ошибкам. 👩‍💻 @javaquiz

➡️ Фабричный метод коллекции ✔️ Коллекции — наиболее часто используемая функция в нашем ежедневном программировании. Они испо
➡️ Фабричный метод коллекции ✔️ Коллекции — наиболее часто используемая функция в нашем ежедневном программировании. Они используются в качестве контейнера, в котором мы храним объекты и передаем их дальше. Коллекции также используются для сортировки, поиска и перебора объектов, что упрощает жизнь программиста. Он предоставляет несколько базовых интерфейсов, таких как List, Set, Map и т. д., а также множество реализаций. Традиционный способ создания коллекций и карт может показаться многим разработчикам многословным. 👀 Вот почему в Java 9 появилось несколько очень кратких фабричных методов. 👩‍💻 @javaquiz

➡️ Использование Optional для работы с потенциально null значениями Использование Optional позволяет более безопасно работать
➡️ Использование Optional для работы с потенциально null значениями Использование Optional позволяет более безопасно работать с потенциально null значениями в Java. 🗣️ Этот подход помогает предотвратить распространенные ошибки, такие как NullPointerException, и делает код более читаемым и надежным. 👩‍💻 @javaquiz

👩‍💻 SpELые приложения на Spring Присоединяйтесь к открытому уроку, узнайте, как динамически выражать и обрабатывать данные
👩‍💻 SpELые приложения на Spring Присоединяйтесь к открытому уроку, узнайте, как динамически выражать и обрабатывать данные в Spring-приложениях. 🗓 21 мая в 19:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework». О чём поговорим: ✔️Разоберем, для чего нужен SpEL. ✔️Рассмотрим, в каких проектах Spring его можно встретить. Кому будет интересно: Spring-разработчикам, Java-бэкенд-инженерам, архитекторам ПО, IT-специалистам и студентам, заинтересованным в технологиях Spring. В результате урока: Узнаете, для чего нужен SpEL и где его можно применять. 🔗 Ссылка на регистрацию: https://clck.ru/3M5vWa Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576