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

У микрофона Виктор @vitkarpov. ex-Amazon, ex-Yandex
Download Telegram
Happy Monday! 👋
На этой неделе разбираемся с in-place алгоритмами. Хорошая задача — move zeroes, подвинуть все нули в конец. Хороша она тем, что решается тривиально «в лоб», и имеет несколько вариантов развития.
Так же сделал анимированную демку 🔥
https://vitkarpov.me/posts/move-zeroes/
На какую тему разобрать следующую задачу?
Final Results
23%
Queues
59%
Dynamic Programming
27%
Backtracking
Учитывая, что больше половины людей проголосовали за динамическое программирование — направление ясно. Кстати, на сайте есть теги. Например, вот задачи про динамическое программирование.
Happy Monday! 👋

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

https://vitkarpov.me/posts/minimum-number-of-removals-to-make-mountain-array/
Коллеги напомнили, что скоро (старт 1 декабря) очередной https://adventofcode.com/ — участвуете? В прошлом году писали «свой космический корабль», любопытно, что будет в этом.
Привет! Недавно опубликовал гостевой пост в другом канале, про собеседования. Почитайте, если любопытно про «подготовку в FAANG» (на самом деле, куда угодно).
Forwarded from Пять Франков
5 важных вещей при подготовке в FAANG

Всем привет!

Меня зовут Виктор, программирую ЭВМ в Амазоне, до этого — в Яндексе. Был на собеседованиях в Facebook, Microsoft, Google. Хочу поделиться 5 важными вещами, которые я вынес для себя, при подготовке к собеседованиям в эти компании.

1️⃣ Рефер
Попасть на собеседование проще всего через рефер. Найдите человека на LinkedIn, который работает в нужной вам компании и будет готов его дать.

2️⃣ Резюме
Оформите резюме под конкретную вакансию: релевантная секция «о себе», достижения (желательно в цифрах: ускорил, сократил, и т.д.) рядом с каждой позицией. Не стесняйтесь «хвалить себя». Врать не стоит, конечно, важно просто вспомнить, что вы делали и правильно описать.

3️⃣ Английский
Исключительно важный пункт.

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

Так же важно потренироваться решать задачи объясняя на английском, привыкнуть к таймингу и обстановке интервью, чтобы потом меньше стрессовать. Для этого существуют мок-интервью, попробуйте https://pramp.com.

4️⃣ LeetCode и алгоритмические секции
Алгоритмическая секция должна выглядеть как парное программирование, а не как экзамен. Представьте, что решаете задачу с коллегой и займите «солирующую позицию»: задавайте вопросы, рассуждайте про сложность, плюсы и минусы решения.

Порешайте 50-60 задач разного уровня сложности, из списка популярных для собеседований. Сразу станут видны пробелы: как дерево обойти, как бинарный поиск написать, чем отличаются BFS от DFS. Это базовые вещи, которые пишутся на автомате, если кандидат их не знает — это красный флаг. Подтяните базу и смело на интервью, совсем не обязательно решать сотни задачи месяцами!

5️⃣ Оффер и торги
Стоит изучить рынок зарплат для определённой локации и уровня в данной компании, поможет https://levels.fyi. Идеальный вариант — получить два оффера, чтобы можно было торговаться.

На этапе оффера делать это абсолютно нормально: компании совсем не выгодно потерять кандидата на самом последнем этапе, поэтому процентов 10-15 можно выбить (обычно прибавкой к опциону или sign-on бонусу)

Подробный пост про собеседование в Амазон.
А ещё я веду канал с разборами задач.

Это был первый гостевой пост на канале. Если вы тоже хотите поделиться опытом — напишите мне в @winterview_contact_bot
💻 Coding interviews in a nutshell pinned «5 важных вещей при подготовке в FAANG Всем привет! Меня зовут Виктор, программирую ЭВМ в Амазоне, до этого — в Яндексе. Был на собеседованиях в Facebook, Microsoft, Google. Хочу поделиться 5 важными вещами, которые я вынес для себя, при подготовке к собеседованиям…»
Happy Monday! 👋
Разборы задач уходят на зимние каникулы 🎄🎁 . До 25 числа я решаю AdventOfCode. Кстати, присоединяйтесь! Обуждения решений — каждый день в чате канала, а по закреплённой инструкции можно присоединиться к нашему лидерборду.
Олег Громов рассказал почему «попасть в FAANG недостаточно, или 9 шагов к карьере мечты» для студентов школы 21. Довольно любопытные наблюдения про осознанное построение карьеры — https://www.youtube.com/watch?v=bYJS3FI0Rkk
Друзья, с наступающим Новым Годом! 🎄🎁

Желаю всем сохранять трезвый рассудок, планировать (2020 ехидно усмехнулся) и достигать в новом году! При этом не забывать отдыхать, и больше гулять 🌳🌴🌊 В январе разборы задач возвращаются: одна задача в неделю.

PS. Спасибо всем, кто написал в личку, что следите за разборами задач, и даёте обратную связь. 👍
Happy Monday! 👋
Разборы задач возвращаются. Опросы показали, что в тренде динамическое программирование и очереди, решил начать с последних, т.к. на динамическое программирование было много разборов (но будут ещё). Поиск максимума в скользящем окне — популярная задача, вариация которой даже один раз попалась мне на онсайте в Facebook.
https://vitkarpov.me/posts/sliding-window-maximum/
Happy Monday! 👋
На этой неделе разбираем классический пример задачи на графы и обход в ширину, где как раз нужны очереди.
https://vitkarpov.me/posts/word-ladder/
Happy Monday! 👋

Задача этой недели https://vitkarpov.me/posts/jump-game-vi/
Happy Monday! 👋

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

https://vitkarpov.me/posts/letter-tile-possibilities/
Happy Monday! 👋

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

https://vitkarpov.me/posts/combination-sum/
Happy Monday! 👋

Задача этой недели — найти пик в массиве. Хорошая задача с тривиальным решением и развитием в бинарный поиск.

https://vitkarpov.me/posts/peak-index-in-a-mountain-array/
Happy Monday! 👋

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

https://vitkarpov.me/posts/linked-list-cycle/
Happy Monday! 👋

Задача этой недели на рекурсию, из недавного контеста на LeetCode. Можно ли все отдельные массивы из двумерного найти в обычном массиве, так, чтобы не было пересечений?

https://vitkarpov.me/posts/concatenating-subarrays/
Happy Monday! 👋

На этой неделе будем искать оптимальное расписание задач. Рекурсия с мемоизацией.

https://vitkarpov.me/posts/maximum-profit-in-job-scheduling/