Загрузка…
Загрузка…
backend / middle / tech_deep
Формат
online
Стадия
tech_deep
Когда
within_quarter
Длительность
—
01
Поведенческий
Расскажите немного о себе и о своём опыте.
02
Теория
Какой у тебя любимый фреймворк?
Кандидат назвал Laravel; есть опыт на Yii2 и Laravel, касался Symfony.
03
Теория
Назови три отличительные черты Laravel в сравнении с Symfony или Yii.
04
Теория
Какая ORM используется в Laravel и какую ты используешь?
Eloquent в Laravel, ActiveRecord в Yii2.
Заметки
Техническое собеседование PHP/backend-разработчика (Паша, ~4 года опыта, основной язык PHP, фреймворки Laravel/Yii2, касался Symfony, поддерживал микросервис чатов на Golang). Интервьюеры: Семён (бэкенд-разработчик) и Коля (бэкенд-разработчик) из компании «кот спейс», для обоих это дополнительная активность помимо основной работы. Формат — видеозвонок (мит). Собеседование прошло по широкому кругу тем: PHP/ООП/паттерны, SOLID, базы данных (индексы, транзакции, нормализация, удаление записей), Elasticsearch, git-flow, сетевые протоколы, микросервисы vs монолит, метрики, логирование. Упоминавшиеся в опыте кандидата компании/проекты: ДомКлик (сервис недвижимости). Кандидат отметил, что впервые проходит собеседование.
Подготовка
Подтянуть слабые места, которые проявились: паттерны (декоратор/адаптер), магические методы PHP, принципы Open/Closed и Dependency Inversion (формулировки), уровни изоляции транзакций (их 4), внутреннее устройство B-tree, hash и покрывающих индексов, версии HTTP (HTTP/2, HTTP/3), протоколы TCP/UDP и модель OSI, команда TRUNCATE. Рекомендации интервьюеров по резюме: писать не перечисление технологий («использовал Redis/Postgres/Elasticsearch»), а конкретный личный вклад и измеримые достижения (например, «сократил количество запросов в 2 раза», «внедрил Golang для чатов — работает быстрее, чем PHP»); под каждую вакансию готовить отдельное резюме (fullstack-резюме могут занизить оценку при найме на чистого backend-разработчика); избыточно широкий стек без конкретики может превратить 4 года опыта в восприятие как 1.5–2 года.
Стиль интервьюера
Доброжелательный, наводящий стиль: два интервьюера задают вопросы по очереди (Семён ведёт основную часть, Коля дополняет). При неверном или неполном ответе подсказывают и сами объясняют правильный вариант, приводят бизнес-кейсы из практики (ДомКлик, rate limit на очередь, денормализация). Допускают дискуссию (например, спор о git-flow). В конце дают развёрнутый фидбек по резюме. Вопросы идут по нарастанию сложности внутри каждой темы, с follow-up'ами.
05
Теория
Какие минусы у Active Record модели по сравнению с Doctrine? Что под собой подразумевает паттерн Active Record?
Интервьюер объяснил отличие Active Record от Data Mapper/репозиториев Doctrine и работу с несколькими хранилищами.
06
Теория
В чём отличие паттерна Декоратор от паттерна Адаптер?
Кандидат не ответил.
07
Теория
Расскажи про паттерн Синглтон: как реализуется (приватный конструктор) и как создать объект класса с приватным конструктором?
Способы: публичный статический метод getInstance, рефлексия (обход конструктора), магический метод __clone.
08
Теория
Какие магические методы в PHP ты знаешь и использовал? (__destruct, __clone, __invoke, __get, __set)
Обсудили когда вызываются __get/__set — при обращении к приватным/несуществующим свойствам.
09
Поведенческий
Каковы твои впечатления от Golang после PHP? Что больше понравилось и за что больше нравится PHP?
Обсуждение обработки ошибок и логирования, stack trace, контекст, возврат error из методов.
10
Теория
Как работает throw в PHP? Как устроены исключения (базовый класс Exception, интерфейс Throwable)?
11
Теория
Зачем нужно создавать свои кастомные исключения, почему не всегда использовать базовый Exception?
Кандидат привёл кейс с rate limit на сторонний сервис и остановкой джоб в очереди.
12
Теория
Расскажи про SOLID — про каждую букву в паре слов без примеров.
Разобрали S (single responsibility, нарушение в Active Record), I (interface segregation), D (dependency inversion), O (open/closed), L (Liskov, пример с птицей/пингвином).
13
Теория
Какие СУБД ты использовал? Основные различия между MySQL и PostgreSQL и что тебе больше нравится?
MySQL, PostgreSQL, MS SQL.
14
Теория
Чем характеризуются реляционные базы данных, почему они популярны и почему бы не хранить всё в JSON-файлах?
15
Кейс
Есть таблица с первичным ключом-инкрементом и частый запрос по номеру телефона, запрос работает долго — как его ускорить?
16
Теория
Что такое индекс? Как устроен B-tree индекс и как происходит поиск по нему?
17
Теория
Только ли в виде B-tree дерева могут храниться индексы? Расскажи про hash-индекс и его ограничение.
Минус hash-индекса — невозможен поиск по диапазону, только строгое сравнение.
18
Теория
Какие виды индексов ты знаешь (помимо B-tree)?
Кандидат упомянул битовые индексы (bitmap).
19
Кейс
В запросе всегда идёт поиск по email, паролю и телефону одновременно — как оптимизировать такой поиск?
Ответ — составной индекс на несколько колонок.
20
Теория
Что такое покрывающий индекс и чем он отличается от обычного/составного?
21
Теория
Почему мы не вешаем индекс на каждую колонку? Чем расплачиваемся за скорость поиска?
Минусы: перестроение дерева при вставке/удалении, занимаемая память.
22
Теория
Что такое транзакция?
23
Теория
Что такое ACID? Расскажи про свойства транзакции (атомарность, согласованность, изолированность, долговечность).
24
Кейс
Если два параллельных запроса хотят изменить одни и те же колонки — как это регулировать?
Подвёл к теме изолированности.
25
Теория
Какие уровни изоляции транзакций ты знаешь и сколько их всего?
Кандидат не вспомнил; интервьюер назвал 4: read uncommitted, read committed, repeatable read, serializable.
26
Теория
Что такое нормализация базы данных?
27
Теория
Что такое денормализация и использовал ли ты её когда-нибудь?
Интервьюер привёл пример с ДомКлик: вынос тяжёлых данных риелторов в отдельную таблицу из-за таймаутов.
28
Теория
Как удалить все записи из таблицы? Какие есть способы и какой быстрее/медленнее (DELETE, DROP+CREATE, TRUNCATE)?
Интервьюер указал на TRUNCATE как быстрый способ, полезный для интеграционных тестов.
29
Теория
Когда ты использовал Elasticsearch на проектах и используешь ли полнотекстовый поиск? Поиск по любым значениям или определённого формата?
30
Теория
Какие git-методологии и git-flow ты использовал в командах?
Ветки master, develop, release.
31
Теория
Какой минус у общей develop-ветки, где тестируются все задачи?
Конфликтующие/взаимосвязанные задачи блокируют релиз.
32
Кейс
Как бы ты построил git-flow, чтобы релизить каждую фичу сразу по готовности? Что делать с релизной веткой и как откатывать?
Обсудили откат через git checkout на старый коммит и выбор предыдущего docker-образа в оркестраторе.
33
Теория
Какие протоколы ты знаешь? Что вообще такое протокол?
IP, FTP, HTTP, DNS.
34
Теория
Может ли несколько протоколов использоваться сразу при одном запросе? Как они наслаиваются друг на друга?
Обсудили DNS + IP при запросе.
35
Теория
Чем отличается HTTP от HTTPS?
HTTPS — надстройка SSL/TLS, шифрование данных.
36
Теория
Какие версии HTTP ты знаешь, какую используешь, чем отличаются HTTP/1.1, HTTP/2 и HTTP/3?
Обсудили методы в 1.1, бинарность/оптимизацию в HTTP/2; про HTTP/3 кандидат не знал.
37
Теория
Чем отличаются протоколы TCP и UDP? Какого уровня TCP? Где применяется UDP, если он не гарантирует доставку пакетов?
TCP гарантирует доставку (handshake), используется в веб-сокетах и под HTTP/1.1; UDP — для аудио/видео, где не критична потеря пакетов.
38
Теория
Работал ли ты с микросервисной архитектурой? Что такое микросервис и что такое монолит?
39
Теория
Какие минусы у монолита и какие минусы у микросервисов?
Масштабирование, запутанность логики, погружение новичка.
40
Теория
Какие плюсы у монолита и почему его проще разрабатывать на старте проекта?
Обсудили, почему новичку может быть сложнее в микросервисах — взаимодействие по сети vs данные в одной памяти.
41
Теория
Какие виды взаимодействия между микросервисами существуют?
Брокеры сообщений (RabbitMQ), Redis (очередь/key-value), через базу данных, через HTTP/REST.
42
Кейс
Если нужно моментально ответить пользователю, а RabbitMQ не гарантирует мгновенную доставку — что можно использовать (например, функциональность Redis)?
43
Теория
Что такое метрики, зачем они нужны и как ты их настраивал на проекте? Какие бывают метрики?
Различение логирования, метрик и мониторинга.
44
Теория
Какие метрики можно собирать со стороны бизнеса (бизнесовые метрики)? Какие вообще показатели есть у сервиса (counter, время и т.д.)?
45
Теория
Что такое логирование и как оно реализовано у вас на проекте?
Уровни логов: error, warning, info, fatal.
46
Теория
Если запущено несколько реплик одного сервиса, как логи собираются и отображаются в одном месте?
FluentBit/Fluentd/Promtail собирают логи, хранятся в Loki/Elasticsearch, отображаются в Kibana/Grafana.