#mock #interview #feedback
Вчера утром была последняя, за мой заканчивающийся отпуск, сессия с mock interview. Участие в mock interview, уверен, уже очень полезно для собеседника. Но, чтобы принести чуть больше пользы тем кто ко мне обращается, я, как обычно, делюсь письменным отзывом с детальной аналитикой.
Disclaimer: все ниже сказанное не отражает мнение моего работодателя, а является моим личным мнениемВидеозапись mock interview:
https://www.youtube.com/watch?v=y8G9vLm4gEIРешение: https://pastebin.com/yzvSVD57Что понравилось:- У тебя есть базовый материал, ты понимаешь принципы оценки производительности своего алгоритма, и можешь продумывать code flow
- Предложил простое и посложнее решение и попробовал реализовать
Что улучшить:-
Не спеши!: Не спеши с решением пока не изучил задание полностью и не уделил достаточно времени на продумывание тестовых кейсов. Твой алгоритм будет работать немного криво если в данных присутствуют отрицательные числа. Т.е. точно также как ты допустил, что в данных может быть
0
, точно также может быть и
-1
. Если бы ты подумала об этих случаях, то мог бы оценить свое предложение на правильностью
-
По окончанию написания софта, очень важно его тестировать: Не спеши говорить, что ты закончил, пока не удостоверишься, что твое решение правильное. В идеале когда ты говоришь, что ты дорешал, то ты должен быть уверен, что твое решение верно. В твоем случае, ты провел тестирование своего решения только после просьбы собеседника и, к общему сожалению, в процессе ты обнаружил что решение имеет баги
-
Оценка решения на сложность была не достаточно точной В конце интервью ты сказал, что твое решение не использует дополнительной памяти, так как пере-использует существующий список. Что будет если у тебя на вход приходят список чисел от 1 миллиона до 2х миллионов? В твоем решении ты расширяешь список, и тем самым задействуется больше памяти
-
почитай про re-sizing array. Это не происходит бесплатно.
- nit-pick: Кстати, не до конца было ясно зачем нужно расширять список, когда можно просто игнорировать значения выше длины списка
-
Поработай над читабельностью кода: например,
a[a[1]]
и
a[1]
читается не очень комфортно. Не стесняйся добавлять комментарии, выносить в отдельные функции
Резюме:В общем и целом, у тебя есть база, но есть еще над чем работать. Главная проблема, на мой взгляд, это то, что ты спешишь решить задание. Это сказывается на качестве проверки корнер кейсов, имплементации решения, и выводах.
Next steps:- Поработай над своим подходом: видно, что у тебя есть базовые знания, но из-за спешки ты допустил очень много ошибок. Если решаешь задачки на LeetCode, то обрати внимание на показатель Acceptance Rate, который, если не ошибаюсь, показывает как часто у тебя получается решить задачку с первой попытки так, что все тейст кейсы проходят успешно.
- Потренируй свой навык объяснения того что ты делаешь (и почему!). Лучше всего, имхо, это делать на популярных алгоритмах (сортировки, поиска и тд), либо на задачах (leetcode, hackerrank alike).
- (без фанатизма) Учись писать читабельный код: используй понянтые для читающего названия, добавляй комментарии, если это улучшает читабельность кода
__________share if you think it can be useful for your friends
Мой телеграм: https://t.me/webapparch