Небольшая заметка с технологиями и полезными ссылками, которые позволили мне пройти собеседование и работать в Сбере.
Навыки джависта
Язык
Основное:
-
Java Core (основные механизмы языка: типы данных, циклы и тд)
-
коллекции
-
исключения
-
дженерики
-
аннотации
-
функциональные интерфейсы и Stream API
Достаточно общего понимания и умения отвечать на собесах:
-
рефлексия
-
многопоточность
-
сборщик мусора
-
устройство памяти JVM
-
общее устройство JDK
Курс по Java от Oracle
Фреймворк (Spring)
Основное:
-
Spring MVC
-
Spring Data JDBC
-
Spring Test
-
основы работы Spring: IoC, DI, бины и тд
-
разница между Spring и Spring Boot
Для общего развития: Spring Security
Курс по основам Spring
Система сборки
-
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: работающий продукт — основной показатель прогресса