В прежние годы после предварительных собеседований вас вызывали для более подробного интервью в удобный для FAANG-компании город Европы и оплачивали все расходы. Это называлось on-site интервью. Сейчас все интервью проходят онлайн.
Каждая компания любит свой сервис для видеозвонков. Google попросит Hangouts (у которого нет десктоп-приложения и который у меня не смог в видео в Chrome — приходилось запускать в Firefox, лол). Facebook захочет BlueJeans, а Amazon захочет Chime. У вас будет также сайт с поддержкой совместного редактирования текста. Собеседующий будет видеть и текст, и ваш курсор, и ваше выделение текста. Язык программирования вы выбираете сами. Поддерживается подсветка синтаксиса для всех популярных языков, но автодополнения, запуска программы и отладки нет.
Если захотите свериться с документацией, то надо спросить разрешения собеседующего. Обычно они разрешают, но бывает по-разному.
У Google и Facebook интервью длится 45 минут, но из них только 40 выделено для решения задач. За это время обычно надо решить две задачи — времени в обрез.
У Amazon интервью длится 55 минут, 5 из которых также отводятся для ваших вопросов, и ещё минут 25 уйдёт на поведенческие вопросы.
Приоритет всегда у решения, работающего без ошибок. На интервью с двумя задачами вам необходимо хотя бы одну из них решить эффективным способом. Если не пошла первая, то просто реализуйте её без ошибок наивным способом и беритесь за вторую.
Знания редких и экзотических алгоритмов не потребуется. Никаких редких алгоритмов можете не учить, вращать деревья руками тоже не требуется. Только базовые классические алгоритмы и базовые классические структуры данных. Но без знания кучи (heap) лучше не собеседоваться. Это редкая структура в обычной работе, но на её знание и применение нацелен целый пласт популярных и весьма прикладных задач.
Предположим, вы в прошлом выигрывали городские олимпиады по информатике и решили дальше не читать, а прямо так и пойти на интервью. Вам дали задачу, вы минутку подумали и быстренько закодировали задачу эффективным способом и без ошибок, а потом ещё и вторую, успели всё за 40 минут. Вы — молодец! Вы интервью успешно… завалили!
Дело в том, что алгоритмическое интервью, кроме написания кода, содержит ещё ряд этапов и моментов, без которых вам поставит кучу минусов в свою тетрадку собеседующий.
План успешного решения алгоритмической задачи на 20 минут
1. Обязательно уточните требования и разрешите любые неоднозначности в условии. Даже если вам кажется, что «и так всё ясно». Иногда эта информация может упростить решение. А иногда знание того, что, скажем, числа в последовательности могут повторяться и быть отрицательными, может поломать ваше «верное» решение. В любом случае, если вы не уточняли — это минус вам.
2. Подумайте над решением и озвучьте его. В идеале это не молчание на 5 минут, а рассуждение вслух. Плюсом будет озвучить очевидное вам неэффективное, но работающее решение. Любые соображения, что какие-то алгоритмы, структуры подходят или не подходят, лучше озвучивать.
3. Кодируем обычно после одобрения вашего решения. Часто вам могут подсказать искать более эффективное решение. Если времени найти эффективное не хватило, возвращайтесь к наивному, которое, надеюсь, вы нашли в самом начале.
4. Не забудьте дать оценку выбранному алгоритму в нотации big-O. В первую очередь требуется оценка быстродействия, но лучше дать и оценку по памяти. Лучше это сделать до кодирования, потому что потом можно забыть или не успеть.
5. Напишите сам код программы. Обычно это функция или несколько функций. Если есть возможность, проговаривайте, что вы делаете и почему. Иногда интервьюеры при очевидных описках и ляпах подсказывают сразу. Например, вы произнесли, что будете проверять, что переменные не равны, а написали в коде наоборот.
Вслух произносите любые мысли о возможных оптимизациях. Говорите об отложенных на потом проверках. Это может сыграть вам на руку, если вы просто отвлеклись и забыли. Тогда собеседующий сможет просто напомнить.
Обычно программа представляет собой функцию, но это может быть и класс, и несколько функций.
Переменные лучше называть понятными именами. Длинные функции лучше разбивать на несколько частей. Это поможет произвести впечатление адекватного разработчика и упростит чтение кода интервьюером.
Типичное решение редко превышает 20-30 строк кода. Никто не ждёт простыню кода. Если у вас слишком длинное решение, значит вы что-то делаете не так.
1. Придумайте входные данные, которые подошли бы для юнит-тестирования. Поясните, почему выбираете такие данные. Вообще всё и всегда поясняйте.
2. Выберите какие-нибудь релевантные, но несложные входные данные для ручной отладки по шагам. И выполните эту отладку.
Прямо по коду подпишите в комментариях текущие значения переменных. Строчку за строчкой проговаривайте, что происходит, изменяя значения переменных в комментариях.
Если алгоритм слишком длинный, интервьюер сам вас остановит, когда удостоверится, что вы справляетесь с отладкой.
В процессе отладки старайтесь выполнять именно так, как написано в коде, а не, как вам кажется, это должно работать.
Очень часто в ходе отладки удачных входных данных находятся ошибки.
Хинт № 1. В случае рекурсивных функций я помечал разные версии значений переменных через слэш, где последнее значение было актуальным прямо сейчас.
Хинт № 2. Найденная и исправленная ошибка — это даже лучше, чем если бы вы всё сделали без ошибок. Вы показали дополнительный навык.
Как видите, шагов очень много, а у вас всего 20 минут. Поэтому режим очень жёсткий, надо тренироваться не выбиваться из времени: 2 минуты уточнили требования, за минутку описали наивное решение, 5 минут на поиск хорошего решения и оценку его сложности, 8 минут на написание кода, 4 минуты на выбор тестовых данных и отладку. Примерно так. Всё должно быть на автомате — ничего не забыть, нигде не замешкаться, бегом, бегом, бегом.
Причём когда на интервью сразу две задачи, то обычно первая чуть проще, поэтому на вторую лучше оставить больше времени.
Примеры задач
=========================
Дан корень бинарного дерева. Каждая вершина хранит уникальное числовое значение, а также ссылки на своих детей.
Найти вершину, которая является наиболее близким общим предком для двух заданных вершин этого дерева.
Что общего и какие отличия у задач в Amazon, FB и Google
В целом на алгоритмическом интервью всё у всех очень похоже. Facebook даёт две задачи за одно интервью. А Amazon сначала вас выжимает поведенческими вопросами, а потом даёт одну задачу на кодирование.
У меня сложилось впечатление, будто у Google задачи немного сложнее. Не на порядок, но часто они будто из немного другого пула, чуть сложнее, чуть больше надо голову напрячь, чуть больше кодировать. Но при этом вторая задача у Google в обоих случаев была модифицированной и усложнённой первой. И решение первой у меня занимало минут 30-35. На вторую не всегда хватало времени закодировать полностью. В общем я и не получил предложение о работе.
Как к этому подготовиться
Leetcode
Во-первых, решите задач эдак 100 на LeetCode. У вас появится интуиция на то, насколько эффективное решение может быть у той или иной задачи, какой подход использовать для решения, набьется рука реализовывать типовые алгоритмы. Не пугайтесь, если первые задачи будут идти очень туго и вы даже за пару дней не сможете придумать эффективного решения.
Я лично пользовался платной подпиской LeetCode.
Таким образом я получал доступ к статистике встречаемости задач в конкретных компаниях. Например, когда у меня были решены топ-20 для Amazon и Facebook, а общий счёт популярных задач был под 100, у Google из топ-10 оказалось решено меньше половины задач. Причём нерешенные были не совсем типичными.
Но главный плюс платной подписки был в доступе к разбору решений задач. У вас и без денег есть доступ к бесплатному форуму, где можно посмотреть чужие решения или задать вопрос по задаче. Но официальный разбор есть обычно у 95% задач, и он намного полезнее. Обычно разбираются все известные способы решения, начиная с неэффективного. Каждый способ идёт с описанием сути решения, программным кодом (часто на нескольких языках), часто с видео, оценкой сложности по скорости и памяти с обоснованием.
Решив задачу, я смотрел и разбирался во всех альтернативных решениях. Часто замечал, что моё эффективное решение в разборе было реализовано более лаконично. Также полезно натренироваться обосновывать оценку сложности, особенно для всяких рекурсивных алгоритмов, алгоритмов с динамическим программированием. Полезно ознакомиться с англоязычной терминологией. Как по-английски «квадратичная сложность»? А «ребро», «вершина», «площадь фигуры», «узел дерева», «ветка дерева»?
Демо-интервью
Во-вторых, потренируйтесь с таймером. Посмотрите в интернете записи демо-интервью. Их распространяют часто сами FAANG-компании, но есть интервью с разборами ошибок и от сторонних авторов. Идеально хотя бы раз пройти демо-интервью самому и получить обратную связь. Чтобы человек со стороны сказал вам, что вы забыли, например, рассказать суть найденного решения перед кодированием или потеряли слишком много времени, расспрашивая тонкости условия задачи. Вы можете и не заметить такую ошибку в спешке.
Материалы от самих компаний
Компании FAANG открыто заявляют о необходимости подготовки к их интервью. Amazon даже рассылает в письмах ссылки вроде этих:
8 онлайн-курсов и интенсивов для Product Manager (февраль, 2024)
Собрали проверенные онлайн-курсы и интенсивы для Product Manager. В этой подборке: курсы от действующего PM в Microsoft, актуальная специализация по управлению продуктами в сфере AI, курсы для начинающих специалистов и лайфхаки как проходить собеседования на позицию продакта.
Как очистить Mac? Подборка платных приложений для macOS (cо скидками Black Friday 2024)
Чем просканировать накопившийся за время работы мусор на диске вашего в Мака и навести порядок? Рассказываем о 7 платных приложениях для очистки macOS. Мы не называем их лучшими — просто советуем обратить на них внимание.
11 лучших сертификаций Coursera, чтобы освоить новую специальность (август, 2023)
Проанализировали Coursera в поисках лучших профессиональных программ на 2023 год, прохождение которых позволит получить востребованную специальность. Рассказываем, на какие направления обратить внимание и как сертификация Coursera помогает изменить вашу карьеру.
12 онлайн-курсов по языку Java для новичков и профессионалов (август, 2023)
Java по-прежнему входит в список самых популярных языков программирования. Вместе с Digitaldefynd мы составили список курсов по Java, которые подойдут как новичкам, так и людям с опытом программирования, чтобы освоить этот востребованный язык.
Хотите сообщить важную новость? Пишите в Telegram-бот
Главные события и полезные ссылки в нашем Telegram-канале
Обсуждение
Комментируйте без ограничений
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.
Чем-то этот процесс напоминает мне большой спорт. Тоже надо ввалить кучу времени, сил и денег в тренинг, не имеющий ничего общего с реальной жизнью и задачами. Положительный результат тоже не гарантирован, усилия могут пойти прахом из-за какой-то случайности. И как в спорте, никто не обещает пожизненной ренты, как только снизишь показатели - вылетишь с пляжа за один сезон.
А если еще вспомнить, что спорт поддерживается спонсорами и государствами, а вот эта вся подготовка - за свой счет, думается, что энергетически выгоднее будет просто говнокодить на "Рога и копыта". Без лишних изысков, но и без лишнего стресса.
Anonymous
Much Wow Very Engenieer в t.me/it_destruct
2 декабря 2021, 12:11
14
Каждый решает для себя, что ему важнее.
Я считаю что сложность задротства задач в литкоде немного переоценена - намного больше людей любят говорить какая это пустая трата времени и сил и вообще в работе не нужно, чем тех, кто хотя бы пару раз пробовал их решать.
Я не в фаанге работаю, но в моей компании тоже были алгоритмы на собесе, уровень примерно нижняя половина medium на литкод - ничего сложного как по мне, и тем более глупо это сравнивать с тем, как люди тренируются в профессиональном спорте.
Каждый сам выбирает, для кого-то 100к$+ и работа в гугле стоят того, чтоб пару месяцев жизни потратить, ну а кто-то предпочитает говнокодить за три рубля в рогах и копытах, вечерами устраивая марафоны сериалов нетфликс и тратя по 5 часов в день в ютубчике, при этом говорить что подготовка к алгоритмическим интервью это пустая трата времени. Какая-то романтика конечно есть в таком образе жизни, уже в 30 лет жить жизнью дряхлого пенсионера, экономя "энергетические затраты", но по жизни я скорее симпатизирую таким людям, как герой статьи, кто хотя бы пытается и кому хочется.
А вариант кодить за 60-70К и жить нормальной и активной жизнью вы не рассматриваете? И почему сразу в 30 лет человек работающий не в Гугл станет дряхлым пенсионером? Да у него будет больше времени на себя и семью, чем работая за 100К в Гугле или Амазоне. А разница в ЗП вас миллионером не сделает. Смысл в лишних 20-30К, которые "сгорят" на более высокие налоги, жизнь в более дорогом месте и т.п. Гуглу и другим выгодны мифы о своей исключительности. Работать с кучей индусов в команде и всякими другими меньшинствами (потому что так надо) это подходит не всем. Лучше делать side-проект, выводить его на MRR хотя бы 3-4K и жить наслаждаясь не решая каждый день задачки на Leetcode, как будто школьник.
"Смысл в лишних 20-30К, которые "сгорят" на более высокие налоги, жизнь в более дорогом месте и т.п. "
На самом деле разница в уровне жизни между разработчиком из белорусской компании и программистом из FAANG просто колоссальная, и не в пользу белорусского разработчика. Вы подумайте логически - если б работать где-нибудь в Долине было настолько не выгодно, а в белорусских компаниях - выгодно, то имело бы место массовое бегство американских разработчиков в Беларусь. А ситуация на самом деле обратная.
"Работать с кучей индусов в команде и всякими другими меньшинствами"
Ну вот это просто смешно слушать. Смешно слушать от белоруса про то, что индусы - это "всякие меньшинства".
Вы это серьезно, про уровень жизни? Имхо как раз белорусские / украинские разработчики дадут фору любой кремниевой долине по уровню доступных им благ. Дом с участком, который в РБ стоит 200 тыс, вы в калифорнии не купите и за два миллиона. Частный медцентр в РБ будет в десятки раз дешевле такого же уровнем в США. Тут вы можете себе позволить личного водителя, массажиста, доставку на дом любых товаров с курьером. А что в фаанге - можно только на расчетный счет втыкать и херачить, чтоб на следующем перформанс ревью не вылететь на мороз.
Anonymous
Much Wow Very Engenieer в t.me/it_destruct
3 декабря 2021, 17:52
7
Дом с участком, который в РБ стоит 200 тыс, вы в калифорнии не купите и за два миллиона.
Он стоит там таких денег, потому что дает доступ к рынку труда. В Анголе наверное и за 50 тысяч можно такой дом купить - значит ли это, что там у его обладателя хороший уровень жизни?
Частный медцентр в РБ будет в десятки раз дешевле такого же уровнем в США.
Частный медцентр в РБ - это Вы про ЛОДЭ и аналои? Там только простейшие процедуры, простейшие анализы и консультации. Ими хорошо и удобно пользоваться, пока молодой и здоровый.
Попробуйте в этот частный мед центр приехать с элементарным аппендицитом - Вам там любезно вызовут государственную скорую до государственной больнички. В США частные - полноценные больницы и клиники - и аналогов в Беларуси насколько я знаю особо нет.
Тут вы можете себе позволить личного водителя, массажиста
Беларусь - идельная страна для тех, кто хочет считать себя буржуа, являясь при этом никем. Но далеко не у всех есть такая потребность.
доставку на дом любых товаров с курьером.
Да, ведь в США доставка любых товаров курьером - это как правило непозволительная роскошь, доступная только самым богатым людям, cream of the crop
Anonymous
Much Wow Very Engenieer в t.me/it_destruct
2 декабря 2021, 16:58
11
А вариант кодить за 60-70К и жить нормальной и активной жизнью вы не рассматриваете?
Это ложная дихотомия, будто все кто работают за 100к$+ обязательно должны жить пассивной и ненормальной жизнью. Обычно как раз наоборот, у меня самый напряженный график был именно в компаниях, которые мало платили, а чем лучше была компенсация - тем более расслабленная атмосфера и больше свободного времени.
Да у него будет больше времени на себя и семью, чем работая за 100К в Гугле или Амазоне.
В гугле как раз неплохой work-life balance. В Амазоне известно, что потогонка, но это скорее исключение.
А разница в ЗП вас миллионером не сделает. Смысл в лишних 20-30К, которые "сгорят" на более высокие налоги, жизнь в более дорогом месте и т.п.
+20-30k - это по нижней границе в принципе. И 200-300к не редкость. Ну и чо, в принципе миллионером это сделает, если кому-то хочется
Работать с кучей индусов в команде и всякими другими меньшинствами (потому что так надо) это подходит не всем.
Вот этого пассажа как-то не совсем понял. Ничего не имею против хороших специалистов любой национальности.
Лучше делать side-проект, выводить его на MRR хотя бы 3-4K и жить наслаждаясь не решая каждый день задачки на Leetcode, как будто школьник.
Кому как. Да и не у всех есть склонность к предпринимательству. А с маленьким пет-проджектом выходного дня уже так не получится, думаю прошли те времена.
Про 200K vs 2M ... работая в гугле, дом за 2м покупается при желании, с кредитом 2.хх%. Как работая программистом в Минске купить дом за 200К? И почитайте про доход в гуглах чтобы не копипастить ерунду про 100к - levels.fyi
Anonymous
Much Wow Very Engenieer в t.me/it_destruct
5 декабря 2021, 15:13
0
копипастить ерунду
Я пообещал сам себе до конца года быть с людьми вежливым. Вы мне совсем не упрощаете задачу, должен сказать.
100k - это не ерунда, а реальность для многих в варшавском гугле, можете сами чекнуть на levels.fyi. Можно конечно и до 200к total comp, но это далеко не всем доступно.
В Bay Area конечно зарплаты x3-x5, но туда не то чтоб очень быстро и легко попасть.
дом за 2м покупается при желании, с кредитом 2.хх%.
Пара месяцев? У меня почему-то сложилось впечатление, что пара месяцев фултайм надо только на первичную подготовку, а потом еще пару на побегать по собеседованиям. С работой это совмещать вряд ли возможно, и сериалы тут ни при чем. Отнимите эти 3-4 месяца простоя от зарплат фаанга, и сравнивайте не офферы кремниевой долины с минском, а долину с долиной не-фаанг. Или Лондон соответственно. И может, с учетом этих факторов, еще и в минусах останетесь.
"не имеющий ничего общего с реальной жизнью и задачами"
Очень даже имеющий. Блин, да огромное количество backend-разработчиков не может даже объяснить, как работают индексы в SQL, потому что не знают даже, что такое бинарный поиск (!), не говоря уже про B-деревья. Из-за этого получается куча откровенно плохо работающих приложений.
Ну я знаю как работают индексы, но угадаете где мне это было нужно в основном? Да, верно, на собеседованиях, в реальности же ни на одном проекте, где работал, не было необходимости в подобных знаниях
Самый простой пример - разработчик ставит индексы на поля таблицы, основная операция при выполнении которой - insert. Спрашиваю, зачем. "Потому что индексы ускоряют работу с базой данных". И всё. Он не знает, почему тут не нужны индексы, т.к. он не знает, что они собой представляют. Он просто прочитал, что "индексы ускоряют работу с базой".
Так это не связано никак с алгоритмами, структурами данных и big-O.
Это проблема конкретного разработчика, который применяет технологию/подход не разобравшись в ней.
У плохо работающих приложений абсолютно другие проблемы под капотом;) и все упирается только в архитектуру, применение паттернов и определенных практик при разработке, а никак использование эффективных алгоритмов по скорости и памяти
А алгоритм поиска по индексу бекенд программисту и не нужен. Равно как и тонкости переключения виртуальных страниц памяти или реализации конвейера команд. Ему нужно знание о том, что индекс существует, и кейсы, как он может пригодиться. В этом суть разделения труда. Оценивать программиста по решению чисто академической задачки с ограничением времени в 20 мин, да еще и дополнительными критериями, типа мышления вслух - ну такое. Это оценивает скорее наличие свободного времени у кандидата и готовность подстраиваться под самые бредовые требования работодателя
Anonymous
Much Wow Very Engenieer в t.me/it_destruct
3 декабря 2021, 13:29
5
А алгоритм поиска по индексу бекенд программисту и не нужен.
Ну ок, не нужно, но разве блин не интересно? Разве интересно просто тыкать кнопки и зажигать лампочки, а не разобраться почему они загораются? Инженеру разве нужно себя загонять только до необходимого минимума знаний для рубки капусты?
Хотел бы окружать себя коллегами, которые интересуются хоть чем-то что "нинужно".
Я крамольную вещь здесь выскажу. Если не брать РБ, где других альтернатив вырваться из всеобщей нищеты для простого человека особо нет, то вдолгую ИТшка бесперспективна. Годам к 40 - 50 весь этот молодой задротский задор проходит, появляется куча проблем-забот, уставать начинаешь сильно быстрее, да и вообще выгорание по сути неизбежно, и, получается, что остаётся либо уныло ковырять унылое легаси, либо на выход. Да, можно тут развести байки насчёт карьеры менеджера или ещё кого, но сколько управленцев, а сколько кодеров.
В общем, в нынешней стране проживания быть сантехником или электриком сильно перспективнее в среднам, имхо, чем ИТшка.
Anonymous
Developer в Horns and hooves Company
4 декабря 2021, 02:33
3
Так то к полтосу приближаясь корячиться под чужими раковиной-унитазом прямо в кайф, пусть даже и в приличной стране... С возрастом физическая работа точно так же дается тяжелее.
Ну оно, наверное, не сильно в кайф, хотя знаю сильно пожилого сантехника здесь, которого это не парит - справляется. Плюс к этому возрасту уже можно обрасти клиентурой, и нанять молодых с горящими глазами корячиться под унитазом, а самому, имея лицензию, чисто ходить пальцем указывать, где и что делать.
Вдолгую айти бесперспективна наверное только для вайтишника. И то не факт.
Нет никакой проблемы возраста "40-50 лет" в айти. 25-35-45... Нет сильной разницы для работы мозга.
Тренировать мозг желательно, это да. Но так это в любом возрасте. Прекратите мозг напрягать в 20, тогда вы уже в 30 будете за бортом интеллектуальной деятельности.
Ну и что будет дальше? Все насобачаться решать задачи на Литкоде, рабодатель сменит тему и будет требовать реализации мини проектов. Или ещё хуже - отправит делать тесты. Мы уже это проходили...
Ну, а я выбрал второе. Люблю сериальчики, и в игры компьютерные поиграть. На текущей работе денег хватает на нынешние нужды, плюс откладывать получается. В ванной у меня не итальянская плитка, а белорусская. На парковке моя машина рено сандеро, а не ауди, мерседес или бмв. Одеваюсь не в брендовые шмотки, а в турецкий ширпотреб. Вполне неплохо если бы не эта политическая буча [censored, П. 4.1.2. Пользовательского соглашения — https://dev.by/pages/agreement"]
Д... всё это. Кроме FAANG есть десятки и сотни тысяч компаний где вполне нормально работают люди, зарабатывают достойные деньги и в целом довольны жизнью. Участившиеся статьи по теме трудоустройства в FAANG-компании лишь очерчивают кризис с кадрами в указанных компаниях ибо после массового внедрения удаленки, желание д-ь в FAANG явно уменьшилось.
Для модераторов.
ДРОЧИТЬ - не ругательство, лишь термин в данном контексте.
Все это круто, но было бы еще круче, если бы кто-то смог пояснить четкую связь между такого типа интервью и "качеством" разработчика. Пока вот с кем ни общался (в том числе из вышеназванных корпоратов), никто так и не смог.
Единственная его цель - посмотреть, насколько кандидат может потратить свое время и силы на выполнение чего-то левого для данной компании, продемонстрировать старательность в первую очередь, потому как работа в корпорате предполагает отсутствие вменяемой документации и очень много проблем с упорядочиванием данных в первую очередь. К сожалению или счастью, чисто посредственных разрабов там такое же, как и в среднем по больнице, иначе такие мощности в десятки тысяч разработчиков не набрать.
Компенсация и стоки? Да вполне, хотя в долине той же есть полно стартапов, где платят на уровне, учитывая, что среднее время работника в корпоратах 2-3 года и промоушен адский.
Какой смысл думать о разумности этих требований пока у вас нет своей компании и вы не нанимаете. Хотите туда - подстраивайтесь и крутитесь по правилам их рекрутмента.
Разница видна на код ревью, когда принимаешь код, который работает с ORM или со всякими фильтрами по коллекциям (list comprehension).
И код формально верный результат дает, но легко может порождать проблемы с производительностью на ровном месте.
В иных местах такой код идёт в продакшен, потому что некому его проверить. И потом проект только из таких решений и состоит. Потом у кого-то тесты медленно выполняются. А на фронтах "мы просто анимацию покажем...". И так далее...
Разница в худшую или лучшую сторону? Не согласен, что в лучшую. Такого рода задачи предполагают компактную запись реализации, а это скорее вредит качеству кода.
Судя по комментам, коммерцы 90х, а не прогеры. Прогер должен любить алгоритм. Не буду хвастаться толщиной слоя пыли на моем дипломе программиста, но и сейчас с удовольствием потрачу пару часов за алгоритмической задачей на codility, например.
Да нет, не коммерсы к сожалению, просто 30+ тыс часов за кодом дают возможность перепробовать ну очень много вариантов его компоновки и использования. Настолько много, что тратить пару часов на еще один, да еще и не несущий реального практического применения не имеет ни малейшего смысла. Лучше пойти физически чем-нибудь позаниматься, мозг разгрузить. Ну или сериал, как тут предлагали.
че все вперлись в этот литкод, это процентов 30 от успеха, чтобы в фаанг попасть. Мой опыть провалов скорее основан на поведенческом и системном дизайне, потому как задачки на алгоритмы встречались скорее простые.
Не ну прикольно, программисты которые не умеют оценить сложность алгоритма... Не ну а чё, и так вон ресурсы девайсов увеличиваются и ускоряются, а знания разработчиков падают))
А ещё некоторые "ржали" с embed разработчика, попробуйте-ка там что-нибудь закодить без знания работы алгоритмов с ограниченными ресурсами железа.
Anonymous
Much Wow Very Engenieer в t.me/it_destruct
4 декабря 2021, 16:48
3
Я думаю, что немало программистов буду озадачены тем, что не в любом языке массив - это что-то резиновое, что можно увеличить до нужного размера просто установив индекс.
Просто айти - это безграничный океан работы. В нём есть место для самоучек корявых, есть места для условно профессионально-обученных работать в фабричном стиле (ПТУ в хорошем смысле этого слова), есть места для инженеров, есть места для ученых, есть места для очковтирателей и мошенников. Прямо ниши такие гигантские. Каждому найдётся место и применение.
Хе-хе, я тут год назад заикнулся, что у нас на собесах спрашивают устройство хэшмапы, так меня жёстко заминусовали, а нынче вон как большинство комментаторов топят за алгоритмы. Изменилось мировоззрение за год?
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.
Пожалуйста, не пользуйтесь словами "не выжил" для такой мелочи, как трудоустройство.
лол;)
Они же вроде Hangouts закрывали/прикрывали
Чем-то этот процесс напоминает мне большой спорт. Тоже надо ввалить кучу времени, сил и денег в тренинг, не имеющий ничего общего с реальной жизнью и задачами. Положительный результат тоже не гарантирован, усилия могут пойти прахом из-за какой-то случайности. И как в спорте, никто не обещает пожизненной ренты, как только снизишь показатели - вылетишь с пляжа за один сезон.
А если еще вспомнить, что спорт поддерживается спонсорами и государствами, а вот эта вся подготовка - за свой счет, думается, что энергетически выгоднее будет просто говнокодить на "Рога и копыта". Без лишних изысков, но и без лишнего стресса.
Каждый решает для себя, что ему важнее.
Я считаю что сложность задротства задач в литкоде немного переоценена - намного больше людей любят говорить какая это пустая трата времени и сил и вообще в работе не нужно, чем тех, кто хотя бы пару раз пробовал их решать.
Я не в фаанге работаю, но в моей компании тоже были алгоритмы на собесе, уровень примерно нижняя половина medium на литкод - ничего сложного как по мне, и тем более глупо это сравнивать с тем, как люди тренируются в профессиональном спорте.
Каждый сам выбирает, для кого-то 100к$+ и работа в гугле стоят того, чтоб пару месяцев жизни потратить, ну а кто-то предпочитает говнокодить за три рубля в рогах и копытах, вечерами устраивая марафоны сериалов нетфликс и тратя по 5 часов в день в ютубчике, при этом говорить что подготовка к алгоритмическим интервью это пустая трата времени. Какая-то романтика конечно есть в таком образе жизни, уже в 30 лет жить жизнью дряхлого пенсионера, экономя "энергетические затраты", но по жизни я скорее симпатизирую таким людям, как герой статьи, кто хотя бы пытается и кому хочется.
А вариант кодить за 60-70К и жить нормальной и активной жизнью вы не рассматриваете? И почему сразу в 30 лет человек работающий не в Гугл станет дряхлым пенсионером? Да у него будет больше времени на себя и семью, чем работая за 100К в Гугле или Амазоне. А разница в ЗП вас миллионером не сделает. Смысл в лишних 20-30К, которые "сгорят" на более высокие налоги, жизнь в более дорогом месте и т.п. Гуглу и другим выгодны мифы о своей исключительности. Работать с кучей индусов в команде и всякими другими меньшинствами (потому что так надо) это подходит не всем. Лучше делать side-проект, выводить его на MRR хотя бы 3-4K и жить наслаждаясь не решая каждый день задачки на Leetcode, как будто школьник.
"Смысл в лишних 20-30К, которые "сгорят" на более высокие налоги, жизнь в более дорогом месте и т.п. "
На самом деле разница в уровне жизни между разработчиком из белорусской компании и программистом из FAANG просто колоссальная, и не в пользу белорусского разработчика. Вы подумайте логически - если б работать где-нибудь в Долине было настолько не выгодно, а в белорусских компаниях - выгодно, то имело бы место массовое бегство американских разработчиков в Беларусь. А ситуация на самом деле обратная.
"Работать с кучей индусов в команде и всякими другими меньшинствами"
Ну вот это просто смешно слушать. Смешно слушать от белоруса про то, что индусы - это "всякие меньшинства".
Вы это серьезно, про уровень жизни? Имхо как раз белорусские / украинские разработчики дадут фору любой кремниевой долине по уровню доступных им благ. Дом с участком, который в РБ стоит 200 тыс, вы в калифорнии не купите и за два миллиона. Частный медцентр в РБ будет в десятки раз дешевле такого же уровнем в США. Тут вы можете себе позволить личного водителя, массажиста, доставку на дом любых товаров с курьером. А что в фаанге - можно только на расчетный счет втыкать и херачить, чтоб на следующем перформанс ревью не вылететь на мороз.
Он стоит там таких денег, потому что дает доступ к рынку труда. В Анголе наверное и за 50 тысяч можно такой дом купить - значит ли это, что там у его обладателя хороший уровень жизни?
Частный медцентр в РБ - это Вы про ЛОДЭ и аналои? Там только простейшие процедуры, простейшие анализы и консультации. Ими хорошо и удобно пользоваться, пока молодой и здоровый.
Попробуйте в этот частный мед центр приехать с элементарным аппендицитом - Вам там любезно вызовут государственную скорую до государственной больнички. В США частные - полноценные больницы и клиники - и аналогов в Беларуси насколько я знаю особо нет.
Беларусь - идельная страна для тех, кто хочет считать себя буржуа, являясь при этом никем. Но далеко не у всех есть такая потребность.
Да, ведь в США доставка любых товаров курьером - это как правило непозволительная роскошь, доступная только самым богатым людям, cream of the crop
Это ложная дихотомия, будто все кто работают за 100к$+ обязательно должны жить пассивной и ненормальной жизнью. Обычно как раз наоборот, у меня самый напряженный график был именно в компаниях, которые мало платили, а чем лучше была компенсация - тем более расслабленная атмосфера и больше свободного времени.
В гугле как раз неплохой work-life balance. В Амазоне известно, что потогонка, но это скорее исключение.
+20-30k - это по нижней границе в принципе. И 200-300к не редкость. Ну и чо, в принципе миллионером это сделает, если кому-то хочется
Вот этого пассажа как-то не совсем понял. Ничего не имею против хороших специалистов любой национальности.
Кому как. Да и не у всех есть склонность к предпринимательству. А с маленьким пет-проджектом выходного дня уже так не получится, думаю прошли те времена.
Вот здесь я, пожалуй, соглашусь. 17 лет опыта работы: чем больше зарплата, тем меньше надо работать.
Про 200K vs 2M ... работая в гугле, дом за 2м покупается при желании, с кредитом 2.хх%. Как работая программистом в Минске купить дом за 200К? И почитайте про доход в гуглах чтобы не копипастить ерунду про 100к - levels.fyi
Я пообещал сам себе до конца года быть с людьми вежливым. Вы мне совсем не упрощаете задачу, должен сказать.
100k - это не ерунда, а реальность для многих в варшавском гугле, можете сами чекнуть на levels.fyi. Можно конечно и до 200к total comp, но это далеко не всем доступно.
В Bay Area конечно зарплаты x3-x5, но туда не то чтоб очень быстро и легко попасть.
Это покупается не дом, а долг на N лет.
Пара месяцев? У меня почему-то сложилось впечатление, что пара месяцев фултайм надо только на первичную подготовку, а потом еще пару на побегать по собеседованиям. С работой это совмещать вряд ли возможно, и сериалы тут ни при чем. Отнимите эти 3-4 месяца простоя от зарплат фаанга, и сравнивайте не офферы кремниевой долины с минском, а долину с долиной не-фаанг. Или Лондон соответственно. И может, с учетом этих факторов, еще и в минусах останетесь.
"не имеющий ничего общего с реальной жизнью и задачами"
Очень даже имеющий. Блин, да огромное количество backend-разработчиков не может даже объяснить, как работают индексы в SQL, потому что не знают даже, что такое бинарный поиск (!), не говоря уже про B-деревья. Из-за этого получается куча откровенно плохо работающих приложений.
Ну я знаю как работают индексы, но угадаете где мне это было нужно в основном? Да, верно, на собеседованиях, в реальности же ни на одном проекте, где работал, не было необходимости в подобных знаниях
Самый простой пример - разработчик ставит индексы на поля таблицы, основная операция при выполнении которой - insert. Спрашиваю, зачем. "Потому что индексы ускоряют работу с базой данных". И всё. Он не знает, почему тут не нужны индексы, т.к. он не знает, что они собой представляют. Он просто прочитал, что "индексы ускоряют работу с базой".
Так это не связано никак с алгоритмами, структурами данных и big-O.
Это проблема конкретного разработчика, который применяет технологию/подход не разобравшись в ней.
У плохо работающих приложений абсолютно другие проблемы под капотом;) и все упирается только в архитектуру, применение паттернов и определенных практик при разработке, а никак использование эффективных алгоритмов по скорости и памяти
А алгоритм поиска по индексу бекенд программисту и не нужен. Равно как и тонкости переключения виртуальных страниц памяти или реализации конвейера команд. Ему нужно знание о том, что индекс существует, и кейсы, как он может пригодиться. В этом суть разделения труда. Оценивать программиста по решению чисто академической задачки с ограничением времени в 20 мин, да еще и дополнительными критериями, типа мышления вслух - ну такое. Это оценивает скорее наличие свободного времени у кандидата и готовность подстраиваться под самые бредовые требования работодателя
Ну ок, не нужно, но разве блин не интересно? Разве интересно просто тыкать кнопки и зажигать лампочки, а не разобраться почему они загораются? Инженеру разве нужно себя загонять только до необходимого минимума знаний для рубки капусты?
Хотел бы окружать себя коллегами, которые интересуются хоть чем-то что "нинужно".
Я крамольную вещь здесь выскажу. Если не брать РБ, где других альтернатив вырваться из всеобщей нищеты для простого человека особо нет, то вдолгую ИТшка бесперспективна. Годам к 40 - 50 весь этот молодой задротский задор проходит, появляется куча проблем-забот, уставать начинаешь сильно быстрее, да и вообще выгорание по сути неизбежно, и, получается, что остаётся либо уныло ковырять унылое легаси, либо на выход. Да, можно тут развести байки насчёт карьеры менеджера или ещё кого, но сколько управленцев, а сколько кодеров.
В общем, в нынешней стране проживания быть сантехником или электриком сильно перспективнее в среднам, имхо, чем ИТшка.
Так то к полтосу приближаясь корячиться под чужими раковиной-унитазом прямо в кайф, пусть даже и в приличной стране... С возрастом физическая работа точно так же дается тяжелее.
Ну оно, наверное, не сильно в кайф, хотя знаю сильно пожилого сантехника здесь, которого это не парит - справляется. Плюс к этому возрасту уже можно обрасти клиентурой, и нанять молодых с горящими глазами корячиться под унитазом, а самому, имея лицензию, чисто ходить пальцем указывать, где и что делать.
А что мешает пойти в сантехники в 50 лет после того как в IT стало и тяжело, и не интересно и бесперспективно?
Доживёте - этот вопрос отпадёт сам собой.
Вдолгую айти бесперспективна наверное только для вайтишника. И то не факт.
Нет никакой проблемы возраста "40-50 лет" в айти. 25-35-45... Нет сильной разницы для работы мозга.
Тренировать мозг желательно, это да. Но так это в любом возрасте. Прекратите мозг напрягать в 20, тогда вы уже в 30 будете за бортом интеллектуальной деятельности.
Согласен. Тело тоже надо тренировать, к сожалению, чтобы мозг работал :)
Тоже мне бином Ньютона. В 2000-ых похожие комментарии читал. Только там вместо 40 - 50, было 30 лет. Спорт позволяет не уставать сильно быстрее :)
Спасибо большое, dev.by!
Как в жизни, trade-off: подзадрачивать в LeetCode и потом минимум плюс 50к в год или сидеть на ж... дальше. Я выбрал первое.
Ну и что будет дальше? Все насобачаться решать задачи на Литкоде, рабодатель сменит тему и будет требовать реализации мини проектов. Или ещё хуже - отправит делать тесты. Мы уже это проходили...
Тогда по новой придется задрачивать. Такова жизнь программиста, который хочет быть востребованным на рынке, и зарабатывать выше рынка.
Ну, а я выбрал второе. Люблю сериальчики, и в игры компьютерные поиграть. На текущей работе денег хватает на нынешние нужды, плюс откладывать получается. В ванной у меня не итальянская плитка, а белорусская. На парковке моя машина рено сандеро, а не ауди, мерседес или бмв. Одеваюсь не в брендовые шмотки, а в турецкий ширпотреб. Вполне неплохо если бы не эта политическая буча [censored, П. 4.1.2. Пользовательского соглашения — https://dev.by/pages/agreement"]
Д... всё это. Кроме FAANG есть десятки и сотни тысяч компаний где вполне нормально работают люди, зарабатывают достойные деньги и в целом довольны жизнью. Участившиеся статьи по теме трудоустройства в FAANG-компании лишь очерчивают кризис с кадрами в указанных компаниях ибо после массового внедрения удаленки, желание д-ь в FAANG явно уменьшилось.
Для модераторов.
ДРОЧИТЬ - не ругательство, лишь термин в данном контексте.
Происхождение, этимология:
дрочи́ть
"раздражать, пестовать, баловать, гладить", дрочи́ться "упрямиться, буйствовать (о скотине)", дро́ча "буйство скотины", дро́чень м. "неженка; перекормленная скотина", дрочена "вид сдобных оладий",
Все это круто, но было бы еще круче, если бы кто-то смог пояснить четкую связь между такого типа интервью и "качеством" разработчика. Пока вот с кем ни общался (в том числе из вышеназванных корпоратов), никто так и не смог.
Единственная его цель - посмотреть, насколько кандидат может потратить свое время и силы на выполнение чего-то левого для данной компании, продемонстрировать старательность в первую очередь, потому как работа в корпорате предполагает отсутствие вменяемой документации и очень много проблем с упорядочиванием данных в первую очередь. К сожалению или счастью, чисто посредственных разрабов там такое же, как и в среднем по больнице, иначе такие мощности в десятки тысяч разработчиков не набрать.
Компенсация и стоки? Да вполне, хотя в долине той же есть полно стартапов, где платят на уровне, учитывая, что среднее время работника в корпоратах 2-3 года и промоушен адский.
Какой смысл думать о разумности этих требований пока у вас нет своей компании и вы не нанимаете. Хотите туда - подстраивайтесь и крутитесь по правилам их рекрутмента.
Разница видна на код ревью, когда принимаешь код, который работает с ORM или со всякими фильтрами по коллекциям (list comprehension).
И код формально верный результат дает, но легко может порождать проблемы с производительностью на ровном месте.
В иных местах такой код идёт в продакшен, потому что некому его проверить. И потом проект только из таких решений и состоит. Потом у кого-то тесты медленно выполняются. А на фронтах "мы просто анимацию покажем...". И так далее...
Но разницы нет, это да.... ;)
Разница в худшую или лучшую сторону? Не согласен, что в лучшую. Такого рода задачи предполагают компактную запись реализации, а это скорее вредит качеству кода.
Для ORM скорее важана дисциплина, а не алгоритмы.
Судя по комментам, коммерцы 90х, а не прогеры. Прогер должен любить алгоритм. Не буду хвастаться толщиной слоя пыли на моем дипломе программиста, но и сейчас с удовольствием потрачу пару часов за алгоритмической задачей на codility, например.
Да нет, не коммерсы к сожалению, просто 30+ тыс часов за кодом дают возможность перепробовать ну очень много вариантов его компоновки и использования. Настолько много, что тратить пару часов на еще один, да еще и не несущий реального практического применения не имеет ни малейшего смысла. Лучше пойти физически чем-нибудь позаниматься, мозг разгрузить. Ну или сериал, как тут предлагали.
че все вперлись в этот литкод, это процентов 30 от успеха, чтобы в фаанг попасть. Мой опыть провалов скорее основан на поведенческом и системном дизайне, потому как задачки на алгоритмы встречались скорее простые.
Не ну прикольно, программисты которые не умеют оценить сложность алгоритма... Не ну а чё, и так вон ресурсы девайсов увеличиваются и ускоряются, а знания разработчиков падают))
А ещё некоторые "ржали" с embed разработчика, попробуйте-ка там что-нибудь закодить без знания работы алгоритмов с ограниченными ресурсами железа.
Я думаю, что немало программистов буду озадачены тем, что не в любом языке массив - это что-то резиновое, что можно увеличить до нужного размера просто установив индекс.
Таких просто заменит искусственный интеллект со своей генерацией кода.
Ай, не факт.
ИИ в наше время зачаточный.
Просто айти - это безграничный океан работы. В нём есть место для самоучек корявых, есть места для условно профессионально-обученных работать в фабричном стиле (ПТУ в хорошем смысле этого слова), есть места для инженеров, есть места для ученых, есть места для очковтирателей и мошенников. Прямо ниши такие гигантские. Каждому найдётся место и применение.
Хе-хе, я тут год назад заикнулся, что у нас на собесах спрашивают устройство хэшмапы, так меня жёстко заминусовали, а нынче вон как большинство комментаторов топят за алгоритмы. Изменилось мировоззрение за год?
Думаю у вас сильно разные выборки получились. Вряд ли кто-то изменился.