📱 Подписаться на канал

Coding Interview. Шаблон прохождения

Coding Interview. Шаблон прохожденияВот здесь шаблон прохождения для system design и топ 10 задач на system design Мне как Engineering Manager’у уже не так часто попадаются coding interview с алгоритмами и структурами данных, но все же в нескольких компаниях МААНГ и других крупных тир1, coding interview все еще спрашивают на одном из этапов interview loop (в котором обычно 5 этапов), тут в закрытом платном канале я рассказываю как я прохожу интервью (да и в целом там больше личного, в том числе про деньги и налоги) , а в этом публичном я поделюсь если будут какие то значительные результаты) Так вот, недавно готовясь к этапу coding interview я прочитал книгу, статьи, видео и занимаясь с наставником, определил шаблон по которому можно проходить этот этап.1️⃣Прочитать задание, Оно обычно на английском языке, поэтому требуется время чтобы понять что собственно происходит нужно в задаче, обычная практика задача с LeetCode но перефразированная под компанию или на другую тематику, но в целом можно узнать что это она (обычно input/output тоже дают, но если нет их надо будет написать самому)2️⃣Спросить у интервьювера, правильно ли понял задачу/уточнить если что-то не понятно3️⃣Определить сигнатуру функции (мне помогает это думать), типа def functionName(parameter1: type) -> return [numbers] (да python легче всего использовать, рекомендую его, на нем обычно короче всего решение), типа перевернуть строку [::-1], могут конечно попросить разложить на цикл, но тем не менее4️⃣Проговорить словами решение + накидать псевдокод, показать как будет исполняться код, как будут изменяться/вычиститься данные5️⃣Получить buy-in (типа да приступай к написанию)6️⃣Написать сам код, соблюдая синтаксис (обычно он не исполняется, но лучше чтобы выглядил как будто собирается исполняться), и параллельно комментируя что делает каждая линия кода7️⃣Оценить сложность O(n), главное понимать что цикл в цикле это O(n^2), обычно при использовании правильных решений можно в большинстве добиться O(n)8️⃣Добавить тесты и edge cases (пустой массив, разные входные данные)Вот здесь есть прикольный калькулятор подготовки и задач Работает так, задаете сколько у вас есть времени на подготовку, например 4 неделиСколько готовы посвящать времени подготовки, например 7 часов в неделю (по часу в день)Итого вот 37 задач уровня Easy/Medium со ссылками на нихПодход такой к подготовке, открываете задачу, пытаетесь решить самостоятельно до 20 мин по шаблону, если не получается, открываете решение запоминаете, и переписываете его либо в тетрадку чтобы лучше запомнить, либо просто код 1в1 переписываете, после нескольких задач уже понятно что есть несколько популярных подходов и структур данных которые часто используютсяНаиболее популярные структуры: Arrays, Strings, Hash Tables (Maps,Sets), Stack & Queue, Linked List, Tree, GraphНаиболее популярные подходы: Two pointers, Sliding Window, Binary Search, Prefix sum, Hash Table, DFS (поиск в глубину), BFS (поиск в ширину)Наиболее популярные задачи: Сколько в массиве подряд чего то, Какие индексы сложить чтобы получить какую-то сумму, Какие подстроки существуют в массиве, Посчитать что число в массиве дают какую то наибольшую наименьшую сумму + соответсвуют чему либо (типа максимальная прибыль, сколько чисел соотвестуют чему то и тд)👉Зачем нужен этот этап?1.Проверить что Менеджер, действительно писал/пишет код. В случае программиста проверить, что программист пишет код и понимает как его объяснять и тд. Код который можно прочитать, с понятными переменными, с названием функций/методов нормальными и тд2. Фильтр, на вакансии в крупные компании где больше платят и интересные проекты, могут подаваться сотни, тысячи а иногда и десятки тысяч профессионалов, такой фильтр позволяет срезать большую часть недостаточно замотивированных людей, так как подготовка с нуля может занимать до 12 месяцев, для того кто знает как писать код и тд, до 6 месяцев, для тех кто уже когда либо готовился к этому этапу, подготовиться еще раз займет 1-3 месяца👍#собеседование | @andreyposnov