Небольшая заметка с технологиями и полезными ссылками, которые позволили мне пройти собеседование и работать в Сбере.

Навыки джависта

Язык

Основное:

  • 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: работающий продукт — основной показатель прогресса