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

У микрофона Виктор @vitkarpov. ex-Amazon, ex-Yandex
加入频道
Про мой опыт собеседования с Амазоном: сколько заняло времени, как общался с рекрутером, примерно что спрашивали и что отвечал — https://leetcode.com/discuss/interview-experience/498867/Amazon-or-SDE2-(Front-End)-or-Edinburgh-UK-or-Jan-2020-Offer
Задача этой недели про «доминантный» элемент, звучит-то как! Это мой вольный перевод слова majority, а найти нужно число, которое повторяется больше половины длины массива раз.

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

Обычно, на собеседовании это не ожидается, но будет жирным плюсом в карму, конечно. Главное помнить, что время ограничено и нужно успеть написать код и протестировать, что с «хитрыми алгоритмами» может занять больше отведённого под секцию времени.
О чём этот канал?

Всем привет! Меня зовут Виктор. Я увлекаюсь алгоритмами, всякими олимпиадными задачками (решил ~250 задач на LeetCode, если вам это о чём-то говорит). Собеседовался в крупные западные компании: Amazon, Google, Facebook, Microsoft. В итоге, устроился в Amazon, в Эдинбурге 🇬🇧

Еженедельно публикую статьи рассчитанные на 5-10 минут чтения и разбора кода и, возможно, ещё немного времени для чтения «дополнительной литературы», ссылки на которую я буду стараться давать где это имеет смысл. Код написан на JavaScript в императивном стиле, и, в основном, без использования специальных конструкций языка, так что выглядит почти как С 😉

Пока задач 27, из списка на LeetCode, который был подготовлен кем-то из комьюнити на форуме и многими одобрен как «отлично подходящий для начинающих». К сожалению, оригинальная тема на форуме пропала, но список я успел сохранить себе.

Кроме общих задач, таких как конвертер римских чисел, есть задачи на определённые темы: списки, деревья, хеш-таблицы, sliding window, и даже одна задача про дизайн хэш-таблицы с нуля.

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

Можно смело писать в личку в Телеграме, буду рад обсудить задачи, ответить на вопросы и просто пообщаться 😊
💻 Coding interviews in a nutshell pinned «О чём этот канал? Всем привет! Меня зовут Виктор. Я увлекаюсь алгоритмами, всякими олимпиадными задачками (решил ~250 задач на LeetCode, если вам это о чём-то говорит). Собеседовался в крупные западные компании: Amazon, Google, Facebook, Microsoft. В итоге…»
Happy Monday! 👋

На этой неделе реализуем свой стек с функций min, которая возвращает минимальный элемент на стеке — https://www.notion.so/Min-Stack-4061d04ad12f4223b7de592196f91805

Я рассматриваю две разные реализации и сравниваю время рантайма на LeetCode — отличие на порядок, что явно демонстрирует разницу между O(n) и O(1) 😊
Happy Monday! 👋

Задача на этой неделе — определить является ли одна строка анаграммой другой (https://www.notion.so/Valid-Anagram-84ee94987be34cf2898addad80f93d20). По ходу решения поговорим про хэш-таблицы и кодировки.
Нас уже 89 человек, это очень круто! 🎉 Хочу немного познакомиться, для этого запущу несколько опросов.
Какой ваш основной язык программирования?
Final Results
44%
JavaScript/TypeScript
27%
C/C++/Rust
5%
PHP
15%
Java & JVM languages
8%
Python
Про мок-интервью

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

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

Недавно я писал про LeetCode, что за сервис и как им пользоваться при подготовке к собеседованиям. После мне написала бывшая коллега из Яндекса с замечанием: «LeetCode это хорошо, но почему не говоришь про мок-интервью и сервис Pramp?». Исправляюсь.

Сервис pramp.com даёт возможность потренироваться с коллегами по всему миру. Прямо в браузере у вас есть видео- и аудиосвязь, редактор кода с возможностью совместного редактирования, и задачи, которые вы должны задать друг другу (решение своей задачи вы получаете за сутки до встречи).

Даже если с решением алгоритмических задач проблем у вас нет, всё равно стоит воспользоваться сервисом. И вот почему:

- английский язык: «разговориться», привыкнуть к акцентам, подтянуть термины (например, как будет O-большое от эн, округление с недостатком/избытком, оператор [], два в степени n и т.д.);
- в роли интервьюера вам нужно направить человека, дать правильную подсказку, поняв где он буксует — для этого вам придётся хорошо разобраться в решении задачи, которую вы будете задавать;
- привыкнуть к формату: 5 минут рассказ про себя (который будет отлетать от зубов через пару раз), вникнуть в задачу, задать вопросы, предложить тесты, обсудить сложность предлагаемого решения.

Как-то так. Кстати, тренироваться можно и с другом: сервис позволяет сгенерировать ссылку на комнату, которую можно просто пошарить. Если кому-то интересно потренироваться вместе со мной — пишите в личку 😉
Happy Monday! 👋

На этой неделе будем разворачивать бинарное дерево – https://www.notion.so/Invert-Binary-Tree-f22b253e9e234ed5b6ae1d007f9f082c.
Да-да, та самая задача из-за которой автора Homebrew, по его собственным словам, не взяли в Google.
Happy Monday! 👋

На этой неделе разбираемся с изоморфными строками — https://www.notion.so/Isomorphic-Strings-cc8bc767e0104dfda754111f553336f4
Вспомним что такое инварианты, а так же классический приём при работе со строками — т.к. алфавит сильно ограничен, то можно использовать массивы вместо Map & Set.
Привет, хочу поделиться любопытной статьей: чувак собеседовался в 5 разных компаний в Долине так, что онсайты были каждый день в течение недели. Моё путешествие с одного онсайта в Лондоне, в понедельник, на другой онсайт в Эдинбурге, в четверг — просто детская забава 😆 В статье есть дельные советы по подготовке. Так же есть перевод на русский на Хабре.
Happy Monday! 👋

На этой неделе считаем количество простых чисел не превосходящих nhttp://bit.ly/2ICBfGU. Кажется, классическая задача.

Разберём подробнее «магическое» ограничение «искать надо до корня из `n`», от брутфорса плавно перейдём к решету Эратосфена. Есть и другие, кстати, поэтому даю ссылку на статью для тех кому сильно интересны простые числа.

Если у вас есть твитер и желание помочь в распространении контента — вот ссылка на твит, буду благодарен 😊
Привет! Если вы вдруг, как и я, кроме программирования изучаете английский язык, не могу не посоветовать видео на YouTube собственного исполнения — https://www.youtube.com/watch?v=lrRLLqAurXc. Разбираю задачу Implement Trie (Prefix Tree) с LeetCode. Дайте, пожалуйста, фидбек: интересен ли такой формат или нет ничего лучше чтения.
Happy Monday! 👋

Задача этой недели: поиск «счастливого числа» — https://bit.ly/2UcaZcV
Рекурсия и практическое применение «поиска цикла в связном списке».
Ссылка на твит.