Java Core
➤ Какие есть типы данных в Java и какой у них размер
➤ Какие есть модификаторы в Java и Kotlin
➤ Какие вы знаете Java Collection
➤ Какие уровни сложности для операций с коллекциями
➤ Что такое HashMap
➤ Как отсортировать коллекцию, содержащую сложный класс, Comparable и Comparable
➤ В чем разница между ArrayList и LinkedList
➤ Как работает TreeMap
➤ Какие правила нейминга в Java
➤ Что такое статические классы в Java
➤ Какая разница между StringBuffer и StringBuilder
➤ Что такое рефлексия в Java
➤ В каких ситуациях возникает Memory leak
➤ Что такое Generic (Дженерики)
➤ Какие методы есть у класса Object в Java и Any в Kotlin
➤ Что такое Enum в Java
➤ Какой в Java приоритет при преобразовании примитивных типов
➤ Что такое приведение типов / преобразование типов / каст
➤ Для чего нужны и как создавать аннотации в Java
➤ Что такое Wrappers (обертки) в Java
➤ Какие есть операторы перехода
➤ Что такое Stack (стек) и Heap (куча) в Java
➤ Что такое JDK, JRE и JVM
➤ Какими значениями инициализируются переменные по умолчанию
➤ Возможно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода
➤ Какие существуют типы ссылок в Java
➤ В чем разница между map и flatMap
➤ Какие есть типы ошибок в Java
➤ Как работает Garbage Collector и как организована память в JVM
➤ Что такое Java NIO (New Input/Output)
➤ Какой порядок выполнения Java класса
➤ Может ли абстрактный класс наследоваться от обычного
➤ Какие бывают циклы в Java и Kotlin
➤ Что такое ClassLoader
➤ Что такое SecurityManager
➤ Что такое JavaCompiler
➤ Как запустить JavaScript из Java
➤ Что такое Optional в Java и Kotlin
➤ Какие есть побитовые (поразрядные) операции в Java и Kotlin
➤ Что такое ByteBuffer и Unsafe
➤ Что такое лямбда (lambda) в Java
➤ Как в Java загрузить исполняемый код из сети
➤ Что такое AsynchronousServerSocketChannel
➤ Что такое функциональные интерфейсы и аннотация @FunctionalInterface в Java
➤ Какие есть встроенные функциональные интерфейсы в Java
➤ Какие есть типовые параметры в Java
➤ Какой механизм работы у volatile переменных в Java
➤ Как в JVM работают стеки потоков, с точки зрения взаимодействия с процессором
Kotlin Core
➤ Что такое внутренние классы (Inner Classes) в Kotlin
➤ Какие есть функции области видимости (Scope Functions) в Kotlin
➤ Как работает корутина и что такое suspend
➤ Какая разница между методом запуска корутин launch и async
➤ Что такое Делегаты в Kotlin
➤ Что такое Extension в Kotlin
➤ Что такое companion object в Kotlin
➤ Как использовать геттеры (get) и сеттеры (set) в Kotlin
➤ Что такое аннотация @JvmStatic
➤ Что такое обратный вызов (callback), функциональные типы и Unit в Kotlin и как используется
Java / Kotlin Core — Теория
➤ Какие существуют уровни сложности у коллекций
➤ Какие наиболее часто используемые паттерны
➤ В чем отличия наследования от композиции
➤ Что такое SOLID
➤ Что такое функции высшего порядка
➤ В чем отличие структурной, функциональный и объектно-ориентированной парадигмы в программировании
➤ Какие форматы обмена данными с сервером существуют
Java / Kotlin Core — Многопоточность
➤ Какие существуют основные операторы в RxJava
➤ Какие бывают и как работают синхронизованные коллекции
➤ Что означает volatile
➤ Что означает synchronized
➤ Какие проблемы могут быть в многопоточности в Java
➤ Что такое Lock / ReentrantLock
➤ Какие есть стратегии Backpressure
➤ Чем отличаются hot и cold Observables
➤ Чем volatile отличается от atomic
➤ Что такое отложенные (Deferred) корутины в Kotlin
➤ Что такое ленивые (LAZY) корутины в Kotlin
➤ Что такое Kotlin Channels
➤ Что такое Mutex, Monitor, Semaphore
Реляционные SQL базы данных
➤ Какой синтаксис запроса в SQL
➤ Что такое VIEW (представление) в SQL
➤ Что такое INDEX (индексы) в SQL
➤ Как избежать конкуренции при доступе к записи в SQL
➤ Какие существуют виды отношений в SQL
➤ Как сделать соотношение Many-to-Many в SQL
➤ Как в SQL объединить запрос к нескольким таблицам
➤ Как использовать план запроса в SQL
➤ Как использовать индексы в SQL
Концепции
➤ Что такое Saga Pattern
➤ Что такое Rollback Pattern
➤ В чем отличие между Rollback Pattern и Saga Pattern
➤ Что такое Концепции потоковой передачи событий (Event Streaming)
➤ Что такое Eventual Consistency (конечная согласованность)
➤ Что такое SOLID
➤ Как использовать подход Чистой архитектуры (Clean Architecture) в Spring
➤ Какие параметры у RESTful сервиса
➤ Какие существуют REST методы
➤ Что такое Model, ModelAndView и ViewResolver
➤ Что такое принципы Inversion of Control (IoC) и Dependency Injection (DI)
➤ Что такое Domain-Driven Design (DDD)
➤ Что такое CQRS (Command Query Responsibility Segregation)
➤ Что такое Event Sourcing
➤ Что такое Circuit Breaker (Переключатель цепи)
➤ Что такое JSON-RPC (Remote Procedure Call)
➤ Что такое Spring MVC
➤ Какие могут быть слои в Spring
➤ Как обычно структурируется Spring приложение
➤ Что лучше, аннотации или XML в Spring
➤ В чем разница между REST, RPC, GraphQL и SOAP
➤ Какие части могут быть в Spring приложении
➤ Чем Spring отличается от Java EE
➤ Что такое аспектно-ориентированное программирование (AOP)
➤ Как происходит обработка запроса и выдача ответа в Spring
➤ Что такое Project Reactor
➤ Что такое Mono и Flux
➤ Что такое сервлет (Servlet)
➤ Что такое Инфраструктура открытых ключей (Public Key Infrastructure, PKI)
➤ Что такое CSRF (Cross-Site Request Forgery)
➤ Что такое формат Prometheus
➤ Что такое Структурированная конкуренция (Structured concurrency)
➤ Что такое Принцип Happens-Before (событийное предшествование)
➤ Чем WAR (Web Application Archive) отличается от JAR (Java Archive)
➤ Какой жизненный цикл у бинов в Spring
➤ Что такое Git Registry, GitHub Packages, GitHub Actions, Changelog, Release Notes
➤ Какие основные протоколы обмена данными в Spring
➤ Что такое Protobuf
➤ Что такое Javadoc
➤ Какие основные отличия Maven от Gradle
➤ Из чего состоит pom.xml
➤ Из чего состоит build.gradle
➤ Что такое Supplier
➤ В чем отличие record в Java и data class в Kotlin
➤ Что такое Java JWT (Java JSON Web Token)
➤ Как использовать Lombok в Java
➤ Что такое Swagger / OpenAPI
➤ Как настроить доступ через OpenVPN
➤ Что такое Keycloak
➤ Что такое Testcontainers
➤ Чем отличаются Jetty, Netty и Tomcat
➤ Что такое Netty
➤ Что такое Nginx
➤ Пример простого веб сервера
Компоненты Spring
➤ Какие могут быть параметры в application.properties
➤ Как использовать WebSocket в Spring
➤ Как использовать GraphQL в Spring
➤ Как использовать OAuth 2.0 в Spring
➤ Как настроить шифрование в spring
➤ Как в Spring настроить HTTPS
➤ Что такое Spring Boot Actuator
➤ Как настроить авторизацию при помощи Spring Security
➤ Что такое Spring Integration
➤ Что такое Spring Batch
➤ Что такое AutoConfiguration в Spring
➤ Как настроить разные профили сборки в Spring
➤ Что такое Spring WebFlux
➤ Что такое ApplicationContext в Spring
➤ Что такое BeanFactory
➤ Что такое Spring BOM
➤ Как настроить безопасность в WebFlux
➤ Пример микросервисного Spring приложения с Andular фронтендом, базой данных и брокером сообщений
➤ Как настроить валидацию данных в Spring
➤ Как определять утечки памяти в Spring
➤ Что такое RouterFunction и RequestPredicate
➤ Как Spring приложение может отправлять и принимать данные с других API
➤ Как работает RPC (Remote Procedure Calls)
➤ Как происходит тестирование в Spring
➤ Как в Spring сделать фоновую задачу по таймеру
➤ Как в Spring импортировать данные из CSV
Аннотации Spring
➤ Какие основные аннотации в Spring
➤ @Configuration
➤ @Bean
➤ @Component
➤ @Service
➤ @Repository
➤ @Controller
➤ @RestController
➤ @RestControllerAdvice
➤ @ResponseBody
➤ @Aspect
➤ @Before
➤ @After
➤ @Around
➤ @Pointcut
➤ @ModelAttribute
➤ @MatrixVariable
➤ @InitBinder
➤ @CookieValue
➤ @Autowired
➤ @Transactional
➤ @EnableTransactionManagement
➤ @RequestPart
➤ @Value
➤ @RequestMapping
➤ @GetMapping и @PostMapping
➤ @RequestParam
➤ @RequestBody
➤ @SessionAttribute
➤ @SessionAttributes
➤ @ResponseStatus
➤ @RequestHeader
➤ @RequestAttribute
➤ @ExceptionHandler
➤ @CrossOrigin
➤ @Qualifier
➤ @Primary
➤ @ImportResource
➤ @ComponentScan
➤ @Entity
➤ @Table
➤ @Id
➤ @Column
➤ @OneToMany, @ManyToOne, @OneToOne, @ManyToMany
➤ @EntityScan
➤ @Document в MongoDB
➤ @Document в Elasticsearch
➤ @PrimaryKeyColumn
➤ @Unwrapped
➤ @Unwrapped(prefix = “address_”)
➤ @QueryIndexed
➤ @PreAuthorize
➤ @DataMongoTest
➤ @DynamicPropertySource
➤ @BeforeEach
➤ @Embeddable
➤ @Embedded
➤ @Secured
➤ @Column в JPA
➤ @PostConstruct
➤ @Transient в JPA
➤ @Transient в стандартной сериализации Java
➤ @MappedCollection
➤ @PayloadRoot
➤ @Endpoint
➤ @RequestPayload
➤ @ResponsePayload
➤ @XmlRootElement
➤ @SpringBootApplication
➤ Чем @Component отличается от @Service
➤ Чем @Component отличается от @Bean
Хранение данных
➤ Что такое CRUD (Create, Read, Update, Delete)
➤ Как подключаться к базам данных в Spring
➤ Как использовать Hibernate в Spring
➤ Как использовать AWS / Amazon Web Services в Spring
➤ Что такое Spring Data JPA
➤ Что такое JPQL и Criteria API
➤ Как использовать Redis в Spring
➤ Какие есть уровни изоляции транзакций
➤ Какие есть репозитории в Spring
➤ Какие есть параметры у аннотации @Transactional
➤ Как в Spring обрабатывать изменения в базе данных
➤ Какие есть уровни изолации транзакций
➤ Что такое Jenkins
➤ Что такое Что такое Nexus
➤ Что такое План запроса (Query Plan) для баз данных
➤ Как использовать индексы в базе данных Spring приложения
➤ Какие могут быть аномалии при работе с базой данных
➤ Какие есть виды блокировки в базе данных
➤ Можно ли объединить несколько методов в одну транзакцию
➤ Что такое R2DBC (Reactive Relational Database Connectivity)
➤ Что такое Flyway
➤ Где в Spring приложении следует хранить приватные данные
➤ Как в Spring можно использовать кеширование
➤ Как настроить GitHub Actions Continuous Integration
Микросервисы
➤ Как могут взаимодействовать микросервисы
➤ Как использовать Docker в Spring
➤ Как использовать Docker Compose в Spring
➤ Как использовать Kubernetes в Spring
➤ Как использовать Elasticsearch в Spring
➤ Как использовать RabbitMQ в Spring
➤ Как использовать Kafka в Spring
➤ Что такое Eureka Service
➤ Как реализовать Spring Cloud Gateway
➤ Как реализовать перенаправление при помощи Spring Cloud Gateway
➤ Что такое Service Discovery
➤ Что такое Dockerfile и Docker Compose
➤ Какие есть инструменты для наблюдения за микросервисами
➤ Что такое Trace ID и Span ID
Cloud
➤ Какие существуют основные облачные решения для Java разработки и их аналоги для обычной инфраструктуры
➤ Какие существуют основные облачные решения от Amazon для Java разработки
➤ Какие существуют основные облачные решения от Google для Java разработки
➤ Какие существуют основные облачные решения от Microsoft для Java разработки
➤ Как можно оптимизировать cloud решение с точки зрения затрат
➤ Как работают servless решения