💻 Coding interviews in a nutshell
Открыть в Telegram
Разбор задач для собеседований, по одной каждую неделю. У микрофона Виктор @vitkarpov. ex-Amazon, ex-Yandex
Больше7 285
Подписчики
-324 часа
-267 дней
-4030 дней
Архив постов
Happy Monday! 👋
Прохожу тренинги для интервьюеров в Амазоне. Вот вам парочка инсайтов о том, какие сигналы собираются на интервью.
👉 Понимание проблемы
По статистике, одна из самых частых ошибок — люди начинают решать какую-то другую задачу, не ту, что спрашивает интервьюер. Я не имею в виду, что кандидат «выучил решение». Это скорее про то, что люди придумывают алгоритм исходят из какого-то одного, чаще всего, удобного примера. Понятное дело, что в таком случае и алгоритм получается неверный.
Умение сперва задать правильные вопросы и понять «а точно ли мы должны этого хотеть» (👋 Яндексу, где очень крутые коллеги научили меня задавать этот вопрос) — важное умение в работе над реальными продуктами (по крайней мере теми, которые через полгода не превратятся в лапшу).
Это первый сигнал, который должен получить интервьюер.
👉 Коммуникация
Ошибку, которую часто допускают люди — начать сыпать терминами в духе «ну тут вкрутим граф, тут отсортируем на всякий случай, тут мемоизацию используем», на самом деле не понимая до конца а точно ли это всё здесь нужно. Умение объяснить простыми словами так, чтобы было понятно — важное умение.
Аналогично и в работе над реальными продуктами. Можно начать «обмазываться кубернетисом» не до конца понимая зачем, а потом всё это долго и мучительно поддерживать.
Это второй сигнал, который должен получить интервьер.
👉 Умение писать код на выбранном языке
На собеседования на разработчика приходит довольно много людей, которые как бы всё понимают, но написать не могут. 🤷
Если кандидат 5 лет каждый рабочий день пишет код на определённом языке, то вряд ли он забудет как объявить переменную или какую-то функцию из стандартной библиотеки, верно? Кстати, писать на доске или в гуглодоке, без автокомплитов и богатых IDE, это просто способ получить сигнал чище.
Последний сигнал – умеет ли человек с естественного языка перевести на язык программирования, выразить идею в коде. Если кандидат пишет «на фреймворках» или на сниппетах со Stack Overflow, то на данном этапе это должно быть видно.
PS. Еженедельные разборы переезжают на YouTube — https://www.youtube.com/playlist?list=PLtRFPaw3fD55QtDdLVruhKa0M9Wv1l3SR с фокусом на более простые, но важные для построения фундамента, задачи. Прямо сейчас решаем задачи на стек (сезон 1), stay tuned! 🎬
Happy Saturday! 👋
В новом, экспериментальном еженедельном формате на YouTube, я выкладываю записи своих уроков по алгоритмам на JavaScript для «тех кто входит в IT» 💻 — https://www.youtube.com/playlist?list=PLtRFPaw3fD55QtDdLVruhKa0M9Wv1l3SR, никаких предварительных знаний не требуется. Разбираемся с нуля.
«Алгосики для самых маленьких» могут быть полезны если вы учитесь фронтенду без бекграунда в программировании. Уроки помогут развить алгоритмическое мышление и научиться в «нативный джаваскрипт».
Синьоры-🍅, расскажите тем кто только входит в профессию.
Happy Monday! 👋
На этой неделе будем перебирать пути в матрице чисел. Задача на обход в глубину и мемоизацию.
https://vitkarpov.me/posts/longest-inc-path-in-a-matrix/
Happy Monday! 👋
Задача этой недели — Ones and Zeroes, из апрельского челенджа на LeetCode.
Стараюсь показать ход мыслей: начнём с того, почему жадный алгоритм не работает и перейдём к решению через динамическое программирование.
https://vitkarpov.me/posts/ones-and-zeroes/
Всем привет! 👋
Как научиться дизайну систем, который нужен для устройства в топовые ИТ компании? Нужен опыт, который можно получить в тех самых топовых компаниях — замкнутый круг.
Коллеги из Яндекса и Фейсбука запускают проект для решения этой проблемы: https://nerdia.io/ — это симулятор работы в IT-компании. Записывайтесь в альфу, должно быть любопытно.
Happy Monday! 👋
Возьму перевыв в разборах на недельку-другую, а пока — решаем мартовский челендж, по задаче каждый день https://leetcode.com/explore/challenge/card/march-leetcoding-challenge-2021/. В чате обсуждаем решения, добавляйтесь если ещё нет https://t.me/ctci_chat_ru
Happy Monday! 👋
На этой неделе будем определять является ли указанное дерево двоичным деревом поиска. Хорошая задача на рекурсию и деревья, разберём два решения.
https://vitkarpov.me/posts/validate-binary-search-tree/
Всем привет! 👋
Не мог пройти мимо и не поделиться ссылкой на прекрасный, 5 часовой (!) подробный видос по динамическому программированию. Alvin Zablan из Coderbyte рассказывает про 4 классические задачи: Фибоначчи, количество путей в матрице, сумма из списка чисел (размен монет), конкатенация слова из словаря.
https://www.youtube.com/watch?v=oBt53YbR9Kk
Отличное поставка задач, рисунки деревьев с анимациями, реальный код в редакторе с комментариями — качество подачи материала огонь. Часть этих задач я разбирал у себя в блоге, поэтому было любопытно сравнить подходы.
PS. Изначально ссылкой поделились в чате канала, так я узнал про курс. Добавляйтесь если ещё нет, там интересно и полезно! :-)
Happy Monday! 👋
На этой неделе разбираемся с префиксными деревьями. Будем искать слова, которые могут быть составлены конкатенацией других слов.
https://vitkarpov.me/posts/concatenated-words/
Happy Monday! 👋
На этой неделе будем искать оптимальное расписание задач. Рекурсия с мемоизацией.
https://vitkarpov.me/posts/maximum-profit-in-job-scheduling/
Happy Monday! 👋
Задача этой недели на рекурсию, из недавного контеста на LeetCode. Можно ли все отдельные массивы из двумерного найти в обычном массиве, так, чтобы не было пересечений?
https://vitkarpov.me/posts/concatenating-subarrays/
Happy Monday! 👋
Задача этой недели на связные списки. Задача была в февральском челендже на литкоде, довольно известная, и многие пишут решение с двумя указателями, но не все понимают «почему это работает». Я решил написать про интуицию, которая помогает это понять, без формальной математики.
https://vitkarpov.me/posts/linked-list-cycle/
Happy Monday! 👋
Задача этой недели — найти пик в массиве. Хорошая задача с тривиальным решением и развитием в бинарный поиск.
https://vitkarpov.me/posts/peak-index-in-a-mountain-array/
Happy Monday! 👋
На этой неделе продолжаем решать бектрекинг. Найти все варианты разложить указанное число в сумму с помощью указанных чисел. Кажется, это задача, с которой стоит начинать знакомство с бектрекингом.
https://vitkarpov.me/posts/combination-sum/
Happy Monday! 👋
На этой неделе найдем количество возможных непустых подпоследовательностей строки без повторений. Напишем решение через бектрекинг, и улучшим его, избавившись от копирования строк, порисуем дерево рекурсивных вызовов.
https://vitkarpov.me/posts/letter-tile-possibilities/
Happy Monday! 👋
Задача этой недели https://vitkarpov.me/posts/jump-game-vi/
Happy Monday! 👋
На этой неделе разбираем классический пример задачи на графы и обход в ширину, где как раз нужны очереди.
https://vitkarpov.me/posts/word-ladder/
Happy Monday! 👋
Разборы задач возвращаются. Опросы показали, что в тренде динамическое программирование и очереди, решил начать с последних, т.к. на динамическое программирование было много разборов (но будут ещё). Поиск максимума в скользящем окне — популярная задача, вариация которой даже один раз попалась мне на онсайте в Facebook.
https://vitkarpov.me/posts/sliding-window-maximum/
Друзья, с наступающим Новым Годом! 🎄🎁
Желаю всем сохранять трезвый рассудок, планировать (2020 ехидно усмехнулся) и достигать в новом году! При этом не забывать отдыхать, и больше гулять 🌳🌴🌊 В январе разборы задач возвращаются: одна задача в неделю.
PS. Спасибо всем, кто написал в личку, что следите за разборами задач, и даёте обратную связь. 👍
Олег Громов рассказал почему «попасть в FAANG недостаточно, или 9 шагов к карьере мечты» для студентов школы 21. Довольно любопытные наблюдения про осознанное построение карьеры — https://www.youtube.com/watch?v=bYJS3FI0Rkk
