Forwarded from Библиотека задач по Java | тесты, код, задания
Что будет результатом кода?
Anonymous Quiz
6%
true, true, true, true
67%
true, false, true, false
9%
true, true, true, false
10%
false, false, false, false
8%
Посмотреть ответ
👍4🔥3❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁15👍5🔥1🎉1
🛒 Black Friday от Proglib.academy!
Только до 30 ноября — скидка 40% на ВСЕ курсы.
Пора добавить в корзину не носки, а новые скиллы: Python, математика для Data Science, AI, алгоритмы и структуры данных, ML.
🎓 Выбирай курс, который реально двинет тебя в карьере, и учись со скидкой.
👉 Учиться со скидкой
Только до 30 ноября — скидка 40% на ВСЕ курсы.
Пора добавить в корзину не носки, а новые скиллы: Python, математика для Data Science, AI, алгоритмы и структуры данных, ML.
🎓 Выбирай курс, который реально двинет тебя в карьере, и учись со скидкой.
👉 Учиться со скидкой
Чистый, масштабируемый и поддерживаемый код — не просто идеал, а необходимость. SOLID помогает писать архитектуру, которая выдерживает рост и изменения без боли 👇
🧩 Каждый класс отвечает за что-то одно.
📍 Пример: Employee хранит данные сотрудника, но не считает зарплату — этим занимается PayrollService.
🧱 Класс открыт для расширения, но закрыт для изменения.
📍 Пример: интерфейс Shape с методом calculateArea().
Новые фигуры (Circle, Rectangle) добавляются без правки существующего кода.
🦆 Подкласс должен полностью заменять родителя, не ломая логику.
📍 Пример: если Bird умеет fly(), то Sparrow должен уметь летать.
Но Penguin не должен наследовать fly() — нарушает LSP.
🔌 Не заставляй клиентов реализовывать лишние методы.
📍 Пример: вместо интерфейса Worker с work() и eat(),
разделите его на Workable и Eatable.
Робот реализует только Workable, человек — оба.
⚙️ Зависим от абстракций, а не от реализаций.
📍 Пример: Switch работает с интерфейсом Switchable.
Ему всё равно, включает ли он лампу (LightBulb) или вентилятор (Fan).
💡 Освоив SOLID, вы начнёте проектировать системы,
которые не боятся изменений и масштабируются без боли.
#CoreJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁40💯9🔥5👍4🤔1
Forwarded from Библиотека собеса по Java | вопросы с собеседований
В Kafka существует три уровня гарантий доставки сообщений:
Выбор зависит от задачи: для логов подойдет
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4👏2❤1
Record-классы появились в Java 14 (вначале как preview, позже стабилизированы) и стали настоящим спасением от шаблонного кода.
Это лаконичный способ описать неизменяемые data-классы — без десятков строк с конструкторами, equals(), hashCode() и toString().
🔹 Зачем они нужны
Раньше, чтобы описать простой объект вроде User, нужно было писать шаблонный код:
class User {
private final String name;
private final int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
// геттеры, equals, hashCode, toString...
}
С record это выглядит так:
record User(String name, int age) {}И всё — у вас уже есть:
— конструктор, геттеры, equals(), hashCode(), toString();
— неизменяемость полей;
— компактность и читаемость.
🔹 Ключевые моменты
▪️ record — это специальный вид класса, унаследованный от java.lang.Record.
▪️ Все поля — final, сеттеров нет.
▪️ Можно добавить собственные методы и статические фабрики.
▪️ Можно переопределить канонический конструктор для валидации.
▪️ Можно объявлять вложенные рекорды и использовать их в switch или pattern matching.
🔹 Под капотом
Record — это не просто “синтаксический сахар”. JVM видит его как финальный класс с приватными финальными полями и стандартными методами, но запрещает наследование (final) и предполагает неизменность.
Так JVM и JIT могут делать агрессивные оптимизации — объекты рекордов живут меньше, быстрее создаются и не требуют избыточных проверок на изменение состояния.
🔹 Подводные камни
— Record ≠ DTO везде
Если вы сериализуете/десериализуете через фреймворки (Jackson, JPA), убедитесь, что они поддерживают record (современные версии — да).
— Проблемы с неймингом
Для рекордов автоматически создаются методы-геттеры без префикса get. Например, для record User(String name) будет метод name(), а не getName().
Это ломает привычные JavaBean-паттерны и может вызвать проблемы с библиотеками, которые ожидают именно getName().
— Не подходит, если нужен мутабельный объект.
Для билдера или ORM-энтити используйте обычный класс.
— Не добавляйте бизнес-логику внутрь record.
Это data-контейнер, а не доменная сущность.
— DTO между слоями;
— Результаты запросов к БД (projection);
— Ответы REST API;
— Ключи в Map и Set;
— В тестах и утилитах для временных структур.
— На практике редко используется из-за проблем с неймингом.
— Для ORM-сущностей, билдера, и изменяемых структур.
#CoreJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤1🔥1👏1
Знаете, в чём самая частая ловушка автоматизации?
Слить ресурсы в “идеальный” фреймворк, который годами будет поддерживать один энтузиаст, а ценности почти не даст.
Второй сценарий — пытаться всё автоматизировать вручную, игнорируя современные инструменты на базе ИИ, и внезапно оказаться в хвосте “конвейера тестов”.
Хотите выбраться из этого круга?
👨💻13 ноября в 20:00 собираемся на Практикум! Спикер: Павел Балахонов, 15+ лет автоматизации.
Узнаем:
— Что реально даёт платформа управления автотестами с ИИ, а где скрыты грабли.
— Когда “универсальный фреймворк” превращается в долгострой и почему ИИ — не просто модный хайп, а must-have в современных проектах.
Обсудим:
— Как не слить ресурсы в “универсальный” фреймворк без профита
— Почему платформа автотестирования = гибкость, а не компромисс
— Как реально внедрять ИИ: практика и подводные камни
— Почему распределение автотестов по потокам — это новый “золотой стандарт”
— И бонус — где платформы с ИИ реально экономят время команды
🎁Бонусы для всех участников:
7% скидка на любой курс OTUS
Настольный гайд: “Использование базовых команд Docker CLI”
Подборка musy-have уроков для middle+ QA
Дата: 13 ноября, 20:00
Органиченное количество мест - успейте: https://tglink.io/9d45888b7d1b
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFHUDAmv
Слить ресурсы в “идеальный” фреймворк, который годами будет поддерживать один энтузиаст, а ценности почти не даст.
Второй сценарий — пытаться всё автоматизировать вручную, игнорируя современные инструменты на базе ИИ, и внезапно оказаться в хвосте “конвейера тестов”.
Хотите выбраться из этого круга?
👨💻13 ноября в 20:00 собираемся на Практикум! Спикер: Павел Балахонов, 15+ лет автоматизации.
Узнаем:
— Что реально даёт платформа управления автотестами с ИИ, а где скрыты грабли.
— Когда “универсальный фреймворк” превращается в долгострой и почему ИИ — не просто модный хайп, а must-have в современных проектах.
Обсудим:
— Как не слить ресурсы в “универсальный” фреймворк без профита
— Почему платформа автотестирования = гибкость, а не компромисс
— Как реально внедрять ИИ: практика и подводные камни
— Почему распределение автотестов по потокам — это новый “золотой стандарт”
— И бонус — где платформы с ИИ реально экономят время команды
🎁Бонусы для всех участников:
7% скидка на любой курс OTUS
Настольный гайд: “Использование базовых команд Docker CLI”
Подборка musy-have уроков для middle+ QA
Дата: 13 ноября, 20:00
Органиченное количество мест - успейте: https://tglink.io/9d45888b7d1b
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFHUDAmv
❤1🥱1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27👍3🔥3
Вместо того чтобы копировать чужие сниппеты с StackOverflow, вы настраиваете полноценный слой персистентности через промпт.
Соединения через MongoDB Java Driver, Spring Data MongoDB для репозиториев, audit-логирование, транзакции для replica set, валидацию схемы, health checks, и observability через Micrometer.
📝 Промпт:
Generate a production-ready Spring Boot 3 + MongoDB integration with enterprise-grade configuration:
— Configure MongoDB connection using MongoClientSettings: connection pool size, max idle time, socket timeout, server selection timeout, heartbeat frequency, and SSL/TLS.
— Set up Spring Data MongoDB repositories: custom converters, projection interfaces, pagination, aggregation pipelines, and @Document annotations with proper indexes.
— Implement schema validation using JSON Schema or validator expressions: required fields, enums, type constraints, and validation actions.
— Configure replica set / sharded cluster connectivity: read preference, write concern, journal mode, retryWrites, maxStalenessSeconds, tag sets for multi-region deployments.
— Add connection pooling monitoring with Micrometer: pool sizes, checkout time, wait queues, timeouts, and heartbeat metrics.
— Implement MongoDB health checks with Spring Boot Actuator: ping validation, replica set status check, custom health indicators for stale secondaries.
— Configure transaction management for replica set: multi-document transactions, timeout settings, retryable writes, and error classification for transient transaction errors.
— Set up resilience patterns with Resilience4j: retries with exponential backoff, timeouts, circuit breaker for degraded nodes, fallback strategies for reads.
— Add credentials management: environment variables, Spring Cloud Config, HashiCorp Vault, AWS Secrets Manager, Kubernetes Secrets.
— Configure SSL/TLS: CA certificates, mutual TLS support, certificate revocation checks, hostname verification.
— Implement audit logging: operation time, slow operations, connection churn alerts, replicated writes latency.
— Add MongoDB-specific performance optimizations: index hints, collation settings, fetch size for cursors, batch inserts/updates, compression algorithms (Snappy/Zstd).
— Provide Docker Compose with MongoDB 7.x replica set initialization + Mongo Express UI + Spring Boot container with proper networking.
— Include integration tests using Testcontainers: replica set mode, transaction testing, TTL index validation.
— Add sample @Document entities with indexes: TTL, unique, sparse, compound indexes.
— Configure application.yml profiles: dev (single-node MongoDB), staging (replica set), prod (replica set with sharded cluster).
— Include aggregation examples: $lookup, $facet, $project, $graphLookup, and pipeline-based projections.
— Add encryption-at-rest & field-level encryption (CSFLE) configuration.
Deliverables:
— application.yml with environment-specific profiles
— build.gradle/pom.xml with MongoDB and Spring Data dependencies
— MongoConfig.java with custom MongoClientSettings
— JSON Schema validation file for collections
— Example @Document, repository, and service layer
— Integration tests with Testcontainers (replica set)
— docker-compose.yml with MongoDB replica set + Mongo Express
— README with connection troubleshooting and performance tuning
— настроить Change Streams для real-time событий;
— включить Queryable Encryption;
— реализовать sharding: range/hash sharding, balancer tuning;
#Enterprise
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
📘 Хочешь в Data Science, но есть пробелы в знаниях математики?
Мы сделали экспресс-курс «Математика для Data Science», который за 2 месяца даст тебе фундамент, без которого ни одна ML-модель не взлетит 🚀
Что тебя ждёт:
🔹 живые вебинары с экспертами (НИУ ВШЭ, SberAI, Wildberries&Russ);
🔹 практика в Python, квизы и проверка заданий экспертами;
🔹 матрицы, регрессии, вероятности и статистика: всё на примерах из реальных задач;
🔹 старт — 4 декабря.
🔥 Не упусти халяву: сейчас 40% до 30 ноября
👉 Записаться на курс
Мы сделали экспресс-курс «Математика для Data Science», который за 2 месяца даст тебе фундамент, без которого ни одна ML-модель не взлетит 🚀
Что тебя ждёт:
🔹 живые вебинары с экспертами (НИУ ВШЭ, SberAI, Wildberries&Russ);
🔹 практика в Python, квизы и проверка заданий экспертами;
🔹 матрицы, регрессии, вероятности и статистика: всё на примерах из реальных задач;
🔹 старт — 4 декабря.
🔥 Не упусти халяву: сейчас 40% до 30 ноября
👉 Записаться на курс
Наш подписчик спрашивает:
Мы разрабатываем корпоративный сервис на Spring Boot 2.7, планируем переход на 3.x, но всё чаще в обсуждениях мелькает Helidon Nima и вообще подходы «lightweight без магии». Сомневаюсь: Spring привычный, предсказуемый и богатая экосистема. Но Helidon обещает минимальный overhead, предсказуемую модель и высокую производительность. Что выбрать?
🔹 Что думаете?
— Есть ли те, кто работает на Helidon или Micronaut?
— Оправдывает ли себя «мини-фреймворк» в корпоративных системах или выигрыша нет?
— Какие подводные камни перехода?
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
#DevLife
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3👏2