Матрица компетенций Java
- Общее
- INTERN
- Что такое алгоритмы, для чего они используются, примеры
- Что такое классы и интерфейсы, чем отличаются друг от друга
- Основные концепции программирования (условия, циклы, функции, рекурсия, типы данных)
- Что такое тестирование ПО, отличие белого и черного ящиков
- Принципы работы клиент-серверных приложений
- JUNIOR
- MIDDLE
- SENIOR
- INTERN
- Java
- INTERN
- JUNIOR
- MIDDLE
- Внутреннее устройство коллизий, коллизии, контракт equals & hashcode
- Лямбды и функциональные интерфейсы, метод принимающий лямбду
- Инвариантность дженериков, PECS, стирание типов
- Синхронизация в многопоточном программировании и для чего она нужна, atomic переменных, volatile, happens before
- Dead lock, как он образуется и как этого избежать
- Как работает GC
- Параметры GC -Xms, -Xmx, -Xss
- Reflection для аннотаций
- Динамическая загрузка классов, ClassLoader
- Динамические прокси и как их создавать
- Профайлинг и инструменты профайлинга
- Основные нововведения последних LTS версий Java
- Последние тенденции в Java и релизы
- SENIOR
- Логи GC, для чего они могут быть использованы и как их читать
- Возможность настройки GC для оптимизации работы Java приложения и когда это может понадобиться
- Когда нужно применять профайлеры, какие они бывают и как они влияют на работу приложения
- Что такое memory dump, для чего он используется и как им пользоваться
- Spring
- INTERN
- JUNIOR
- MIDDLE
- Жизненный цикл бина и его scopes
- Как работают аннотации cacheable, transactional, async и какие у них есть ограничения
- Как тестировать Spring приложение
- Как работают Spring Boot starters, что такое автоконфигурация и как написать свой собственный стартер
- Проект Spring Cloud, какие в нем есть компоненты и как их использовать
- SENIOR
- Messaging
- JUNIOR
- MIDDLE
- SENIOR
- Databases SQL
- INTERN
- JUNIOR
- MIDDLE
- Как проводить оптимизацию запросов, что такое план выполнения запроса
- Уровни изолированности транзакций и какие проблемы они решают
- Как обеспечивается сохранность данных, что такое репликация, как происходит запись\чтение
- Что такое партиционирование, какие задачи оно решает, по каким правилам выбираются таблицы
- Что такое горизонтальное масштабирование, что такое шардирование и в чем его отличие от партиционирования
- Что такое OLAP и OLTP, чем они отличаются друг для друга и когда применяются
- SENIOR
- Databases NoSQL
- JUNIOR
- В чем отличие реляционных БД от NoSQL решений, какие бывают типы NoSQL баз данных, классификация
- Как использовать ElasticSearch\MongoDB, к какому классу систем они относятся, для каких задач используются, в чем их преимущество перед реляционными БД, как хранятся данные и строятся запросы
- Что такое распределенный кеш и чем он отличается от локального какие NoSql системы для этого используются
- MIDDLE
- CAP теорема, для чего она применяется
- Типы поисковых контекстов ElasticSearch и как строить запросы оптимальным образом
- Как устроен кластер ElasticSearch и как хранятся данные
- Как устроен шардированный кластер MongoDB и как обеспечивается отказоустойчивость
- Что такое Read\Write concern и eventually consistency
- Как работают транзакции в MongoDB и какие они предоставляют гарантии
- Какие есть виды индексов и как ими пользоваться
- Для чего можно использовать распределенный кеш
- Что такое распределенный лок, для чего используется
- SENIOR
- Что произойдет при одновременно изменении документа ElasticSearch разными потоками, каким образом обновить маппинг на существующем индексе
- Что такое WireTiger в MongoDB и как вид блокировок он использует
- Какие есть алгоритмы вытеснения кеша и как выбрать подходящий
- Как реализовать распределенный лок
- JUNIOR
- DevOps
- MIDDLE
- Основные команды ОС Linux (ssh, scp, top, ps, kill, grep, cat, less, tail). Как писать простые bash скрипты
- Принципы построения пайплайнов CI\CD, как писать пайплайны для Jenkins
- Что такое контейнеры Docker, чем они отличаются от виртуальных машин, зачем нужен docker-compose
- Как писать Dockerfile'ы и docker-compose.yaml файлы
- Зачем нужна оркестрация, какие функции выполняет оркестратор
- Основные ресурсы k8s, как они описываются и для чего нужны
- Что такое helm, для чего он используется и как написать helm chart
- Что такое мониторинг и observability, что такое prometheus и grafana, как настроить мониторинг для своего приложения
- Как пишутся логи в приложении, что такое ELK
- Что такое трассировка, для чего она используется и как ее реализовать в своем приложении
- SENIOR
- Как работать с systemd, iptables, tcpdump
- Внутреннее устройство контейнера, как организовать постоянное хранение данных, как работают сети docker
- Как работает кластер k8s, из каких компонентов он состоит, что такое кастомные ресурсы
- Концепция service mesh, какие задачи она решает и какие есть реализации. Как работает istio
- MIDDLE