Jun 21, 2016 11:11
Задача - подготовиться к программерскомму собеседования примерно за 4-6месяцев, параллельно работая фултайм. Как и следовало ожидать, я нахожусь в той же точке, что до PhD - никаких преимуществ PhD не даст.
Я структурировал подготовку в 3 этапа:
1) Цель - вспомнить классические алгоритмы и базовую теорию, научиться относительно быстро решать стандартные задачи, научиться решать неизвестные мне задачи в сжатые сроки, изучить лучшие практики решения подобных задач
1.1) Изучаю тему в Cormen, решаю некоторые задачи на понимание материала
1.2) Параллельно решаю все задачи без ниньдз из Elements of Programming Interview по соответствующей теме
1.3) Раз в неделю участвую в codeforces, где я стараюсь решить 3ую и/или 4ую, пропуская первые 2.
2) Цель - научиться обьяснять в слух решение в процессе придумывания решения, ускорить кодирование подобных задач, натренировать интуицию для решения различных задач, улучшить время затрачиваемое на решение, быть уверенным в битовых задачах
2.1) Решаю в день 1 сложную задачу с leetcode не в слух
2.2) 2 задачи в день объясняю в слух пока решаю
2.3) Читаю первые несколько глав Hackers Delight и играю с битовыми операциями
2.4) Раз неделю участвую в codeforces, стараясь как можно эффективнее использовать выделенные 2ч.
3) Цель - быть готовым к реальному интервью, учесть различные не алгоритмические вопросы, не нервничать на собеседовании, чувствовать себя комфортно в решении классических многопоточных задачах
3.1) Каждую неделю - mock up interviews with friends
3.2) Повторение классических алгоритмов (сортировки, медианы и тп) с обьяснением в слух алгоритма и подготовки ответов к возможным доп вопросам (например, как лучше выбирать pivot в qsort)
3.3) Задачи на Multithreading из Elements of Programming Interview
3.4) Задачи на системное программирование с различных интервью - не знаю какие пока что, но вроде как спрашивают
3.5) Раз в неделю codeforces - к этому моменту я должен решать 4 задачи с высокой вероятностью во втором дивизионе
Один забытый вид вопросов - System Design. Это кто-то спрашивает? Сколько на этот топик выделять?
Все таски в одной группе решаются параллельно.
Считаете ли вы эту схему подготовки практичной/реалистичной или избыточной? Может я упустил какие-то essential topics?