💻 Coding interviews in a nutshell
6.86K subscribers
24 photos
214 links
Разбор задач для собеседований, по одной каждую неделю.

У микрофона Виктор @vitkarpov. ex-Amazon, ex-Yandex
Download Telegram
Зачем нужна секция «дизайн систем»?

Некоторые считают, что нужно начитать всяких базвордов и уметь расставить их в нужные места на диаграмме.

На самом деле, суть в том, чтобы отличить человека, который строит «сферических коней в вакууме», от человека, который запускал эти самые системы в продакшен. То есть понимает как его код будет бежать на реальных машинах, собирал метрики, сталкивался с проблемами масштабирования.

Чтобы не было такого, что сеть у нас всегда 100% надежная, latency не существует, а все зависимости (на самом деле написанные на коленке) работают как часы.

Грубо говоря, насколько прагматично человек подходит к дизайну систем, через призму той боли, которую он уже пережил.

Соответсвенно, научиться этому можно только если уже строил такие системы, и набил шишки. Поэтому систем-дизайн нужен чтобы оценить «синьорность». Алгосики — минимум, который все должны сдать, а дальше можно дать оценку только через вот такой разговор на «свободную тему», где правильных ответов нет.

То есть в дизайне всегда есть трейдофы, ограничения. Условно хотим построить систему бронирования отелей, а как данные получать? Будем скрейпить сайт Хилтона пока нас не заблокируют навсегда? Ну нет. Должны быть АПИ. А эти АПИ точно всегда актуальные данные возвращают? Ну нет, мы ж не будем каждую секунду их запрашивать — есть какие-то TPS. Нужен кэш, а что будем делать когда случится рассинхрон, то есть человек комнату забронировал, а на самом деле ее уже нет?

Другая классическая ошибка: отелей много, MySQL не подойдёт. А почему? А сколько всего отеле в мире? Ну не так уж и много, на самом деле! Кроме того, это отели, а значит можно хорошо шардировать (географически, например) то есть разложить их в разные базы и роутить куда надо запросы за данными.


И так далее, с интервьюером продолжаешь раскапывать задачу до дна.
Интересны ли вам стримы по систем-дизайну, с гостями, которые в теме?
Anonymous Poll
62%
Да. Больше, чем алгоритмы.
21%
Да. Меньше, чем алгоритмы.
5%
Нет, не люблю стримы.
11%
Посмотреть ответ.
Как начать и продолжить?

Знакома ли вам то чувство, когда, прочитав очередную историю успеха на литкоде, вы записываетесь на курс Седжвика на Курсере. Проходит неделя-другая, и запал пропадает. Гугл с Фейсбуком уже не такие привлекательные, а уведомления от Курсеры про сроки сдачи начинают успешно игнорироваться.

По моему опыту, важнее всего — цель. Спасибо, кэп. В моем случае, я собеседовался много раз, потому что не было конкретного решения о переезде. Грубо говоря, присматривался и путешествовал за чужой счёт, поэтому и подготовка шла, скажем так, с переменным успехом.

Оглядываясь назад, понимаю, что на это мне сходу бы указал любой психолог. Но, легко быть умным назад, как говорит мой бывший коллега.

Когда решение появилось, то появилась и система подготовки. Какая?

На самом деле, все тривиально. Табличка в экселе с тем, что я делаю каждый день. Какие решаю задачи, с заметками какие были сложности (когда пишешь, лучше укладывается в голове), какие ресурсы почитать, и т.д.

Выделил определённое количество часов в неделю на подготовку. Упарывать не нужно. Сидел каждый будний день с утра, когда голова варит лучше всего, занимался. На выходных отдыхал, а то следующая станция — выгорание.

Использовал «помидорки». 25 минут фокусируешься на задаче, потом перерыв. Смотришь подсказку, если задача не даётся, и заводишь таймер на следующие 25 минут.

И так каждый день, на протяжении 5 месяцев. Со временем все начинает устаканиваться в голове, появляется уверенность в себе, которую как раз и надо показать на собеседовании.

У вас есть система, которая помогает в обучении или работе над своими проектами?
Happy Monday! 👋

Новый сезон про графы. На этой неделе будем вычислять деление, звучит странно, но на самом деле интересно. Постараюсь дать интуицию как «увидеть» за непонятным условием граф, оценим сложность, напишем BFS.

https://www.youtube.com/watch?v=Dpifo9OJpIs
Почему я решил завести YouTube-канал или история про английский

Изначально я завёл YouTube-канал, точнее стал туда выкладывать какие-то ролики, чтобы подтянуть английский. Идея была следующая — я решаю литкод, на английском рассказываю что понаделал, будто это собеседование, а потом включаю автосгенерённые субтитры и смотрю какие слова неправильно или нечётко произношу.

Это история получилась довольно захватывающей и реально дала плоды на собеседованиях, потому что словарь довольно специфический. Через пару видосов я, наконец, запомнил на каком слоге ударение в слове array 😄

Мне понравился и сам процесс создания видосов, захотелось научиться делать их нормально — до сих пор вот учусь. Судя по длине просмотра, которая увеличивается, здесь есть прогресс — стараюсь давать информацию плотничком, без воды, формат оттачивается. Это уже не про английский, конечно, но началось всё именно так.

Вы как, учите английский? Поделитесь лайфхаками 😉

https://www.instagram.com/p/B-E9_DmoSFl/
Всем привет 👋
Через час начинаем стрим с Тиной. Спойлер: сегодня будем мучать топологическую сортировку. Присоединяйтесь! 👨🏻‍💻👩‍💻

https://youtu.be/Y42XvA8FHL0
Всем привет! 👋

После поста про английский, в личке спрашивали где все видосы на английском, которые я упоминал. Я сложил всё в отдельный плейлист и убрал из поиска на ютубе, чтобы не мешать контент на разных языках на одном канале.

Ссылка на плейлист, если вдруг вам это будет полезно — https://www.youtube.com/playlist?list=PLtRFPaw3fD55Drn11idkIw0mBidrfml29
Happy Monday! 👋

Разборы задач уходят на каникулы 🏖️, до конца лета. Завтра разговорный стрим с Тиной, решать ничего не будем, только болтать. Последний стрим в этом сезоне — приходите с вопросами, набросами и предложениями 😊

https://www.youtube.com/watch?v=VYwF87PKwuo
Влад Тен вышел из сумрака, с интересным челенджом — 170 задач из списка LeetCode Patterns, вот это я понимаю плейлист для подготовки к собесам получится 💪 Stay tuned!

Анонс на YouTube: https://www.youtube.com/watch?v=92_ZmKjtfxA
Канал: https://t.me/vladtenlive
Всем привет! 👋

Нашёл, возможно, самый недооцененный канал по систем-дизайну для фронтендеров. Чувак готовился к интервью и разобрал 6 разных задач: фейсбуковскую ленту новостей, пинтерест, нетфликс, чат, автокомплит, эксель, голосовалку.

Очень подробно, и по единой схеме которую всегда нужно использовать: собрать требования к системе, накидать высокоуровневые компоненты, придумать АПИ, рассказать про узкие места.

Однозначно лайк. Рекомендую к просмотру!

https://www.youtube.com/channel/UC6YpkaZsAcAvPNt4rLiS7dg
💰 Исследование зарплат разработчиков (анонимно)

Всегда интересно узнать, сколько платят коллегам по цеху. Это не только любопытно, но ещё и полезно: можно понять, платят ли вам рыночную зарплату и стоит ли искать новую работу или просить повышения.

Плюс есть ощущение, что пандемия сильно изменила рынок, и теперь больше компаний готовы нанимать удалённо, а также, возможно, выросла конкуренция за умы. Это случилось не так давно, а данных не так много, чтобы составить однозначное представление о текущем состоянии рынка без отдельного исследования.

Я сделал небольшую гугл-форму, где собираю анонимные ответы про доход разработчиков: https://forms.gle/F27VuaK8o55Na5LL9

Если каждый из нас потратит несколько минут и заполнит форму (я уже добавил свои 4 офера с 2018 года и добавлю ещё несколько, которые не принял), особенно указав все свои оферы/места работы за последние несколько лет, соберётся достаточное количество статистически достоверных данных.

Проанализировав ваши ответы, я надеюсь найти ответы на вопросы:

🤩 что выгоднее, удалёнка или офис
🌏 как изменилось соотношение удалённых и офисных вакансий
💵 выросли ли зарплаты разработчиков в последние год-два и на сколько

Чем больше людей поучаствует, тем более достоверным получится отчёт - а значит тем больше пользы нам с вами.

Поучаствуйте сами и расскажите об опросе друзьям, поделившись этим постом или прямой ссылкой на форму. Спустя несколько недель я проанализирую ответы и скомпилирую отчёт, который выложу у себя в канале.

До связи! 👋
Всем привет! 👋 Решил выйти из сумрака, с идеей.

Вокруг канала собирается комьюнити увлечённых и крутых разработчиков (спасибо всем, кто участвовал в advent of code в этом году, было круто!). А что если связать этих людей напрямую с нанимающим менеджерами, которые заинтересованы в кадрах?

Скажем, я и коллеги проводим собеседования (в чем я лично прокачался и мне интересно продолжать), составляем анкеты: какой стек, какая предметная область интересна, результаты собеса по алгосикам, вот это все. Дальше я прихожу к кампаниям и предлагаю людей, с которыми им интересно пообщаться.

В моём представлении процесс найма должен идти по упрощенному треку, где разработчикам сразу предлагают этап общения с инжиниринг менеджерами, предполагая, что технические скилы провалидированы (с доступом к записи собеседования).

Интересно ли вам было бы в таком поучаствовать? И как разработчику и как нанимающему менеджеру.
Прошу в комменты с фидбеком.
Этот канал не про политику, но война это не политика — это тот водораздел, где нельзя молчать. Почему раньше не написал, ещё в первый день этого кошмара?

Стыд. Пишу сейчас эти строки, и сгораю от стыда, внутри всё клокочет.

У войны нет оправданий и причин! Украинцы наши братья, и я не понимаю как теперь смотреть братьям в глаза. Я не хочу войны.
Всем привет! 👋

В эти нелегкие времена люди продолжают собеседоваться, и, видимо, ещё активнее чем раньше. Поэтому публикую анонимный отзыв о собеседовании во фрилансерскую сеть Toptal, на фронтендера. Информация из первых рук, действительно полезная.

Далее авторский текст (анонимно, потому что это NDA 😉)

--

Как всё было: пошёл на сайт топтала, зарегистрировался. Везде где можно заявлял что я front-end и что я react, но ещё и немного vue. Сейчас у меня специализация core и я могу апплаиться на любые работы, не только на фронтенд.

0 этап: Либо созвониться надо, либо записать видео с "чем ты занимался по жизни", чтобы проверить уровень английского – я отправил видео, чтобы не ждать рекрутёра. После этого прислали ссылку на 2 этап.

1 этап: 2 задачи на Codility, на реакт, с тестами. Задачи достаточно простые, гуглить можно, поэтому всё довольно тривиально. "Задачи на реакт" = у тебя что-то вроде codesandbox. Разрешается скопировать в свою среду разработки и потом скопировать обратно в онлайн IDE. Времени даётся много, что-то вроде 1.5 часов, если правильно помню.

2 этап: 2 задачи "лайв кодинга", 15 минут на каждую. Пишешь в своей среде, на своём компьютере. За тобой следит человек, Экран + видеосвязь. 1 задача простая на реакт, вторая задача на general coding, скажем так, но ОЧЕНЬ простого уровня. Без алгоритмов, решается ДОВОЛЬНО просто. Могу порекомендовать потренироваться в лайв-кодинге на каком-нибудь сайте вроде codesignal – я там решал задачу, которая мне попалась (в разделе простых задач). На мой взгляд это самый сложный этап, потому что времени мало, а затупить легко.

3 этап: 2 задачи лайв-кодинга на онлайн-платформе, нужно добиться чтобы все тесты прошли. Задачи относительно похожие на real life и на задачи из 1 сегмента. Времени 1.5 часа, за тобой опять смотрит человек, и в экран и в вебку. Гуглить можно, но "разумно" (можно поискать доку, нельзя поискать "а как решить эту задачу"). Я лично конкретно спрашивал, что можно гуглить, чтобы никого не смущать. Рекомендую ВНИМАТЕЛЬНО читать условие. Тесты несколько... контринтуитивны.

На 3 этапе интервьюер сказал мне, что если я облажаюсь, то мне вышлют "проджект", который можно делать оффлайн. Ещё когда я немного затупил, интервьюер НАСТОЙЧИВО посоветовал мне перечитать условие задачи, что помогло. Можно сказать, что на этом этапе к тебе уже достаточно лояльно относятся (ну или мне повезло).

P.S. если у вас есть знакомые на Toptal, не забывайте про их реферальную ссылку. Всем дадут денег (сам проходил по рефералке, остался доволен). Если зарегались без неё, то потом на любом этапе скажите "Я по совету Имярек Имярековича, можно его в мои рефералы записать?" – не откажут.

P.P.S. Одновременно с этим у меня товарищ на бекенд проходил испытания, там посложнее ОБЪЕКТИВНО. И надо делать фуллстек проект. Поэтому если вы фуллстек, то возможно стоить идти как фронту, потом всё равно можно будет апплаиться на все проекты 🙂

Если вы всё ещё думаете, стоит или не стоит пробовать - СТОИТ.

Задачи на реакт действительно тривиальные. без всяких "сделайте невероятный перформанс". или там "прокиньте реф через реф в реф через реф".

--

А что с оплатой? Как сейчас получать деньги из-за границы находясь в РФ?

--

Смотри. С этим интересно.

В топтале есть Payoneer и есть Hyperwallet. Hyperwallet это PayPal, он отвалился для России с 22 числа. Мне команда поддержки сказала, что можно через Payoneer продолжать водить переводы в Россию, можно через direct wire transfer (прямо в банк), но заниматься этим они не очень хотят.

Последние пару платежей я принимал на российское ИП и правдами-неправдами выводил в Турцию. Сейчас планирую ехать в Грузию, открывать там ИП и получать деньги на него.

А, ну и бонус: Hyperwallet не работает и в Турции тоже, так что для меня скорее всего всё равно Payoneer.

Теоретически как я понимюа можно всё ещё находиться физически в россии и принимать платежи.
Forwarded from Front-End Engineer Blog (Evgenii Ray)
Announcing - Frontend Engineer Interview Guide 🎥

Hey folks, tomorrow I’m going to publish the video about Frontend Interview Preparation in Big Tech.

Video is scheduled for publishing at 11.00 AM London Time. Looking forward to your comments and suggestions.

This is my first time doing such stuff, so it went not without technical issues, recorded in 4k on a good camera, but lost the quality during OBS Capture 🤨 It’ll be better next time 💪

See you tommorrow 🍻