Подготовка к собеседованию на Golang Developer
Менторы
Специалисты своей области, которые смогут помочь вам
Middle .Net Developer
Senior Product Manager
Middle Python Developer
Ведущий программист
Backend Software Engineer (PHP)
Senior .NET/C# developer
Middle DevOps Engineer | Tbilisi, Georgia
Middle C# .NET
Senior PHP-разработчик
Middle python developer
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
Сегодня мы проведём открытое собеседование го разработчика уровня сеньор оно будет состоять из двух частей это общая разговорная часть с вопросами и Лайф кодинг также мы обязательно обсудим зачем задавались эти вопросы как нужно было на них правильно отвечать Как правильно подготовиться и как вообще вести себя на собеседовании я могу провести собеседование самостоятельно но опыта у меня в этом очень мало И получилось бы у меня плохо Поэтому я решил пригласить Двух самых известных интервьюеров из гос сообще у которых в
00:00:01 - 00:01:02
этом деле огромный опыт за плечами первую часть будет проводить Данил Подольский которого вы можете знать по его статье которая называется коллеги вы меня огорчает где он рассказывает про свой знаменитый опросник и про подход к собеседования также он часто выступает на конференциях и он нередко выступал на моих подкастах на этом канале Данил сейчас работает в компании ядро а вторую часть проведёт Владимир балун из Яндекса у него также есть канал на юбе где он как и я записывает интересные и полезные
00:00:31 - 00:01:25
уроки и например проводит открытые собеседования если в процессе просмотра нашего собеседования вы поймёте что у вас есть какие-то пробелы в знаниях и вы хотите тоже подготовиться к подобному собеседованию я Напоминаю что на моём канале Есть множество уроков которые покрывают большинство тем которые там будут обсуждаться и также подобные уроки есть на канале у Вовы Так что смотрите готовьтесь и учитесь и последняя вещь которую я хочу сказать перед началом это собеседование как и все прочие наши
00:00:58 - 00:01:53
мероприятия мы записывали в прямом эфире соответственно зрители трансляции увидели собесед намного раньше потому что разрыв между записью и выходом ролика довольно большой и также в процессе мы отвечали на самые интересные вопросы зрителей из чата Поэтому если вы не хотите пропустить следующее подобное мероприятие то следите за новостями и анонсами в моём Telegram канале Это основное место где Я делюсь с вами своими планами скажу даже больше идея И формат этого ролика как и большинства других на моём YouTube канале родились
00:01:25 - 00:02:22
именно в Telegram канале То есть я часто проводил опросы и например грейд нашего кандидата был определён и Именно таким голосованием мне сказали что мы хотим именно сеньора А например не медла или не Джуна и поэтому вы собственно будете сегодня наблюдать синьора Поэтому если вы также хотите повлиять на мой контент и высказаться например о том что вы в следующий раз хотите видеть именно медла или Джуна то подписывайтесь на мой Telegram канал И участвуйте что ж теперь переходим к собеседованию И я желаю вам
00:01:54 - 00:02:52
приятного просмотра Всем привет У нас сегодня открытое собеседование собеседовать будет два человека Данил Подольский и Владимир балун Дани возможно знаком через статью его знаменитую коги Я бы употреблял термин пресловутая она уже Да она уже очень старела да но нет основной посыл остался Всё тем же теперь меня урчат ещё и чат гпт что кандидаты могут в процессе Как называть то сверять с с Ботом это кстати Да это отдельный разговор про Бота но всё чем можно всё чем вы коллега хотите пользоваться этим
00:02:23 - 00:03:57
Пользуйтесь человек который способен за минуту нагулино и воу возможно знаете тоже по его YouTube каналу а можно представиться Да Всем привет Я сейчас работаю в Яндексе руковожу небольшой инфраструктурной командой и вот как раз-таки в последнее время достаточно много проводил собеседований искал себе инженеров команд Вот и у тебя по-моему уже было Да Одно как минимум открытое со Вернее я точно знаю что было но не уверен что только одно Да на кана на канале можно посмотреть Да там несколько было с
00:03:15 - 00:04:23
разными темами где я спрашивал собеседования вот как у нас будет выглядеть у нас будет из двух частей состоять собеседование а в первой будет заглавного Данил там в основном будем по его опроснику но а я собеседовать не буду я буду в роли Чара выступать и Ну скорее даже так роли организатора я в конце скажу Просто что мы перезвоним Антону и это всё на что я способен а собеседовать будут Вова и Данил и А в принципе ты Вова можешь участвовать активно В первой части Данила и соответственно во второй части уже будет
00:03:56 - 00:05:09
во заглавного там будет преимущество нала кодинг и тоже можешь са прос что-нибудь комментировать спрашивать и так далее и между этими частями Мы ещё остановимся на то чтобы дать фидбек после первой части и если в чате будут какие-то Хорошие вопросы дополнения Ну вопросы не столько к Антону А сколько к процессу потому что в первую очередь откры интервью это научить больше зрителей вот если у вас какие-то будут в процессе вопросы почему спросили Это почему вот это вот важно то можете спрашивать всё
00:04:32 - 00:05:43
расскажем так Есть ещё какие-то вопросы оговорки или Можем начинать Ну если нет то Данил всё те коллега Добрый день Сегодня у нас интервью на позицию в Компани ядро на этот раз оговорюсь что я я не уполномочен выставлять офер но я уполномочен давать рекомендацию и по моей рекомендации реагирует довольно оперативно Так что Ну вот делайте выды сами значит что сегодня мы пойдём по ядерному опроснику Это связано с тем что ядро Компани довольно специфическое на нке горат сонно я не то по Гоше задам пару
00:05:08 - 00:07:01
вопросов но и по линуксу и по Лам которые мы используем значит коллега хочу попросить разрешения делать то что я обычно делаю значит я задаю вопрос и очень часто я получаю ответ с первых двух слов если вас это не будет раздражать я разрешени этом мее Говори СБО переходить к следующему вопросу если будет раздражать я так делать не буду Окей без проблем так хорош обычно интервью начинается с того что я прошу кандидата рассказать чем вот он за сделанным за последние годы 3 гордиться 3 года 3 года за последние 3
00:06:05 - 00:07:36
года я как раз таки перешёл полноценно на на теку момен Тей язык из продуктов написал довольно много ных утилит которые улучшают работу моих коллег и меня в том числе ежедневную м написано и разработано довольно-таки много кода касающегося микросервисов и упрощение разработки этих микросервисов опять же для команды выработка некоторого количества стандартных стандартов и общих Практик и их определения внутри команды у Круто Круто Спасибо коллега мало кто начинает с Я улучшил жизнь коллег Это основное чем мы занимаемся в
00:06:51 - 00:08:25
первую очередь коллег и пользователей То есть как бы вот Хорошо Давайте тогда по опроснику мне достаточно просто этого ответа Я вс всё что хотел узнать я узнал можно на секундочку мешаю кажется мы забыли представить Антона ора ты подумал что это в контексте происходящего что никто не знает что за парень Слева в верхнем угло Я думал что Данил про это спросит в первую очередь но он как-то сразу начал ну подожди обычно Чар привёл человека я я уже читал его резюме что данном случае не так конечно Вот давай Антон Расскажи вкратце
00:07:38 - 00:09:00
про свой бэкграунд а то обм внимание мой бэкграунд Я не знаю разработкой занимаюсь уже лет наверное 16 коммерческой разработка Т на Тей момен являюсь м разработки в компании про интервью узнал технически позавчера вечером вчера утром сказал что я приду Я ещё болею поэтому я думаю мой г можно понизить по ряду этих причин до уровня сеньора и к интервью вообще не готовился То есть как человека я бы посни не соседова но сегодня у нас такие правила игры Почему м особе г Глеб со беседовал на входе всё уже
00:08:19 - 00:09:50
нормально ЕС человека 10 лет назад с тех пор человек стал меньше думать Тем более надо не по опроснику вот Ну хорошо Да ус пряжные условия но возвращаемся к опроснику первый вопрос Какие технологические преимущества языка го экосистемы го а по возможности уникальные Вы можете назвать наибольшее технологическое преимущество гунга чисто для меня это то что гунг написан на го ты можешь примерно всегда посмотреть как думали разработчики языка когда писали этот язык и в том числе почерпнуть оттуда практики
00:09:12 - 00:10:44
очень нравится что Тулин вокруг технически встроен технически встроен в язык то есть у нас СД библиотека даёт тебе встроенный трейсер он тебе даёт встроенный профайлер он даёт тебе встроенный дебаггер всё это ты можешь спокойно зать правильным образом и катнули это уметь этим [музыка] пользоваться весьма хорошо команда подходит к то чтобы вести блок и просвещать пользователей Ну это не совсем технологическое это не технологическое не уникальное преимущество согласен ещ технологически хорошего язык
00:10:01 - 00:11:23
сам по себе весьма простой и позволяет э это тоже не технологическа Забавно Ну на самом деле простая очень простая конкурентность то есть её просто сделать вникнуть и сделать правильно её не так просто всё-таки это как-никак конкурентность ну вот раз ключевое слово прозвучало Я позволю себе задать наводящий вопрос Что особенного в конкурентности в го ну зелёные треды в первую очередь то что это Дело в том что зелёный тред - это термин из врем Ява 1 больше вроде бы нигде не употреблялся Поэтому да ты
00:10:43 - 00:12:05
оперируя которые тяжеловесные их дорого создавать и так далее ты оперирует абстракцией на ты работаешь с концепцией конкурентности То есть ты выполняешь м потоков на операционных трев тут я уже спрошу вло А вот за сч чего рутина Она же зелёный тред вашей терминологии за счёт чего рутина эффективнее чтобы это не значило треда операционной системы у нас свой планировщик Насчёт чего там есть конкретное технологическое Решение вот которое стоит за эффективностью зены трев я не знаю как я задам наводящий вопрос
00:11:41 - 00:13:16
Какие виды многозадачности мы знаем многозадачности да два вида настоящий параллелизм именно вытесняющая конкурентность нет но на самом деле Коллега я конечно Жду что вы скажете что вру экс которая как мы знаем по накладным расходам эффективнее вытесняющее коператив не то сказал Нет ну общем-то никогда не было вытесняющее в 114 нам дали возможность в аварийном режиме выть сшмну мы не да да то есть обычно рутина сама говорит шедуле что он может забрать у неё квант времени так хорошо спасибо Следующий вопрос Какие
00:12:33 - 00:14:39
технологические недостатки из кого вы можете назвать м сложная порождающая кучу бойлер плета она не сложная Нет она просто порождающая кучу леплей обработка ошибок невозможность Ну существует плаз задач Когда нам хотелось бы оперировать памятью и областями памяти в ручном режиме то есть слову технологически не назвал Garbage колектор очень хороший сам по себе Но в ряде случаев это может стать проклятьем когда мы в перфоманс убираемся как раз-таки невозможность Когда нам нужно вручную оперировать
00:13:45 - 00:15:04
памятью То есть сейчас когда-то может быть всё-таки придут Арена в продакшн а мемори арены но на текущий момент Они только под экспериментальным флагом м соответственно невозможность когда этого сильно хочется оперировать вручную памятью А хорошо я тогда ещё один наводящий вопрос задам А почему на Go так неохотно пишут расширение для других языков расширение для других языков потому что компилятор свой обычный сиго мы можем его собрать gcc но там есть нюансы которые с этим связаны просто Вопрос в
00:14:27 - 00:16:03
том Это вопрос больше из мира встройки Я никогда не занимался как раз-таки написанием библиотек для других языков на гунг Хотя вот даже когда вя яы в руки это написать встроенную процедуру для они там как известно подгружаются из из из шаре библиотек и оказалось что хорошо не будет почему где проблема во воз приду к ответу но у меня быстрого ответа на этот вопрос на самом деле каждый инстанс го в таком раскладе тащит за собой весь свой ранта со всеми своими треми Вот и Завершите этот блок вопросов что вас огорчает в системе
00:15:14 - 00:17:15
типов го это субъективный вопрос Честно говоря чисто для меня то что плы всё-таки не приняли а всё остальное меня в общем-то устраивает в НМ нету ничего такого что меня бы прямо огорчало кроме вот отсутствия юлов А я задам новоя Вопрос вот у вас есть слайс интерфейсов и например Это у вас пачка сокетов А вы хотите слайс интерфейсов и прид проро и светить их всех Ну да да отсутствие корино это принять смириться с этим ну то есть как бым страшно каждый раз Дело в том что на это на это же ещё завязаны кое-какие
00:16:20 - 00:17:53
проблемы да то есть если вы создаёте некий интерфейс который возвращает наме сй структур то эти структуры надоть туда где будет реализация этого интерфейса вот к сожалению да Потому что нельзя написать что мы возвращаем слайс вот таких-то интерфейсов они автоматически друг в друга не с конверт так и давайте так императивный или декларативный В чём разница вся разница между императивность и декларативных языков говори Это для делав говори программе Что сделать предшествует вопрос как бы единственный может быть декларативный
00:17:17 - 00:18:53
язык это SQL и то с вопросами Ну это не совсем так Нет это тоже не так C Вполне себе тянет на язык программирования и вполне декларативный ин хотя бы сни регуляр Да вот хорошо э вот пытаюсь понять куда дальше двинуться [музыка] А какие средства обобщённо программирования У нас есть какие мы можем использовать дженерики в первую очередь хорошо Это примерно четверть ответа Я понимаю а так именно обобщённо программирования мы варианты с интерфейсами включаем или исключаем конечно включаем значит включаем
00:18:08 - 00:19:46
интерфейсы дальше у нас есть когенерация третий вариант прекрасно вот про неё всегда забывают Спасибо не то что я ей очень сильно часто пользуюсь Но это прямо вырожденный случай когда приходится кодо генерации прибегать чест особенно пос на чем видимо прид подумать у меня есть наводящий вопрос Если хочешь давай Что такое Type swich а ну окей хорошо Ну это же из тип тогда вырастет Ну да вот да рефлексия рефлексию будем считать способом делать обобщённое программирование так вот прямо мне нравится вот я обычно с
00:19:06 - 00:20:46
этим блоком вопросов приходится завязывать очень быстро но мне прямо нравится их задавать поэтому я ещё один задам Что такое тип сумма и как её реализовать на го типа сумма Господи я по-моему в таком в такой формулировке это понятие слышал в институте Посему я его Посему Посему я его не помню Это было давно су получается это должен должно быть по идее пересечение нескольких типов то есть условно говоря у нас есть Сейчас начну от себя [музыка] нанести собственно А зачем это интервью существует Ну
00:20:03 - 00:21:26
справедливо по идее я бы сказал что это должно быть пересечение типов когда ты условно хочеш 3234 щай себе 34 64 должен быть тип суммы и ты как-то работаешь с ними двумя например ну сейчас мы можем объявить костре Нет ну вот нет костре про это мы тоже можем поговорить но видимо вки отдельно я к сожалению отве на это вопрос потому что я могу предположить что я просто сделаю какой-то какой-то именованный а сделаю набор методов Так что он будет работать только 3264 к примеру но Ну именно с 3264 ничего не выйдет потому
00:20:51 - 00:22:20
что их нельзя расширить собственными методами А вот если взять какой-нибудь структурный тип взять кайд интерфейс алеста я расшир да вот сделать какой-нибудь интерфейс который будет э содержать в себе метод а тип сумма Угу Вот то каждый из типов который реализуют этот метод можно будет вернуть в качестве тип суммы а те которые не реализуют нельзя будет вернуть и констрейнт они совершенно К сожалению работают на приём А на выдачу я понял вот хорошо Так надо бы что-нибудь техническое позадавать Что такое дефер Зачем нужен О это
00:21:49 - 00:23:26
отложенный вызов это вызовы функции которые мы откладываем на момент выхода из контекста текущей функции то есть мы делаем м какую-либо функцию и гун за нас это делает во время выполнения операции тна оно же позволяет собственно обработать ситуации паник к примеру то есть мы можем река вернуться из паники через фр А до до Рена или после ретр обрабатывается дефер технически до потому что нам дост спасибо потому что нам доступны именованные Аргументы и мы можем изменить ошибку на выходе к примеру Ну то есть это даже практически
00:22:42 - 00:24:03
можно выяснить а 25 минут Мне ещё надо времени сколько-то на Linux потратить поэтому мы что какой с и какие операции можно с ним осуществить любые к счастью всё что нам дают разработчики будь тон буд то что у нас там их Спокойно можно ничего взять нельзя да почти Ладно хорошо правильный ответ почти правда нет ну с другой стороны изменил слайса тоже ведь по индексу которого в нём не который Out Of Range Bound будет ну Out Of R Bound будет тоже ошибка поэтому как бы оно оно в пределах того что мы можем
00:23:26 - 00:24:51
сделать с инициализирован им так А если в пустой слайд последовательно добавить 10 элементов какие будут у него Лен и кап Ну в смысле в цикле по одному элементу 10 раз я понял э через опен Да конечно я сейчас забыл абсолютно цифры как как у нас растут массивы но по идее у него капасити должен будет быть 16 но Лен будет 10 круто вот реально круто спасибо Откуда ты знаешь что 16 без вычислений default value стандартный инициализирует имеют капасити 8 ты можешь сделать меньше Но если ты не скажешь ему ка оден Он вроде как
00:24:14 - 00:25:43
сделает потому что скорее всего Они пытались выровнять с айтом памяти в ланге у которого один Спан - это 8 бит и если Да всё правильно или байт Бай бай Да которые 8 байт в итоге если ты делаешь короче онита пытаются выров с максимальной разно массив И зачем это может понадобиться вопрос я понимаю в чём разница но я ни разу это не использовал За всё время написание на го О'КЕЙ в общем слайс - это у нас ссылка на Ну это референс на нижележащий массив собственно это на самом деле важно понимать м массив в данном случае будет
00:25:03 - 00:26:29
непосредственно лежать в памяти это не должен будет быть ссылкой если мы объявляем Ой Господи если мы объявляем тип с указанной размерностью Это будет ну то есть как мы обычно делаем слайс мы указываем его размерность Это станет массивом Как сделать из слайса массив я не помню потому что я это не применял ни разу Ну хорошо А я задам наводящий вопрос зачем это нужно Что может быть ключом в мапе А так стоп ещё раз можно ещё раз вопрос Я возможно Как сделать из сй массив Окей ключом в мапе может быть в общем-то что угодно но
00:25:53 - 00:27:14
там вопрос в хэширования вот не вот во-первых не что угодно потому что например строка может быть ключом должен быть в конечном итоге Совершенно верно Да слай у нас или нет по указателю только другое уже содержимое а массивы ко или нет Вот массивы уже должны быть да вот это ответ на вопрос зачем это может понадобиться теперь представим что мы прочли из потока ID который у нас 16 байт но прочли то мы его все функции чтения из потока Они же у нас возвращают слайс Угу а хотим ключ в мапе будем делать в ито коем и
00:26:36 - 00:28:11
получаем возможность запихнуть Включи ма ну понятно идею понял Что делаем Как как с какой стороны зайдём Ну из-за того что у нас будет прочитан сй Бай Нам нужно будет конверт нуть этот сй байт в конкретные ре и дальше уже этот ре мы сможем использовать из-за того что он сам по себе ко мы его сможем использовать в А как как конверт нуть что не использовал это на самом деле вариантов д или залезть внутрь Асей и я даже не помню как это сделать или тупо прогнать цикл по значениям и скопировать их одно за другим на самом деле
00:27:26 - 00:28:52
скопировать будет если мы объявили массив Мы можем взять от него слайс и скопировать один слайс в другой с помощью функции копии А вот после этого слайс мы можем отбросить массив у нас останется и будет содержать то что надо так так не могу вот не могу удержаться Прости как устроит Я люблю кандидатов этими вопросами муть Нет ну ну правда меня столько раз столько раз мне поставили навид что я задаю этот идиотский вопрос что я уже не могу вот совершенно удержаться Ладно а я не могу отжаться от этого ответа это
00:28:11 - 00:29:30
хш А как усте ш отлично вопрос прям в Under устройстве У нас есть бакеты в бакеты информация кладётся после хэширования и модуляции Слушай Подожди подожди давай я задам то что меня на самом деле интересует считается Ну широко распространено мнение что поиск элементов в лапе - это константное время о от единиц так ли это И если так то для того чтобы у нас произошел доступ к какому-то элементу В общем если базова у нас шма состоит из какого-то количества массивов которые будут являться Бакета информация в них лежит
00:28:54 - 00:30:23
по модулю то есть сам Бакет выбирается по модулю хша а информация лежит уже непосредственно по хешу не совсем так ни слово говоря я сейчас не вспомню как вот прям точно до до самой тонкости работает мапы в гунг Я сейчас наверное и не вспомню а ключевой момент то что принято считать что оно о1 и то что оно константное но это не всегда так и я не вспомню когда оно не так Ну Слушай вот смотри у нас есть ключ мы берём из него от него хэш констант разделив этот хэш и получив Да разделив хш на количество
00:29:44 - 00:31:17
Батов и получив остаток мы получаем номер Батов котом ние бита от значение хша мы получаем смещение в Бакет А те сае потому что Бакет он как бы восемь элементов дадада в длину получаю смещение а Константа Угу а тут могла бы быть не Константа потому что у нас могли бы быть коллизии а и вот да И нам пришлось бы полным перебором в этом самом бате искать наше наше значение А ну у нас же есть cision и вейр в любом случае ещё на моменте записи гулон старается избежать их но они в любом случае не гарантировали
00:30:46 - 00:32:11
Совершенно верно Да то есть э в результате амортизированной Время оно похоже на константу оно к ней стремится Вот хорошо аэ так ээ каков порядок перебора пску Случайный а почему он порядок перебора Случайный потому что команда гунга не хохочет чтобы разработчики Спасибо на самом деле очень мало кто читал документацию по мм и очень мало кто прочёл там что порядок Рей будет Случайный вот а это на самом деле по идее эту особенность должны были впитать все кто так или иначе прил ВН после Да потому что там мапы получается Они ордера это в
00:31:37 - 00:33:22
порядке вставки ордере это в порядке В ставки даже не в том же перле например они не ОРТ но при этом э порядок итерации стабильный То есть ты можешь на него рассчитываться Ну и итерация там получается в порядке вставки а потом ты такой приходишь в го и такой опа не гарантированно вообще случайно так м Что такое канал что а м с точки зрения концепции - это средство связи между рутина в том числе Угу а технически Я не знаю ответ на этот вопрос Ну на самом деле я-то жду что каналы бывают разные бывают
00:32:30 - 00:34:04
буферизованный и не буферизованный А это вопрос Какие каналы Они что такое каналы Поэтому вот а ну и мне же мне же важно э в том числе важно Какие дополнительные вопросы задаст кандидат Хорошо я понял ну канал бы буферизованный не буферизованный если он буферизованный мы можем записать туда только одно значение если он не я оговорился наверное наоборот если он буферизованный можно записать несколько если не буферизованный то можно записать только одно значение если он буферизованный соответственно допустим 10 мы сможем
00:33:17 - 00:34:25
записать туда 10 значений при попытке записывания одиннадцатого мы будем ждать пока кто-нибудь не вычитает хотя бы отту хорошо А если буферизованный канал пуст и уже кто-то ждёт чтение на него будет ли я бы наверное сказал что должно так оно проще работает но нет но нет Фери зова канал пустой буферизованный канал в из которого уже кто-то готов читать ведёт себя точно так же как и не буферизованный А это кстати как как там данные передаются в не буферизованный канале так Я просто не совсем понимаю как на него
00:33:51 - 00:35:14
ответить как Ну смотри читатель создаёт у себя на стке переменную оно по идее в силу того что у них по идее в канале передаётся ссылка на данные потом рефрен свам катет пр в читателю Ну да и отпустит отпустит ютекс Ну да да читателю вернётся э то есть там и вообще никакой вот передачи будет там будет просто копирование из одной области памяти в другую никакой передачи ссылок там не будет хорошо А ну я заранее ответил Я заранее сказал то что я не знаю как они внутри устроены Я счастливый не ведающий
00:35:01 - 00:36:42
пользователь У меня есть ещё примерно 40 вопросов бо это ядерный ядерный опросник он не предполагает полного прохождения этого самого опросника он предполагает что мы будем выбирать какие-то Я понимаю так отличный вопрос Я его очень люблю 10 трёхбуквенных команд на память в линуксе чех букв Я в смысле буквы [смех] считаю Господи что ж так сложно можно можно Вспоминать про разные полезные средства которые мы применяем я их не то что приходи вручную в рукопашную идти в командно строке Тут ту тут есть очень
00:35:53 - 00:37:33
важная штуковина что я честно говоря не особо помню сколько в них букв я условно типа запоминаешь первый сколько-то а дальше Автоком дальше Господи что ж так сложно Ну ВИМ например считается Ну да считается ВИМ пользуюсь в последнее время очень редко ВИМ гид Да просто почему-то большая часть того что я пытаюсь вспомнить то чем я пользуюсь оно не трёхбуквенные пвд пвд КВД [смех] енф топ топ топ обычный но по справедливости ради я пользуюсь топом чаще Я даже спрошу В чём разница я исключительно из-за того что H
00:37:03 - 00:38:42
чуть-чуть получше выглядит и всё А я нет Я другие к нему Дело в том что H покажет мне по ядрам раскладку по нагрузке Я могу увидеть что какое-то однопоточный а тар Zip сед 10 Отлично спасибо не все кстати которые у меня тут в списке перечислены например СЖ а он же Ну окей ладно я это на стендовой машине делаю е а ещ Ман а ещ Ман вот к слову что-то как-то не вот а е ЛД и гдб то есть вот кандидаты выдают разный набор И те которые лдд говорят и гдб - это вот для разработчиков СТ прям это это важно Вот
00:38:06 - 00:39:55
А что такое про цфс си сфс не отвечу мои знания в том плане то что ния именно устройства линуса на самом деле крайне скудны они сугубо на уровне пользователя То есть когда мне придётся в это воткну я это чаще всего изучу это очевидно Это очевидно А как устроено файловая система X4 и что её отличает от файловой системы X2 вестимо размер заголовка Ну то есть концептуально оно Господи я же это знаю но не вспомню просто самое это забавное что я знаю устройство Ну вот именно устройство то меня совершенно не интересует я задам
00:39:12 - 00:40:46
наводящий вопрос Что такое Ада я не достану сейчас это из глубин своей памяти хорошо В чём разница между линком и синком - это просто текстовая ссылка на оно там ли технический Силин - Это что просто файл с ссылкой путём внутри принято принята hardlink Лин вести ссылка не в файле А в заголовке то есть самого файла там по-моему нету заголовки чего вот в Ной части которая у нас же есть получается сам файл и какая-то Мета информация о файле внутри файловой системы и оперирует как раз таки той частью которая а вот где
00:40:10 - 00:41:42
кстати Где хранится имя файла это это это не тот Пласт глубоко погребён знаний кото я не знаю как можно эти шокирующие подробности забыть имя файла хранится только в директории директория представляет из себя технический файл вот есть ротовая директория в не в ней хранятся ссылки на аноды и имена Некоторые из этих ine содержит все директории а некоторые содержат все файлы Вот Но в любом случае имя файла хранится исключительно в директории Больше нигде Вот и именно это позволяет нам создавать харлин мы просто
00:40:57 - 00:42:12
в другой директории или в той же самой директории создаём другое имя которое показывает на ту же самую Ино и Привет Так у меня просто есть Контр вопрос условно говоря к веб разработчикам Часто ли они сталкивались с необходимостью в устройства файловых систем ответ будет в 99% случаев Нет никогда или никогда никогда не сталкивались Да потому что ве - Это совершенно другая область Но я сразу что у нас вот мы пишем Soft Это совершенно особая история Я рекламировать собствен таким образом собираюсь Так
00:41:40 - 00:43:11
и что означает что означает пермишен 764 для файла о владелец файла может делать всё сть А всё это что читать писать execute да запускать А да по-русски запускать А я у меня я просто в смысле всю эту штуку помню из серии его РВД в том как она записано получается шесть - это на группу читать писать без экзекьют четыре четыре только читать по-моему Ну ну а четыре - это соответственно others все кто не в группе и не в пользова нене не конечно четыре - это читать [музыка] думаю четыре это читать хозяину ой АТ
00:42:27 - 00:44:14
четыре - это читать группе нет ты спросил 64 others да А прости у меня у самого уза зашёл так но тем не менее ставим девять в ответе на этот вопрос Так что делает команда Kill она отправляется Кил процессу М И что делает процесс в идеале умирает Но если у него есть блин там сложно а значит в позик системах процесс может зарегистрировать обработчик разных сигналов и в таком случае ос не будет прям жёстко убивать процесс Кстати мы можем ещё сил мы можем килу сказать с каким С каким сигналом убить
00:43:23 - 00:45:03
процесс Я у меня ощущение что я уже накосячил с ответом Нет на самом деле ответ абсолютно правильный есть перехваты и не перехваты сигналы на не перехватывал она Ну то есть я они их есть несколько не перехватывает по-моему даже у всех у них это убить процесс совершенно к нему самому не обращаясь вот что обычно делает сиха с процессом у меня там ещ заготовлен вопрос В какой момент появлятся [смех] Но я могу всего этого и не спрашивать на самом деле потому что ой я не помню В смысле мы его так часто
00:44:14 - 00:45:56
обрабатываем оно у нас в либе записано что я уже как-то и вынес это из быстрого доступа на обычно вешают перечитать конфигурацию это да вот а возникает в тот момент когда операция чтение записи э будет долбиться в закрытый Пайн Вот но то есть зачем бы тебе это знать Мы не понимаем так так исторически сложилось и вот ээ Что такое гид гид Блин вот так О'кей это господи CS system в первую очередь Зачем нужна в первую очередь для коллаборативный разработки кода чтобы не было проблем что разработчик а сделал
00:45:09 - 00:47:00
одну функцию в файле разработчик б сделал другую функцию в этом же файле все закомментировать уже уложимся вот у нас есть если мы пользуемся м то у нас есть понятие комита ветки тега В чём разница комита ветки тега Но это в любом случае всё объекты в первую очередь по мнению Гита Да Разница в том что они делают тег - это просто объектно Тега на самом деле в последних версиях могут быть ири и овнер Отлично Отлично Коллега что вы помните об этом аннотированный теги - это то что я например не вспомнил на интервью
00:46:09 - 00:47:41
справедливость ради Я недавно прол Тулу которая как раз таки пользуется аннотациями тегов поэтому поэтому помнил вот значит это теги ветка это в общем-то тоже объект но она это просто ссылка с этими обетами Зачем нам нужно одно другое третье ветка объединяет цепочку котов собственно У нас есть допустим если мы говорим про У нас есть ветка мо Не разворачивать можно Не разворачивать Да что такое Коми Зачем нужны теги кода по какому-то состоянию репозитория Потому что если мы смели в Мастер принято коллега нас вышло время нам пора
00:47:07 - 00:48:57
заканчивать А мы сильно позже начали не ВС рано не нормально у нас с момента запуска 47 минут прошло Да ну вот давайте давайте сворачиваться потому что ничего онно нового я коне не с пото У меня есть по Лам ещ десяток по линуксу есть очень неприятные Но осталось всего штук [музыка] пять Ну что коллега выглядит так что особенно теорией программирования Наго вы не интересовались вот что практику вы знаете Хорошо Сильно лучше чем средний кандидат выглядит так что командную строку Linux Ну и вообще устройство линуса это
00:48:07 - 00:49:49
прям То есть у нас есть такое направление портал куда бы мы вас наняли с удовольствием наверное Но вот в команду которая пишет сервисы наверное пришлось бы учиться довольно много чему Вот ю не заш но хотелось бы ну да Если честно то да я думаю это успех Антон так было пара вопросов Можно перерыве тоже задать чтобы передохнуть задно вопрос общем сотрудник джн или Мидл ходит по сом другие компании Ну наверно инь в принципе тоже пробле собственно Ну не знаю видимо кто-то считает что это плохо не знаю нун как это Мы взрослые
00:49:06 - 00:51:06
люди мы ничего друг другу не обещали Просто если он ходит побе я могу предположить что вопрос Вайт я буду зна что чело ходит пом я коне спрошу что собственно чего может ты чем недоволен может быть надо как-то обговорить там не знаю Может тебе надо написать докладную что типа повесьте мне пожалуйста зарплату Я кажется перерос свой текущий уровень Вот это я сделаю что я буду делать с тем что так думает но я-то думаю что это неотъемлемое право любого человека ходить по любым со бесом А куда угодно давайте это в броши ещё для
00:50:14 - 00:51:37
остроты вот если человек начал ходить возможно он хочет уйти и может быть он скоро уйдёт и нужно ему давать какие-то важные проекты чтобы он а чтобы от него не зависеть и всё такое Ну это вопрос организации в компании же если у вас процесс построен таким образом что у вас критически высокий басфар то вас не спасёт ходит человек по собеседования или нет собственно оно так и называется завтра его собьёт автобус и у вас проект всё равно останется без основного разработчика ходить по собеседованием
00:51:05 - 00:52:03
важно в любом случае для того чтобы во-первых оставаться как минимум в тонусе именно с точки зрения собеседования работу Мы в первую очередь работаем всё-таки ради заработка да нам интересно да мы пытаемся Как выбрать то что нам интересно в процессе но мы в первую очередь работу работаем для денег и как бы номинально наверно не меня во всяком случае как человека который в том числе собеседовани и нанимает людей Для меня нету никакой проблемы То что какой-нибудь Из моих коллег сходят на собеседование я на них
00:51:34 - 00:52:38
хожу последние 6 лет без цели сменить работу просто для того чтобы походить по собеседования некоторые компании после этого очень огорчаются когда я такой Извините я просто так не Ну у людей бывают разные расклады бывает что прямо критически человека нанять а он пришёл время съел э поматросил и бросил противно в противном противном случае про сидя вот собственно допустим работая на на текущей позиции свои 10 лет через 10 лет я забыл бы как вообще собеседовать и как что важно собеседовать людей Потому что если ты не
00:52:05 - 00:53:12
знаешь обратную сторону собеседования Как тебе проводить хорошее интервью да да А ты что думаешь на это я думаю что здесь ничего нет криминального Ну то есть Как посмотреть сколько сто Как посмотреть какие сейчас тенденции что спрашивают что вообще на рынке нужно знать то есть здесь нет ничего критического но допустим как для работодателя Это хороший ранний звонок О том что возможно твой сотрудник чем-то не удовлетворён возможно с ним следует заранее о чём-то поговорить возможно может быть ему что-то предложить
00:52:41 - 00:53:43
какие-то другие задачи и так далее То есть с точки зрения работодателя Мне кажется это плюс когда ты допустим раньше узнаёшь это если просто кандидат не ходит ради того чтобы посмотреть где и как там что происходит Да ну я тут могу сказать что если а ходить по На мой взгляд вообще ничего плохого этом нету Ты можешь ходить просто чтобы грамотно себя оценивать И Ну хотя бы вот еш раз разулся чтобы не заставил и Ась что ещё хотел сказать Ну ладно Ну ко Если вы хотите посм с целью именно сменить работу то я бы посоветовал
00:53:13 - 00:54:27
сначала всё-таки поговорить с работодателем если вас что-то терзает смущает то Ну вот меня бывало я подходил и обычно пробле решаются на меся после таго щего так ну ладно а ещ один вопрос был тебе тут человек считает что Т вопрос имет отношения к рабо работе хош защититься Да эти вопросы не имеют отношения к работе да это во Да даже в ядре не приходится сталкиваться напрямую ни с устройством мапы ни даже с устройством слайса вот это вот всё но две вещи Таким образом мы узнаём во-первых Кругозор
00:53:50 - 00:55:31
кандидата вот а во-вторых что тоже очень важно для сеньора способность отвечать на невнятные вопросы краткость Синьор у нас был на отличный совершенно доклад от Василия Романова Как стать сеньором если коротко то для синьора Нужно две вещи умение разгребать сложные проблемы и умение делиться своими знаниями с коллегами вот поэтому как-то То есть я буду задавать всё те же вопросы и на мидла и на Джуна Но для Джуна я буду интересоваться тем сколько вообще книжек прол человек жизни и если не прочёл ни
00:54:43 - 00:56:05
одной то наверное и с нами ему будет трудно а если а для медла буду буду пытаться Понять насколько сколько времени займёт до обучения кандидата если мы выставим ему офер То есть это всё про Кругозор О'кей Ну и последний вопросы Антону задам прежде чем двигаться дальше как тебе первая часть собеседование как собеседование Да хорошо в с я естественно недоволен своми ответами куда у без этого потом после собе обычно тан Это же было просто да не тут я могу сказать тоже В защиту то что на стриме те е человек Сейчас смотрит Это довольно
00:55:27 - 00:56:57
сложно это сильно сбивает я бывает стримлю один у меня там раз в 10 зрителей я решаю И это тоже нужно учи стресс раннее утро тако то что Антон без подготовки ворвался к нам сразу О'кей Всё теперь передаём инициативу он теперь и тут главный А теперь новость для меня номер два про Лайф кодинг я узнал во второй половине Пятницы с анонсом Не бойтесь Коллега я вот не прохожу никогда интервью в Яндекс Потому что я не умею Вла кодинг особенно на бумажке без кон да В общем мы не будем решать алгоритмические задачки как в Яндексе Я
00:56:12 - 00:57:38
хочу заранее рассказать Мы порешаем скорее практические задачки которые часто приходится разработчику видеть в практике предлагаю зайти в Редактор Я скинул в чатик пока мы заходим в чатик буквально пару минут хотел поделиться как будет проходить в процессе я буду писать Лог Ну то есть если не сразу могу отвечать я пишу какую-то пометку чтобы потом просто дать более детальный фид и что хотело бы перед тем как Ты рассказывал насколько я помню что у тебя был опыт написани различных микросервисов C приходилось ли
00:56:59 - 00:58:01
использовать какие-то базы данных при этом всём Да ну в основном как это всё всё моё сердце занимает пог SQL О'кей Да представим погр SQL вот Приведи какой-нибудь пример что вы там хранили Какие данные хранились там так а а сейчас это в силу вступает крупный Нда фильтр я пытаюсь понять Окей Хорошо давай если я не знаю есть есть ситуация с допустим логами с сервисов с Мета информацией произвольной Окей остановимся на налогах и Давай мы с тобой попробуем разобрать такую задачку то есть представим я
00:57:30 - 00:58:56
какой-то технический менеджер у меня мало какого-то технического бэкграунда То есть я что-то знаю но мно мало что знаю в общем в плане в плане разработки Ты пришёл на новый проект там есть вот твоя поз горя которую ты озвучил с которой ты знаком и там хранятся как-то логи я если ты мне задашь вопрос как хранятся я вряд ли тебе отвечу база данных тормозит я постоянно жалуюсь пользователи постоянно жалуются и вот мне хотелось бы понять у тебя Ну у тебя стоит задача как-то придумать способы решения как вообще ускорить
00:58:21 - 00:59:23
производительность Какими способами вообще ты будешь уводите как ты подой к анализу проблем с производительностью Вот давай поговорим с тобой в этом ключе Хорошо Так [музыка] ну собственно учитывая то что у насг Для начала я попытаюсь собрать какой-то анамнез с того Кто пожаловался что что по-твоему тормозит и что по-твоему не тормозит и как оно должно работать собственно это первое будет я попытаюсь собрать того Кто жалуется какойто анамнез того что происходит его ожидание от этой ситуации У нас есть какой-то SL
00:58:52 - 01:00:02
мы должны укладываться в секунду Допустим мы пробиваем там и полторы секунды и 2 секунды постоянно отдаём Да хорошо то есть не успеваем по в таком случае самое первое что я сделаю конкретно в контексте постгрес я полезу в сло собственно покажет нам лицом именно запросы Которые тормозят для этого вопервых я СГУ себе очертить список проблемных запросов в целом и именно данные которые там будут проблема Конечно будет с параметризованные запросами самих данных ты в таком случае там не увидишь но Slow Log как минимум
00:59:30 - 01:00:45
очертить проблему конкретных запросов да да ты нашёл те запросы Которые тормозят О'кей Что будем делать дальше дальше Всё весьма просто explain Алай и погнали Э мы смотрим Что конкретно тормозит не писать не надо писать не нужно Извините дальше собственно ипно пробега по проблемным запросам он нам покажет где что используется где Что не используется Потому что есть очень забавная тактика которая популяризировал вопросы база всё равно тормозит база всё равно тормозит О'кей А дальше у нас собственно задача
01:00:06 - 01:01:23
если мы спми Зро уже структуру я на самом деле вообще не с той стороны зашёл потому что первично нужно было бы очертить какого типа у нас идёт нагрузка у нас read intensive или Write intensive нагрузка иши вопро Хороший вопрос А собственно в случае если у нас прямо очень большой Давай если да почему-то Небольшая задержка идёт я видимо прямо в контекст тебе врываюсь вот давай представим если это логи это это задержка по интернету потому что у тебя и картинка сыпется в нас много пишут но мало читают
01:01:06 - 01:02:14
Отлично Так значит в нас много пишут но мало читают в таком случае простейший вариант будет это шардирование мы выбираем шардинг фактор и в зависимости от этого СТГ сам выбирает шарт в который будет писать собственно всего на этом этапе Мы упёрлись в ао а как мы поймём что мы упёрлись в АО шардирование как правило это всегда трудно может быть можно что-то подумать перед тем как нужно нашу базу шардирование потому что ну шардирование - это как бы дорогостоящая такая операция чтобы это поддержать чтобы это за админить Ну если
01:01:40 - 01:02:47
мы какие-то облачные инсталляции это очень очень это очень сильно разжижает операционные стоимости сервиса в целом в случае если ты вносишь либо шардирование либо реплики но опять же таки такого рода вопросы немножко сложновато решать чески вакууме но допустим в нас много пишут оптимально ли написано у нас в текущем моменте база данных и оптимальны ли уже на этом этапе все вопросы если мы оптимизировали конкретные запросы которые у нас уже есть если у нас уже оптимальным образом составлена таблица и
01:02:14 - 01:03:24
нормализ база данных у на много Пит рано вты каемся У нас в целом появляется несколько вариантов мы первое что можем сделать мы попробуем мы можем попробовать использовать гос партицирование это отчасти разгрузит одну конкретну опять же таки вопрос все эти данные лезут в одну таблицу или в несколько таблиц они помещаются в одной таблица Давай скажем так то есть мы не уем в какой-то лимит там не знаю максимальный размер таблицы мы помещаем Ну я не про размер таблицы но мы пишем в одну таблицу Окей в таком
01:02:51 - 01:04:09
случае мы можем к примеру задействовать партицирование это разгрузит одну конкретную таблицу Но если неправильно будут настроены селекты мы можем замедлить рин получается Господи что ещё то может быть Откуда у тебя есть идея то что партиционирование разгрузит разгрузит вот этот й инста с базы данных Если ты просто на табличке на маленькие разбиваешь мне просто хочется понять ход мысли Почему так думаешь у нас будут разные таблицы а разные таблицы заб капле закапывал огами а соответственно мы разгрузи Лог каждой отдельной
01:03:32 - 01:04:55
таблицы Ну О'кей хорошо раз думаем про Лок О'кей может быть ещё есть какие-то идеи сферического коня в вакууме Я почему-то сейчас не могу ничего придумать Нет это не сферический конь Ну то есть есть система просто Какие могут быть идеи по тому как это можно ускорить это не сферический конь У нас есть логи Ты пришёл новый проект баска тормозит А ну Лог Окей Я пометил правда не знаю немного не согласен но это мы в конце обсудим насчёт Лога Что можно делать по-другому как можно ускорить базу данных Какие идеи может быть ещ что-то
01:04:18 - 01:05:25
можно подумать ть Ну или хотя бы смотри у нас есть метрики можно на какие-то метрики посмотреть и допустим если какая-то Метрика что-то покажет мы можем сделать АЦ вот просто хочется Как раз-таки твоё твою картинку мира как бы ты подходил бы к решению задачи чтобы ты анализировал на основании чего бы ты что-то делал у меня наверное сейчас идеи закончились Я почему сейчас не о'кей О'кей Да хорошо давай тогда смотри Давай перейдём к следующей задачки она как раз-таки будет про то чтобы мы с тобой немного пописали
01:04:54 - 01:05:55
коды и она будет в принципе похожа на предыдущую Угу А есть у нас представим какая-то киве база данных и там пускай хранятся пользователи Ну грубо говоря ключик - это какой-то индификатор пользователя значение пускай будет IP адрес ipv4 и эта база данных достаточно далеко от нас находится допустим пользователь у нас в России она сама база данных допустим хости где-то в Америке ну то есть есть н там порядка где-то 100 миллисекунд до того чтобы туда сходить и вот мы хотим постараться минимизировать это время
01:05:40 - 01:06:48
задержки мы задумались на тему того чтобы не добавить ли нам кэширование Для всего этого тебе вот нужно написать кэш для данных У тебя есть интерфейс То есть тебе сами запросы писать не нужно тебе просто нужно написать сверху оболочку которая кэш которая что будет делать чтобы пользователь ничего не знал про кэша про кэш у него есть Аля какой-то интерфейс он как будто бы пользуется баз данных а под капотом там какое-то кэширование работает которое мы с тобой обсудим и чтобы код получился максимально эффективным понятным и без
01:06:13 - 01:07:20
багов Вот это Хотелось бы получить запросы конкурентные Да запрос Это хороший вопрос представим что давай 500 rps у нас идёт в этот сервис в один ИС Ну то есть наш сервис сейчас без кэша где-то 500 rps с него приходит на чтение смотри Давай только сперва обсудим перед тем как начнём писать как будем писать идеи я сейчас хотел для себя просто структур В смысле не не их устройство название структура написать а так в первую очередь мы объявим интерфейс для кэша потому что мы впоследствии можем захотеть поменять
01:06:47 - 01:08:05
имплементации кша Ну то есть как бы на самом деле для конкретно этого кейса может и не надо Пардон А у нас есть база данных она делает Get mget и Ke здесь у нас указатели слайс указателей на строки если это отве не поняти давай объясню а соответственно это для определения того что юзера нет я понял да да так Ну смотри я предлагаю не писать сразу код ну как бы это как по мне это не совсем правильно Когда решение не проработано то есть по-хорошему сперва обсудить что мы собираемся делать потом только лишь писать код
01:07:34 - 01:08:59
собственно в первую очередь Нам нужен будет кэш который сможет мигрировать под KV Database то есть внешний интерфейс кэша должен будет иметь те же самые Ну тот же самый интерфейс по факту согласен А как этот паттерн называется Ну то есть ты сейчас ты сейчас озвучил скорее всего паттерн какой-то не знаешь как он называется правильно Нет не скажу Ну окей хорошо ну блин справедливости ради названия паттерна было бы это важно Ну декоратор прок там не слышал то есть да да Окей а соответственно у него внешне должен
01:08:29 - 01:10:01
будет быть тот же интерфейс инициализатор структуры должен будет внутрь себя принимать инстанс базы данных Ну опять же таки через интерфейс потому что неважно конкретное устройство согласен внешне оно всё остаётся таким же образом в силу того что у нас Ладно другой вопрос в силу того что мы делаем чисто кэш а если мы делаем чисто кэш то мы скорее всего много читаем и мало пишем значит внутри в качестве Самого простого и быстрого решения Я бы использовал SY Map в силу того что это read intensive
01:09:29 - 01:10:52
структура она нам позволяет много читать при низком количестве записи она наиболее эффективна в данном случае в случае если у нас 500ps Мы явно перейдём за concurrency fact 4 А значит она начнут себя оправдывать Окей давай представим что у нас пару ядер то есть знаешь вообще разницу между тем когда хорошо себе показывает S Map А когда обычная мапа с ксом Например я только что я только что про это сказал при параллельности четы Син мапа начинает оправдывать себя Давай ставим нас два ядра Мы в два ядра держим 500
01:10:10 - 01:11:14
rps в таком случае проще использовать мапу иы Окей Так ну как обычный МКС Да давай тогда начнём с этого то есть постепенно начнём писать И постепенно буду возможно какие-то вопросы тебе задавать в процессе реализации Окей Блин здесь же не интересен ничего нету Окей импорта же не надо писать или надо Нет не надо не надо оно же не компилируется нано Оке Так значит у нас используется SY так S RV mutex потом нам нужна непосредственно мапа которая у нас будет данными которая будет просто Map А это у нас string от string
01:10:42 - 01:12:26
получается микрофон рук не вижу так в первом приближении А ну и нам ещё нужен будет инстанс самой базы И это у нас Database соответственно это будет главное ещё по привычке Ctrl W не нажать чтобы та не закрыть базовая структура у нас получается такая комменты надо писать или Нет конечно о совестно у нас получается функция которая будет делать которая внутрь у нас принимает у нас интерфейс Я бы всё-таки возвращал именно сам кэш он так и так подойдёт под интерфейс А значит здесь у нас получается C о Множественные выборы есть
01:11:51 - 01:13:28
прикольно Итак мы очертили получается а общее устройство этого товарища нужно передавать по указателю а инициализировать ютекс не надо мапу при этом нужно инициализировать вопрос знаем ли мы заранее какое-либо количество данных которыми мы оперируем с которых мы смогли бы оптимизировать на локацию мапы потому что первое время до сатурации кэша у нас будет проблемы с постоянными локациями мапы Это хороший вопрос Давай мы не будем делать прогрев кша Окей что у нас получается В таком случае мы делаем
01:13:22 - 01:14:47
к инициализировать не надо дата да нам больше ничего не прогрева Так значит Get у нас получается максимально простой мы делаем для начала пока мы это дело мы делаем RL А у нас же нету записи здесь а на Гете тоже пишет-то потому что я тут сейчас скинул МКС а записи у нас получается нет Это хороший вопрос в кэш у нас нет возможности писать Смотри в кэш у нас возможности нет Писать в сам кэш который хвости в Америке я понял окей у нас Ок а ты у нас не выйдет фера потому что нам по-хорошему нужен ещё и
01:14:28 - 01:16:33
негативный кэш вероятно наиболее потому что мы же не хотим постоянно долбиться на тему какого-нибудь одного пользователя которого не существует А все пытаются спросить кэширование ошибок Хорошо но давай попозже давай сейчас первоначально вот этим остановимся И постепенно тогда будем писать хорошо а единственное сейчас не могу придумать Каким образом А нам ре нам Рейн по мапе даст снапшота рейджа поэтому у нас все элементы будут Ок давай поговорим сперва как метод Get мы будем реализовать у тебя уже
01:16:07 - 01:17:28
сложилась картинка того как должен работать метод Get что мы там должны делать тогда тебе кажется будет проще это всё написать Нет не нужен нам нужна дата мы Обращаемся включу Забавно Ну окей ял конечно Я обычно делаю вот а тут вопрос А что у нас опять Жеки возвращает в случае если пользователь не найде он возвращает ошибку и гу или он возвращает ошибку потому что нам опять же таки нужно мимикрировать под поведение Database он возвращает ошибку которую нам просто нужно будет за проксирование Почему мы будем
01:17:00 - 01:18:16
отдавать я ещё запрос в туда ещё не написал так это мы получается читаем именно из самого кэша дальше в случае если у нас в кэше не нашлось никаких данных то мы должны сходить именно саму базу данных ДБ нет А у нас же в таком случае Ну ладно нам эта ошибка в данном случае не нужна потому что у нас будет ошибка из Да я вот это просто она нам нужна она нам нужна будет в случае если мы будем делать негативный кэш а If Не ОК в данном случае вот теперь мы возвращаем строка Кстати это не ок а и в таком
01:18:25 - 01:20:05
случае это ерр не равно л возвращаем ерр здесь у нас получается в случае [музыка] если мы нашли данные нам нужно их сохранить поэтому этот фр отваливается Потому что если Мы попытаемся залочить ещё и на запись Мы в дедлок в падёт условно получается так Окей окей причём причём причём есть нюанс в силу того что мы уже знаем что у нас идёт негативный путь тся бы по-хорошему е до запроса тут короче возникает проб ци вот этой вещи потому что в случае если у нас будет несколько конкурентных запросов к одному
01:19:33 - 01:21:07
и тому же пользователю они все пойдут в ремот прежде чем смогут сохранить данные то есть мы супер с знаешь как эта проблема называется то есть ну не рейс А твоя звучная проблема не слышал название енного имен зна Ой Хорошо смотри вы как раз таки вот с даним рассказывали проф как-нибудь можно здесь зать ры или нет ну то есть не хочется писать ем если мы будем использовать просто а не можно будет Мне нравится твоя мелкая гранулярность то что ты шься там где это дест полочку остави арность блокировок но за
01:20:58 - 01:22:34
использовать фры как-то это можно сделать Ну это дополнительный вопрос только в случае просто лока у РВ Короче у у РВ Господи да ум у м юкса есть метод TR Log е Или он ло это есть Да это всё так мы можем попробовать заблокироваться да но В чём идея грубо говоря когда я хочу за использовать фр Я могу написать какую-нибудь функцию допустим передать туда как к и как call back и внутри этом ютекс и просто сделать фр А через Кош что ли его Ну почему Коди Ну О'кей Хорошо давай просто это просто дополнительный вопрос
01:21:54 - 01:23:20
был я скип нем его Давай тогда займёмся кейс игм так как мы уже выяснили здесь у здесь у нас что получается у нас в первую очередь масти ради нам в любом случае придётся вернуть всё Все я так понимаю всю размерность стрингов для того чтобы можно было понять Они же по индексу скорее всего синхронизироваться будут Давай Перечитай требования к задач очень из-за того что здесь указатель на стрин я делаю ну это толком никак не влияет Ну очень редко вызывается метода Ну почему очень редко они вызываются я сейчас не совсем понимаю
01:22:44 - 01:24:15
методы вызываются очень редко Get у нас Ой 500s это постоянно мы стучим в Get Ну там один раз в минуту может кто-то обратиться и так далее Нужно ли нам здесь это кэшировать вообще или нет Или мы может просто закси этот запрос и всё нам в любом случае нужен будет Несмотря на то что он используется крайне редком нуже ша для последующего вытаскивания по одному и если у нас есть данные Ну то есть как бы это вопрос оче очень инфраструктурный и очень зависящий от этого конкретного кейса потому что в случае если мы Поль пользуемся пусть
01:23:54 - 01:25:11
даже редко гето и потом эти же данные используются когда-то там впоследствии гето накрутить кэш на гет имеет смысл если мы используем гет Так что у нас ключи никогда не пересекаются сгм и он используется очень редко скорее всего можно пойти без Кеша без тьфу блин без кэша и это не будет иметь никакого смысла Я предлагаю выбирать итеративный подход сейчас у нас Мы просто написали О'кей конкурентный кэш операции которые часто выполняются мы мы засиваю добавили там кэш те операции которые у нас редко
01:24:36 - 01:25:43
выполняются давай пока идти итеративности Да блин О'кей Хорошо давай ту добавлю немного да Супер Супер тут сейчас всё супер Давай я немного добавлю смотри а мы со стороны нашего сервиса не можем писать в эту базу данных которая где-то хостить в Америке но представим есть ещё какие-то другие сервисы или у пользователей есть прямой доступ к базе данных и они могут там ходить и менять данные в этой базе данных Как намм быть в этой ситуации Какие проблемы здесь могут возникнуть вступа это стандартны
01:25:10 - 01:26:18
из двух проблем программирования инвалидация кша да да согласен Значит у нас ситуаций здесь возникает несколько в случае если у нас есть доступ к кшу при изменении данных Нам нужен способ просто сбросить кэш Это один вариант второй вариант э нам вероятно нужны методы но э тут начинается очень интересное потому что в первую очередь в условие задачи ты поставил что А мы делаем так что пользователь а KV Database даже не будет знать что внутри используется кэш Ну по-хорошему инвалидация скрыть от пользователя чтобы он не знал про эту
01:26:17 - 01:27:37
инвалидация понял понял понял но не понял учитывая что данный интерфейс не подразумевает записи кто будет инвалиди кэш потому что в данном случае мы не можем принять никакого решения о том что нужно сделать инвалида Ну мы можем использовать банальный ТТ для начала Ну вот это как Ките Оке Ну допустим мы используем Т на каждую запись какие здесь будут проблемы если у нас будет на каждой записи т ну мы получаем увеличение количества хранимых данных в памяти на там плю по титель как мы будем инвалиди Ну в
01:27:00 - 01:28:22
В смысле вопрос не концептуальный А вопрос про хранение Окей А в таком случае внутрь даты у нас по-хорошему должна должен лечь условный тайп ent Ну то есть пути решения два мы можем внести вторичную структуру которая будет содержать ТТ по ключам в таком случае Нам нужно будет сходить в две мапы не идеальный вариант потому что нам нужно будет сделать две операции походов а данные данными мы всё равно жертвуем в данном случае точнее памятью второй вариант - это хранить в мапе не непосредственно данные аш
01:27:53 - 01:29:14
ent Окей Ну я понял примерно что ты хочешь ты хочешь при обращении инвалиди ты скорее всего этот алгоритм имеешь в виду А смотри Давай сделаем при обращении есть вариант написать кроле Да да давай рассмотрим такой вариант допустим я менеджер и я говорю Окей если данные будут устаревать на минутку это Окей то есть нам не нужна Strong consistency если данные немного расходятся не больше чем минута И для нас Окей что в таком ситуации можно будет сделать Ну смотри мы имеем в виду что в базе данных нет никаких механизмов
01:28:35 - 01:29:49
нельзя использовать подписаться на изменения нельзя инвалидация по событию делать через скаку Да мы в рукопашную я понял Есть один очень не нрав мне вариант мы мы можем дискард мапу раз в минуту Но это прямо очень плохой вариант давай подумаем над лучшими вариантами тогда если тебе этот вариант не нравится ну лучший вариант собственно вариант с Шен тями и хранения Ну инвалидация либо на чтени в случае если у нас не сошлись ТТ настенному хорошо но если мы если мы делаем типа самый простой самый быстрый вариант это
01:29:21 - 01:30:32
дить всю мапу давай смотри мы можем сделать как ты предложил на чтение Как по мне Ок но не хотелось бы эффектив запрос хотелось бы не добавлять дополнительно НН грубо говоря на инвалидация get как можно быстрее пролетали если ты говоришь что мы хотим всю мапу инвалиди Давай находим сейчас это решение то есть в фоне какой-то запрос будет инвалиди всю мапу но на пользовательский запрос это Не будет никакого эффекта иметь они как быстро пролетали большинство допустим через кэш так и будут пролетать Давай сделаем инвалидация всей
01:29:58 - 01:31:02
мапы в данной ситуации кажется что это сейчас у нас просто не так много писать инвалидация по текелю вряд ли мы успеем Давай просто сделаем инвалидация всей мапы Ладно самый простой вариант Используй татам всё-таки а ой господи так-с у нас опять же таки должен получается кэш Ну ладно старт Я единственное хочу пометить наруже смотри наруже мы не должны это выставлять То есть ты паблика поставил по-хорошему вот эту инвалидация внутри наск я понимаю а ну я его публичным сделал да толком ни на что не
01:30:37 - 01:32:03
влияет Ну за исключением что пользователь сам Может дёрнуть инвалидация в неподходящий момент я понимаю Да он сможет увидеть этот ме он сможет увидеть этот метод Так значит здесь у нас получается и здесь у нас получается Здесь у нас получается а оно у нас допустим какое-то константное нам Окей если даты устаревают если данные устаревают на минуту Но это блин Мне очень не нравится я понял я в том плане то что нет Мне очень не нравится Ну смотри бизнес-требования YouTube вряд ли на каждое YouTube вряд ли на каждое
01:32:09 - 01:33:27
обновление просмотра видео Тебе идёт и обновляет всё это eval consistency если пользователи грубо говоря у него сейчас айпишник он находится там в Москве Он переехал в Новосибирск Ну на минуту мы ишли обновим здесь ничего страшного нет это чаще всего исходит от бизнес-требования здесь менеджер говорит что минута - это о'кей и вот мы Исходя из этого делаем наше решение не я не помню как называется тот удобный если не помнишь если есть та ticker по-моему да Time то newer угу Т [музыка] равно здесь как раз-таки должен быть
01:33:04 - 01:34:29
duration верните мне моё IDE как без рук а здесь у нас получается варианты прекращения существования инстанса Мы в данном случае не расс нам у нас должна быть возможность ещё по-хорошему рассмотреть Да ты круто что задал этот вопрос по-хорошему грейф SH даница То есть перед тем как мы будем приложение завершать по-хорошему завершить бы этот воркер Да он он-то завершится но вопрос в том что в таком случае мне нужно будет писать смо Смотри я предлагаю как это всё круто что ты задаёшь такие вопросы
01:34:04 - 01:35:21
это показатель как раз-таки что ты много чего знаешь Давай просто интерактивно писать Пока просто сделаем инвалидация если успеем мы дойдём до этого Окей хорошо здесь у нас идёт сек Блин я если никто не против сложу В этот нет давай подскажу кейс и дальше ты указываешь стрелочку Хорошо я стрелочку помню я не помню как называе там большая Т по-моему называется канал который тикает точно по-моему точка ц точка C в кере Channel точка С А chel да по-моему так да А и тут у нас получается что здесь мы
01:34:47 - 01:36:06
делаем эту чудесную операцию дискард старой маб технически Мы надеемся что горби колектор её заберёт когда она станет неиспользуемое и всё что нам нужно сделать а нужно ли лочи мьютекс Давай подумаем в идеале вот Т твой момент что не не аффект остальных потому что будет один момент что те геты которые уже выполняются которые находятся вот здесь сейчас и в этот же момент они например подойдёт инвалида Тор и начнёт удалять мапу они запишут в ту мапу которая уже не работает которая уже будет те че тебе ж конкурента Нужно мапу
01:35:39 - 01:37:10
обновить так и в итоге у нас получается что мы делаем просто C D равно мапа А мы можем сделать интересный момент из-за того что На этом этапе мы знаем размеры данных то есть мы мы знаем сатурацию размер кша Мы можем кеть большую мапу сразу Ну смотри Возможно они инвалиди Ну не инвалиди в смысле удалились уже из Баски Давай не будем делать никакие не прогревы никакие не прилокаин Свен У меня вопрос по поводу сорок пятой строки по поводу соро пятой строки Это точно корректный код здесь будет Мы можем без синхронизации коце
01:36:29 - 01:37:49
указателю Ну а указатель мы можем вообще без какой-то синхронизации присвоить другой указатель я сейчас не совсем понимаю вопрос потому что я не обращаюсь к конкретному элементу мапы Да ну то есть мапа - это по сути указатель Окей Мне нужно спну два я во всей структуре делаю но мне нужно спну два указатели здесь по сути соп строчка Мне нужно спну указатели своп указателе Ок можно использовать атомик Ну просто я я к тому Да клоню что по-хорошему это всё обговаривать заранее я понял но конкретно сейчас я не вижу никаких
01:37:19 - 01:38:31
проблем он не атомарный просто те кто выполняются в процессе выполнения этой операции Те кто будут примерно здесь они просто будут писать в старую дату Просто следующий вопрос к этому по уже в новы в случае если я хочу атомарный у тебя нет гарантии что твой у Амар приво в какое-то значение Ну то есть понятно дело это кейс на миллион когда ты переносишь свой код и у тебя Рая грубо говоря разрядность процессора разная разрядность шины на одном каком-то процессоре это было две операции на большинстве допустим это одна операция
01:38:05 - 01:39:10
Ну то есть это сом строчке мы не можем без синхронизации так просто взять и присвоить масть яе в 99 это будет работать нам нужно найти тридцати двух битный сервер Ну окей хорошо А блин здесь нужно использовать атомик но с амиком уже начинаются проблемы какие проблемы Ну или Господи по факту по факту нам Нам нужен ещё один МК для свопа жирно будет если у нас во-первых два Текса будет как мы это кажется жирно это во-первых жирно во-вторых работать не будет у нас же должен быть один общий мьютекс который синхронизирует какую-то
01:38:37 - 01:40:02
структур Ну технически у нас получается так у нас не будет чтений по старым данным блин это настолько теоретический кейс Ну смотри теоретический кейс Ну не знаю как по мне мы не можем полагаться на какие-то такие кейсы теоретические ну мы должны обеспечить без проблем переносимость кода если потом не нужно портировать на какую-то платформу потом ты попробуй Деш код где десятки ты стро кода и попробуй дебажить где у тебя ломается или какая Бага стреляет каже это если мы это если мы пишем сервис когда мы не знаем свое инфраструктуры
01:39:31 - 01:40:36
Это вопрос в том когда ты не знаешь где ты выполняешь тогда может если ты знаешь свою инфраструктуру и точно Знаешь если ты продуктовая компания и знаешь где шся исходя из задачи то есть в начале ты не спросил из требова каком вообще размер ша Поэтому пока ты не знала Окей давай дальше идём Смотри да что у нас ещё есть мы написали мап мы засиваю что хочется сделать быстрее ещё хочется сделать так чтобы либо убрать эти вообще блокировки либо вообще минимизировать количество этих блокировок Давай возможно неть Просто
01:40:07 - 01:41:23
обсудим иде Это мо было бы сделать чтобы код выполнялся более конкурентно более конкурентно при этом у нас двухъядерный процесс да мапу использовать нет никакого смысла у тебя хоть десяти ядерный процессор если у тебя один тебе без разницы сколько ядер хотим просто чтобы рутин быстрее сквозняком пролетали через вот эти операции Да понятно у тебя элок он хорошо пропускает на чтение это всё круто но когда у тебя инвалидация у тебя всё равно приходит йте и лочи твой текс давай подумаем Как можно сделать
01:40:50 - 01:41:57
эффективнее Кстати я только сейчас подумал что можно было не имплементировать метод а просто забить ДБ в кэш Ну это ладно так хорошо давай тогда опустим вопрос у меня осталось буквально тогда пару тети вопросов по этому коду и ну там начина там там там начинается Экзотика там же начнётся там же начнётся Экзотика со свопов мы можем использовать атомик чтобы хранить указатель на мапу и Амар свапать мапу так как как этот паттерн называется не знаешь случайно Ну это действительно Господи опять паттерн не
01:41:48 - 01:43:02
слушай ну это ты просто такую реакцию создаёшь я не сказать что изза пате вопрос в том то что я их Да нене не это тако реакция в том плане то что я если мне назвать паттерн я его раскрути а в большинстве случаев когда я что-то делаю Я не пытаюсь это каким-то образом назвать и найти то есть я могу базовые совсем базовые паттерны в обратную сторону раскрутить но нет я не могу тебе сказать какой па О да я тут смотри у меня нет никакого негативного фидбека что ты не называешь теми словами как эти паттерны называются ты круто что
01:42:42 - 01:43:50
ты сам рассказываешь как это должно работать но просто дополнительно спрашиваю знаешь как это называется Если нет то нет Окей А да в сторону экзотику ты хорошо назвал То есть можно использовать Да можно использовать а томики для свопа этой мапке rcu называется Copy update А если мы ещё подумаем что ещё можно сделать помимо rcu может быть может быть ещё идеи какие-нибудь что ещё можно придумать rcu - это крутое решение Я не спорю то что что ты придумал это круто будет работать но ещё какие могут быть
01:43:17 - 01:44:17
варианты как ты в первой задачки про базу данных предлагал улучшать перформанс базы данных ты предлагал шардирование Оке Можно индексировать Можно Можно индексировать т ну окей Ну то есть можно про [музыка] порционирования есть один чет глобальный ютекс А так у тебя будет N каких-то мап в каждой из них по своему текс у тебя получаются такие более мелкие гранулярный блокировки следствие чего пропускная Способность у тебя из этого будет улучшаться А ну и ф может быть были бы идеи Как можно было мапу fre
01:44:07 - 01:45:17
написать примерно как бы это могло бы заработать писать не нужно просто хотя бы ну пару слов примерно сказать если бы пришлось вдг 3 писать или если бы вдруг пришлось бы использовать как примерно ста не совсем согласен с решением С каким решением задержка конечно очень сложно Я не совсем согласен с решением нарезать потому что в том плане это да Это скорее всего будет работать но тогда Нужно ещё модули вводить и ты по факту делаешь функционал шма поверх шма Ну модуль модуль посчитать Смотри это всё
01:45:01 - 01:46:11
равно Всё инвалиди нужно будет То есть ты у тебя у тебя аккумулированные Лок получается меньше потому что ты дрое по маленьким кусочкам Это понятно но это более слож Ну в смысле если это оправдано то почему бы и нет Окей давай смотри о фри варианты хорошо да ЕС Смотри это уже такой более такой в конце вопрос на десерт так сказать может быть если скажешь то это будет очень круто если не скажешь то это не критично просто решил спросить вдруг знаешь то есть как бы можно было б написать пытаюсь просто сообразить влаге
01:45:40 - 01:46:52
настоящих настоящих ф в голанг сугубо атомик в кавычках ф это ВС из пакета си просто потому что мне нужно самому Окей время просто мало остаётся Давай буквально ещё пару вопросов ты сейчас хочешь решение совсем без локов оставляем Я бы так сделал Я просто ещё хотел посмотреть Ну какие сопутствуют решения что ты ещё можешь предложить rcu то что ты ответил это круто это супер То что ты ну предложил такое решение а давай просто буквально пару вопросов последних теоретических по этой задач вот представим что мы
01:46:20 - 01:47:29
написали вот этот сервис как бы мы померили у нас вообще кэш эффективный или нет либо вообще может он не нужен этот кэш эффективность кэша как бы мы могли бы замерить Ну измерение эффективности ша измеряется хит рейм то есть нам нужно у в целом кэш считается эффективным если у него кш 8 на 20 дай Бог памяти но могу ошибаться что-то я сейчас не окей да хорошее рассуждение А какими бы допустим Если бы ты писал этот сервис самостоятельно какими бы основополагающими метриками ты бы его покрыл чтобы понимать что с ним всё
01:47:06 - 01:48:15
хорошо вообще там в продакшене что он не ИС никаких проблем Ну собственно как раз-таки хрей э это одна из первых метрик была она бы померила Имеет ли вообще какой-то смысл использования данного кша вторая Метрика - Это количество занимаемой памяти сервисом а потому что грубо говоря если у нас получается ситуация что мы всю базу данных перенесли внутрь кэша и у нас вся база внутри кэша Возможно стоит уже Ред реплику сделать Ну смотри это это уже детали Вот вот ты пишешь Новый сервис какими бы метриками ты его покрыл давай с этого
01:47:43 - 01:48:59
начнём вопрос ты пишешь Новый сервис прок тебе нужно сделать так чтобы пользователи смогли с ним взаимодействовать какими метриками е покрыть основными количество реквест успешных проваленные запросов мы сейчас Оторвались от этого сервиса Про Сервис ку Мы Почему оторвались просто с соотвественно мы Почему оторвались пому жи какими бы метриками мы покрыли если бы мы писали бы этот сервис с Шом с нуля потом мы полностью орали Я сказал давай просто представим любой абсолютно сервис который мы бы покрыли какими-то
01:48:26 - 01:49:26
метриками хорошо Ну собственно утилизация памяти утилизация цпу это категорически важно будет если сервис Облачный потому что на этом стоит количество запросов количество фейлов количест Ну количество сфен запросов количество успешных запросов дополнительно считали так утилизацию памяти я уже назвал стандартные гое метрики в виде размера хи размера стека и количества рутин потому что может теоретически будет шанс что мы залу Ну типа базовые Гош метрики плюс утилизация пу ИП вопрос потому что он зависит от кейса
01:49:00 - 01:50:28
и буквально последний самый вопрос и мы заканчиваем представим мы вот этот сервис задеплоил куда-то он начал пятисот Ну то есть в какой-то момент просто начали гореть орты сервис пятисот Давай можешь просто буквально рассказать как бы ты искал бы проблему как бы ты фиксилэр у нас скорее всего есть таймстамп и метка возникновения я подразумеваю что у нас сервис полностью инструменти А значит я могу по времени найти как минимум Лог Окей то есть смотри у нас есть логи метрики трисы То есть просто порядок С чего бы начал чтобы смотрел и
01:49:52 - 01:50:58
так далее и так далее мне вот это интересует сам процесс Ну собственно после после непосредственно Трик после того как я понял то что у нас возникает пяти дальше идём в логи смотришь непосредственно Что произошло с логом потому что в ряде случае ты можешь понять просто полог меседж Что произошло потом я бы Нашёл где это место гиру ется посмотрел внешнее окружение кода опять же таки Возможно там простейшая логическая ошибка когда кто-то писал человеческий фактор никто не отменяет А в случае если там за
01:50:37 - 01:51:43
условные 10-15 минут вот такого просмотра оно не решилось дальше Дальше я бы наверное полез в рейсы чтобы посмотреть что в целом происходи тече за что выполнялось и на каком моменте она слилась А собственно дальше если уже мне Ничего из этого не принесло никаких хитов Ну типа достаём перескоп начинаем дебажить А если вот мы посмотрели Окей мы посмотрели профили метрики логит Ничего не нашли что делать дальше а пользователь страдает мы птитим предложение идея сервис хочется восстановить багов нет но оно пятисот пятисот да ну
01:51:09 - 01:52:31
то есть первичный анализ ничего не показал очень я я понял мне очень сложно сейчас дать ответ [музыка] без без конкретной ситуации честно говоря что типичная схема при которой всё бы уже разрешилось я влом назвал в случае если оно пятисот пользователи страдают А мы ничего не можем сделать Ну типа мы пытаемся грызть кактус дальше У меня к сожалению не будет для те никакого конкретного ответа Окей я не совсем понимаю даже Чего ты в целом мог бы хотеть услышать Ну давай я фидбека тогда поделюсь может быть Исходя из
01:51:53 - 01:53:05
этого там сможем пообсуждали сервер ты смеёшься Но почему бы нет то есть решение в какой-то ситуации Да ну то есть как бы да один из вариантов да да а что хотелось бы сказать что хотелось бы сказать по поводу фидбека в целом у меня сложились приятные ощущения то есть мы написали код неплохой код много где были хорошие решения обдуманные много где но я не могу сказать что код плохо писался код хорошо писался а что касается ответов по базе данных здесь не хватило чего не хватило сейчас просто по своему Логу подс чего не
01:52:38 - 01:53:48
хватило Когда у нас есть проблема с базой данно вот да проблема с базой данность мы не поняли Во что мы упи Ну то есть Может мы в диск упёрлись банально И зачем нам грубо говоря оптимизировать какие-то запросы Когда у нас просто пропускная способность страдает то есть первоначально Ну хотелось бы как-то требования получить вообще какие у нас ресурсы не упёрлись мы в CPU там в памяти в диск или куда бы это ни было ещё А что ещё не хватило по базе данных не хватило Я не знаю как это даже лучше описать то есть какого-то
01:53:18 - 01:54:24
последовательного пути что мы посмотрели одно другое Исходя из этого мы поняли что О'КЕЙ в данной ситуации но мы вот рассмотрели что мы упёрлись диск мы либо диски накидывать либо потом шарди ися либо что-то подобное Либо мы смотрим на структуру данных может мы будем использовать сжатие может мы как-то данные по-другому сохраним чтобы мы эффективно использовали там пропускную способность Но вот не хватило вот этого самого контекста и не было каких-то Вот м поинтов на основании чего мы делаем какие-то заключения то ли мы допустим
01:53:51 - 01:54:45
упёрлись в память и допустим что-то нужно делать другое То ли мы допустим упёрлись в сипию тогда мы смотрим А почему мы в сипию упёрлись и вот это вот этот кейс решается то есть вот такого Ну анализа не хватило да это как ты вот говорил правда я не совсем Согласен проблема из вакуума но хотелось бы смотреть на проблему из вакуума когда человек приходит решать какой-то инцидент Когда возникает проблема Не знаю как у всех но часто что-то искрится и часто сдача разработчика это посмотри но ты не знаешь что искрится как
01:54:18 - 01:55:15
раз-таки это показатель что Часто ли приходилось пользователю Ну как по мне кажется принимать решение в каких-то инцидентах каких-то проблемах или нет а что касается задачки То есть была написана повторюсь ещё хорошо Я не увидел никаких багов особенно проблемных что не хватило не хватило требований Ну то есть мы сразу начали писать практически сразу пока Я просто сказал давай расспросим мы не спросили про ограничени может у меня кэш там на несколько терабайт оперативки у меня допустим на сотни мегабат вот этого
01:54:47 - 01:55:46
мне не хватило не хватило В како момент в какой-то момент каких-то ну ключевых идей то есть мы вот так делаем делаем делаем то есть просто большую часть времени писал код хотелось бы чтобы какие-то ключевые идеи ты озвучивал а не после наводящих вопросов вот что ещё можно добавить Давай сейчас Лог посмотрю то что предложил а так так так так сразу начал писать спросил прогрев кша - это супер про кэширование ошибок - это тоже супер инвалидация по метрики запросы это всё окей что касается вот последней тоже задачки что
01:55:16 - 01:56:31
ещё можно было бы добавить это когда мы рассматриваем какой-то Ту же самую проблем Когда у нас случилась какая-то Бага что не хватило не хватило локализации но по-хорошему локали его при помощи Чего будем локали Зро Ты назвал то есть по-хорошему понять А какая часть системы вообще ну проблематику испытывает может быть база данных может быть сервис может быть в каком-то месте может быть недавно Катился может быть можно откатить то есть пороше сперва сделать локали это локализовать и дальше уже выдаваться в
01:55:54 - 01:56:49
эти потребности Ну то есть вот этого мне не хватило исходя из всего этого что касается программирования я могу сказать О'кей А вот как-то так у меня есть конкретно вот в обоих вариантах что с базы данных когда ты говоришь то что не хватило конкретики и в последнем варианте Тут есть тут есть так называемый интервьюер потому что у тебя-то в голове конкретная ситуация у тебя в голове уже выстроена конкрет Ну конкретный Список проблем и как бы технически то чего ты от меня требуешь то что у меня на стене должна
01:56:21 - 01:57:37
быть нарисована такая табличка блок схема если то А задача из серии у нас что-то сломалось но я пошл посмотрел туда пошл посмотрел сюда какого-то заранее выстроено решения у меня в текущий момент как человека даже не готовившего к собеседованию нету В то время как ты про собеседован твой эталонный ответ потому что не было сказано то что у тебя есть метрики ты можешь пойти залезть туда пойти можешь залезть сюда потому что очень немаленький Пласт к примеру компании в которой разработчики не имеют
01:57:09 - 01:58:14
доступа квсу они не могут пойти и посмотреть на метрики клауда и машины на которой стоят база данных я в принципе никак не могу административно пойти и узнать то что мы в диск упёрлись Это задача по идее отдела оперирования мо же спросить отдела оперирования чтобы они выдали разработчикам дашборд и более того это в конце концов приходится делать я да это в конечном итоге но просто суть суть то в том что по идее если пришли рабочи кгы глазами я просто что хочу добавить не я я я я про Наверное недопонятые я не знаю как объяснить
01:57:41 - 01:59:07
Короче О'кей я понимаю я не то что жалуюсь и как-то там что-то это да я я я просто что хочу сказать это несомненно плюс что ты не готовился что вот пришёл ну как бы это стресс это то что на тебя много людей смотрит это само с собой Разумеется я ещё раз повторюсь ты хорошо справился Но то что я посветил что можно было улучшить я не в претензию тебе что ты допустим там что-то бы не сделали разработчики это не делают Да что касается меня Ну конечно я заранее подготовился Я примерно подразумевал что
01:58:30 - 01:59:27
я буду спрашивать вот эту задачку Я часто конечно задавал на собеседованиях Но это собеседование не в Яндексе в Яндексе я проводил собеседование стандартизированный процесс собеседования это просто моё личное собеседование если бы я не знаю у меня была б какая-то команда вне Яндекса например и я бы искал сюда инженера Я бы примерно так бы смотрел его скилы и оценил бы как инженера если Ну окей У нас есть админы который железом занимается Ну конечно не посмотрят но часто бывает что инженер он много чего
01:58:58 - 01:59:51
делает он и и тут в принципе может посмотреть и там что-то сделать не знаю может быть я просто работал в таких местах где много чем приходится заниматься то есть ну в каких-то местах Возможно есть чётко выделено роли когда один человек пишет другой человек админе третий девопс четвёртый тестирует и так далее и так далее и так далее Но как правило всё равно разработчик это такая Боевая единица Как по мне которая инженер он может что-то где-то добавить что-то где-то донести доделать В смысле я вообще не спорю Просто я в
01:59:24 - 02:00:20
том плане то что есть я себя не завёл сегодня до ранга просто разработчика с доступом только к фане в который может быть не быть статистик по клауду к примеру или по машинам поэтому к примеру Я честно говоря даже на метрике инстанса на котором крутится база данных я про них даже и не подумал потому что я такой у меня есть логи У меня есть трейс у меня есть может быть метрики но не факт что есть метрики именно инстанса самой база данных про них я вообще не подумал показывает Арм что можно и нужно
01:59:57 - 02:01:03
на Сава спрашивать А что вообще есть что я могу смотреть Да просто Смотри вот то что я говорил не хватило того что про базу данных не спросил Какое железо там во чтом Ну то есть когда начали кэш писать вот нагрузку ты руто что спросил Какая нагрузка сколько Чита Я сказал 500 ты не сл про ониче конст важно узнавать особенно когда мы говорим про старших разработчиков ты как правило не идёшь не писать какую-то таку Ты пойдёшь познаёшь как Что мы будем делать Уч какие-то кейсы на каком железе это будет работать
02:00:30 - 02:01:31
с какими системами как раз таки Вот это мы Ну собеседование моделировать Я старался Да я Ну в смысле у меня особо-то тоже нету претензий Я как-то пытался объяснить свою логику чит о интервью не узна про то что как чело будет решать Мои рабочие задачи Зато поглядел на Кругозор а Владимир ничего не узнал про Кругозор потому что задача была одна-единственная конкретная и я в феврале написал такой кэш поэтому я знаю что э Задачка примерно на неделю написать этот кэш поэтому поэтому вот это вот всё то есть с одной
02:01:00 - 02:02:33
стороны задача Ну в общем в общем и и тот и другой подход обладает Ну я тут что могу сказать есть не покрывают практической какой-то применимости то есть ну как человек вообще мыслит как он решает задачи есть практические подходы где я не смотрю какие-то теоретическую подкованной но я смотрю как человек как раз-таки решает какие-то задачи то что здесь простая задача Ну кажется на интервью Я не должен просить какой-то там красно-чёрное дерево написать или что-то подобное я лично без учебника его не
02:02:00 - 02:02:57
напишу кажется что И большинство тоже нужно дать какую-то Как по мне задачку в которой много есть ограничений корнел кейсов а каких-то непонятной посмотреть как кандидат себя ведёт То есть я по крайней мере так и я много пометок разных сделал Как в каких ситуациях он что спрашивал Вот то есть тут не тут в какой-то степени Я согласен в какой-то нет что я не посмотрел ничего как он будет решать мои задачи Я посмотрел как он может смотреть инциденты как он какой у него опыт с базами данных что он кстати знает про шардирование там он
02:02:38 - 02:03:37
сказал про партиционирование тему репликации затронул провал правда непонятно особо чем бы это с валом помогло но тем не менее Вот это как бы я просто в разных ситуациях в принципе не отходил от одной какой-то задачки Но чуть-чуть пытался Под разными углами смотреть вот Ну у каждого свои методы У каждого свои ка с что что хочу единственно просто от себя добавить было трудно почему потому что были лаги сетью и как бы мы постоянно не попадались друг другом в контекст это да это да И что касается ещё не знаю вот у меня как-то есть после
02:03:08 - 02:04:14
интервью какие-то впечатления когда человеком посо беседовал и у меня прямо много позитивных эмоций сейчас у меня не возникло много позитивных эмоций Почему Потому что некоторые вопросы какие-то Ну задачки как-то возникали с точки зрения Ну какого-то не то что точ зрения юмора зачем мы это делаем зачем мы это пишем Ну я бы допустим не захотел бы взять такого кандидата который с точки зрения на мои какие-то прикладные задачи на мои какие-то вопросы Ну так отвечает возможно просто Ну вот Антону казалось
02:03:41 - 02:04:37
что я что-то не то спрашиваю Ну не знаю это просто вот мой фидбэк который я могу ещё дополнительно сказать по собеседованию Ну ключ от формата зависит просто аа наверное разны будет чело когда он пришёл на интервью настоящее и вот такое показательное шоу да Ну да я согласен я просто ну как бы делюсь своим ФМ Я честно говоря кстати не заметил чтобы я хоть раз так отреагировал на задачу именно Ну окей возможно ЕС некорректно пол не я не говорю некорректно Я просто знаешь ещ Кстати на самом деле смотри тут есть е такая небольшая
02:04:08 - 02:05:21
Ловушка которая мне не совсем получается понят была я не Почему я не задавал вопрос а сколько у нас ресурсов в тех моментах а которые мне не показалось нужно задать потому что мы переходим в секцию Лайф кодинга когда я должен написать хорошо работающий код а не спроектировать сервис Да ну когда мы когда мы вопрос который важный для кода был это какую сущность использовать То есть если использовать синк мапу А это зависит от того сколько у нас ядер на машине важный вопрос вопрос Сколько у нас памяти Ну
02:04:45 - 02:05:56
типа сколько дадите столько И скушаю Ну ты же не можешь так писать код промышленный когда ты знаешь что если я напишу какой-то алгоритм который в кэш будет поднимать какого-то объема просто не поместится У меня на машине Даже когда ты какую-то маленькую задачку по идее Ну Рассматриваешь смотришь какие-то конст Сколько у тебя есть ресурсов де пишем без расчёта на конкретный инстанс потому что инстансы могут быть разные вот что мы точно делаем так это обкладывают ками который позволит нам понять а не кончилась ли у нас память
02:05:20 - 02:06:24
вот не ушли ли мы в SW вот если у нас операция чтения из мапы начинает занимать миллисекунды Значит мы давно в сво вот эту метрику придётся добавить Но вот конкретный инстанс нет ничего Мы про это не знаем нас никто не спрашивает фактически там отдел эксплуатации так смотрит что-то вот это вот тут у нас утилизация памяти 75% уже там 2 недели в полочку Ну давайте дадим им другой ИС примерно так всё будет происходить Ну и как бы Вот потому что из этого может родиться проблема что у нас инс такой мы не вылезаем ну О'кей мы
02:05:52 - 02:07:14
меняем кэш такого как у нас был мы вводим вытесняющие типа О мы теперь всегда влезай ресурсы Ну я смотри я тут можно настолько глобально подходить к вопросу это ну я дискутировать Можно бесконечно Туту тут можно уйти в дискуссию большую просто да да тут можно прямо далеко уходить и рассматривать различные ме Так ну что бо закругляться Ну в целом мне понравилось слушать об части и зрителям тоже У нас обычно когда мы подкаст Стрим у нас ну до 100 там доходит не всегда а т у нас в Пике человек смотрела правда вот потом второй
02:06:41 - 02:08:00
части из-за того что связь у во была не очень хорошая просела но это компенсирует с тем что у во Зато запись буде двух камер и на записи он будет лучше всех выглядеть так что потом пересмотрите записи Кто у кого будет проблемы Но я потом скидывал ссылку в версай и люди здесь смотрели у нас по-моему 40 и 30 человек прямо здесь так что здесь было слышно более-менее неплохо ладно Спасибо за участие Спасибо так оперативно особенно Антон ну Антон особый лайк Антону за то что вот за такое на коротком уведомлении
02:07:20 - 02:08:41
присоединился без подготовки ещё и как бы перед парой сотен человек вот так вот это сложно Я бы так не смог я бы наверно не слился не знаю YouTube закрываешь и такой типа ты на собе Как ничем отличается Как по мне Ну у меня было государст в общем спасибо До свидания и Спасибо всем кто смотрел Да Всем спасибо всем пока [музыка] счастливо
02:08:01 - 02:08:59