Добавить в корзинуПозвонить
Найти в Дзене

Радио «Виктор»: да чего хотят эти собеседующие

? Сегодня мой друг рассказал историю. Будучи молодым и неопытным, но толковым специалистом, он проходил систем-дизайн собеседование в крупную компанию. Речь зашла о том, сколько серверов нужно, чтобы держать миллион websocket‑коннектов. А про коннекты он тогда знал немного, опыта эксплуатации такой системы не было, да и собеседование казалось страшным. Вот как он вспоминает тот диалог (от первого лица). Он: Сколько серверов поставим? Я (ну, выступлю за экономию, но и чтобы не падать одновременно всем сервисом): Пять. Он: ТЫ УВЕРЕН??? Я (ни в чём, конечно, не уверен): Ну, тут же есть трейд‑офф: чем больше серверов, тем надёжнее, но и дороже… Он (перебивает): ТАК СКОЛЬКО??? Я: Ну, в целом, двадцати серверов должно хватить: мы же умеем их хорошо настраивать и бэк напишем грамотно… Он: ТО ЕСТЬ ДВАДЦАТЬ??? Я (ну какую цифру тебе надо сказать‑то?): Мы можем взять много дешёвых серверов, это может выйти даже выгоднее… Он: ТАК ИТОГО СКОЛЬКО??? Я (ну надо уже на чём‑то остановиться, чтобы не в

Радио «Виктор»: да чего хотят эти собеседующие?

Сегодня мой друг рассказал историю. Будучи молодым и неопытным, но толковым специалистом, он проходил систем-дизайн собеседование в крупную компанию. Речь зашла о том, сколько серверов нужно, чтобы держать миллион websocket‑коннектов. А про коннекты он тогда знал немного, опыта эксплуатации такой системы не было, да и собеседование казалось страшным.

Вот как он вспоминает тот диалог (от первого лица).

Он: Сколько серверов поставим?

Я (ну, выступлю за экономию, но и чтобы не падать одновременно всем сервисом): Пять.

Он: ТЫ УВЕРЕН???

Я (ни в чём, конечно, не уверен): Ну, тут же есть трейд‑офф: чем больше серверов, тем надёжнее, но и дороже…

Он (перебивает): ТАК СКОЛЬКО???

Я: Ну, в целом, двадцати серверов должно хватить: мы же умеем их хорошо настраивать и бэк напишем грамотно…

Он: ТО ЕСТЬ ДВАДЦАТЬ???

Я (ну какую цифру тебе надо сказать‑то?): Мы можем взять много дешёвых серверов, это может выйти даже выгоднее…

Он: ТАК ИТОГО СКОЛЬКО???

Я (ну надо уже на чём‑то остановиться, чтобы не выглядеть совсем жалко): Двадцать, на мой взгляд, разумная цифра.

Он: ТО ЕСТЬ ДВАДЦАТЬ???

Я: ДА!

Так чего хотел интервьюер?

Верно ли, что 22 его устроит, а 17 — нет? Я уверен, что нет. Если бы я задавал такой вопрос, я бы ждал от кандидата не «правильное число», а следующее.

Рассуждений

Мне важно, что человек может сделать пару логических ходов. Например:

- «Нам точно нужно больше одного сервера для отказоустойчивости.»

- «У нас, по условию, три датацентра, значит нам нужно число серверов кратное трём.»

Поиска ограничений

Мне важно, чтобы кандидат искал то, что станет узким горлышком. И не так важно, насколько реалистичное «горлышко» он найдёт — если нужно, я подскажу. Например:

- «Хм, наверное, с нашим паттерном нагрузки мы упрёмся в сеть. Вот мои расчёты, а ещё я знаю, что бывают 10GiB‑карты, значит…»

- «Ты спрашиваешь, сколько серверов нужно, чтобы держать миллион websocket‑коннектов. А во что мы упремся? Ну, каждый вебсокет — это открытый файловый дескриптор, а их не более 65k…»

Опыта эксплуатации

Если я ищу кандидата, который такие системы уже строил, то я хочу видеть реальный опыт. Например:

- «В нашем продукте всего 1000 соединений, и они нагружают не более одного ядра CPU. Значит здесь нужно примерно 1000 ядер…»

- «Однажды я посчитал, что один сервер держит 100 соединений, и мы купили 10 серверов, чтобы выдержать 1000. А оказалось, что мы не умеем балансировать нагрузку и получили перекос в 4 раза. Тогда мы поставили ещё L4…»

Планирования

Особенно если это тимлид, я хочу видеть, как человек добывает те знания, которых у него нет. Например:

- «Я сходу не знаю, сколько точно нужно серверов, но вот как я бы поставил эксперимент, чтобы это выяснить…»

- «Когда я сейчас планирую капасити, я действую вот так…»

А еще я могу задать этот вопрос, чтобы понять готов ли кандидат отстаивать свою точку зрения, если уверен в ней? Поменяет ли ее, если получит новые аргументы?

Мне кажется важным осознанно подходить к каждому вопросу на собеседовании и понимать что и зачем мы спрашиваем. Еще я часто после ответа кандадата рассказываю опыт нашей команды в этой области и так сразу знакомлю его с тем, чем придется заниматься. Например: «У нас в этой команде нет сервисов с вебсокетами, но есть gRPC стримы, и вот там...»