Тёмный
FaangTalk
FaangTalk
FaangTalk
Подписаться
Разбираем систем дизайн и алгоритмы для подготовки к FAANG: Facebook, Apple, Amazon, Netflix, Google
- решаем популярные задачи с интервью
- обсуждаем систем дизайн интервью
- пишем подкаст с инженерами из BigTech компаний

#FaangTalk 57 System Design Mock
1:19:42
4 месяца назад
#FaangTalk 56 Векторные БД
1:17:30
4 месяца назад
#FaangTalk 51 - Data Engineering
2:16:28
6 месяцев назад
#FaangTalk 46 - Spark Architecture
1:44:11
7 месяцев назад
#FaangTalk 44 - System Design Mock Elevator/Lift
1:02:07
8 месяцев назад
#FaangTalk 39 - Google Dremel
1:23:23
8 месяцев назад
#FaangTalk 38   LeetCode Week 1
1:43:32
8 месяцев назад
Комментарии
@user-vz3zp2qg9q
@user-vz3zp2qg9q 14 дней назад
Максимально туго идет момент с флоатами, где считали формулу с 3 интервью. Где-то можно подробнее про это почитать?
@fratr
@fratr 16 дней назад
Если бы кандидат объяснил, что эта задача бизнес ценности не имеет и делать её не нужно, то видимо это был бы L6+
@fratr
@fratr 16 дней назад
Все таки на алго собесе практически никогда не дают реальных реальных бизнес кейсов, поэтому кандидаты и не спрашивают.
@IsaTimur
@IsaTimur 22 дня назад
Спасибо ребят, было здорово!
@Ultramarine256
@Ultramarine256 27 дней назад
Браток, крутой выпуск! Ты так понятно всё объясняешь, сразу видно, толковый парень. Теперь хоть разберусь, как Redis работает.
@dragvs
@dragvs 28 дней назад
Евгения приятно слушать, спасибо. Прям редко докладчик может простыми словами объяснять понятно
@faangtalk
@faangtalk 25 дней назад
Евгений крут!
@TheTmntmike
@TheTmntmike 28 дней назад
Всё круто, но сделай что-нибудь с шумом на фоне.
@faangtalk
@faangtalk 25 дней назад
Сделаем! Спасибо за фидбек!
@NikEvstafev
@NikEvstafev Месяц назад
Отличное видео и подкаст!
@aliaksandrkantsevoi1819
@aliaksandrkantsevoi1819 2 месяца назад
Спасибо большое за разбор. Делайте больше!. Хочется добавить несколько уточнений - Про репликацию и СH примерно 25:00. Вот эти ноды на круге A,B,C это не физические ноды, это виртуальные ноды. А за этими виртуальными нодами стоит какое-то количество физических, так же одна физическая нода может быть ответственна за N виртуальных нод. - Это сделано именно для распределения нагрузки(мы не знаем заранее какое распределение хешей будет на кольце). Можно добавлять/убавлять физические ноды на виртуальные - Сама же репликация - да, на N-1 следующих по часовой стрелке виртуальных нод. Как они называют "preference list" - 38:50 - немного путаницы с coordinator - coordinator - нода из "preference list" которая хендлит get/set. Еще ответственность координатора - обновлять отставшие ноды(если нода вернула однозначно определяемое как отставшее значение через векторные часы) - при случайном обращении к одной из нод в кольце - если это нода из preference list - она отвечает на запрос без перенаправления, если это другая нода - то она перенаправляет запрос на первую из preference list - Таким образом у нас есть резервирование и на уровне виртуальных и на уровне физических нод. - Но! Тут же могут проявляться интересные эффекты из-за виртуальных нод т.к. за N виртуальных нод может стоять <N реальных нод. - 36:30 - Sx, Sy, Sz - это серверы/ноды которые меняют объект. Поскольку у нас данные среплицированы на несколько нод и обновление происходит по gossip протоколу - в момент когда мы читаем D5 - и читаем с трех разных нод - мы можем получить 3 разные версии. Ну а там дальше да, как ты и рассказывал: Sx видели все - поэтому он точно не последний, и coordinator вернет остальные casual unrelated и там уже что выбрать между Sy и Sz - хз. - 52:55 - важная добавка - Hinted Handoff это для кратковременных выходов из строя
@faangtalk
@faangtalk 2 месяца назад
Спасибо за такой развернутый комментарий! Заходите к нам ТГ t.me/faangtalk
@aliaksandrkantsevoi1819
@aliaksandrkantsevoi1819 2 месяца назад
@@faangtalk я оттуда и нашел канал)
@iogurthome
@iogurthome 3 месяца назад
В современных приложениях чтение данных из БД редкий случай? В основном запись? Что он несёт?
@faangtalk
@faangtalk 3 месяца назад
Спасибо за комментарий! Уточните минуту, может автор не то имел ввиду
@nerassstraivaisya
@nerassstraivaisya 3 месяца назад
Чуваки, всё круто, разберите пеже техники обеспечения консистентности данных в распределенных системах (типо cqrs, saga, 2pc). А так спасибо)
@user-kq8nk5vj5r
@user-kq8nk5vj5r 3 месяца назад
"Как данные будут храниться и как шардироваться"? - это точно не первый вопрос выбора sql osql))) Первый вопрос - как данные будут использоваться? Сколько запросов будет на чтение и запись и т.п.? Какие будут накладные раскоды на запросах(сложные ли запросы, много ли джойнов и т.п.)? Нужны ли транзакции? При этом ваша система вообще может не быть распределенной. Жуть, а не видео.
@eugenemolokov3427
@eugenemolokov3427 3 месяца назад
Спасибо за комментарий! 1. В видео речь идет о выборе бд для текущих транзакций, не для аналитики данных. Потому о джойнах данных не может быть и речи из-за накладных расходов. 2. Выбор бд должен определять исходя из паттерна доступа к данным (как мы пишем и как читаем) - с этим никто не спорит 3. Транзакции предоставляются многими типами баз данных (в том числе ACID) включая реляционные и не реляционные 4. Речь идет только о распределенных системах.
@user-kq8nk5vj5r
@user-kq8nk5vj5r 3 месяца назад
блиин, капец вы. Могли бы подготовиться, разобраться. Очевидные же вещи.
@faangtalk
@faangtalk 25 дней назад
Привет! Спасибо за отзыв! Приходите на подкаст если готовы разобрать!
@konstantin6649
@konstantin6649 3 месяца назад
Какой ключ шардирования должен быть у таблицы сообщений мессенджера?
@faangtalk
@faangtalk 25 дней назад
Message_id? =)
@FF-ne2qz
@FF-ne2qz 5 дней назад
@@faangtalk нет
@user-kq8nk5vj5r
@user-kq8nk5vj5r 3 месяца назад
в графовой базе уже хранится список айдишников друзей и их не надо вычислять, как в кей-вэлью базе
@eugenemolokov3427
@eugenemolokov3427 3 месяца назад
Но графовые базы данных не шардируются
@user-kq8nk5vj5r
@user-kq8nk5vj5r 3 месяца назад
Поп, а не пи-о-пи.. Блин капец ребята у вас базовых знаний даже нет.
@faangtalk
@faangtalk 25 дней назад
Жаль что вам так показалось! Может быть POP просто прочитали по английски?
@carl.bergmann
@carl.bergmann 3 месяца назад
имхо в большинстве случаев так называемые back-of-the-envelope estimates никак не помогают в дизайне системы, а просто съедают твое время на интервью и практически всегда ничего кроме "оо ну да это много" ты сказать не можешь, ну еще и что твой интервьюер видит, что ты в первые пять классов школы посещал поэтому если твой интервьюер ОК чтобы скипнуть это часть (опять же имхо) -- стоит об этом попросить время на интервью улетает моментально
@faangtalk
@faangtalk 3 месяца назад
Спасибо! Очень дельный комментарий! В идеале из этих вычислений сделать какие-то более интересные выводы чем "много" :). Но на практике, получается очень механическая часть интервью: посчитали, покивали ну и дальше пошли :))
@faangtalk
@faangtalk 4 месяца назад
Видео плохо отрендерилось Вот ссылка на стрим ru-vid.comSrya7cDXqIY?feature=share
@vova_dev
@vova_dev 4 месяца назад
Спасибо за видео! С блоками мне тоже не всё понятно. Если у текстового файла, к примеру удалить символ, то все последующие блоки изменятся.
@faangtalk
@faangtalk 25 дней назад
Вы про текстовый документ имеете ввиду? Кажется для текстовых файлов совершенно другой алгоритм используется, в отличие от бинарных файлов (видео, аудио, фото) Или не так?
@vova_dev
@vova_dev 4 месяца назад
Понятно рассказываете, спасибо!
@handle6187
@handle6187 4 месяца назад
1:00:00 По поводу отдельных таблиц под каждую колонку для эмуляции колоночных бд. Наверняка на каждую строку хранится куча метаинформации, еще и выравнивание по блокам. Хранится такое будет хуже, чем в целевой бд.
@faangtalk
@faangtalk 4 месяца назад
Да, зато с базой работаем унифицированно, можем переезжать с одной базы на другую. Опять же как сканировать уникальные индексы если бд шардирована? А вот с таблицами-индексами это делается без проблем
@iliazhitenev
@iliazhitenev 4 месяца назад
Действительно уж mind-breaking! спасибо)
@Grxmag
@Grxmag 4 месяца назад
Guys, start stream again, but on eng pls. Ну а если серьёзно не могли бы сделать качество стрима получше?
@eugenemolokov3427
@eugenemolokov3427 4 месяца назад
качество картинки? или качество контента? :)
@Grxmag
@Grxmag 4 месяца назад
@@eugenemolokov3427 Картинки естественно, к контенту притензий нет
@alarmolord
@alarmolord 4 месяца назад
2:01:20 Ссылку в описании, конечно же, никто оставлять не собирался.
@eugenemolokov3427
@eugenemolokov3427 4 месяца назад
Сорян, забыли :) ru-vid.com/group/PLTd6ceoshprcpen2Jvs_JiuvWvqIAkzea
@SerhiiYashchuk
@SerhiiYashchuk 4 месяца назад
Сильно, спасибо. Понял что ещё много чего нужно изучить...
@batnasn
@batnasn 5 месяцев назад
Огонь 🔥
@alexpavlov9097
@alexpavlov9097 5 месяцев назад
1:24:35 Что здесь происходит? Мы в каком измерении?
@user-gq7kn3uk4t
@user-gq7kn3uk4t 5 месяцев назад
С заставки в голос
@user-gw6df6ns7e
@user-gw6df6ns7e 6 месяцев назад
Подход со старшим битом. Называется дополнение до двух.
@tshqyg
@tshqyg 6 месяцев назад
какое-то отвращение вызывают разборы интервью... есть в этом какое-то лицемерие. делать из этого товар. типа давайте рандомного типа научим как устроиться на работу, пусть он потом творит дичь, зато мы ему помогли, это так здорово!
@user-yq4wx4hn7i
@user-yq4wx4hn7i 6 месяцев назад
@monnoroch привет, я честно говоря так и не понял идею с деревом, чем она лучше сортировки массива? (случай когда на входе у нас сразу вся конечная последовательность)
@eugenemolokov3427
@eugenemolokov3427 4 месяца назад
Дерево как раз работает когда последовательно не конечна. Для конечной можно смело сортировать.
@user-np2xe2ri4x
@user-np2xe2ri4x 6 месяцев назад
Очень хорошо. Лайк
@andreyashuev2321
@andreyashuev2321 6 месяцев назад
Спасибо за видео.
@user-gw6df6ns7e
@user-gw6df6ns7e 6 месяцев назад
Токен платежа можно просто базу записать. Желательно в той же транзакции. Либо запишется либо всю тоанзакцию откатит.
@faangtalk
@faangtalk 25 дней назад
Спасибо за коммент! А это к какой минуте видео относится?
@user-gw6df6ns7e
@user-gw6df6ns7e 6 месяцев назад
С куками лучше не связыватся. ИМХО.
@user-gw6df6ns7e
@user-gw6df6ns7e 6 месяцев назад
Очень понравилась идея с конструктором компонентов распределенной базы данных. Жалко, что работать не будет скорее всего. 😢
@timurnav
@timurnav 6 месяцев назад
В видео про Кассандру обсуждали Блум фильтр, странно что про это никто не вспомнил
@dragvs
@dragvs 7 месяцев назад
Потому что хороший кодер != хороший инженер, ФААНГ нанимает инженеров, если мы не говорим про практикантов. Студент может быть отличным кодером, но вообще не понимать как ведется промышленная разработка софта. Первый человек смог проявить слабые навыки даже для какой-нибудь рандомной мелкой софтверной компании. Впрочем, навыки самостоятельности и лидерства именно в мелких а-ля стартапах и нужны больше всего. И самое смешное что нарешивание алгоритмов на LeetCode никак не помогает обрести эти навыки.
@alexeybreez9102
@alexeybreez9102 7 месяцев назад
Отличный выпуск и собеседник. Всегда интересно посмотреть на решения опытных разработчиков
@gordeyvasilev
@gordeyvasilev 7 месяцев назад
👍
@Tom910ru
@Tom910ru 7 месяцев назад
Интересно, что почти все интервью, интервьер говорит что не надо говорить фигню не подумав, а потом на 3:35:00 говорит что 10^10 температуру можно получить при ядерной реакции (что не правда) и температура сильно ограничена в размеа, особенно с той, с которой мы взаимодействуем. То есть, все проблемы что интервьюер говорил, они в принципе свойственны всем и стоит работать над собой, чтобы уменьшить их.
@JohnJohn31595
@JohnJohn31595 7 месяцев назад
thanks
@OdinO4ka1986
@OdinO4ka1986 7 месяцев назад
Интересен вопрос попадания на интервью в Apple. Вопрос по сути такой, если в Амазон/Мету/Гугл более менее зовут на собеседование то в Apple ни разу, более того, все попытки самому туда как-то попасть, не увенчались успехом. Слышал такую "легенду" что для попадания на собес в Apple необходим реферал от человека, который там уже работает, но при этом очень важно что бы ты с этим человеком тоже лично работал (те он как бы за вас ручается), а не просто вы нашли какого-то реферала на условном Reddit. Вопрос такой, правда ли это?
@antonbelski3900
@antonbelski3900 7 месяцев назад
Ребята, молодцы! Случайно наткнулся на вас в интернетах, классные видосы делаете! С меня лайк и отписка 💪
@OdinO4ka1986
@OdinO4ka1986 7 месяцев назад
Оставлю еще один комментарий. Известно, что задачи на алгосекциях в ФААНГах немного разные (я собесился только в Мету и Амазон). В Мете мне давали 2е задачки на 45 минут примерно изи-медиум уровня и по сути, как мне кажется, для Меты валиднее отточить подход второго кандидата, те очень круто и структурированно описывать свое решение, при этом что лично мне не понравилось, это нелюбовь кандидатов прописывать тест кейсы именно в редакторе. Я пытался в уме что-то прогонять, но обычно получается полная ерунда, а вот когда напишешь, то и интервьюеру понятно, чем я сейчас занимаюсь и мне проще не вылетать из контекста. В Амазоне же задачка была несложной, но очень много было бихейв вопросов и для этого интеревью, на мой взгляд, нужно хорошо пересмотреть свой опыт, что бы не рыться в памяти и вспоминать наиболее подходящую ситуацию под данный вопрос, а практически сразу начать отвечать, так как эта часть отъедает ваше время от алго секции и тогда у вас просто не будет времени на решение, хоть какое-то даже.
@OdinO4ka1986
@OdinO4ka1986 7 месяцев назад
Возник такой вопрос. Задача в данном моке была действительно очень обширной и в ней было очень много мест, которые можно и нужно было уточнять, однако, часто бывает задача более "простая", например вам дан список и в нем что-то нужно найти, например 5е максимальное число. Кажется что в этом случае, довольно сложно и на мой взгляд странно задавать вопрос на тему того, а какое бизнес приложение у этой задачи, что бы самому сформировать различные варианты ТЗ. Верно ли я понимаю, что не во всех задачах получится проявить leadership?
@monnoroch
@monnoroch 7 месяцев назад
Собеседования проводятся под конкретный уровень. Я проводил собеседование под L5 для всех кандидатов, для демонстрационных целей. Под L4/L3 задачи могут быть проще. Тем не менее, это не относится к вашему примеру. Задача найти пятое максимальное число имеет достаточно свободы, чтобы senior (L5) инженер смог показать все те же скиллы, которые были разобраны на стриме. Увидеть эти возможности (и воспользоваться ими) и есть основной признак L5 инженера. Заметьте, что ни один из кандидатов не увидел их в задаче вычисления среднего (хотя третий подошел максимально близко). Это не значит, что этих возможностей не было.
@user-gw6df6ns7e
@user-gw6df6ns7e 6 месяцев назад
Про 5 максимальное. Или человек знает quick select или не знает. Не думаю, что эту штуку с нуля за 40 минут придумают. И запишут.
@user-gw6df6ns7e
@user-gw6df6ns7e 6 месяцев назад
Я опять же не говорю про то чтобы его наизусть помнить, но если не знать quick sort, то не придумаешь.
@OdinO4ka1986
@OdinO4ka1986 7 месяцев назад
Именно с этого видео нужно начинать подготовку к собеседованиям. Насколько классного разбора собесов я никогда и ни у кого не видел!!! (Конечно все 4е часа сложновато просмотреть, но оно того стоит и лучше потрать свое время на него, а не на какие-то другие видео).
@monnoroch
@monnoroch 7 месяцев назад
Спасибо! Когда-нибудь я научусь говорить без звуков-паразитов вроде "эээ" и "нууу", и мы перезапишем видео в два раза короче :)