Я был довольно хорош с алгоритмами и структурами данных однажды, давным-давно. С тех пор я профессионально программировал, а затем стал руководить небольшой командой, которая полностью отбросила мои технические навыки в этой области.
Я решил, что хочу снова стать разработчиком и работать на Google. Дело в том, что я настолько не практикуюсь, что если бы мне дали интервью прямо сейчас, я бы наверняка ушел через 10 минут.
Какую программу тренировок вы бы порекомендовали мне вернуть в форму? Я уже начал эти выходные, вернувшись к абсолютным основам и реализовав несколько алгоритмов сортировки, связанный список и хэш-таблицу. Затем, я думаю, я прочитаю весь материал курса о других основных структурах данных и алгоритмах графов. Я хочу найти целенаправленный набор практических упражнений, которые я могу выполнить за относительно короткое время, чтобы манипулировать старыми клетками мозга. Я знаю это - мне просто нужно напомнить себе, что я это знаю.
Ответы:
Есть 4 вещи, которые я бы хотел вам сказать, и я перечислил порядок, в котором я должен вам рассказать:
Удачи!
источник
Я бы предложил выбрать реальную структуру данных или формат файла, который люди используют сейчас, и сделать что-нибудь классное с этим. Формат файла Git довольно хорошо задокументирован, например:
http://book.git-scm.com/1_the_git_object_model.html
Делать что-то интересное с форматом, который используют люди, и быть строгим в этом, преподавать уроки - и дает вам то, что людям будет интересно.
Или, по крайней мере, сделать что-то с уникальным углом. Когда я оказался в положении, аналогичном вашему, я написал ответ на вопрос онлайн-интервью о создании однонаправленного графика, который мог бы обнаружить вставку циклов. Это было бы легко, если бы я не добавил дополнительные ограничения ... но я решил потребовать, чтобы он мог выполнять вставки в O (1). Результатом стал NoCycle:
http://hostilefork.com/nocycle/
источник
Это зависит от того, какова ваша цель - например, есть ли там разработка и анализ алгоритма, или вы придерживаетесь стандартных структур и алгоритмов? Но для меня это звучит так, как будто вы уже делаете то, что вам нужно.
Если у вас все еще есть старый любимый учебник "давным-давно", я предлагаю вернуться к нему. Кроме того, это стандартный повторный совет. Задавайте себе конкретные вопросы, ищите ответы, когда у вас заканчиваются вопросы, просматривайте и быстро просматривайте все, что вы можете найти, пока не найдете более конкретные вопросы.
Алгоритмы и структуры данных (Никлаус Вирт) - относительно лаконичная книга по базовым алгоритмам и структурам данных без всякого проектирования и анализа алгоритмов. Хотя это очень просто - списки, различные деревья, кучи, но я не помню, например, о орграфах. Одним из преимуществ является то, что имеется бесплатная загрузка версии Oberon - http://www.inf.ethz.ch/personal/wirth/ - найдите ссылку PDF в нижней части списка книг. Википедия - очевидный ресурс, но в нем так много информации, что неплохо бы решить, чего вы хотите, а чего нет, прежде чем отправиться туда.
источник
Когда вы были довольно хороши с алгоритмами и структурами данных, к каким ресурсам вы обращались?
Насколько коротким является «относительно короткий промежуток времени», который вам нужен, чтобы освежить свои знания?
Я не думаю, что знания, полученные благодаря самоотверженности, когда-либо исчезнут. Это только немного угаснет, и ВЫ будете лучшим судьей, над какими областями вам нужно работать, чтобы восстановить свое старое мастерство по тем предметам, которые вы когда-то любили.
источник