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

У микрофона Виктор @vitkarpov. ex-Amazon, ex-Yandex
Download Telegram
👋 Happy Friday!

По вторникам, в 20 часов по Москве, решили стримить с Тиной Думилиной (твитерским привет 👋) — в прямом эфире будем решать задачу с литкода, по пути обсуждать разработку, холиварить, и вот это всё.

https://youtu.be/i0mEzjgetmo

Первая ласточка уже полетела, в прошлый раз решали очередную задачу на sliding window, но в конце заговорили про «бинарную магию» и вот следующий стрим будем разбираться с «ёлочками» в джаваскрипте. Зачем нужны операторы бинарного сдвига, что такое маски, как можно легко решить задачу про поиск всех сабсетов с помощью ноликов и единичек.
Happy Monday! 👋

Сезон про бинарный поиск идёт к концу, задача этой недели — найти индексы пары чисел в отсортированном массиве, которые в сумме дают определённое число.

https://www.youtube.com/watch?v=-0qaa-_VyCs

PS. Это классическая задача из видоса «как собеседуют в Гугл» (https://www.youtube.com/watch?v=XKu_SEDAykw)
Всем привет! 👋

Завтра, в 20 часов по Москве, уже третью неделю подряд будем литкодить и общаться с Тиной (https://twitter.com/tinathedev). Подумал, вместо того, чтобы смотреть кривой стрим на YouTube — а приходите сразу в зум! Мне кажется, что дискуссия может получиться более оживленной 😊

Viktor Karpov is inviting you to a scheduled Zoom meeting.

Topic: Литкодим с Тиной Думилиной @ Алгосики для самых маленьких
Time: Jun 15, 2021 06:00 PM London

Join Zoom Meeting
https://us02web.zoom.us/j/88572873777

Meeting ID: 885 7287 3777
Passcode: 5zfz1c
Happy Monday! 👋

Открываем третий сезон — divide and conquer. Первая задача найти самый часто встречающийся элемент в массиве. Решаем всеми способами: сортировка, счетчики, и «разделяй и властвуй».

Бонус: подробно говорим про понятия О-большого и сложности вообще.

https://www.youtube.com/watch?v=VgcBi3L321Y
Всем привет! 👋

Сегодня вторник, а значит вечером будем литкодить с Тиной!
Залетайте на стрим — https://www.youtube.com/watch?v=u0Wdjrpi7f4

Будем решать https://leetcode.com/problems/open-the-lock/, задачка на обход графа в ширину.

Или прямо в зум, если хочется активно участвовать 💪
Topic: Литкодим с Тиной Думилиной
Time: Jun 22, 2021 08:00 PM Moscow
https://us02web.zoom.us/j/81968945243
Passcode: 352391
На последнем стриме упоминал Пашу Маврина, с его методом доказательств «помашем руками». Просили скинуть ссылку, делюсь — https://www.youtube.com/channel/UC9WDkCyUlNTncq1Y-mFSgLQ

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

PS. В следующий вторник, в 20 часов по Мск, будем решать что-нибудь на деревья. Stay tuned! 😊
Очень любопытная рефлексия https://t.me/topizza/762, которая, наверное, совпадает с тем, почему я вообще стал упарываться по алгосикам.

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

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

Забейте на алгосики, не надо деревьями вращать если не кайф, не надо новые фреймворки учить каждую неделю: двигайтесь в своём темпе.

Вы как с синдромом самозванца, боретесь?
Happy Monday! 👋

Задача этой недели — quickselect, или находим k-ю порядковую статистику. Где квикселект, там и квиксорт, поэтому любопытно разобрать в рамках сезона про «разделяй и властвуй». Пожалуй, это уже классическая история.

https://www.youtube.com/watch?v=pf77IP4m3Kw
Leadership Principles

Саша Горин принёс в чатик прекрасный шаблон для подготовки к бехейв-секции в Амазоне (в целом, ответы универсальные).

На каждый принцип есть пример с ответом по методу STAR.

Наш чатик прекрасен 😊

https://www.notion.so/BE-Interview-8adc74cf14ad450fab3083e0633d2821#d4f0576593024ede834e6f2cef5f350e
Фил Ранжин пишет про «людей, которые сами себе проиндексируют - сменой работы» https://t.me/myobrechenychannel/349
А мне кажется, что это не так работает.

Собеседоваться — стресс, а ещё отдельный скилл. Не все ходят по собеседованиям и знают свою цену на рынке. Зачастую люди годами сидят с той самой «индексацией в 5%».

Зависимость удовлетворенность-от-работы/сколько-я-зарабатываю сильно нелинейная, логарифм получается. Есть плато на котором «деньги не важны» (шутка из твитера про то, что хочу зарабатывать столько, чтобы говорить всем, что деньги не приносят счастья) и влияют другие факторы: команда, продукт, технологии.

> «Типа, что, вот так взять и поднять человеку зп втрое, потому что бакс скакнул? Да.»

Если речь про компании из РФ, то, скорее всего, и зарабатывают они на русскоязычном рынке, а значит прибыль в три раза не увеличилась. Откуда деньги разработчикам?

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

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

Вы как, ходите по собеседованиям чтобы знать текущий курс козули?
Продолжаю читать Programming Pearls. Интересно про перформанс.

Автор рассказывает про Андрея Аппеля, который работал над симуляцией какого-то движения 10K планет. И пришлось ему закопаться в перфоманс и программирование, отвлечься от физики, потому что просто цикл в цикле на три строки работал бы год.

Он сделал табличку с замерами (фотка дальше). Где конкретно и во сколько раз улучшился рантайм.

Переписал самую нагружённую функцию на ассемблере — ускорился в 2.5 раза. Запустили на компе с приблудной для ускорения плавающей точки, заплатив за оборудование кучу денег — ускорился в 2 раза.

Переписал с O(N^2) на O(N * log N) — ускорился в 12 раз 😃 В тему про где закопаны 80% результата. Но у всего есть цена.

Тут же как. Вот есть эти 10K планет и милое дело их все циклом в цикле пробежать. Откуда логарифм у него? Построил дерево поиска. Как? Оно само по себе ниоткуда не возьмётся.

Ему пришлось сделать хорошие предположения о том как можно планеты сгруппировать так, чтобы засунуть все это в дерево — очевидно, симуляция уже как бы не та, то есть не совсем точная. Но он смог показать насколько она не точная в новой модели, по мелочи вышло. Явно стоит того, чтобы не ждать год 😃

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

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

Если эту мысль продолжать, то «синьорность» тоже где-то рядом. В синьора можно сгрузить неведомую никому херню и на выходе получить модель, с хорошим приближением, и так чтобы можно было запрограммировать (ведь компьютер не понимает «сделать красиво»), в идеале ещё и оценкой куда надо приложить 20% усилий чтобы все заиграло. Красота. Можно нарезать на таски в джире 😊
https://youtu.be/-dI7JaPQCpE

Сергей Сёма из Гугла, автор https://t.me/FaangInterview запустил подкаст, где с гостями общается про работу и жизнь в корпорациях. Понравился последний выпуск с Ларисой Агарковой про культуру девопса в Гугле: какие есть мониторинги, что делает дежурный, как пишутся «разборы полетов».
Как стать «синьором»? Спойлер: надо брать на себя ответственность.

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

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

У вас в компании есть ревью, как собирается кейс для повышения?