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

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

Язык

Основное:

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

Комментарии (17)


  1. Scott_Leopold
    08.04.2024 03:51
    +3

    С другой стороны - на этом конкретном собесе знания "не понадобились", а на другом могли и понадобиться. Тут не угадаешь.

    В целом - вполне адекватный набор


  1. sensei_developer
    08.04.2024 03:51

    Я бы добавил еще clickhouse и redis, будет хорошим плюсом


    1. N4N
      08.04.2024 03:51

      Добавить можно ещё пару десятков того, что используется у конкретного работодателя) смысл? Больше интересно, если соискатель идёт на мидла или сеньора, зачем нужно тестировать его по java core. Опасаются, что человек с парой десятков реализованных проектов за плечами не знает про циклы и чем отличается int от Integer?)


      1. vvbob
        08.04.2024 03:51

        Хрен вот их знает зачем.. Я сам был в качестве наблюдателя на одном собесе, где послали нахрен вполне как по мне адекватного тимлида, с хорошим опытом (я с ним раньше работал на одном проекте, но в разных командах). И отфутболили после того как он не очень уверенно отвечал на всякую муру типа "перечислите все реализации Collection", основное он вспомнил-рассказал, но что-то там не воспроизвел из того что редко используется.


  1. nameisBegemot
    08.04.2024 03:51
    +1

    А как же алгоритмы? Где про бигО и чем отличается алгоритм Дейкстры от бинарного поиска?


    1. Samhuawei
      08.04.2024 03:51

      Это же банк, там в основном формочки ваяют.


      1. wellusion
        08.04.2024 03:51
        +1

        Ну мы же готовимся к собеседованию, а не к работе)


  1. vvbob
    08.04.2024 03:51
    +2

    И по любому из этих пунктов вас при желании ведущего допрос на собесе сотрудника легко утопят вопросами. Сколько ни работай, сколько все это ни изучай..


    1. Samhuawei
      08.04.2024 03:51
      +1

      Самое забавное что тот кто собеседует чаще всего нагуглил ответы полчаса назад. Я вот так вот собеседовался в одном гемдеве, в итоге мне сразу заявили что я overqualified и мне будет скучно у них работать. По крайней мере честно.


      1. vvbob
        08.04.2024 03:51
        +1

        Да бывает даже и не специально гуглят и топят. Вот работаешь к примеру прямо вот сейчас с тонкой настройкой производительности сборщика мусора. Изучил хорошо тему, покопался во всех этих настройках, проверил, потестил, оптимизировал. И обычно в таких случаях кажется что там все просто и это все должны знать, спрашиваешь у человека, а он толком и не помнит как там что работает и чем разные сборщики друг от друга отличаются. Это не значит что он специалист плохой, просто конкретно в этом ему не доводилось разбираться. Или разбирался, но давно уже и тема забыта без постоянного использования.

        Кто-то это понимает и это не идет в минус, а кто-то и нет..


        1. Samhuawei
          08.04.2024 03:51

          Я в таком случае сразу говорю что я этим занимался, но давно, сейчас подробностей не помню, но если надо за полчаса-час установлю тестовую среду и найду конкретную нужную настройку. Буквально на прошлой неделе этим занимался - искал утечку памяти в кривом плагине Jira. Голова забыла, но руки помнят. Продрался сквозь тернии, нагуглил название тула который раньше был в JDK но который Оракл выпилил, установил, понял как туда прописать версию JVM, скачал дамп и за 10 минут нашёл источник проблемы.

          Дело в том что инженеру не нужны конкретные знания. Он заточен на результат, а как его достичь - дело десятое. Или сам найдёт, или аналитик подскажет. Ту же Кафку впиливать в проект он сам по себе не будет пока не проведёт тесты и не поймёт что именно она подойдёт.


          1. vvbob
            08.04.2024 03:51

            Это разумные люди понимают.. К сожалению собесы проводят.. разные люди.

            У меня бывало что меня отфутболивали на собесе с формулировкой "слабые знания в теме", как раз после подобного объяснения. Уже не помню во всех подробностях что было, но похожая ситуация, что-то с чем давно работал и при необходимости легко и быстро бы вспомнил, но не на собесе..


    1. egribanov
      08.04.2024 03:51

      В основном топят чтобы проверить глубину знаний


  1. kv22
    08.04.2024 03:51
    +1

    А как же инверсия B-дерева, а ливкодинг поставить мат двумя конями?


  1. Sylaman
    08.04.2024 03:51

    Адекватный набор навыков. Устроит не всех, но бОльшую часть компаний


  1. xifer9
    08.04.2024 03:51

    будто слишком сильное заявление про liquidbase. Flyway никто не отменя все еще :)


  1. Chemosh
    08.04.2024 03:51

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