fa
Feedback
2 955
مشترکین
-224 ساعت
+47 روز
+4430 روز
آرشیو پست ها
Свежее интервью с Дмитрием Долговом Это основатель компании Waymo. Компания делает беспилотные такси. Они уже работают в Калифорнии. Сам Дмитрий, закончил МФТИ в 2000 году. Далее PhD в штатах и постдок в Стэнфорде. https://youtu.be/I_0Kuf6Aa2c?si=eM0kqMaUI4XUKVBm

Топ AI-компании, которые нанимают прямо сейчас в Лондоне Нанимают не только ML инженеров, но и обычных программистов. 1) Google DeepMind. Компания основанная в Лондоне, позже купленная Google. 34 вакансии 2) OpenAI. Создатель ChatGPT. 28 вакансий. 3) Anthropic. Создатель Claude. 40 вакансий. 4) CoreWeave. Облачный провайдер для AI. 23 вакансии. 5) Scale AI. Стартап, купленный Meta за 14 миллиардов долларов. Ключевая технология для обучения современных LLM. 15 вакансий. 6) Cohere. Делают LLM и RAG для бизнеса. 48 вакансий. 7) ElevenLabs. Лидеры в синтезе речи (Text-to-Speech). 15 вакансий. 8) Wayve. Беспилотные автомобили. 15 вакансий. 9) Synthesia. Генерация видео и аватаров. Основана в Лондоне. 68 вакансий. 10) Microsoft AI. 29 вакансий. 11) Isomorphic Labs. Выросла из Google DeepMind. Занимается поиском лекарств на основе AlphaFold. 22 вакансии. 12) Palantir. AI для спецслужб. 34 вакансии. 13) Mistral AI. Европейский Open AI. 42 вакансии.

Конец Метаверса Мета сворачивает Метаверс. Все ресурсы перенаправляются в AI. В начале 2026 сократили 1.5 тысячи человек в RL
+1
Конец Метаверса Мета сворачивает Метаверс. Все ресурсы перенаправляются в AI. В начале 2026 сократили 1.5 тысячи человек в RL(Reality Labs). Это отдел, который занимается метаверсом. В этом году Horizon Worlds перестанет быть доступным в шлеме виртуальной реальности Meta Quest 3. Пока его не сворачивают полностью. Он теперь будет доступен как мобильное приложение. Попытается конкурировать с Roblox (спойлер, ничего из этого не выйдет скорее всего). Я сейчас походил по разным мирам, многие из них похожи на зону отчуждения. Большие миры, где никого нет. Там где кто-то есть - в основном дети. Чувствуешь себя очень крипово. Взрослой аудитории очень мало, не с кем поболтать.

Теперь я официально гражданин Великобритании🎉🎉🎉
+3
Теперь я официально гражданин Великобритании🎉🎉🎉

В субботу у меня церемония получения гражданста В UK я уже 5 лет и 5 месяцев. Кратко мой путь по документам: 1) Приехал по Skilled Worker Visa 2) Через 2.5 года получил Global Talent Visa. Это позволило не иметь зависимость от работодателя, а также получить ILR(ПМЖ) за 3 года, вместо 5. 3) Еще через полгода(через 3 года после приезда в UK) получил ILR. Это дает право вечно жить в UK. 4) Спустя 5 лет подал на гражданство. 5) Спустя 4 месяца после подачи получил одобрение. 6) В субботу церемония с произнесением клятвы Королю. И можно подать на получение паспорта. Это даст возможность ездить в кучу стран без виз. Сейчас в UK планируют изменения в плане миграционного законодательства. В частности повысили минимальную зп для получения Skilled Worker до ~£55k в год. Английский повысили с B1 до B2. Также планируют повысить срок на получение ПМЖ до 10 лет. Но 10 лет можно будет сократить до 5 иди даже до 3 лет в зависимости от баллов. Для программистов, по всей видимости ничего не изменится. Т.к. условия получения Skilled Worker визы позволяют получить нужное число балов для сокращения срока до 5 лет. А если у вас зп выше £125k, то вообще до 3 лет. Т.е. если изменения примут, то программисты могут от этого даже выиграть. Для получения гражданства сейчас надо 5 лет до ПМЖ + 1 год до гражданства. У меня получилось 3 года до ПМЖ + 2 года до гражданства. Global Talent виза позволила сократить срок на 1 год.

Завтра стрим в 18:00 по Лондону или 20:00 по Москве https://www.youtube.com/live/IXBiHsXoYw4?si=38zMsn7hch919pqe

В этом году число сокращений будет, с большой вероятностью, больше чем в 2024 и 2025. При чем, будут сокращения уже реально и
+1
В этом году число сокращений будет, с большой вероятностью, больше чем в 2024 и 2025. При чем, будут сокращения уже реально из за AI. Хотя при этом число вакансий продолжает расти.

Сегодня будет второй стрим, снова порешаем ~5 задач. https://youtube.com/live/dsRkFge7Z9U?feature=share

Мета выпускает модель Avocado под публичным названием Muse Spark. На предрелизных бенчмарках идет на третьем месте. Но думаю
Мета выпускает модель Avocado под публичным названием Muse Spark. На предрелизных бенчмарках идет на третьем месте. Но думаю провалится сильно ниже после публичного релиза. 4 лама тоже была достаточно высоко на предрелизе.

Зак снова начал писать код Летом прошлого года Зак схантил десятки людей на зп с десятки и сотни миллионов долларов. Купил Scale AI за 14 миллиардов долларов. Выделили сотни миллиардов на инфраструктуру под AI. Но за 9 месяцев сделать топовую модель так и не получилось. Новая модель получила рабочее название Avocado. На предварительных тестах она на уровне прошлогодней Gemini 2.5. И хуже Gemini 3.1. Поэтому ее релиз откладывается. В Мета планируется супер мега лейоф. Сам Зак перетащил рабочий стол ближе к команде, которая делает эту модель. И даже сам начал писать код и пушить комиты.

Получил странное сообщение в линкедине. Похоже на спам или на то, что Китай инвестирует в промышленный шпионаж.
+1
Получил странное сообщение в линкедине. Похоже на спам или на то, что Китай инвестирует в промышленный шпионаж.

Первый стрим состоится завтра 15 апреля в 20:00 по московскому времени Никогда до этого не стримил. Посмотрим как пойдет. Ссылка на стрим: https://youtube.com/live/r4j948IVlEY?feature=share

Планирую порешать leetcode в течении следующего месяца. Цель 100 задач. Не самые сложные и редкие. Для среднего уровня, чтобы вернуть форму. Если будет желание, могу постримить процесс решения на youtube. За стрим по ~5 задач.
Anonymous voting

Нужно ли ботать алгосы, если вы ML Engineer и хотите в FAANG? Если вы хотите в Meta, Amazon, Apple, Google, Microsoft, Uber и т.д. на позицию ML Engineer, то на собесе у вас будет столько же кодинг раундов на алгосы, сколько и у обычных программистов. У вас будет ML дизайн раунд вместо System/Product design. Но алгосы точно такие же.

Сколько нужно решить задач по алгосам в 2026, чтобы пройти в FAANG? Тут завит от вашего изначального уровня: 1) Топ олимпиадник. У вас бэкграунд топового олимпиадника. Вы побеждали/были призером крупных соревнований на уровне страны или международном уровне. В таком случае 50-100 будет достаточно. Просто отфильтруйте задачи на leetcode по компании, в которую вы хотите, и решите топ 30-100 по частоте встречаемости. Если не готовиться вообще, то есть риск реджекта, т.к. собесы и олимпиады это разные жанры. Нередко собеседовал крутых олимпиадников и они получали реджект по одной или нескольким осям(problem solving, coding, verification, communication). 2) Уже в FAANG. Например, вы работаете в Amazon или Microsoft, но хотите в Google или Meta. Возможно, вам придется прокачать дополнительно некоторые темы. Вроде динамического программирования, деревьев, графов. Это в дополнение к решению задач под конкретную компанию. Поэтому, это может быть 100-300 задач. 300 скорее всего потребуется, если хотите в Google, т.к. туда самое сложное кодинг собеседование. 3) Средний программист. Вы не побеждали в олимпиадах, кодить умеете хорошо, но алгосы не особо решали. Я бы ориентировался на 300-600 задач. 600 - это, если вы сразу хотите в Google. Для большинства FAANG или около FAANG хватит 300, из которых 150+ это medium задачи на leetcode. Это не обязательно задачи на leetcode. Это в сумме на всех ресурсах, которые вы используете для подготовки. Это может быть: 1) https://leetcode.com/ 2) https://www.algoexpert.io 3) https://neetcode.io/ 4) Cracking the coding interview И другие ресурсы, которые я рекомендовал ранее.

5) Массив один. Нужно поменять его in-place. Первый указатель начинает с начала. Второй где-то внутри массива. Оба идут в одном направлении к концу массива. Или как в самом первом варианте - первый указывает на начало массива, второй на конец. Указатели двигаются на встречу друг другу. Есть еще большая связанная тема - интервалы. Ее я разберу отдельным постом.

Шаблон решения задач на Two Pointers. Существенная часть задач на собеседованиях в FAANG-компании по алгоритмам - задачи на массивы, строки и связные списки. Множество из них решается при помощи подхода, который называется Two Pointers. Какие признаки того, что задача на Two Pointers? 1) В условии есть массив, строка или связный список (или данные задачи можно к ним свести). 2) Массив, строка или список в задаче отсортированные или их можно отсортировать (тогда сложность с линейной повысится до O(n*logn)). 3) В условии не один массив/строка/список, а два. 4) По логике задачи вам надо суммировать/умножать или сравнивать разные элементы из одного и того же массива/строки/списка 5) Аналогично предыдущему, для случая если у вас два массива/строки/списка - по логике задачи вам нужно суммировать/умножать или сравнивать элементы из двух/нескольких массивов/строк/списков. 6) В условии сказано, что нужно найти пару, тройку, четверку чисел из заданного массива 7) В условии описываются интервалы времени, с которыми нужно что-то сделать (смержить по какому-то критерию, найти окно в расписании и т.д.) 8) С условии идет речь про палиндромы. 9) Нужно изменить массив/строку in-place (без дополнительных структур данных и доп. памяти). Метод Two Pointers сводится к тому, что вы идете циклом по вашему массиву/строке/списку при помощи не одного указателя/индекса, а при помощи двух указателей/индексов. Типичный код, который циклом идет по массиву при помощи одного указателя i:
for (int i = 0; i < arr.length; i++) {
    ....
}
В методе Two Pointers, вам одновременно нужно использовать два указателя. Тут может быть несколько вариантов в зависимости от задачи: 1) Массив один. Первый указатель вначале указывает на начало массива, а второй на конец массива. Указатели двигаются на встречу друг другу:
int left = 0;
int right = arr.length - 1;
while (left < right) {
    {calculate_something}
    {return_break_condition}
    if ({left_move_condition}) {
        {when_move_left_logic}
        left++;
    } else if ({right_move_condition}) {
        {when_move_right_logic}
        right--;
    }
}
{calculate_something} - какие-то вычисления или логика, специфичная для задачи. {return_break_condition} - условие окончания работы алгоритма, если его можно прервать раньше, чем left станет равным или большим, чем right. {left_move_condition} - условие, когда двигать левый указатель. {right_move_condition} - условие, когда двигать правый указатель. {when_move_left_logic} - какая-то доп. логика, если нужно ее выполнить, когда двигаем левый указатель. {when_move_right_logic} - какая-то доп. логика, если нужно ее выполнить, когда двигаем правый указатель. 2) Массив один. Оба указателя вначале указывают на середину массива. Далее двигаются в противоположные стороны:
int left = (arr.length - 1)/2;
int right = (arr.length - 1)/2;
while (left >= 0 && right < arr.length) {
    {calculate_something}
    {return_break_condition}
    if ({left_move_condition}) {
        left--;
    } else if ({right_move_condition}) {
        right++;
    }
}
3) Массива два. Оба указателя начинают с начала первого и второго массива соответственно. В одном цикле идем по двум массивам одновременно:
int i = 0;
int j = 0;
while (i < arr1.length {&&/||} j < arr2.length) {
    {calculate_something}
    {return_break_condition}
    if ({i_move_condition}) {
        {when_move_i_logic}
        i++;
    } else if ({j_move_condition}) {
        {when_move_j_logic}
        j++;
    }
}
4) Список/Массив/Строка одна. Идем двумя указателями, которые стартуют с начала, но с разной скоростью. Fast and Slow Pointers. Например, вначале подвинем первый указатель сразу на k-позиций. Далее будем двигать оба указателя с одной скоростью. Тогда в конце, один указатель будет сдвинут на k-позиций относительно первого. 5) Массив один. Нужно поменять его in-place. Первый указатель начинает с начала. Второй где-то внутри массива. Оба идут в одном направлении к концу массива. Или как в самом первом варианте - первый указывает на начало массива, второй на конец. Указатели двигаются на встречу друг другу.

Иногда, возвращаемое значение и ответ задачи - это разные величины. В таком случае нужно возвращать пару величин или обновлять глобальную переменную, которая и будет ответом.
int globalResult = 0;

int solve(TreeNode root) {
    traverse(root);
    return globalResult;
}

int traverse(TreeNode node, int value) {
    if (node == null) {
        return {base_value};
    }
    int leftResult = 0;
    if ({left_condition}) {
        leftResult = traverse(node.left, {foo(value)});
    }
    int rightResult = 0;
    if ({right_condition}) {
        traverse(node.right, {bar(value)}); 
    }
    globalResult = {g(leftResult, rightResult, node.value)};
    return {f(leftResult, rightResult, node.value)};
}
Смотри также: 1) Шпаргалка по основным алгоритмам для алгоритмического собеседования 2) Шпаргалка по Java для алгоритмического собеседования 3) Разобрал все основные алгоритмы и 47 задач с собеседований на алгоритмы в FAANG