Небольшая заметка с технологиями и полезными ссылками, которые позволили мне пройти собеседование и работать в Сбере.
Навыки джависта
Язык
Основное:
Java Core (основные механизмы языка: типы данных, циклы и тд)
коллекции
исключения
дженерики
аннотации
функциональные интерфейсы и Stream API
Достаточно общего понимания и умения отвечать на собесах:
рефлексия
многопоточность
сборщик мусора
устройство памяти JVM
общее устройство JDK
Фреймворк (Spring)
Основное:
Spring MVC
Spring Data JDBC
Spring Test
основы работы Spring: IoC, DI, бины и тд
разница между Spring и Spring Boot
Для общего развития: Spring Security
Система сборки
Maven
Gradle (дополнительно)
Навыки бэкендера
Базы данных и SQL
Основное:
устройство реляционных баз данных
виды связей и ключи
индексы и ограничения
транзакции, их уровни и ACID
умение писать SQL-запросы (ddl, dml)
Для общего развития:
Система управления версиями базы (для джавы это Liquibase). Ей довольно просто пользоваться и она пригодится в работе.
другие виды SQL: dcl, tcl
PL/SQL: не стоит использовать в пет-проектах, но может встретиться в работе.
Интерактивный курс по SQL
Более углубленный курс от PostgresPro
Тренажеры по SQL: sql academy и sql exercises
Сеть
Основное:
клиент-серверная архитектура
HTTP
REST
Для общего развития:
OpenAPI
GraphQL и gRPC
сетевая модель OSI
Видео про архитектуру клиент-сервер и протоколы
Подробно про REST
Docker
Достаточно использовать в пет-проектах и поверхностно знать принцип работы. Докер реально удобная штука, но если вы на винде, придется немного помучиться с WSL.
Linux
Достаточно выучить базовые команды (навигация в терминале, изменение прав, создание/удаление/перемещение файлов) и общее устройство файловой системы.
Kafka
Дополнительно. Кафка сложно устроена, поэтому не зацикливайтесь на ней. Но немного разобраться можно - это будет плюсом на собесе и поможет в работе.
Общие навыки
Git
Основное:
создание репозиториев
коммиты, резеты, реверты
ветки (создание ветки, ребейз и мердж)
работа с удаленным репозиторием на гитхаб
Для общего развития: подходы к работе с гит (имхо, самое полезное - гит флоу)
Курс по гиту от Яндекс Практикума
Статья о подходах к работе с гитом
Архитектура
Принципы SOLID
ООП (или функциональное программирование, если для вашего языка актуальнее)
Паттерны проектирования
Слишком углубляться в них не надо, достаточно прочитать пару статей. Также, не стоит пытаться применить их в своих пет-проектах, это вас только запутает.
Хороший сайт с объяснением паттернов (из России заходить под впн).
Что не стоит учить
На своих петах я кучу времени убил на изучение встроенной функции Spring Security для парсинга JWT, на поиск идеального способа обработки исключений в Spring MVC, на доскональное изучение документации Spring Data JPA и плагина для генерации из OpenAPI.
Да, разбираться во всем этом было интересно, но я мог бы намного быстрее сделать задачи, стоявшие передо мной и в дальнейшем мне эти знания даже не пригодились.
Поэтому:
старайтесь правильно расставлять приоритеты
ставьте себя во временные рамки
помните, что лучшее - враг хорошего
помните о принципах KISS и YAGNI
и об одном из принципов Agile: работающий продукт — основной показатель прогресса