TGTGInsightаналитика telegramLIVE / telegram public index
← Хочу в Google
Хочу в Google avatar

TGINSIGHT POST

Post #52

@hiremegoogle

Хочу в Google

Просмотры2,160Количество просмотров
Опубликован1 авг.01.08.2020, 12:58
Содержимое поста

Содержимое

Пару дней назад прошло мое дополнительное собеседование с Facebook. Было 2 собеседования по 45 минут, System Design и Кодинг. Что там было? System Design. Зашел интервьюер, мы немного поболтали. Он дал задание сделать API дизайн для одного из сервисов компании. Я начал задавать уточняющие вопросы, нужно ли касаться Scalability системы, серверов, базы данных и т.д или он хочет сфокусироваться только на API. Интервьюер сказал что ему интересен только API и то как я буду это оптимизировать под страны с медленным интернетом. Я немного рассказал про то как можно хранить данные чтобы сделать быстрым чтение, но не стал уходить глубоко и старался не уходить от главной темы. Начал с того какой можно протокол использовать для передачи данных. Упомянул REST vs gRPC, JSON vs Protobuf, HTTP 1.1 vs HTTP 2.0 и т.д. Рассказал про плюсы и минусы разных подходов. В итоге остановился на связке gRPC+Protobuf+HTTP 1.1. gRPC+Protobuf потому что это внутренний API и мы будет отправлять большое количество данных и нужно делать это с минимальным размером запроса. gRPC для этого подходит идеально. Если бы это был публичный API можно было бы обойтись REST+JSON, так как он более распространён и более читабелен. Хотя по умолчанию gRPC работает с HTTP 2.0, я предложил использовать его с HTTP 1.1, так как в бедных странах может быть старое железо и софт которое не поддерживает HTTP 2.0, а gRPC может работать с HTTP 1.1 если сделать серализацию в JSON строку. Построил модели для request и response, рассказал про реализацию пагинации. На этом закончилось время и я не успел обсудить оптимизацию глубже. Coding. Зашел интервьюер, мы немного поболтали. Интервьюер сказал что хочет спросить 2 задачи. Первая задача было связана с матрицей. Я начал рассказывать brute-force решение, и в какой то момент интервьюер меня прервал и бросил мне в лицо финальное решение. Точнее, очень так жирно намекнул на него. Я быстро подхватил и реализовал это решение. Он спросил про то если в матрице будут строки разной длины, я сказал можно добавить проверку по индексам или выбросить ошибку, так как матрица обычно имеет равное количество колонок в каждой строке. Он согласился выбросить ошибку. Вторая задача была связана со строками. Я опять начал рассказывать brute-force решение, и опять интервьюер меня прервал и недвусмысленно намекнул на финальное решение. Я начал тупить, так как надо было работать с индексами, а это очень запутывает, плюс я не сам пришел к решению. Интервьюер увидел что я запутался и предложил вынести работу с индексами в абстрактную функцию, что я и сделал. Это сильно упростило решение и я быстро написал решение. Интервьюер указал на один edge case который я упустил, быстро исправил. Чтобы было дальше? Я решил написать свой фидбэк своему рекрутеру, так как второе интервью было очень сумбурным и странным. Только я сел писать, как получил письмо от рекрутера, спустя буквально пол часа после собеседования. Он там писал что уже получил фидбэк от интервьюеров и они позитивные (“it’s looking positive”), так же он сказал что после обсуждения результатов отправит их в понедельник на рассмотрение в Engineering Directors, что бы это не значило. Сказал что финальные результаты будут уже на следующей неделе. Какие ощущения ? Первое собеседование прошло хорошо, но я не смог охватить все темы. Второе прошло хрен знает как, я жестко тупил, интервьюер меня постоянно подгонял. Ощущение опять смешанное. Я ставлю 50/50. #story#facebook