Небольшая заметка с технологиями и полезными ссылками, которые позволили мне пройти собеседование и работать в Сбере.
Навыки джависта
Язык
Основное:
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: работающий продукт — основной показатель прогресса
Комментарии (17)
sensei_developer
08.04.2024 03:51Я бы добавил еще clickhouse и redis, будет хорошим плюсом
N4N
08.04.2024 03:51Добавить можно ещё пару десятков того, что используется у конкретного работодателя) смысл? Больше интересно, если соискатель идёт на мидла или сеньора, зачем нужно тестировать его по java core. Опасаются, что человек с парой десятков реализованных проектов за плечами не знает про циклы и чем отличается int от Integer?)
vvbob
08.04.2024 03:51Хрен вот их знает зачем.. Я сам был в качестве наблюдателя на одном собесе, где послали нахрен вполне как по мне адекватного тимлида, с хорошим опытом (я с ним раньше работал на одном проекте, но в разных командах). И отфутболили после того как он не очень уверенно отвечал на всякую муру типа "перечислите все реализации Collection", основное он вспомнил-рассказал, но что-то там не воспроизвел из того что редко используется.
nameisBegemot
08.04.2024 03:51+1А как же алгоритмы? Где про бигО и чем отличается алгоритм Дейкстры от бинарного поиска?
vvbob
08.04.2024 03:51+2И по любому из этих пунктов вас при желании ведущего допрос на собесе сотрудника легко утопят вопросами. Сколько ни работай, сколько все это ни изучай..
Samhuawei
08.04.2024 03:51+1Самое забавное что тот кто собеседует чаще всего нагуглил ответы полчаса назад. Я вот так вот собеседовался в одном гемдеве, в итоге мне сразу заявили что я overqualified и мне будет скучно у них работать. По крайней мере честно.
vvbob
08.04.2024 03:51+1Да бывает даже и не специально гуглят и топят. Вот работаешь к примеру прямо вот сейчас с тонкой настройкой производительности сборщика мусора. Изучил хорошо тему, покопался во всех этих настройках, проверил, потестил, оптимизировал. И обычно в таких случаях кажется что там все просто и это все должны знать, спрашиваешь у человека, а он толком и не помнит как там что работает и чем разные сборщики друг от друга отличаются. Это не значит что он специалист плохой, просто конкретно в этом ему не доводилось разбираться. Или разбирался, но давно уже и тема забыта без постоянного использования.
Кто-то это понимает и это не идет в минус, а кто-то и нет..
Samhuawei
08.04.2024 03:51Я в таком случае сразу говорю что я этим занимался, но давно, сейчас подробностей не помню, но если надо за полчаса-час установлю тестовую среду и найду конкретную нужную настройку. Буквально на прошлой неделе этим занимался - искал утечку памяти в кривом плагине Jira. Голова забыла, но руки помнят. Продрался сквозь тернии, нагуглил название тула который раньше был в JDK но который Оракл выпилил, установил, понял как туда прописать версию JVM, скачал дамп и за 10 минут нашёл источник проблемы.
Дело в том что инженеру не нужны конкретные знания. Он заточен на результат, а как его достичь - дело десятое. Или сам найдёт, или аналитик подскажет. Ту же Кафку впиливать в проект он сам по себе не будет пока не проведёт тесты и не поймёт что именно она подойдёт.vvbob
08.04.2024 03:51Это разумные люди понимают.. К сожалению собесы проводят.. разные люди.
У меня бывало что меня отфутболивали на собесе с формулировкой "слабые знания в теме", как раз после подобного объяснения. Уже не помню во всех подробностях что было, но похожая ситуация, что-то с чем давно работал и при необходимости легко и быстро бы вспомнил, но не на собесе..
xifer9
08.04.2024 03:51будто слишком сильное заявление про liquidbase. Flyway никто не отменя все еще :)
Chemosh
08.04.2024 03:51ТС, укажи в названии, что собеседование в сбер, чтобы не заниматься кликбейтом. Но если ты проходил собес на уровень джуна, то тогда напиши об этом где-то в тексте
Scott_Leopold
С другой стороны - на этом конкретном собесе знания "не понадобились", а на другом могли и понадобиться. Тут не угадаешь.
В целом - вполне адекватный набор