Роадмап подготовки к Java собеседованиям
https://t.me/backend_interviewerЦель роадмапа - предоставить список тем и источников для быстрой подготовки к собеседованиям уровня Middle/Senior.
Роадмап не ставит целью предоставить развернутый список вопросов и ответов с собеседований. Потому что собеседование это не экзамен. Нет смысла заучивать ответы. Нужно понимать суть.

Содержание:
- Java
- Spring
- SQL
- NoSQL
- Apache Kafka
- Docker, Kubernetes
- Паттерны проектирования, ООП, SOLID
- Алгоритмы и структуры данных
- Системный дизайн
- Soft skills
Java
Содержание:
Архитектура JVM
- Области памяти
- Bytecode, JIT, оптимизации
- Загрузка классов
- Виды ссылок
- Структура объектов
https://blog.jamesdbloom.com/JVMInternals.html
https://www.azul.com/blog/understanding-java-compilation-from-bytecodes-to-machine-code/
https://www.ibm.com/docs/en/sdk-java-technology/8?topic=compiler-how-jit-optimizes-code
https://www.baeldung.com/java-memory-layout
https://shipilev.net/jvm/objects-inside-out/
Сборка мусора
- Виды
- Механизм работы
- Настройка параметров
- Логи, метрики
- Анализ HeadDump и ThreadDump
- Ликвидация утечек
https://www.freecodecamp.org/news/garbage-collection-in-java-what-is-gc-and-how-it-works-in-the-jvm/
https://dataintellect.com/blog/low-latency-java-optimisation-through-garbage-collector-tuning/
https://sematext.com/blog/java-garbage-collection-logs/
https://blog.gceasy.io/simple-effective-g1-gc-tuning-tips/
https://sematext.com/blog/java-memory-leaks/
Классы
- Reflection
- Annotation Processing
- Classloaders
- Serialization
- Типы ссылок
- Boxing, unboxing
- Порядок инициализации
https://www.baeldung.com/java-custom-annotation
https://www.baeldung.com/java-classloaders
https://www.guvi.in/blog/guide-for-serialization-in-java/
https://antkorwin.com/concurrency/weakreference.html
https://thospfuller.com/2024/03/12/java-autoboxing-performance/
Коллекции
- Внутреннее устройство
- Fail-fast, fail-safe
- Потокобезопасные коллекции
- equals/hashCode контракт, коллизии
https://struchkov.dev/blog/ru/java-collection-framework/
https://www.baeldung.com/java-fail-safe-vs-fail-fast-iterator
Дженерики
- Type erasure
- Wildcards: extends, super, PECS
https://dev.mo4tech.com/the-most-complete-guide-to-java-generics.html
Исключения
- Checked/unchecked
- try-catch-finally
https://stackabuse.com/exception-handling-in-java-a-complete-guide-with-best-and-worst-practices/
Стримы
- Внутреннее устройство
- Паралельные стримы, ForkJoinPool
https://struchkov.dev/blog/ru/java-stream-api/
https://www.baeldung.com/java-fork-join
Многопоточность
- Thread, Runnable, Callable, Future, CompletableFuture
- synchronized vs Lock
- volatile vs Atomic
- CAS, FAA
- Semaphore, CountDownLatch, CyclicBarrier, Phaser, Exchanger
- Deadlock, Livelock, Race condition
- JMM
- happens-before
https://shameekagarwal.github.io/posts/java-multithreading/
https://jenkov.com/tutorials/java-concurrency/index.html
https://shipilev.net/blog/2014/jmm-pragmatics/
Spring
Содержание:
Spring Core
- Жизненный цикл бинов
- Scope бинов
- Способы внедрения бинов
- DI vs IoC
- ApplicationContext vs BeanFactory
- BeanPostProcessor
https://dev.to/rahul_talatala/spring-core-fundamentals-a-beginner-guide-3daa
https://habr.com/ru/articles/720794/
Spring AOP
- Join Point, Advice, Pointcut
- Типы Advice
- Spring AOP vs AspectJ
- JDK dynamic proxy vs CGLIB
https://www.appsdeveloperblog.com/a-guide-to-spring-boot-aop-to-record-user-operations/
https://docs.spring.io/spring-framework/reference/core/aop/proxying.html
Spring Data
- JPA
- Lazy/Eager загрузка
- N+1 проблема
- Hibernate кэш
- Merge vs persist
- Paging, sorting, native queries, hints
https://www.baeldung.com/hibernate-save-persist-update-merge-saveorupdate
https://blog.frankel.ch/digging-hibernate-query-cache/
https://dev.to/easycat/zoopark-hibernate-n1-zaprosov-ili-kak-nakormit-zhadnogho-bieghiemota-26nn
Spring Transaction
- @Transactional
- Propagation, Isolation, Rollback
https://www.marcobehler.com/guides/spring-transaction-management-transactional-in-depth
Spring Web
- Обработка ошибок
- OpenAPI
- MVC vs Webflux
- Jackson
- SSE
- Websocket
https://habr.com/ru/articles/565698/
https://habr.com/ru/articles/716544/
Spring Security
- Basic, JWT, LDAP, OAuth2
- CSRF, CORS
- SecurityFilterChain
https://www.marcobehler.com/guides/spring-security
https://syskool.com/cors-csrf-and-secure-headers-in-spring-boot/
Spring Boot
- @AutoConfiguration, @ConditionalOn
- Properties, профили
- Actuator
- Starters
https://www.marcobehler.com/guides/spring-boot-autoconfiguration
https://www.baeldung.com/spring-boot-custom-starter
Spring Cloud
- Discovery, Gateway, Load balance, Config
- Resilience
- Tracing
https://habr.com/ru/articles/793550/
https://www.baeldung.com/spring-cloud-sleuth-single-application
SQL
- Нормализация, денормализация
- ACID
- Уровни изоляций
- Типы индексов, когда какой тип выбрать
- Explain
https://habr.com/ru/articles/555920/
https://ru.wikipedia.org/wiki/Уровень_изолированности_транзакций
https://neon.com/postgresql/postgresql-indexes
https://habr.com/ru/articles/203320/
NoSQL
- Типы и сравнение (Key-Value, Document, Column-oriented, Graph)
- BASE vs ACID
- SQL vs NoSQL
- Механизмы репликации, шардирования и отказоустойчивости
https://www.educative.io/blog/database-scalability-sharding-partitioning-replication
Apache Kafka
- Компоненты (Broker, Producer, Consumer, Topic, Partition, Consumer Group)
- Гарантии доставки
- Transactional outbox
https://docs.arenadata.io/ru/ADStreaming/current/concept/architecture/kafka/delivery_guarantees.html
https://habr.com/ru/companies/lamoda/articles/678932/
Docker, Kubernetes
- CI/CD
- Docker
- Kubernetes (Pod, Deployment, Service, ConfigMap, Secret)
- Мониторинг (Prometheus, Grafana, ELK)
Паттерны проектирования, ООП, SOLID
- GoF
- Статический/динамический полиморфизм
- Агрегация/композиция
- Какие паттерны используются в Spring
- Какие паттерны использовали у себя
https://bool.dev/blog/detail/gof-design-patterns
https://raygun.com/blog/oop-concepts-java/
Алгоритмы и структуры данных
- Констнатная, логарифмическая, линейная, квадратичная, экспоненциальная, факториальная сложности
- Сравнение сложности вставки/поиска для массива, списка, стека, очереди, множества, хеш-таблицы, дерева
- Сортировка, бинарный поиск
- Обход в глубину/ширину
- Динамическое программирование
https://t.me/backend_interviewer/45
https://t.me/backend_interviewer/53
https://t.me/backend_interviewer/63
https://cp-algorithms.com/dynamic_programming/intro-to-dp.html
Системный дизайн
- DNS, Load Balancer, API Gateway, CDN, Forward/Reverse Proxy, Caching, Partitioning, Replication, Messaging Systems, Microservices, SQL/NoSQL
- CAP
- Stateless vs Statefull
https://bytebytego.com/courses/system-design-interview/scale-from-zero-to-millions-of-users
Soft skills
- Методологии разработки
- Умение объяснять архитектурные решения, trade-off’ы, помогать коллегам
- Презентация опыта: STAR техника, причины использования тех или иных решений
- Вопросы интервьюеру
Контакты
Личка @principal_swe
Канал @backend_interviewer