На сколько вопросов ответили бы?
1. Расскажи, пожалуйста, про реляционные базы данных в целом.
2. Сталкивался ли ты с проблемами, когда нужно было сделать денормализацию или наоборот? (Habr, Clickhouse) У тебя третья нормальная форма, у тебя тяжелая нагрузка на СУБД. Тебе может помочь денормализация или нет? Как именно?
3. Ты раскатываешь новую фичу на тестовый стенд и от этого ложится тестовый стенд. Что будешь делать?
4. Что случилось с базой? Накатились миграции. База в изменённом состоянии — как понять что произошло и как реанимировать? (Habr)
5. Откатили миграцию, всё ожило. Фичу надо выкатить — что будешь делать дальше, если просто накатить снова, всё повторится?
6. Ты выяснил через EXPLAIN ANALYZE, что у тебя неоптимальные запросы. Какие наиболее частые причины неоптимальности запросов?
7. Чем JSON и JSONB отличаются в PostgreSQL?
8. JSONB имеет бинарный формат. Что это позволяет сделать конкретно по столбцу?
9. Агрегирующие функции (SUM, COUNT и т.д.) — где их можно использовать в SQL-запросе? В чём разница между WHERE и HAVING при использовании агрегирующих функций?
10. Деплоишь код, с базой всё в порядке, процессор не загружен, но запросы через REST API выполняются последовательно, как будто один за одним. Что может быть не так с конфигурацией подключения к БД?
11. Node.js однопоточная или нет? Сколько потоков может занять исполняемый файл Node.js и почему? Что такое libuv и как он связан с event loop?
12. Как ты понимаешь асинхронность в Node.js? Что такое microtask queue и macrotask queue?
13. Можно ли зависнуть Node.js со стороны JavaScript/V8, не используя бесконечный цикл while(true)? Как сделать так, чтобы очередь промисов никогда не опустела?
14. TypeScript: что такое Omit и Pick? В чём разница между union и intersection типами? Что произойдёт если передать intersection тип в Omit?
15. В чём разница между interface и type в TypeScript? Зачем нужны интерфейсы если есть типы и наоборот?
16. Для чего нужен абстрактный класс? Что произойдёт если разработчик напишет ts-ignore и не реализует методы абстрактного класса?
17. Микросервисы: как реализовывать распределённые транзакции через несколько микросервисов с возможностью отката? Что такое Saga и Outbox паттерны?
Мы сохранили точный порядок вопросов и формулировки, в которых они задавались.
Если нужно подготовиться к собеседованиям на фронт/фулстек, и быть готовым защитить теорию на сложных и незнакомых темах на собеседовании, пиши @codepunks_bro.
Мы не только подготовимся к теории и задачам, но и сопровождаем на каждом собеседовании вплоть до зафиксированного результата (оффер, прохождение сб).
Keep moving ✊
