Forwarded from Библиотека собеса по Java | вопросы с собеседований
Spring ищет бины с помощью
Сканирование начинается с пакета,
Если бин не помечен аннотацией, его можно зарегистрировать вручную через
Please open Telegram to view this post
VIEW IN TELEGRAM
Java постоянно развивается: новые фичи появляются, сборки становятся умнее, а в продакшене до сих пор царит Spring Boot. Да, он мощный, универсальный, но медленный старт, гигантский оверхед, живёт по инерции.
Quarkus и Micronaut стартуют быстрее, кушают меньше памяти, заточены под облака и serverless. Всё вроде бы красиво — но если что-то сломается, вместо «гугли решение» услышишь «пиши ишью на GitHub, может через полгода поправят».
— Стоит ли бросать Spring Boot в 2025 ради Quarkus или Micronaut?
— Или проверенная тяжеловесная классика всё ещё надёжнее молодой крови?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔹 Как работает память в JVM
Глубокий анализ архитектуры памяти Java Virtual Machine и особенностей управления памятью. Уникальная информация для улучшения производительности ваших Java-приложений.
🔹 Ускорение Spring REST API на 200%
Spring удобен, но его абстракции могут замедлять работу API. Рассмотрите способы избавиться от ненужных накладных расходов и значительно увеличить производительность API.
🔹 Caffeine анализ кода
Статья описывает Caffeine с использованием алгоритма TinyLFU. Рассматриваются структуры данных, методы и старение данных для поддержания актуальности кэша.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Java | тесты, код, задания
Forwarded from Библиотека задач по Java | тесты, код, задания
Что вернёт следующий SQL-запрос?
Anonymous Quiz
33%
Всех сотрудников компании с зарплатой выше средней по отделу
14%
Зарплаты сотрудников, которые выше средней зарплаты среди всех отделов
40%
Зарплаты сотрудников, которые выше средней по их отделу
11%
Среднюю зарплату по каждому отделу
3%
Прибыль компании и id каждого отдела
Java-разработчик в Маркет — от 180 000 до 350 000 ₽, офис (Москва, Санкт-Петербург, Нижний Новгород)
Java-разработчик — от 100 000 ₽, гибрид (Москва)
Руководитель команды разработки / Team Lead (Java/Kotlin) — от 300 000 ₽, гибрид (Москва)
Java разработчик — до 500 000 ₽, гибрид (Москва, Санкт-Петербург)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔹 Поддержка JDK 17-27 — новая версия требует более современных версий JDK.
🔹 Удаление устаревших API — больше не поддерживаются аннотации из javax.annotation и javax.inject.
🔹 Миграция на Jakarta EE 11 — обновления в работе с сервлетами и WebSocket.
🔹 Усовершенствования для Kotlin — поддержка Kotlin 2.x и отказ от старых решений.
🔹 Изменения в HttpHeaders API — улучшена обработка заголовков с учетом их нечувствительности к регистру.
Please open Telegram to view this post
VIEW IN TELEGRAM
JMH — это фреймворк для точного микробенчмаркинга в Java. Он предназначен для создания тестов производительности, которые помогают анализировать, как различные изменения в коде влияют на его эффективность.
Фичи: измерение времени выполнения на уровне микроопераций, поддержка сложных случаев оптимизации JVM, вывод подробной статистики, возможность настройки параметров теста, точные результаты без влияния JVM-оптимизаций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 IT Breaking Memes — 30 000 ₽ за самую смешную IT-новость
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».
Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».
📅 Сроки: с 29 апреля по 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Ждем ваших новостей!
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».
Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».
📅 Сроки: с 29 апреля по 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Ждем ваших новостей!
Please open Telegram to view this post
VIEW IN TELEGRAM
Запутались в легаси, где каждый метод — это мини-роман? Попробуйте этот промпт — он поможет расчистить завалы и вдохнуть в код новую жизнь:
📝 Промпт:
Refactor the following code to improve readability, maintainability, and adherence to clean code principles. Suggest design improvements and explain the rationale behind each change.
// Вставьте закостыленный код сюда
— Добавьте
Identify code smells if you want to spot bad practices like long methods, god objects, or excessive dependencies
— Добавьте
Recommend design patterns if the codebase cries for structure
— Добавьте Suggest
breaking into smaller modules or services
если ощущаете, что монолит трещит по швамPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎯 Как настроить CORS в Spring Boot
Когда фронт и бэк живут на разных доменах — CORS становится головной болью. Но Spring Boot даёт достаточно способов это настроить — от простых аннотаций до централизованной фильтрации.
1️⃣ Минимальная настройка — через @CrossOrigin
Если нужно открыть доступ только к одному контроллеру или методу:
Удобно для быстрого прототипа, но неудобно для масштабируемого решения.
2️⃣ Глобальная настройка через WebMvcConfigurer
Если CORS нужен везде, лучше использовать конфигурационный класс:
Даёт полный контроль. Можно задать разные правила для разных путей.
3️⃣ Настройка CORS через application.yml (Spring Cloud Gateway)
Если вы используете Gateway, настройка может быть ещё проще:
Подходит, если CORS должен работать до попадания запроса в конкретный микросервис.
4️⃣ CORS + безопасность
Если CORS работает «через раз», возможно, его блокирует Spring Security. Добавьте .cors() в конфигурацию:
5️⃣ Тестирование CORS
✅ Проверьте через curl:
Ответ должен содержать заголовки:
📌 Не оставляйте allowedOrigins("*") в проде. Это дыра в безопасности. Нужно чётко указывать домены.
💬 Как вы обычно настраиваете CORS в своих микросервисах?
🐸 Библиотека джависта #буст
Когда фронт и бэк живут на разных доменах — CORS становится головной болью. Но Spring Boot даёт достаточно способов это настроить — от простых аннотаций до централизованной фильтрации.
Если нужно открыть доступ только к одному контроллеру или методу:
@CrossOrigin(origins = "https://example.com")
@RestController
public class ApiController {
@GetMapping("/data")
public String getData() {
return "OK";
}
}
Удобно для быстрого прототипа, но неудобно для масштабируемого решения.
Если CORS нужен везде, лучше использовать конфигурационный класс:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("https://example.com")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowCredentials(true);
}
}
Даёт полный контроль. Можно задать разные правила для разных путей.
Если вы используете Gateway, настройка может быть ещё проще:
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "https://example.com"
allowedMethods:
- GET
- POST
allowedHeaders: "*"
Подходит, если CORS должен работать до попадания запроса в конкретный микросервис.
Если CORS работает «через раз», возможно, его блокирует Spring Security. Добавьте .cors() в конфигурацию:
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.cors() // 👈 Без этого CORS не заработает
.and()
.authorizeHttpRequests(auth -> auth.anyRequest().permitAll());
return http.build();
}
}
✅ Проверьте через curl:
curl -H "Origin: https://example.com" \
-H "Access-Control-Request-Method: GET" \
-X OPTIONS http://localhost:8080/data -v
Ответ должен содержать заголовки:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET
Please open Telegram to view this post
VIEW IN TELEGRAM
DTO — штука вроде очевидная: "не светить сущностями наружу". Но что дальше?
🔹 Кто-то делает DTO только в контроллерах, а внутри работает с доменными объектами.
🔹 Кто-то строит слоистую модель DTO-шек, даже между сервисами и репозиториями.
🔹 А кто-то вообще говорит: «DTO везде — меньше связность, проще миграции, лучше тестируемость».
— Где заканчивается польза от DTO, а где начинается бессмысленная бюрократия?
— DTO только на границах приложения или вообще везде?
— Или пора забить и возвращать UserEntity напрямую в контроллер?
Please open Telegram to view this post
VIEW IN TELEGRAM
Работаете в большом проекте и устали искать, где находится метод или переменная? IntelliJ IDEA умеет молниеносно прыгать к исходному коду — всё, что нужно, это Ctrl + B (или Cmd + B на macOS).
🔹 Зачем это нужно
— Вместо ручного поиска по файлам вы сразу попадаете в нужное место в коде.
— Работает с методами, классами, интерфейсами, переменными, импортами и даже с SQL-мэппингами в JPA.
🔹 Как использовать
— Наведите курсор на интересующий метод, переменную или класс.
— Нажмите Ctrl + B (или Cmd + B на macOS).
— IDEA мгновенно откроет определение — будь то в вашем коде, в сторонней библиотеке или в decompiled-классе.
Очень удобно, когда нужно быстро понять, что именно делает вызываемый метод, особенно если работаете с чужим кодом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Азбука айтишника
🎓 Как выбрать свою роль в Data Science и не потеряться в терминах
Если вы только начинаете разбираться в Data Science — перед вами лабиринт из названий: data scientist, аналитик, ML-инженер, BI, архитектор... Кто чем занимается? Что нужно учить?
➡️ Что внутри статьи
— Кто такие Data Engineer
— Чем отличается Data Architect от инженера и зачем он нужен в big data проектах
— Чем занимаются Data Analyst и почему это отличная точка входа в карьеру
— Что делает настоящий Data Scientist
В статье разобрано всё: от задач до технологий, которые реально спрашивают на собеседованиях.
📎 Ссылка
Азбука айтишника #ликбез
Если вы только начинаете разбираться в Data Science — перед вами лабиринт из названий: data scientist, аналитик, ML-инженер, BI, архитектор... Кто чем занимается? Что нужно учить?
— Кто такие Data Engineer
— Чем отличается Data Architect от инженера и зачем он нужен в big data проектах
— Чем занимаются Data Analyst и почему это отличная точка входа в карьеру
— Что делает настоящий Data Scientist
В статье разобрано всё: от задач до технологий, которые реально спрашивают на собеседованиях.
📎 Ссылка
Азбука айтишника #ликбез
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Загадка для разработчиков
Что за паттерн загадан на картинке? Пишите в комменты ответ под спойлером.
💬 Рассказывайте интересные кейсы реализации из практики
🐸 Библиотека джависта #междусобойчик
Что за паттерн загадан на картинке? Пишите в комменты ответ под спойлером.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔹 Spring-потрошитель
Автор делится опытом анализа и оптимизации Spring-приложений, выявляя скрытые зависимости и избыточные компоненты.
Рассматриваются методы обнаружения неиспользуемых бинов, циклических зависимостей и других архитектурных дефектов, влияющих на производительность и поддерживаемость кода.
🔹 Тестирование CAP-теоремы на примере MongoDB
Автор проводит серию тестов с различными параметрами writeConcern и readConcern, анализируя их влияние на согласованность и доступность данных.
Рассматриваются реальные сценарии, включая сбои и аварийные ситуации, с целью выявления оптимальных настроек для обеспечения требуемых свойств системы.
🔹 Clean your Memory: From Finalize to Cleaner
Рассматриваются проблемы, связанные с finalize(), такие как непредсказуемость вызова и возможные утечки памяти.
Введение в Cleaner предоставляет более гибкий и эффективный механизм для освобождения ресурсов, улучшая производительность и стабильность приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM