В этом формате кандидат должен быстро от и до решить полноценную задачу. Процесс не сильно отличается от настоящей работы. А сами алгоритмы можно пообсуждать без специальной экспертной подготовки. Этот формат позволяет нам оценить, готов ли человек к разработке. Для этого он должен уточнять детали, базово владеть языком программирования, тестировать решения и уметь искать баги.
Стоит заранее потренироваться с «уточкой»: научиться объяснять проблему вслух неодушевлённому предмету. Например, открыть LeetCode и прочитать условие задачи. Затем тщательно продумать решение так, чтобы не пришлось переписывать код по ходу. Доходчиво объяснить его «уточке». Желательно, чтобы даже она поняла. Например:
«Я иду двумя указателями. Левый двигаю, если в окне уже есть две заглавные буквы. Если нет, то правый. Так найду самое большое окно без двух них. Обновляю ответ на каждой итерации».
Когда вы уже написали код, обязательно проверьте себя. Постарайтесь не ошибаться в финальной версии решения. Чем ближе к реальному формату разработки, тем лучше!
Основная задача собеседующего — понять как можно больше про человека, который пришёл на интервью. Поэтому хорошо, если разработчик может попросить о помощи и умеет правильно формулировать проблемы. В такие моменты я стараюсь давать подсказки, которые подтолкнут человека к ответу. Всё-таки мы оба тут собрались, чтобы дорешать задачи к концу отведённого времени.
Выспитесь и обустройтесь так, чтобы ничего не мешало. Непосредственно перед интервью подготовьте лист бумаги с ручкой на всякий случай, налейте чаю или кофе, проверьте, работают ли камера и микрофон.
А в конце интервью, если останется время, можете задать вопросы про работу собеседующего. Это отличный способ узнать, что происходит в одной из команд Яндекса, даже если вы устраиваетесь в другое место.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24🔥15🗿6🙏4👍1🥱1😭1
Представьте себе ситуацию: каждую неделю двести бэкендеров запускают по два-три новых проекта в четырёх сотнях микросервисов на C++, Go, Python, Java и PHP. Именно так дела обстоят в Яндекс Еде.
Очень важно, чтобы все команды понимали, что новый запуск фичи ничего не сломает, не продублирует код смежников и не вызовет негативного эффекта на зависимости сервиса. С этим помогает архитектурное ревью — процесс, который вырос из локальной инициативы в полноценный инструмент управления изменениями. Про него рассказал Роман Юрасов, руководитель службы серверной разработки платформы Еды.
Результаты в цифрах:
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6🥴4❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Наши разработчики регулярно просматривают профильные источники и собирают то, что читают и смотрят сами. В рассылке — короткие подборки статей с Хабра, подкасты и видео, новости индустрии, полезные инструменты, а также ключевые мероприятия и технологические анонсы Яндекса.
В форме можно выбрать мультистек-дайджесты Yandex for Developers или подписаться на новости для конкретных специальностей — Frontend, ML и Analytics.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1
Инженеры Яндекс 360 накопили большой опыт в проектировании систем, которыми пользуются более 100 миллионов человек каждый месяц. И теперь готовы делиться знаниями и объединять вокруг себя единомышленников.
Покажем не только архитектурные решения, но и практический подход к созданию высоконагруженных сервисов, который используют инженеры Яндекс 360.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥11👏3
Привет, меня зовут Андрей Шукшов, в Яндекс R&D я пишу YNMT — движок инференса, на котором работают почти все наши LLM. Большую часть времени я пытаюсь понять, почему некоторые вещи работают медленно, а потом делаю их быстрее. Хочу поделиться с вами кейсом из своей практики:
Я разобрал по частям, почему Attention медленно работает на GPU в режиме генерации (декодирования), и написал fused kernel, который объединяет все операции, — чтобы выжать из железа максимум.
В статье на Хабре я рассказал, как решал эту задачу по шагам:
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Всем привет, меня зовут Евгений Козев, я руковожу командой NBS в Yandex Cloud. Сегодня расскажу о том, как работают сетевые диски, которые реализуют блочное хранилище и без которых не обходится ни одна виртуальная машина.
Представьте классическую аппаратную систему хранения данных (СХД): вы берёте стойку, набираете в неё диски и подключаете к компьютеру. Это работает, но у такого подхода есть большой недостаток — отсутствие миграции. Нельзя просто взять и передвинуть виртуальную машину на другой хост, потому что она привязана к вашей СХД.
Чтобы её можно было переключать между железными устройствами и подключать к хранилищу по сети, нужна прослойка. А дальше одной СХД уже не хватает. Поэтому приходится строить распределённую систему с оркестраторами, которые выдают доступ к дискам.
Допустим, что вы — небольшая IT-компания, которой хватит готового решения из OpenStack, например Ceph. Это популярная платформа, ей больше 15 лет. Но рано или поздно вы начнёте расти. А когда клиентов станет много, такую систему будет сложно масштабировать. И вам придётся разбираться, как это всё поддерживать.
В итоге вам нужна расширяемая система, которая обеспечивает доступность для клиентов, даёт нужный перформанс, легко масштабируется, не требует больших затрат на эксплуатацию и хранит данные без потерь (это важно!).
Вы как пользователь приходите в региональный сервис Compute, который берёт железный хост в выбранном вами дата-центре и создаёт там Instance с гипервизором — вашу виртуальную машину. А мы как NBS должны присоединиться к нему так, чтобы появились сетевые диски.
У нас есть сервис Disk Manager. Он принимает запросы от Compute и определяет, что хочет сделать пользователь: снять снапшот с диска, создать или удалить его и так далее. Запросы могут идти в разные дата-центры.
Далее мы идём в NBS-control. Это сервис, который отвечает за создание дисков, работу с ними, их увеличение и уменьшение. Он находит железный хост, на котором запущен ваш Instance, и создаёт на нём Volume — логическую сущность с ID диска, его размером и лимитами. Он подключается к гипервизору через протокол virtio-blk, и в вашей виртуальной машине появляется блочное устройство по адресу /dev/vdb.
Для SSD и HDD используем YDB — Yandex Database, СУБД с открытым исходным кодом. Физические диски (pdisk) собираются в виртуальные (vdisk). Из восьми vdisk’ов получается группа. Для репликации, чтобы был консенсус, нужно именно такое количество.
Когда пользователь пишет блок данных, система разделяет этот элемент на четыре части и добавляет к ним ещё две. Это даёт отказоустойчивость ценой накладных расходов. На 1 Мб данных пользователя мы сохраняем 1,5 Мб, но если что-то выйдет из строя, то мы сможем их восстановить.
P. S. В рамках ежегодного митапа about:cloud — infrastructure я также поговорил о трёх процессах, на которые уходят ресурсы нашей системы. Смотрите мою часть выступления здесь.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5❤🔥2👍1