- PVSM.RU - https://www.pvsm.ru -
Архитектурные секции у многих вызывают чувство неопределенности и тревоги: формулировки не изобилуют деталями, как проверить ответ — непонятно. При этом способность пройти архитектурную секцию отличает вчерашнего выпускника от человека, которому можно доверить строить нечто большее, чем обход бинарных деревьев. В определенный момент я решил как следует подготовиться секции по дизайну, потратил на это около пары недель и выработал системный подход, которым хочу с вами поделиться.
Очень важно его иметь. Даже если вы где-то ошибетесь и свернете не туда в своих рассуждениях, общая структурированность подхода сыграет вам на руку. В самом начале можно умеренно тупить и расспрашивать собеседующего о подробностях, но начиная с некоторого момента (который в моем плане ниже соответствует пункту 3) инициатива должна быть полностью у вас и лучшее ее не отпускать до самого конца. Мой план был примерно таким:
Очень важно контролировать время. Я старался минут 5-10 тратить на два первых пункта и минут 5 на два последних.
Их нужно проговаривать, даже если они кажутся очевидными. После внедрения любой новой детали важно сказать что-нибудь в духе «мы добавили новый элемент, это решит такую-то проблему, но за это мы заплатим тем-то». Трейдофы могут быть какими-то например такими:
Все знают про latency numbers every programmer should know [1], но числа по ссылке на мой взгляд структурированы не самым удобным образом и я их в процессе подготовки переформатировал для удобства запоминания.
В конечном итоге важно следующее:
Я купил маркерную доску, брал уже существующие сервисы и пытался придумать, как бы я их сделал с нуля. Рисовал на доске схемы, прикидывал нагрузку и необходимые ресурсы, искал в своем дизайне слабые места. Еще у меня есть классные друзья, с которыми мы устраивали псевдосекции и тренировались друг на друге — это был суперполезный опыт. После практики можно лезть в интернет и искать, как это на самом деле сделано, а потом пробовать еще раз. После 10-20 раундов с разными сервисами наступает просветление и отдельные повторяющиеся запчасти в существующих системах начинают быть отчетливо видны. Запчасти могут быть например такими:
1. Scalability [5]
2. Intro to Architecture and Systems Design Interviews [6]
3. Four Distributed Systems Architectural Patterns [7]
4. Dropbox в 2012 [8]
5. Slack [9]
6. Twitter [10]
7. Reddit [11]
8. Instagram [12]
9. Youtube в 2007 [13]
10. Канал про System Design от соотечественника [14]
11. Еще канал [15]
12. И еще канал [16]
Если жестких временных рамок у вас нет, но перспектива собеседования уже маячит на горизонте, самой правильной тактикой будет постоянно в фоне что-то читать/смотреть на тему устройства больших систем. С алгоритмическими задачками то же самое: лучше их периодически решать и быть всегда в тонусе, чем на выходных перед интервью пытаться осилить весь литкод. Тем не менее, интенсивная подготовка к архитектурной секции за короткий срок сделала меня значительно более лучшим специалистом.
Автор: Виктор Комаров
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sobesedovanie/356367
Ссылки в тексте:
[1] latency numbers every programmer should know: https://gist.github.com/jboner/2841832
[2] Grokking the system design interview: https://www.educative.io/courses/grokking-the-system-design-interview
[3] System design primer: https://github.com/donnemartin/system-design-primer
[4] High Scalability: http://highscalability.com/
[5] Scalability: https://www.youtube.com/watch?v=-W9F__D3oY4
[6] Intro to Architecture and Systems Design Interviews: https://www.youtube.com/watch?v=ZgdS0EUmn70
[7] Four Distributed Systems Architectural Patterns: https://www.youtube.com/watch?v=tpspO9K28PM
[8] Dropbox в 2012: https://www.youtube.com/watch?v=PE4gwstWhmc
[9] Slack: https://www.youtube.com/watch?v=WE9c9AZe-DY
[10] Twitter: https://www.youtube.com/watch?v=J5auCY4ajK8
[11] Reddit: https://www.youtube.com/watch?v=nUcO7n4hek4
[12] Instagram: https://www.youtube.com/watch?v=E708csv4XgY
[13] Youtube в 2007: https://www.youtube.com/watch?v=ZW5_eEKEC28
[14] Канал про System Design от соотечественника: https://www.youtube.com/channel/UC9vLsnF6QPYuH51njmIooCQ
[15] Еще канал: https://www.youtube.com/channel/UCn1XnDWhsLS5URXTi5wtFTA
[16] И еще канал: https://www.youtube.com/playlist?list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX
[17] Источник: https://habr.com/ru/post/516604/?utm_source=habrahabr&utm_medium=rss&utm_campaign=516604
Нажмите здесь для печати.