Подготовка к техническому собеседованию Senior/Team Lead backend

Недавно появились мысли походить на собеседования чем я успешно занялся. Если конкретно — смотрел лидовскую/сеньерскую позиции на Python и Golang (но статья может пригодиться backend разработчикам в целом). Не ставлю целью статьи объять необъятное и дать какие-то гарантии. Лишь зафиксирую данные для себя на будущее.

Ходить на собеседования неплохой навык — в моем случае удается неплохо прокачать технические скилы и узнать запросы рынка на текущий момент (ведь может случиться, что твои навыки перестанут быть актуальными).

Сразу сделаю пометку, что некоторые навыки/ресурсы специфичны (по типу нарешивания Leetcode), но отталкиваемся от текущих реалий рынка.

a919705db08c24707ce4645aab7356a1.png

SQL (Postgres)

Начнем с базы — реляционной базы. Буду говорить о postgres, но популярные БД работают по схожим принципам. Самые общие принципы БД вы должны знать и так, раз наткнулись на эту статью. Я подсвечу лишь то, что стоит знать в рамках вашей работы и что действительно спрашивают на собеседованиях.

d1d4de7492fcc8cb63b11ef791fc4e99.png

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

NoSQL

Not only SQL??? Да, пройдемся и по ним. У вас могут спросить о любой базе, но стоит знать устройство, преимущества, недостатки и места для применения 2х основных.

  • Redis — кеш и немного очередь (почему-то официальная дока перестала открываться)

  • RabbitMQ — брокер сообщений

    c070d9e8491993af908b23d667ae6dc6.png

Читать рекомендую именно официальную документацию — там неплохое изложение. Бонусом можно почитать про разницу Kafka и RabbitMQ ведь мы не просто json инженеры, а высоконагруженные json инженеры!

Я есть микросервис

Далее перейдем к модной теме микросервисов. Здесь порекомендую всего 2 ресурса, которых должно хватить.

Микросервисы - это просто и понятно!

Микросервисы — это просто и понятно!

Немного кода

Совсем забыл, что мы программисты. Перейдем немного ближе к предметной области. По умолчанию я подразумеваю, что у вас есть знание linux. Дам лишь довольно общие рекомендации.

Про python

  • Возможно глупо, но стоит посмотреть базовые вопросы по подготовке. Я на одном из собесов долго тупил над вопросом по изменяемым типам данных

  • Рекомендую повторить реализацию и использование контестных менеджеров и декораторов

  • Важно знать, что такое GIL

  • Asyncio

    • Самая база

      Самая база

  • Нужно знать разницу между процессами, потоками и асинхронщиной в Python

  • FastApi — Даже если никогда не писали стоит познакомиться с азами этого асинхронного фреймворка

  • Так же очень рекомендую книгу »Python К вершинам мастерства» — Лусиану Ромальо. Книга толстая, но стоящая (можно читать главы выборочно).

    f6e06d58515a4dddef0799111c17d8e9.jpg

Алгоритмы и задачи

Самый спорный пункт, но очень актуальный.

  • Решайте задачки хотя бы easy уровня на Leetcode

  • Рекомендую к прохождению курс на Leetcode, курс платный. Но хорошо и понятно познакомит с основными типами данных (стеки, кучи, деревья и тд) и позволит решать задачи на собеседованиях и даже применять знания в жизни

System design

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

Резюме

Все, что описано выше будет полезно при наличии нужного опыта, где-то поможет освежить память, где-то узнать новые подходы к решениям типичных задач. Разумеется этот список можно расширять бесконечно. Могу дать лишь последнюю рекомендацию. Очень полезную книгу, ставшую современной классикой. Слышали такое словосочетание «Книга с кабанчиком»? Высоконограженные приложения — Мартин Клепман. Книга поведает о многих вещах, рекомендуемых в статье и даст понимание устройства и проблем высоконагруженных приложений.

a32c6e41b9409291b371746da6afe1a5.jpg

© Habrahabr.ru