В этом репозитории собираю вопросы с собеседований которые встретил сам, нашел в открытых источниках или от кого-то услышал/прочитал.
- Heap и Stack память в Java
- Чем различаются JRE, JVM и JDK?
- Модификаторы доступа
- Нюансы статических методов
- Лямбда
- Ссылка на метод
- Функциональные интерфейсы
- Optional
- Stream API
- Почему String неизменяемый и финализированный класс?
- String.intern()
- Dynamic and Static class loading
- equals и hashcode
- Иерархия исключений
- Виды ссылок в Java
- Сериализация
- Dynamic proxies
- Нововведения разных версий Java
- За что отвечает JVM
- Interpreter vs JIT Compiler
- В чём заключается разница между IO и NIO?
- Каналы Java NIO
- Селекторы Java NIO
- Collections hierarchy
- Итераторы: fail-fast и fail-safe
- Сложность операций
- ArrayList vs LinkedList
- Как устроен HashMap
- Как устроен LinkedHashMap
- Как устроен TreeMap
- Как устроен любой Set
- Каким образом можно создать поток
- Процесс vs Поток
- Модель памяти Java
- Что такое «монитор» в Java
- Как работают методы wait() и notify()/notifyAll()
- В каких состояниях может находиться поток
- Что такое deadlock
- Что такое livelock
- volatile vs atomic
- Что такое «потоки-демоны»
- Чем отличаются два интерфейса Runnable и Callable
- Что такое FutureTask
- Что такое race condition
- Почему не рекомендуется использовать метод Thread.stop()
- Что такое «пул потоков»
- Что такое ThreadLocal-переменная
- Что такое Semaphore
- Good practice многопоточности
- Виртуальные потоки Java
- Spring IOC
- Spring Context
- Bean creation lifecycle
- Bean Scope
- Трехфазовый конструктор
- ApplicationContextListener
- Обновление Prototype в Singletone
- Параметры Transactional
- Как работает @Transactional spring
- Генерация proxy
- BeanPostProcessor & BeanFactoryPostProcessor
- Cacheable
- Назовите основные принципы ООП
- Преимущества и недостатки ООП
- Что такое статическое и динамическое связывание
- SOLID
- Что такое Dependency Injection
- DDD
- Распределенный кэш vs локальный кэш
- Для чего может использоваться распределенный кэш
- Распределенный лок (на примере Redis и Redlock)
- Методы вытеснения из кэша
- monolith vs microservices
- Взаимодействие между микросервисами
- Отказоустойчивость
- Проблема распределенных транзакций
- Когда выбирать Relational DB
- Когда выбирать Key-Value DB
- Когда выбирать Column DB
- Когда выбирать Document Oriented DB
- Когда выбирать Graph DB
- Фабричный метод
- Абстрактная фабрика
- Строитель
- Адаптер
- Мост
- Компоновщик
- Декоратор
- Цепочка команд
- Состояние
- Стратегия
- Основные компоненты Kafka
- Транзакции в Kafka log
- Transaction log
- Партиции
- Очистка данных
- Offset
- Kafka producer delivery guarantee
- Kafka listener delivery guarantee
- Rebalance
- Какую функцию выполняет Zookeeper
- Гарантии порядка
- Сжатие данных в kafka
- Zero Copy
- Что такое «реляционная модель данных»?
- Какие бывают ключи
- Первичный ключ
- Внешний ключ
- Какие существуют нормальные формы
- Какие существуют типы связей в базе данных
- Индексы
- ACID
- Проблемы изолированности транзакций
- Уровни изолированности транзакций
- Блокировки и deadlock в БД
- Репликации
- Партиционирование
- OLAP vs OLTP
- Способы оптимизации SQL запросов
- Порядок выполнения SQL команд
- Работа SQL оптимизатора
- Какой тип БД
- Use cases когда стоит и не стоит использовать MongoDB
- JSON vs BSON
- Replica Set
- CAP и MongoDB
- Write Concern
- Read concern
- Transactions in MongoDB
- Indexes
- Архитектура шардированного кластера
- MVCC
- Преимущества и недостатки ElasticSearch
- По какому протоколу общается клиент с сервером?
- Как Elastic хранит данные
- Elastic nodes
- Примеры запросов
- Состояния кластера
- Query vs Filter contexts
- Elastic Mapping
- Elastic concurrency
- Контейнер vs VM
- Dockerfile
- Внутреннее устройство контейнера
- Writable layer, volume, bind mounts
- Устройство сети
- Отличный цикл статей по Java GC https://habr.com/ru/articles/269621/