tgoop.com/asisakov_channel/141
Last Update:
АЛГОРИТМЫ И КОДИНГ
Часть 2
Начало выше ⬆️
3. Попытка предложения различных решений.
Самая важная часть. Здесь мы обычно двигаемся итеративно от плохого решения к лучшему с целью оптимизировать алгоритмическую сложность. Ничего страшного, если вы будете долго думать. Давайте рассмотрим это также на примере. Допустим, нам нужно найти максимальное значение элемента в несортированном ряду длины N. Самый очевидный способ - это сравнить все элементы друг с другом, тогда сложность будет (N^2).
Давайте придумаем что-то побыстрее и попроще. И за O(N) находится довольно простой алгоритм, где мы за 1 проход по каждому элементу ряда записываем максимальное значение в определенную переменную. И в процессе таких размышлений пытаемся дойти до оптимальной сложности и уже после одобрения нашей функции интервьюером переходим к кодированию.
4. Написание кода
Если вы на 100% прошлись и выложились по прошлым пунктам, то с этим вообще не должно быть никаких проблем. Ваша задача просто спокойно написать в виде кода тот алгоритм, который вы предложили. Главное не спешить, не пытаться реализовать все сценарии учета граничных кейсов. Сначала просто следует написать тело функции, которая решает большую часть кейсов, а далее уже потихоньку усложнять это с добавлением дополнительной логики при необходимости.
5. Прогон кода в голове и поиск багов
После того, как вы написали ваш код и уверены, что он должен работать, пройдитесь на всякий случай по нему примерами из задания, своими кейсами и попробуйте просто глубоко прогнать один кейс как сам описанный алгоритм у себя в голове. Если все хорошо, можно сообщать интервьюеру, что вы готовы к проверке. Возможно найдутся минимальные ошибки и будет предложен пример, где ваша функция может не отработать. Поэтому здесь не стоит терять бдительность и внимательно все отсматривать и проверять.
Описанный пайплайн в целом покрывает алгоритмическую секцию. Но в названии поста стоит “Алгоритмы и кодинг”. Здесь все просто - обычно это все проверяется вместе и интервьюер одновременно смотрит, как человек пишет код, какие конструкции в коде он использует, знает ли сложность выполнения встроенных функций. Бывают моменты, когда кодинг также проверяется с просьбой решить на ходу ML задачку и тут оценивается, насколько человек сходу может написать код, который не сломается и решит задачу. Не хочу выделять это в отдельную секцию, поэтому решил добавить именно сюда.
Собес является одним из тяжелых для прохождения, но и одновременно простым из-за того, что в принципе на этом можно набить руку. Есть даже группы в телеграме, где люди при подготовке к FAANG нарешивают около 300 задач с LeetCode. На том же сайте существуют списки с задачами, которые часто попадаются в определенных компаниях.
Если у вас есть, что дополнить, пишите в комментарии!
Полезные ссылки:
1. Роадмап (150 задач) по задачам и теории от NeetCode
2. Видео про то, как на задачах по коду проверяется синьорность человека + пример, как человек решил easy задачу как staff-engineer
3. Ссылка на чатик, где ребята вместе нарешивают задачи на LeetCode
4. Пост от Ромы Васильева с парой интересных ссылок
5. План по подготовке к алгоритмическим интервью от Жени Козлова
6. Краткая методичка с описанием алгоритмов и ссылками на объяснение
7. Методика зарешивания литкода от Юры Кашницкого
8. Шпаргалка для алгособеса
9. Ссылочки по подготовке к алгоритмам от Леши Курицына
10. Пост в канале Поступашек про то, как заботать алгоритмы для карьеры
11. Интерактивная книга с выжимками с выжимками по алгоритмам (нашел у Артема Рыблова)
12. Хэндбук от Яндекса с основами алгоритмов
13. Огромная библиотека алгоритмов на github
14. Полезные ссылочки для подготовки от Ибрагима
15. Сайт с объяснением алгоритмов
16. Канал Паши Маврина с лекциями по алгоритмам и структурам данных
17. Марафон по easy и medium задачам на LeetCode от Глеба Михайлова
P.S. Надеюсь я не пережестил с источниками. Всем easy-задач на собеседованиях!
#interview #algo
BY asisakov
Share with your friend now:
tgoop.com/asisakov_channel/141