Заменят ли программистов нейросети в ближайшем будущем? Update
Прошлый подобный пост я писал 6 месяцев назад, спустя год после выхода нашумевшего ChatGPT 3: Часть 1, Часть 2.
Есть ли какие-то изменения, которые повлияли на мою оценку? Какие мои текущие соображения по этому поводу?
Начну со своего личного опыта использования и реального влияния нейросетей на меня и мою работу:
1) Хайп и холивары. Хайп, по прежнему, вокруг этой темы большой. Все вокруг об этом говорят, как на работе, так и в обычной жизни. Снимается тонна видео и пишется тонна статей. Часто, при обсуждении возникает два противоположных лагеря и начинаются споры с пеной у рта. Google Trends по прежнему показывает некоторый рост популярности темы, но темп роста популярности темы замедлился. За полгода он вырос на 15%.
2) Легче стало читерить на собеседовании. Т.к. все еще много компаний проводят собеседования или полностью или частично онлайн, то с использованием ChatGPT и подобным им моделям, стало проще найти правильный и оптимальный ответ или решение задачи с собеседования. Раньше читерить тоже было возможно, но нужно было параллельно гуглить, смотреть разные сайты, на которых поиск мог быть базовым и не всегда удавалось найти быстро правильный ответ. С использованием ChatGPT, можно все спрашивать в одном окне чата и быстро получать правильные ответы на простые вопросы с собеседования, для которых не нужен большой контекст. Но в большинстве случаев читерство распознается и наказывается. Т.к. кандидат хоть и говорит правильный ответ, но он не может его пояснить или путается в тривиальных уточняющих вопросах. Смотри случаи с собеседований: Случай 1, Случай 2. Специальная галочка, про подозрения.
3) Появились ChatGPT подобные и другие тулы на основе LLM. В компании появилось много тулов на основе LLM. Как то, обычные, чат подобные, решения, так и встроенные в среду разработки и другие тулы. Тулы более кастомизированные под работу внутри компании, т.к. обученные на внутренней документации и внутреннем коде по типу Copilot. Но к их юзабельности и полезности есть вопросы. Чат подобные тулы помогают немного поправить мой кривой письменный английский. Но только при уже написанной фразе. Просить сгенерировать с нуля какой-то текст плохая идея. Текст будет написан в другой стилистике и с другим смыслом, хотя и похожим на то, что нужно. А спрашивать что-то - не лучше, чем обычный поиск. Т.к. документация в IT компаниях всегда хромает и обучение на ней не сильно прибавляет юзабилити. Тулы типа Coopilot иногда угадывают простые функции, которые хочешь написать. Вроде всяких утилитарных вещей. Что и так не заняло бы много времени или можно было бы найти на stackoverflow или внутренних ресурсах. Но это иногда добавляет немного юзабилити, что не надо много времени тратить на тупой код. Но не более того. Все остальные варианты использования провалились. Мне не понравилось качество результата или просто бесполезные для меня функции.
За полгода вышло множество новых версий и фич на LLM: ChatGPT-4o, meta.ai, google внедрил LLM во все свои продукты. Но пока, кроме wow эффекта они для меня ничего не производят. Типа выглядит круто, но буду ли я это все использовать - сомнительно. Или буду, но какого-то импакта, что это хоть кого-то заменит не видно.
За полгода я не заметил какого-то существенно приближения момента замены программистов.
Прошлый подобный пост я писал 6 месяцев назад, спустя год после выхода нашумевшего ChatGPT 3: Часть 1, Часть 2.
Есть ли какие-то изменения, которые повлияли на мою оценку? Какие мои текущие соображения по этому поводу?
Начну со своего личного опыта использования и реального влияния нейросетей на меня и мою работу:
1) Хайп и холивары. Хайп, по прежнему, вокруг этой темы большой. Все вокруг об этом говорят, как на работе, так и в обычной жизни. Снимается тонна видео и пишется тонна статей. Часто, при обсуждении возникает два противоположных лагеря и начинаются споры с пеной у рта. Google Trends по прежнему показывает некоторый рост популярности темы, но темп роста популярности темы замедлился. За полгода он вырос на 15%.
2) Легче стало читерить на собеседовании. Т.к. все еще много компаний проводят собеседования или полностью или частично онлайн, то с использованием ChatGPT и подобным им моделям, стало проще найти правильный и оптимальный ответ или решение задачи с собеседования. Раньше читерить тоже было возможно, но нужно было параллельно гуглить, смотреть разные сайты, на которых поиск мог быть базовым и не всегда удавалось найти быстро правильный ответ. С использованием ChatGPT, можно все спрашивать в одном окне чата и быстро получать правильные ответы на простые вопросы с собеседования, для которых не нужен большой контекст. Но в большинстве случаев читерство распознается и наказывается. Т.к. кандидат хоть и говорит правильный ответ, но он не может его пояснить или путается в тривиальных уточняющих вопросах. Смотри случаи с собеседований: Случай 1, Случай 2. Специальная галочка, про подозрения.
3) Появились ChatGPT подобные и другие тулы на основе LLM. В компании появилось много тулов на основе LLM. Как то, обычные, чат подобные, решения, так и встроенные в среду разработки и другие тулы. Тулы более кастомизированные под работу внутри компании, т.к. обученные на внутренней документации и внутреннем коде по типу Copilot. Но к их юзабельности и полезности есть вопросы. Чат подобные тулы помогают немного поправить мой кривой письменный английский. Но только при уже написанной фразе. Просить сгенерировать с нуля какой-то текст плохая идея. Текст будет написан в другой стилистике и с другим смыслом, хотя и похожим на то, что нужно. А спрашивать что-то - не лучше, чем обычный поиск. Т.к. документация в IT компаниях всегда хромает и обучение на ней не сильно прибавляет юзабилити. Тулы типа Coopilot иногда угадывают простые функции, которые хочешь написать. Вроде всяких утилитарных вещей. Что и так не заняло бы много времени или можно было бы найти на stackoverflow или внутренних ресурсах. Но это иногда добавляет немного юзабилити, что не надо много времени тратить на тупой код. Но не более того. Все остальные варианты использования провалились. Мне не понравилось качество результата или просто бесполезные для меня функции.
За полгода вышло множество новых версий и фич на LLM: ChatGPT-4o, meta.ai, google внедрил LLM во все свои продукты. Но пока, кроме wow эффекта они для меня ничего не производят. Типа выглядит круто, но буду ли я это все использовать - сомнительно. Или буду, но какого-то импакта, что это хоть кого-то заменит не видно.
За полгода я не заметил какого-то существенно приближения момента замены программистов.
👍13🔥3
Основные преграды на этом пути:
1) Отсутствие агентности. Все тулы или решения на основе LLM работают в режиме запрос-ответ. Т.е. нужен кто-то, кто будет эти запросы отправлять и использовать результаты работы LLM. Т.е. некий оператор. Даже в самых оптимистичных сценариях, изменится лишь стиль работы программиста. В котором, часть с написанием кода он заменит на промт-инжиниринг. Но пока и до этого далеко. Пока LLM хорошо работает с Hello World задачами из туториалов. С реальными проектами на миллионы строк, попросить его самому разобраться в коде и поменять все так как тебе нужно при очень приблизительном описании он не может. Т.е. пока нельзя даже сделать из программистов - промт-инженеров не получается. Не то, что заменить всех программистов на менеджеров, которые не могут оценить и проверить результат, который выдает LLM и тем более его использовать. Есть какие-то попытки добавить агентности, но они все основаны на захардкоженых алгоритмах и API разных тулов, которые позволяют создать pull-request и деплоить. На пальцах с нуля объяснить LLM свой тех стек и сказать иди учись, а потом давать high level задачи не получается.
2) Колоссальное число ошибок и неспособность к самопроверке. LLM всегда выдает какой-то результат. Не важно, он правильный или нет. Она выдает какой-то правдоподобный текст. Она не говорит, тут я уверена, тут нет, тут знаю, тут не знаю. Она всегда генерирует какой-то текст или код. Поэтому пока всегда нужен кто-то, кто будет это все проверять. Тот же оператор-программист.
3) Отсутствие агентности в коммуникации. Если брать не Junior программистов - то программист большую часть времени не занимается написанием кода. Существенную часть времени у него занимает общение с коллегами. Или в чатах или на митингах. Т.е. большая часть информации и мнений существует не в виде текстов, а в виде мыслей в голове или памяти. LLM не занимается самостоятельно поиском нужных людей, с кем поговорить, что и у кого нужно выяснить, о чем договориться, что обсудить и т.д.
Т.е. пока мое мнение такое, что сейчас LLM не способны заменить даже Junior программистов. Но в ближайшем будущем скорее всего смогут. Смогут ли заменить программистов начиная с уровня Middle, Senior и выше, пока не видно таких технологий. Но тогда возникает вопрос, а если заменят Junior, откуда возникнут новые Middle и Senior? Поэтому все равно придется компаниям нанимать программистов на вырост, даже если их перфоманс первый год-два будет ниже чем просто взять LLM за три копейки. Но это не значит, что полная замена никогда не произойдет. Просто, я пока не вижу таких технологий. Но все быстро развивается и нет гарантий, что они не появятся в будущем или даже в ближайшем будущем.
1) Отсутствие агентности. Все тулы или решения на основе LLM работают в режиме запрос-ответ. Т.е. нужен кто-то, кто будет эти запросы отправлять и использовать результаты работы LLM. Т.е. некий оператор. Даже в самых оптимистичных сценариях, изменится лишь стиль работы программиста. В котором, часть с написанием кода он заменит на промт-инжиниринг. Но пока и до этого далеко. Пока LLM хорошо работает с Hello World задачами из туториалов. С реальными проектами на миллионы строк, попросить его самому разобраться в коде и поменять все так как тебе нужно при очень приблизительном описании он не может. Т.е. пока нельзя даже сделать из программистов - промт-инженеров не получается. Не то, что заменить всех программистов на менеджеров, которые не могут оценить и проверить результат, который выдает LLM и тем более его использовать. Есть какие-то попытки добавить агентности, но они все основаны на захардкоженых алгоритмах и API разных тулов, которые позволяют создать pull-request и деплоить. На пальцах с нуля объяснить LLM свой тех стек и сказать иди учись, а потом давать high level задачи не получается.
2) Колоссальное число ошибок и неспособность к самопроверке. LLM всегда выдает какой-то результат. Не важно, он правильный или нет. Она выдает какой-то правдоподобный текст. Она не говорит, тут я уверена, тут нет, тут знаю, тут не знаю. Она всегда генерирует какой-то текст или код. Поэтому пока всегда нужен кто-то, кто будет это все проверять. Тот же оператор-программист.
3) Отсутствие агентности в коммуникации. Если брать не Junior программистов - то программист большую часть времени не занимается написанием кода. Существенную часть времени у него занимает общение с коллегами. Или в чатах или на митингах. Т.е. большая часть информации и мнений существует не в виде текстов, а в виде мыслей в голове или памяти. LLM не занимается самостоятельно поиском нужных людей, с кем поговорить, что и у кого нужно выяснить, о чем договориться, что обсудить и т.д.
Т.е. пока мое мнение такое, что сейчас LLM не способны заменить даже Junior программистов. Но в ближайшем будущем скорее всего смогут. Смогут ли заменить программистов начиная с уровня Middle, Senior и выше, пока не видно таких технологий. Но тогда возникает вопрос, а если заменят Junior, откуда возникнут новые Middle и Senior? Поэтому все равно придется компаниям нанимать программистов на вырост, даже если их перфоманс первый год-два будет ниже чем просто взять LLM за три копейки. Но это не значит, что полная замена никогда не произойдет. Просто, я пока не вижу таких технологий. Но все быстро развивается и нет гарантий, что они не появятся в будущем или даже в ближайшем будущем.
❤9👍5🤔2🔥1
В чем преимущество получения части компенсации в виде акций публичных компаний?
В FAANG компаниях, и во многих других Big Tech компаниях (Microsoft, Lyft, Uber, Two Sigma, Jane Street, Citadel), существенная часть вашей компенсации выдается вам в виде акций этой компании. Эти акции будут приходить вам на брокерский счет и они полностью ликвидны. Вы одним нажатием можете их продать по текущей рыночной цене и превратить их к кэш. А основное преимущество в том, что они имеют тенденцию к росту.
Давайте рассмотрим на реальном оффере в одну из FAANG компаний и посмотрим, как будет меняться компенсация, даже если человек не промоутится и работает средне для своего уровня.
Это офер на Senior позицию в FAANG в Лондон в 2020 году:
1) Базовая зп - £100k в год
2) 15% - годовой бонус
3) Акции в сумме $360k на 4 года по текущей цене в $280 за акцию. Акции будут выплачиваться равными порциями, раз в 3 месяца. Но акции будут вам выдаваться в штуках, а не в долларах. Поэтому это означает, что вам дадут 1285 акций на 4 года, которые будут приходить равными порциями раз в 3 месяца. Или 80 акций раз в 3 месяца, сколько бы они не стоили в данный момент.
Давайте посчитаем ожидаемый доход в первый год, если цена акций не изменится:
TC (Total Compensation) = £100k + £100k * 15% + 80 * 4 * $280 = £185k или $236k в год.
Теперь, скажем, он проработал 3 года в компании, не промоутился. Зп ему подняли на 20% за 3 года для компенсации инфляции. Но при этом цена акций увеличилась с $280 до $490 за акцию. Давайте рассчитаем, сколько он будет зарабатывать, если ему не давали новых акций за хороший перфоманс (рефрешеры), а только то, что было в начальном оффере.
Тогда он будет зарабатывать:
TC (Total Compensation) = £120k + £120k * 15% + 80 * 4 * $490 = £261k или $332k в год.
Т.е. просто из-за роста акций, со средним перфомансом, без учета рефрешеров (а они обычно всегда даются, даже при среднем перфомансе), его компенсация выросла на 40%.
В FAANG компаниях, и во многих других Big Tech компаниях (Microsoft, Lyft, Uber, Two Sigma, Jane Street, Citadel), существенная часть вашей компенсации выдается вам в виде акций этой компании. Эти акции будут приходить вам на брокерский счет и они полностью ликвидны. Вы одним нажатием можете их продать по текущей рыночной цене и превратить их к кэш. А основное преимущество в том, что они имеют тенденцию к росту.
Давайте рассмотрим на реальном оффере в одну из FAANG компаний и посмотрим, как будет меняться компенсация, даже если человек не промоутится и работает средне для своего уровня.
Это офер на Senior позицию в FAANG в Лондон в 2020 году:
1) Базовая зп - £100k в год
2) 15% - годовой бонус
3) Акции в сумме $360k на 4 года по текущей цене в $280 за акцию. Акции будут выплачиваться равными порциями, раз в 3 месяца. Но акции будут вам выдаваться в штуках, а не в долларах. Поэтому это означает, что вам дадут 1285 акций на 4 года, которые будут приходить равными порциями раз в 3 месяца. Или 80 акций раз в 3 месяца, сколько бы они не стоили в данный момент.
Давайте посчитаем ожидаемый доход в первый год, если цена акций не изменится:
TC (Total Compensation) = £100k + £100k * 15% + 80 * 4 * $280 = £185k или $236k в год.
Теперь, скажем, он проработал 3 года в компании, не промоутился. Зп ему подняли на 20% за 3 года для компенсации инфляции. Но при этом цена акций увеличилась с $280 до $490 за акцию. Давайте рассчитаем, сколько он будет зарабатывать, если ему не давали новых акций за хороший перфоманс (рефрешеры), а только то, что было в начальном оффере.
Тогда он будет зарабатывать:
TC (Total Compensation) = £120k + £120k * 15% + 80 * 4 * $490 = £261k или $332k в год.
Т.е. просто из-за роста акций, со средним перфомансом, без учета рефрешеров (а они обычно всегда даются, даже при среднем перфомансе), его компенсация выросла на 40%.
👍11
Построил график своих доходов за всю карьеру в IT (17 лет).
2007 - Начало
2012 - Стал Лидом
2016 - Переезд в Европу
2017 - Начало работы в FAANG
2022 - Обвал стоков, массовые сокращения, получение рефрешеров
2023 - быстрый рост стоимости акций
За все время 2.2 миллиона долларов.
Если будет интересна детализация по конкретным числам, пишите в комментариях
2007 - Начало
2012 - Стал Лидом
2016 - Переезд в Европу
2017 - Начало работы в FAANG
2022 - Обвал стоков, массовые сокращения, получение рефрешеров
2023 - быстрый рост стоимости акций
За все время 2.2 миллиона долларов.
Если будет интересна детализация по конкретным числам, пишите в комментариях
👍22
С учетом комментариев, сделал расчет зп в месяц на руки (после оплаты налогов). Также сделал зум на первых годах карьеры, до переезда. Учить многопоточность я начал в 2014. Учить алгоритмы и system design я начал в 2015.
👍16❤2👎1
Сколько выходцев из СНГ работает в FAANG/Big Tech компаниях?
Я работал в двух FAANG компаниях. Работал в Европейских офисах и неоднократно бывал в командировках в офисах США, а также постоянно взаимодействую с коллегами из разных офисов. Моя личная оценка, что в Европейских офисах выходцев из СНГ работает 10-20% на инженерных позициях. В офисах США немного меньше (5-10%) . В целом можно сделать оценку в 10% от общего числа программистов.
А сколько это в абсолютных числах?
Для этого нужно ответить на вопрос, сколько программистов в FAANG/Big Tech компаниях. Я проделал такую оценку на основе профилей в Linkedin.
Я разделил FAANG/Big Tech компании на 3 уровня, в зависимости от сложности собеседования и уровня компенсации. Tier 1 - туда сложнее всего попасть и самые высокие зп. В подборку я включил 11 компаний.
Для каждой компании приведены 3 цифры: число профилей на Linkedin, число программистов, оценка числа выходцев из СНГ. Например, Google: 287k/80k/8k - в Google работает 287k человек, из них 80k программисты, и моя оценка числа выходцев из СНГ. Или Amazon: 736k/112k/11.2k. В Amazon работает больше людей (1.5M), но половина из них не имеет профилей на Linkedin, т.к. это, в основном, рабочие складов, доставщики и т.д. Программистов всего - 112k (когда я там работал их было 100k, после был сильный рост, после были массовые сокращения). Я не уверен на 100% в этой цифре, но она дает правильный порядок величины.
Tier 1:
Google: 287k/80k/8k
Facebook: 119k/32k/3.2k
Netflix: 15k/2.5k/0.25k
Two Sigma: 2.2k/0.7k/0.07k
Всего программистов: 115k/СНГ(оценка): 11.5k
Tier 2:
Amazon: 736k/112k/11.2k
Apple: 172k/36k/3.6k
Uber: 97k/8.2k/0.8k
Lyft: 23k/1.7k/0.17k
Citadel:4.4k/0.8k/0.08k
Jane Street: 2.2k/0.5k/0.05k
Всего программистов: 159.2k/СНГ(оценка): 15.9k
Tier 3:
Microsoft: 228k/102k/10.2k
Итого:
Всего программистов (FAANG/Big Tech): 376k/СНГ(оценка): 37.6k
Т.е. по моим оценкам в топ-IT компаниях работает ~400k программистов, из них примерно 40k программистов - выходцы из СНГ. В основном, это выходцы из России, Украины, Казахстана и Белоруссии. Но представлены все страны.
Я работал в двух FAANG компаниях. Работал в Европейских офисах и неоднократно бывал в командировках в офисах США, а также постоянно взаимодействую с коллегами из разных офисов. Моя личная оценка, что в Европейских офисах выходцев из СНГ работает 10-20% на инженерных позициях. В офисах США немного меньше (5-10%) . В целом можно сделать оценку в 10% от общего числа программистов.
А сколько это в абсолютных числах?
Для этого нужно ответить на вопрос, сколько программистов в FAANG/Big Tech компаниях. Я проделал такую оценку на основе профилей в Linkedin.
Я разделил FAANG/Big Tech компании на 3 уровня, в зависимости от сложности собеседования и уровня компенсации. Tier 1 - туда сложнее всего попасть и самые высокие зп. В подборку я включил 11 компаний.
Для каждой компании приведены 3 цифры: число профилей на Linkedin, число программистов, оценка числа выходцев из СНГ. Например, Google: 287k/80k/8k - в Google работает 287k человек, из них 80k программисты, и моя оценка числа выходцев из СНГ. Или Amazon: 736k/112k/11.2k. В Amazon работает больше людей (1.5M), но половина из них не имеет профилей на Linkedin, т.к. это, в основном, рабочие складов, доставщики и т.д. Программистов всего - 112k (когда я там работал их было 100k, после был сильный рост, после были массовые сокращения). Я не уверен на 100% в этой цифре, но она дает правильный порядок величины.
Tier 1:
Google: 287k/80k/8k
Facebook: 119k/32k/3.2k
Netflix: 15k/2.5k/0.25k
Two Sigma: 2.2k/0.7k/0.07k
Всего программистов: 115k/СНГ(оценка): 11.5k
Tier 2:
Amazon: 736k/112k/11.2k
Apple: 172k/36k/3.6k
Uber: 97k/8.2k/0.8k
Lyft: 23k/1.7k/0.17k
Citadel:4.4k/0.8k/0.08k
Jane Street: 2.2k/0.5k/0.05k
Всего программистов: 159.2k/СНГ(оценка): 15.9k
Tier 3:
Microsoft: 228k/102k/10.2k
Итого:
Всего программистов (FAANG/Big Tech): 376k/СНГ(оценка): 37.6k
Т.е. по моим оценкам в топ-IT компаниях работает ~400k программистов, из них примерно 40k программистов - выходцы из СНГ. В основном, это выходцы из России, Украины, Казахстана и Белоруссии. Но представлены все страны.
👍13
Распределение по уровням в FAANG
В FAANG компаниях уровни разработчиков не ограничиваются Junior, Middle, Senior. Обычно их 6-7 уровней. Иногда даже больше. В некоторых компаниях у вас даже не меняется тайтл при смене уровня. В Facebook, например, все разработчики имеют тайтл Software Engineer, и их уровень скрыт. Этот уровень знают только их менеджеры. При этом там 7 уровней разработчиков от E3 до E9. Компенсация при этом меняется от ~$100k-150k на E3 до ~$2M-3M на E9 в год гросс.
В Amazon есть тайтлы и уровни: SDE 1 (L4), SDE 2(L5), SDE 3/Senior Software Engineer (L6), Principal (L7), Senior Principal (L8), Distinguished (L9). Т.е. в Амазоне 6 уровней. Из-за того, что они нарезаны более крупно, то они часто не соответствуют уровням и тайтлам в других компаниях. Например, SDE 1(L4) соответствуют и Junior и Middle с небольшим опытом. SDE 2(L5) - очень опытный Middle или Senior. SDE 3 (L6) - это скорее Staff Software Engineer в большинстве компаний. Principal (L7) - это скорее Senior Staff в большинстве компаний. Senior Principal (L8) - это Principal в большинстве других FAANG компаниях. Google в этом смысле хорошо соответствует уровням в Facebook.
Маппинг уровней можно посмотреть тут: levels.fyi
Сколько же разработчиков на разных уровней в процентном соотношении?
В Amazon, до массовых сокращений было примерно такое распределение: SDE 1 - 35-40%, SDE 2 - 40-45%, SDE 3 - 10-15%, Principal+ ~1-5%. После массовых сокращений соотношение могло измениться, т.к. очень часто при сокращениях увольняли людей на более низких уровнях. В Facebook сейчас: E3 - 5-10%, E4 - 25-30%, E5 ~50%, E6 - ~10-15%, E7+ ~5%. Т.е. картины похожие. Senior разработчики самые массовые - порядка половины. Мидлов и джунов осталось очень мало, меньше 30-40%. Staff порядка 10-15%. Уровни выше Staff - единицы процентов.
В FAANG компаниях уровни разработчиков не ограничиваются Junior, Middle, Senior. Обычно их 6-7 уровней. Иногда даже больше. В некоторых компаниях у вас даже не меняется тайтл при смене уровня. В Facebook, например, все разработчики имеют тайтл Software Engineer, и их уровень скрыт. Этот уровень знают только их менеджеры. При этом там 7 уровней разработчиков от E3 до E9. Компенсация при этом меняется от ~$100k-150k на E3 до ~$2M-3M на E9 в год гросс.
В Amazon есть тайтлы и уровни: SDE 1 (L4), SDE 2(L5), SDE 3/Senior Software Engineer (L6), Principal (L7), Senior Principal (L8), Distinguished (L9). Т.е. в Амазоне 6 уровней. Из-за того, что они нарезаны более крупно, то они часто не соответствуют уровням и тайтлам в других компаниях. Например, SDE 1(L4) соответствуют и Junior и Middle с небольшим опытом. SDE 2(L5) - очень опытный Middle или Senior. SDE 3 (L6) - это скорее Staff Software Engineer в большинстве компаний. Principal (L7) - это скорее Senior Staff в большинстве компаний. Senior Principal (L8) - это Principal в большинстве других FAANG компаниях. Google в этом смысле хорошо соответствует уровням в Facebook.
Маппинг уровней можно посмотреть тут: levels.fyi
Сколько же разработчиков на разных уровней в процентном соотношении?
В Amazon, до массовых сокращений было примерно такое распределение: SDE 1 - 35-40%, SDE 2 - 40-45%, SDE 3 - 10-15%, Principal+ ~1-5%. После массовых сокращений соотношение могло измениться, т.к. очень часто при сокращениях увольняли людей на более низких уровнях. В Facebook сейчас: E3 - 5-10%, E4 - 25-30%, E5 ~50%, E6 - ~10-15%, E7+ ~5%. Т.е. картины похожие. Senior разработчики самые массовые - порядка половины. Мидлов и джунов осталось очень мало, меньше 30-40%. Staff порядка 10-15%. Уровни выше Staff - единицы процентов.
Levels.fyi
Levels.fyi | Salaries & Tools to Level Up Your Career
Search 300k+ salaries for different companies, job titles, career levels, and locations. Explore our tools to help you get paid more!
👍10
Чем отличается Senior программист от Middle?
Ранее я публиковал пост про отличие Junior от Middle: Чем отличается Junior от Middle программиста?
1) Самостоятельность. Ваша самостоятельность продолжает расти. Вы можете драйвить и овнить самые большие и сложные проекты в рамках вашей команды.
2) Скоуп/размер задач. Часто, импакт ваших проектов не ограничивается только вашей командой, а распространяется и на другие команды.
2) Delivering through others. В силу того, что проекты, над которыми вы работаете, становятся большими и сложными, в одиночку вы их сделать не сможете в ограниченный промежуток времени. Поэтому вам нужно быть лидером и основным овнером проекта, но реализовывать его отдельные части могут другие программисты (Middle и Junior).
3) Dealing with ambiguity(работа с неопределенностью). Этот скил продолжает расти на всех уровнях. На уровне Senior вам нужно в рамках своего проекта или area of expertise уметь производить декомпозицию большого и сложного проекта на отдельные маленькие и понятные части, над которыми будут работать другие более junior программисты. Это достигается благодаря вашему дизайну решения, обсуждениям и согласованиям с другими людьми из вашей или других команд, благодаря вашей экспертизе или тому что вы раскопали в коде или интернете.
4) Качество кода. Вы становитесь тем, кто задает и повышает стандарты написания кода в рамках вашей команде. Это достигается собственным примером, качественными code review и установлениями общих политик написания и качества кода в рамках команды.
5) Mentorship. Вы становитесь ментором для Middle и Junior программистов в вашей команде. Помогаете онбордить людей в команду и компанию. Занимаетесь собеседованиями и наймом других программистов.
6) Экспертиза в рамках команды. Вы становитесь тем человеком, к которому идут если у них возникли какие-либо вопросы в рамках каких-либо компонент, которые овнит ваша команда. В том числе и из других команд.
7) Visibility. Т.к. часто ваши проекты распространяются и на другие команды, то про вас, вашу экспертизу, ваши скилы знают за пределами вашей команды. Вы делаете презентации, пишите доки с результатами/планами/целями работы всей команды или проекта. О вас и вашей работе знают другие менеджеры, не только ваш непосредственный менеджер.
8) Планирование. Вы один из существенных контрибьютеров в roadmap вашей команды. Вы помогаете с постановкой целей, метрик и конкретных проектов, над которыми будет работать ваша команда.
9) Unblocking others. Вы проактивно помогаете другим программистам в рамках вашей команды или проекта разблокировать себя. Проактивно находите самые приоритетные вещи, которые замедляют или блокируют других программистов и помогает их разблокировать.
10) Проактивный багфиксинг и импрувмент. Вы проактивно находите и фиксите баги в коде вашей команды или проекта. Находите способы улучшить код или его производительность.
Ранее я публиковал пост про отличие Junior от Middle: Чем отличается Junior от Middle программиста?
1) Самостоятельность. Ваша самостоятельность продолжает расти. Вы можете драйвить и овнить самые большие и сложные проекты в рамках вашей команды.
2) Скоуп/размер задач. Часто, импакт ваших проектов не ограничивается только вашей командой, а распространяется и на другие команды.
2) Delivering through others. В силу того, что проекты, над которыми вы работаете, становятся большими и сложными, в одиночку вы их сделать не сможете в ограниченный промежуток времени. Поэтому вам нужно быть лидером и основным овнером проекта, но реализовывать его отдельные части могут другие программисты (Middle и Junior).
3) Dealing with ambiguity(работа с неопределенностью). Этот скил продолжает расти на всех уровнях. На уровне Senior вам нужно в рамках своего проекта или area of expertise уметь производить декомпозицию большого и сложного проекта на отдельные маленькие и понятные части, над которыми будут работать другие более junior программисты. Это достигается благодаря вашему дизайну решения, обсуждениям и согласованиям с другими людьми из вашей или других команд, благодаря вашей экспертизе или тому что вы раскопали в коде или интернете.
4) Качество кода. Вы становитесь тем, кто задает и повышает стандарты написания кода в рамках вашей команде. Это достигается собственным примером, качественными code review и установлениями общих политик написания и качества кода в рамках команды.
5) Mentorship. Вы становитесь ментором для Middle и Junior программистов в вашей команде. Помогаете онбордить людей в команду и компанию. Занимаетесь собеседованиями и наймом других программистов.
6) Экспертиза в рамках команды. Вы становитесь тем человеком, к которому идут если у них возникли какие-либо вопросы в рамках каких-либо компонент, которые овнит ваша команда. В том числе и из других команд.
7) Visibility. Т.к. часто ваши проекты распространяются и на другие команды, то про вас, вашу экспертизу, ваши скилы знают за пределами вашей команды. Вы делаете презентации, пишите доки с результатами/планами/целями работы всей команды или проекта. О вас и вашей работе знают другие менеджеры, не только ваш непосредственный менеджер.
8) Планирование. Вы один из существенных контрибьютеров в roadmap вашей команды. Вы помогаете с постановкой целей, метрик и конкретных проектов, над которыми будет работать ваша команда.
9) Unblocking others. Вы проактивно помогаете другим программистам в рамках вашей команды или проекта разблокировать себя. Проактивно находите самые приоритетные вещи, которые замедляют или блокируют других программистов и помогает их разблокировать.
10) Проактивный багфиксинг и импрувмент. Вы проактивно находите и фиксите баги в коде вашей команды или проекта. Находите способы улучшить код или его производительность.
Telegram
FAANG Master
Чем отличается Junior от Middle программиста?
Оба уровня являются начальными для программиста и в сумме на этих уровнях програмист находится от 2 до 10 лет. Обычно, рано или поздно он промоутится до Senior уровня. На котором он уже может находится очень…
Оба уровня являются начальными для программиста и в сумме на этих уровнях програмист находится от 2 до 10 лет. Обычно, рано или поздно он промоутится до Senior уровня. На котором он уже может находится очень…
👍17❤2🔥2👻1
Какие базы данных используются в FAANG?
Разные компании используют разные базы данных по тем или иным причинам. Очень часто в FAANG используются базы данных, разработанные внутри компании. FAANG-компании исторически первыми начали работать с гигантскими объемами данных и большим числом пользователей. Начав использовать существующие на тот момент решения, они столкнулись с их ограничениями, а других решений на рынке не было. Поэтому они начали разрабатывать свои технологии, чтобы соответствовать требованиям решаемых задач. Также FAANG-компании часто хотят иметь возможность быстро кастомизировать код базы данных под свои задачи, поэтому использование сторонних решений не всегда подходит. Часть этих решений базируется на существующих на тот момент решениях и является просто надстройкой. Некоторые, по сути, создали новый вид баз данных и хранилищ, которых не было до этого.
Для примера я приведу, какие базы используются в Amazon и Fb. Существует много разных видов баз данных (SQL, NoSQL) и хранилищ. Поэтому я приведу самые распространенные базы, по типам баз и типичные use-case их использования.
1) Relational database (RBD/Реляционная база данных):
Amazon: AWS RDS (разработан внутри компании) - позволяет создавать и разворачивать базы в облаке. Поддерживает множество движков: MySQL, PostgreSQL, Amazon Aurora (совместима с MySQL и PostgreSQL, поэтому легко мигрировать существующие базы), Oracle, Microsoft SQL Server, MariaDB. Чаще, внутри компании используется Aurora, MySQL или PostgreSQL в качестве движка. AWS RDS же позволяет легко создавать кластеры реляционных баз данных, в том числе развернутые в разных регионах планеты, конфигурировать репликацию данных, бэкапы и многое другое.
Fb: MySQL с масштабными внутренними надстройками для партиционирования, кластеризации и т.д. Поверх сделан собственный слой кэша гигантских масштабов.
2) Data warehouse. Применяется для логирования гиганского объема данных из всех компонент для последующего анализа. Эти данные потом используются для получения разного рода метрик, анализа, а также данных для Machine Learning. Применяется для обработки больших объемов данных не в режиме реального времени, а асинхронно. Часто, при помощи ETL.
Amazon: Amazon Redshift (разработан внутри компании).
Fb: Apache Hive(разработан внутри компании). Всегда применяется в комбинации с движком Presto (разработан изначально внутри компании)
3) NoSQL. Основной use-case - key-value хранилище для большого числа данных (что дорого если использовать in-memory cache).
Amazon: Amazon DynamoDB (разработан внутри компании)
Fb: RocksDB (разработан внутри компании), ZippyDB (разработан внутри компании)
4) Blob. В основном, применяется для хранения медиа файлов (картинки, видео и аудио), а также больших выгрузок данных, как промежуточный этап ETL или для анализа.
Amazon: AWS S3 (разработан внутри компании)
Fb: Свое внутреннее хранилище.
Разные компании используют разные базы данных по тем или иным причинам. Очень часто в FAANG используются базы данных, разработанные внутри компании. FAANG-компании исторически первыми начали работать с гигантскими объемами данных и большим числом пользователей. Начав использовать существующие на тот момент решения, они столкнулись с их ограничениями, а других решений на рынке не было. Поэтому они начали разрабатывать свои технологии, чтобы соответствовать требованиям решаемых задач. Также FAANG-компании часто хотят иметь возможность быстро кастомизировать код базы данных под свои задачи, поэтому использование сторонних решений не всегда подходит. Часть этих решений базируется на существующих на тот момент решениях и является просто надстройкой. Некоторые, по сути, создали новый вид баз данных и хранилищ, которых не было до этого.
Для примера я приведу, какие базы используются в Amazon и Fb. Существует много разных видов баз данных (SQL, NoSQL) и хранилищ. Поэтому я приведу самые распространенные базы, по типам баз и типичные use-case их использования.
1) Relational database (RBD/Реляционная база данных):
Amazon: AWS RDS (разработан внутри компании) - позволяет создавать и разворачивать базы в облаке. Поддерживает множество движков: MySQL, PostgreSQL, Amazon Aurora (совместима с MySQL и PostgreSQL, поэтому легко мигрировать существующие базы), Oracle, Microsoft SQL Server, MariaDB. Чаще, внутри компании используется Aurora, MySQL или PostgreSQL в качестве движка. AWS RDS же позволяет легко создавать кластеры реляционных баз данных, в том числе развернутые в разных регионах планеты, конфигурировать репликацию данных, бэкапы и многое другое.
Fb: MySQL с масштабными внутренними надстройками для партиционирования, кластеризации и т.д. Поверх сделан собственный слой кэша гигантских масштабов.
2) Data warehouse. Применяется для логирования гиганского объема данных из всех компонент для последующего анализа. Эти данные потом используются для получения разного рода метрик, анализа, а также данных для Machine Learning. Применяется для обработки больших объемов данных не в режиме реального времени, а асинхронно. Часто, при помощи ETL.
Amazon: Amazon Redshift (разработан внутри компании).
Fb: Apache Hive(разработан внутри компании). Всегда применяется в комбинации с движком Presto (разработан изначально внутри компании)
3) NoSQL. Основной use-case - key-value хранилище для большого числа данных (что дорого если использовать in-memory cache).
Amazon: Amazon DynamoDB (разработан внутри компании)
Fb: RocksDB (разработан внутри компании), ZippyDB (разработан внутри компании)
4) Blob. В основном, применяется для хранения медиа файлов (картинки, видео и аудио), а также больших выгрузок данных, как промежуточный этап ETL или для анализа.
Amazon: AWS S3 (разработан внутри компании)
Fb: Свое внутреннее хранилище.
Amazon
Полностью управляемая реляционная база данных – Amazon RDS – AWS
Amazon Relational Database Service (RDS) является полностью управляемым сервисом баз данных с открытым исходным кодом, который дает возможность с легкостью пользоваться выбранной вами реляционной базой данных (в том числе, Amazon Aurora, PostgreSQL, SQL Server…
👍17🤔3
Посмотрел ролик от канала редакции про онлайн образование: https://youtu.be/OLlHpXhR29Q?si=CjbP1g7VjnM2Gx4L
Удивили истории, как кто-то решил менять профессию в уже сильно зрелом возрасте и наличии другой нормальной специальности на айтишную. Интересно, есть ли тут такие люди? Какой был ваш опыт? Я сам учился на курсах в 2006 году по Java и SQL. Но я тогда был еще студентом и курсы были от компании, которая потом многих брала на работу.
Удивили истории, как кто-то решил менять профессию в уже сильно зрелом возрасте и наличии другой нормальной специальности на айтишную. Интересно, есть ли тут такие люди? Какой был ваш опыт? Я сам учился на курсах в 2006 году по Java и SQL. Но я тогда был еще студентом и курсы были от компании, которая потом многих брала на работу.
YouTube
Мифы и правда об онлайн-образовании / Редакция
Больше трети россиян собираются сменить профессию в этом году
18+ НАСТОЯЩИЙ МАТЕРИАЛ (ИНФОРМАЦИЯ) ПРОИЗВЕДЕН, РАСПРОСТРАНЕН И (ИЛИ) НАПРАВЛЕН ИНОСТРАННЫМ АГЕНТОМ ПИВОВАРОВЫМ АЛЕКСЕЕМ ВЛАДИМИРОВИЧЕМ ЛИБО КАСАЕТСЯ ДЕЯТЕЛЬНОСТИ ИНОСТРАННОГО АГЕНТА ПИВОВАРОВА…
18+ НАСТОЯЩИЙ МАТЕРИАЛ (ИНФОРМАЦИЯ) ПРОИЗВЕДЕН, РАСПРОСТРАНЕН И (ИЛИ) НАПРАВЛЕН ИНОСТРАННЫМ АГЕНТОМ ПИВОВАРОВЫМ АЛЕКСЕЕМ ВЛАДИМИРОВИЧЕМ ЛИБО КАСАЕТСЯ ДЕЯТЕЛЬНОСТИ ИНОСТРАННОГО АГЕНТА ПИВОВАРОВА…
👍3
Учились ли вы на онлайн курсах и в каком возрасте?
Final Results
30%
Не учился
8%
Учился (до 20 лет)
15%
Учился (20-25 лет)
19%
Учился (25-30 лет)
14%
Учился (30-35)
13%
Учился(35-50)
0%
Учился(50+)
Подборка постов в канале, не связанная с задачами. Часть 2
Часто у подписчиков возникают вопросы, на которые я уже писал пост. Решил сделать подборку и закрепить ее по аналогии с подборками разборов задач. Обновление подборки.
Релокация:
1) Планируете переехать в другую страну для жизни и работы?
2) Плюсы работы и жизни в Лондоне
3) Минусы жизни в Великобритании
4) Через сколько лет можно получить гражданство разных стран Европы?
5) Небольшая подборка компаний в Европе, которые нанимают людей из постсоветского пространства
6) Что лучше: большая зп в абсолютных значениях или лучше меньше зарабатывать и жить в стране с меньшими ценами?
7) Стоимость жизни в Лондоне и сколько нужно зарабатывать, чтобы хорошо тут жить
8) Что сейчас происходит на рынке труда программистов США и Европы?
9) Мои первые впечатления, когда я начал работать в Европе, Часть 2
10) Global Talent Visa UK
11) Число вакансий в tech индустрии медленно, но растет
12) Ситуация с хайрингом в Big Tech (и не только) в Европе и США на январь 2024
13) Мои первые впечатления, когда я начал работать в FAANG
14) Стоимость покупки недвижимости в Лондоне vs Москве
Онбординг:
1) С какими сложностями я столкнулся на своей первой работе программистом?, Часть 2
2) Как быстро адаптироваться в команде и компании?, Часть 2
3) Что не стоит делать при онбординге в новую компанию?
4) Team Selection и on-boarding в Facebook
5) Как устроен onboarding процесс в Amazon?, Часть 2
Уровни:
1) Чем отличается Junior от Middle программиста?, Часть 2.
2) Чем отличается Senior программист от Middle?
3) Странные тайтлы в инвест банках
4) Распределение по уровням в FAANG
5) Структура FAANG/Big Tech компании
Прочее:
1) История о том, как я провалил собеседование в Google.
2) С чего начать поиск работы в IT?
3) Минусы работы в IT/программистом
4) Заменяют ли программистов в топ компаниях на нейросети?, Часть 2
5) Стоит ли целенаправленно готовиться к собеседованию в FAANG, если у вас нет технического образования и вы учитесь на курсах и хотите стать программистом?
6) С чего начать изучать программирование в 2023?
7) Что я думаю про курсы по программированию, которые рекламируют на каждом углу?
8) Подборка фильмов, сериалов и документалок о программистах, BigTech, стартапах и их основателях
9) Заменят ли программистов нейросети в ближайшем будущем? Update, Часть 2
Часто у подписчиков возникают вопросы, на которые я уже писал пост. Решил сделать подборку и закрепить ее по аналогии с подборками разборов задач. Обновление подборки.
Релокация:
1) Планируете переехать в другую страну для жизни и работы?
2) Плюсы работы и жизни в Лондоне
3) Минусы жизни в Великобритании
4) Через сколько лет можно получить гражданство разных стран Европы?
5) Небольшая подборка компаний в Европе, которые нанимают людей из постсоветского пространства
6) Что лучше: большая зп в абсолютных значениях или лучше меньше зарабатывать и жить в стране с меньшими ценами?
7) Стоимость жизни в Лондоне и сколько нужно зарабатывать, чтобы хорошо тут жить
8) Что сейчас происходит на рынке труда программистов США и Европы?
9) Мои первые впечатления, когда я начал работать в Европе, Часть 2
10) Global Talent Visa UK
11) Число вакансий в tech индустрии медленно, но растет
12) Ситуация с хайрингом в Big Tech (и не только) в Европе и США на январь 2024
13) Мои первые впечатления, когда я начал работать в FAANG
14) Стоимость покупки недвижимости в Лондоне vs Москве
Онбординг:
1) С какими сложностями я столкнулся на своей первой работе программистом?, Часть 2
2) Как быстро адаптироваться в команде и компании?, Часть 2
3) Что не стоит делать при онбординге в новую компанию?
4) Team Selection и on-boarding в Facebook
5) Как устроен onboarding процесс в Amazon?, Часть 2
Уровни:
1) Чем отличается Junior от Middle программиста?, Часть 2.
2) Чем отличается Senior программист от Middle?
3) Странные тайтлы в инвест банках
4) Распределение по уровням в FAANG
5) Структура FAANG/Big Tech компании
Прочее:
1) История о том, как я провалил собеседование в Google.
2) С чего начать поиск работы в IT?
3) Минусы работы в IT/программистом
4) Заменяют ли программистов в топ компаниях на нейросети?, Часть 2
5) Стоит ли целенаправленно готовиться к собеседованию в FAANG, если у вас нет технического образования и вы учитесь на курсах и хотите стать программистом?
6) С чего начать изучать программирование в 2023?
7) Что я думаю про курсы по программированию, которые рекламируют на каждом углу?
8) Подборка фильмов, сериалов и документалок о программистах, BigTech, стартапах и их основателях
9) Заменят ли программистов нейросети в ближайшем будущем? Update, Часть 2
Telegram
FAANG Master
Планируете переехать в другую страну для жизни и работы?
#переезд #сервис #цены #сравнить #relocation
Хочу порекомендовать сервис https://www.numbeo.com/.
Он позволяет узнать стоимость жизни в разных городах мира,
сравнить цены, уровень жизни, преступности…
#переезд #сервис #цены #сравнить #relocation
Хочу порекомендовать сервис https://www.numbeo.com/.
Он позволяет узнать стоимость жизни в разных городах мира,
сравнить цены, уровень жизни, преступности…
👍4🔥4
Подборка статей, которые я уже написал и опубликовал в этом канале по system design
#systemdesign
Обновление подборки
1) Load Balancers 1
2) Load Balancers 2
3) Load Balancers 3
4) Consistent Hashing
5) Data Partitioning/Sharding
6) Design Web Crawler
7) Дизайн Uber/Яндекс Такси
8) Дизайн новостной ленты соцсети типа Twitter или Facebook
9) Availability
10) Consistency
11) Дизайн мессенджера Telegram
12) Обработка ошибок при вызове другой компоненты
13) Распределенный кэш. Часть 1.
14) Распределенный кэш. Часть 2.
15) Распределенный кэш. Часть 3.
16) Характерные числовые характеристики, которые нужно знать для System Design собеседования
17) Дизайн Google Maps
18) Некоторые подходы к архитектуре приложений в Amazon
19) Какие AWS сервисы мы часто использовали, когда я работал в Amazon?
20) Какие базы данных используются в FAANG?
#systemdesign
Обновление подборки
1) Load Balancers 1
2) Load Balancers 2
3) Load Balancers 3
4) Consistent Hashing
5) Data Partitioning/Sharding
6) Design Web Crawler
7) Дизайн Uber/Яндекс Такси
8) Дизайн новостной ленты соцсети типа Twitter или Facebook
9) Availability
10) Consistency
11) Дизайн мессенджера Telegram
12) Обработка ошибок при вызове другой компоненты
13) Распределенный кэш. Часть 1.
14) Распределенный кэш. Часть 2.
15) Распределенный кэш. Часть 3.
16) Характерные числовые характеристики, которые нужно знать для System Design собеседования
17) Дизайн Google Maps
18) Некоторые подходы к архитектуре приложений в Amazon
19) Какие AWS сервисы мы часто использовали, когда я работал в Amazon?
20) Какие базы данных используются в FAANG?
Telegraph
Load Balancers. Введение. Часть 1 из 3.
Это первая из трех статей, которые я планирую написать про Load Balancers (LB). Данная статья будет посвященна введению в тему. Давайте рассмотрим сайт google.com. Им пользуются миллиарды человек. Чтобы обработать запросы от всех пользователей, нам нужно…
🔥9👍3
Подборка алгоритмических задач с решениями и описание алгоритмов уже опубликованных в этом канале
#interview #собеседование #алгоритмы #подборка
Обновление подборки.
Общие статьи:
1) Как выбрать язык программирования для алгоритмического собеседования?
2) Как решать алгоритмические задачи на подготовке, чтобы это было эффективно
3) Как не забыть решения задач и алгоритмы
4) Шпаргалка по основным алгоритмам для алгоритмического собеседования
5) Шпаргалка по Java для алгоритмического собеседования
6) Подборка из easy задач для начала подготовки к алгоритмическому собеседованию.
7) Сбалансированная подборка из 100 задач для подготовки к алгоритмическому собеседованию.
Two Pointers:
1) Проверка на палиндром.
2) Усложненная версия проверки на палиндром.
3) Merge Two Sorted Arrays
4) Самая длинная палиндромная подстрока
5) Удалить дубликаты в отсортированном массиве
6) Видео: Merge Intervals
HashTable:
7) Two Sum
8) Видео: Сгруппировать анаграммы
9) Задача с собеседования в Google. 939. Minimum Area Rectangle
10) Задача с собеседования в Microsoft: Самое большое палиндромное число
Stack:
11) Проверить скобочное выражение.
12) Удалить минимальное число скобок, чтобы сделать скобочное выражение правильным
Sorting:
13) Первый пропущенный положительный элемент массива
LinkedList:
14) Удалить n-й элемент с конца в односвязном списке
15) Deep Copy списка со ссылкой на случайный элемент.
BinarySearch:
Описание алгоритма BinarySearch.
16) Пропущенный элемент в отсортированном массиве.
17) Пиковый элемент.
18) Число итераций в бинарном поиске.
19) Первая плохая версия
DFS:
Описание алгоритма DFS.
20) Flood Fill.
21) Видео: Число Островов
BFS:
Описание алгоритма BFS.
22) Проверить полноту дерева.
23) Обход дерева по уровням.
24) Remove Invalid Parentheses
Топологическая сортировка:
Топологическая сортировка
25) Видео: Top k elements
Binary Tree:
Алгоритмы обхода двоичного дерева
26) Invert Binary Tree
27) BranchSums
28) Максимальная высота дерева
29) Максимальная сумма пути в бинарном дереве
30) Сумма элементов бинарного дерева поиска в диапазоне значение
31) Удалить вершины в дереве и вернуть оставшийся лес/forest
Dynamic Programming:
Основные этапы решения задач на динамическое программирование Top-Down методом
32) Top Down подход на примере задачи про ступеньки
33) Задача на динамическое программирование. Разделение на слова.
34) Количество дождевой воды
35) Bottom-up подход: разменять деньги
36) Видео: Longest Increasing Subsequence
37) Лучшее время для покупки и продажи акции
#interview #собеседование #алгоритмы #подборка
Обновление подборки.
Общие статьи:
1) Как выбрать язык программирования для алгоритмического собеседования?
2) Как решать алгоритмические задачи на подготовке, чтобы это было эффективно
3) Как не забыть решения задач и алгоритмы
4) Шпаргалка по основным алгоритмам для алгоритмического собеседования
5) Шпаргалка по Java для алгоритмического собеседования
6) Подборка из easy задач для начала подготовки к алгоритмическому собеседованию.
7) Сбалансированная подборка из 100 задач для подготовки к алгоритмическому собеседованию.
Two Pointers:
1) Проверка на палиндром.
2) Усложненная версия проверки на палиндром.
3) Merge Two Sorted Arrays
4) Самая длинная палиндромная подстрока
5) Удалить дубликаты в отсортированном массиве
6) Видео: Merge Intervals
HashTable:
7) Two Sum
8) Видео: Сгруппировать анаграммы
9) Задача с собеседования в Google. 939. Minimum Area Rectangle
10) Задача с собеседования в Microsoft: Самое большое палиндромное число
Stack:
11) Проверить скобочное выражение.
12) Удалить минимальное число скобок, чтобы сделать скобочное выражение правильным
Sorting:
13) Первый пропущенный положительный элемент массива
LinkedList:
14) Удалить n-й элемент с конца в односвязном списке
15) Deep Copy списка со ссылкой на случайный элемент.
BinarySearch:
Описание алгоритма BinarySearch.
16) Пропущенный элемент в отсортированном массиве.
17) Пиковый элемент.
18) Число итераций в бинарном поиске.
19) Первая плохая версия
DFS:
Описание алгоритма DFS.
20) Flood Fill.
21) Видео: Число Островов
BFS:
Описание алгоритма BFS.
22) Проверить полноту дерева.
23) Обход дерева по уровням.
24) Remove Invalid Parentheses
Топологическая сортировка:
Топологическая сортировка
25) Видео: Top k elements
Binary Tree:
Алгоритмы обхода двоичного дерева
26) Invert Binary Tree
27) BranchSums
28) Максимальная высота дерева
29) Максимальная сумма пути в бинарном дереве
30) Сумма элементов бинарного дерева поиска в диапазоне значение
31) Удалить вершины в дереве и вернуть оставшийся лес/forest
Dynamic Programming:
Основные этапы решения задач на динамическое программирование Top-Down методом
32) Top Down подход на примере задачи про ступеньки
33) Задача на динамическое программирование. Разделение на слова.
34) Количество дождевой воды
35) Bottom-up подход: разменять деньги
36) Видео: Longest Increasing Subsequence
37) Лучшее время для покупки и продажи акции
Telegram
FAANG Master
Как выбрать язык программирования для алгоритмического собеседования?
На кодинг интервью в FAANG и другие компании, которые проводят кодинг собеседовая похожим образом, вы можете выбрать сами, на каком языке программирования писать код. Но это должен быть…
На кодинг интервью в FAANG и другие компании, которые проводят кодинг собеседовая похожим образом, вы можете выбрать сами, на каком языке программирования писать код. Но это должен быть…
🔥6👍5
Подборка вопросов и ответов для подготовки к собеседованию на Java программиста
#java #interview #собеседование
Обновление подборки из статей, которые я уже написал и опубликовал в этом канале.
Общие вопросы:
1) Методы класса Object
2) Иерархия и типы исключений
3) GC
4) Сравнение строк в Java
Коллекции:
5) HashMap
6) ArrayList vs LinkedList
7) Иерархия коллекций в Java
8) Иерархия Map
9) Maximum ArraySize
Многопоточность:
10) Перевод между банковскими аккаунтами (dead-lock).
11) Ping-Pong (wait-notify).
12) Приостанавливаемый поток.
13) Подборка вопросов по многопоточности
14) Напечатать последовательность чисел при помощи нескольких потоков на Java.
15) ConcurrentModificationException
16) Thread Safe Singleton
17) Обедающие философы
18) Реализовать потокобезопасную блокирующую очередь на Java ограниченного размера
19) Реализовать потокобезопасный неблокирующий стек на Java
20) Daemon потоки
21) Является ли immutable class в Java Thread safe?
22) Implicit Lock Reentrancy
23) Java Memory Model и happens-before
24) ConcurrentHashMap vs Collections.synchronizedMap vs Hashtable vs HashMap
25) Реализовать потокобезопасную неблокирующую очередь на Java
26) Вопрос с собеседования на Java программиста: Как выполнить код в отдельном потоке в Java?
SQL:
27) Типы SQL joins
28) Плюсы и минусы индексов
Spring:
29) Что такое @Autowire в Spring? Как его использовать и как он работает?
#java #interview #собеседование
Обновление подборки из статей, которые я уже написал и опубликовал в этом канале.
Общие вопросы:
1) Методы класса Object
2) Иерархия и типы исключений
3) GC
4) Сравнение строк в Java
Коллекции:
5) HashMap
6) ArrayList vs LinkedList
7) Иерархия коллекций в Java
8) Иерархия Map
9) Maximum ArraySize
Многопоточность:
10) Перевод между банковскими аккаунтами (dead-lock).
11) Ping-Pong (wait-notify).
12) Приостанавливаемый поток.
13) Подборка вопросов по многопоточности
14) Напечатать последовательность чисел при помощи нескольких потоков на Java.
15) ConcurrentModificationException
16) Thread Safe Singleton
17) Обедающие философы
18) Реализовать потокобезопасную блокирующую очередь на Java ограниченного размера
19) Реализовать потокобезопасный неблокирующий стек на Java
20) Daemon потоки
21) Является ли immutable class в Java Thread safe?
22) Implicit Lock Reentrancy
23) Java Memory Model и happens-before
24) ConcurrentHashMap vs Collections.synchronizedMap vs Hashtable vs HashMap
25) Реализовать потокобезопасную неблокирующую очередь на Java
26) Вопрос с собеседования на Java программиста: Как выполнить код в отдельном потоке в Java?
SQL:
27) Типы SQL joins
28) Плюсы и минусы индексов
Spring:
29) Что такое @Autowire в Spring? Как его использовать и как он работает?
Telegraph
Какие методы класса Object вы знаете?
Все классы в Java наследуют класс Object. Официальная документация: Object. Его методы: 1) getClass() - получить runtime класс объекта. 2) toString() - возвращает текстовое представление объекта 3) hashCode() - Возвращает hash code объекта. Используется,…
🔥13👍6💘3