Всем доброе утро ☀️
📢 Продолжаем рубрику разборов собеседований. Сегодня обозрим народный собес на народную позицию архитектора.
[#РазборПолётов@sa_sobes] - Полезно и приятно.
Вакансия: Архитектор
Жалование: 550 000 (на руки)
Уровень: —
Впечатление соискателя: Почерпнул много нового
Мысли редакции: Потенциал у собеседования феноменальный. Интервьюер с опытом разработки и задает классные вопросы, но к сожалению для кандидата собеседование оказалось сложным, хотя и держался достойно.
📝 Секция «Общие вопросы»:
🔵Расскажите о вашем опыте в роли архитектора. (Классика)
🔵Доводилось ли заниматься code-review. (Редко)
🔵Приходилось ли заниматься proof-of-concept (Иными словами самому на коленке набросать прототип)
👩💻 Секция «Архитектура и паттерны проектирования»:
🔵 Существует свод паттернов интеграции EIP (Enterprise Integration Patterns), который описывает разные интеграционные подходы. Назовите паттерны/подходы интеграций.
🔵Суть CQRS и когда его желательно применять.
🔵Суть SAGA.
🔵Обработка транзакций в рамках SAGA. Что произойдет, если какой-то сервис не сможет обработать транзакцию.
🔵Что такое компенсирующая транзакция в SAGA.
🔵Суть CCC (Cross-Cutting-Concern)
🔵Теорема CAP.
🔵REST vs gRPC.
🔵Как вы решали проблему производительности в случае ESB.
🔵K8s, преимущества, недостатки и сложности работы с K8s.
🔴Задача: У нас есть приложение построенное на базе SOA (Service Oriented Architecture), REST интерфейсы. По каким-либо причинам API может не отвечать, в рамках одного retry делаем несколько повторных попыток запросить информацию. Какие у этого подхода недостатки и какие решения видите ?
Важно: Горизонтальное и вертикальное масштабирование не предлагать, архитектуру не менять.
Ответ кандидата:
- Можно прибегнуть к интеграции между сервисами через брокер сообщений.
- Можно записывать неудачные попытки запроса и сразу их повторять.
Комментарий редактора: Те, кто сталкивался с каскадным отказом сервисов из-за повторных запросов сразу напряглись. Для тех, кто не в курсе, это так называемый "Retry-Storm Антипаттерн". И суть его заключается в том, что при повторных запросах вы можете еще больше усугубить ситуацию из-за накопленного пула запросов, которые хотите повторно отправить. А с течением времени этот пул запросов может все больше и больше разрастаться, в случае если вы выступаете системой-проксей между потребителем и той системой, которая сейчас не отвечает. Я бы предложил использовать circuit-breaker, который как раз позволит увеличивать постепенно количество повторных запросов за N времени только в том случае, если сторонняя система начала воcстанавливаться.
🖥 Секция «Кэш»:
🔵Способы организации кэша.
🔵Wright-Through-Cash VS Write-Behind-Cash.
🔵Архитектура Redis. CRC-16 в Redis. Типы конфигураций Redis и их отличия.
🔵Какие проблемы решают хэш-теги в Redis.
🖥 Секция «Kafka»:
🔵Суть Kafka и когда желательно применять.
🔵Топик является конечной точкой хранения в Kafka. (Это так "тонко" намекнули на партиции)
🔵Семантики доставки в Kafka.
🖥 Секция «БД»:
🔵Виды индексов в БД.
🔴Задача: Есть БД на N миллионов строк. Был отправлен запрос на удаление X милионнов строк. В момент выполнения запроса БД легла. После востановления что мы увидим в БД.
Ответ кандидата: СУБД проверит журнал транзакций и если транзакция не выполнена до конца - продложит ее выполнение.
Комментарий редактора: Я бы все-таки сначала уточнил о какой БД идет речь. Но судя по ответу имелась ввиду реляционная БД. Транзакция не будет выполнена, так как не было коммита.
🔨 Итог: Компания отдает нотками возможности заниматься реально интересными задачами, делать RND, раскапывать технологии, а не просто рисовать квадратики со стрелочками. Вопросы интересные, где-то требуется серьезная глубина погружения в технологии.
❔ Ваша оценка собеседования:
🔥 — Классное собеседование. Почерпнул для себя много нового.
😢 — Какое-то скромное жалованье, я получаю больше 500к на позиции джуна
💪 P.S. Просьба от автора:
Очень хочу добавить на канал кастомные реакции.
Кто желает подсобить, милости прошу к нашему шалашу.