Как нарастить навыки работы со структурами данных после долгой спячки [закрыто]


10

Я был довольно хорош с алгоритмами и структурами данных однажды, давным-давно. С тех пор я профессионально программировал, а затем стал руководить небольшой командой, которая полностью отбросила мои технические навыки в этой области.

Я решил, что хочу снова стать разработчиком и работать на Google. Дело в том, что я настолько не практикуюсь, что если бы мне дали интервью прямо сейчас, я бы наверняка ушел через 10 минут.

Какую программу тренировок вы бы порекомендовали мне вернуть в форму? Я уже начал эти выходные, вернувшись к абсолютным основам и реализовав несколько алгоритмов сортировки, связанный список и хэш-таблицу. Затем, я думаю, я прочитаю весь материал курса о других основных структурах данных и алгоритмах графов. Я хочу найти целенаправленный набор практических упражнений, которые я могу выполнить за относительно короткое время, чтобы манипулировать старыми клетками мозга. Я знаю это - мне просто нужно напомнить себе, что я это знаю.


@Anon: Если это новый способ, которым Google создает шум о себе в этом новом году, я бы хотел сказать одну вещь. Оно работает.
Fanatic23

4
Если ваши структуры данных были в спящем режиме, они, скорее всего, были сериализованы. Вам просто нужно их не сериализовать.
MCHL

4
@Mchl - я не знаю об Anon, но я обнаружил, что «мозговой» носитель данных даже менее надежен в долгосрочной перспективе, чем дискеты. Все, что сериализовано несколько лет назад, почти наверняка уже испорчено.
Steve314

Ответы:


6

Есть 4 вещи, которые я бы хотел вам сказать, и я перечислил порядок, в котором я должен вам рассказать:

  1. Получите свой собственный источник зеленого чая, пока вы находитесь в этом
  2. Пока вы пьете этот зеленый чай, изучите книгу Скиены, доступную здесь . И просмотрите аудио / видео материал здесь .
  3. Проверьте отличный набор ссылок, поддерживаемых Google на http://code.google.com/edu/courses.html
  4. Пройдите по вопросам, связанным с алгоритмами в SO, и попробуйте ответить на них самостоятельно

Удачи!


Хотя я люблю книгу из Скиены, никогда не знал, что там есть аудио / видео материал, спасибо.
вспышка

1

Я бы предложил выбрать реальную структуру данных или формат файла, который люди используют сейчас, и сделать что-нибудь классное с этим. Формат файла Git довольно хорошо задокументирован, например:

http://book.git-scm.com/1_the_git_object_model.html

Делать что-то интересное с форматом, который используют люди, и быть строгим в этом, преподавать уроки - и дает вам то, что людям будет интересно.

Или, по крайней мере, сделать что-то с уникальным углом. Когда я оказался в положении, аналогичном вашему, я написал ответ на вопрос онлайн-интервью о создании однонаправленного графика, который мог бы обнаружить вставку циклов. Это было бы легко, если бы я не добавил дополнительные ограничения ... но я решил потребовать, чтобы он мог выполнять вставки в O (1). Результатом стал NoCycle:

http://hostilefork.com/nocycle/


1

Это зависит от того, какова ваша цель - например, есть ли там разработка и анализ алгоритма, или вы придерживаетесь стандартных структур и алгоритмов? Но для меня это звучит так, как будто вы уже делаете то, что вам нужно.

Если у вас все еще есть старый любимый учебник "давным-давно", я предлагаю вернуться к нему. Кроме того, это стандартный повторный совет. Задавайте себе конкретные вопросы, ищите ответы, когда у вас заканчиваются вопросы, просматривайте и быстро просматривайте все, что вы можете найти, пока не найдете более конкретные вопросы.

Алгоритмы и структуры данных (Никлаус Вирт) - относительно лаконичная книга по базовым алгоритмам и структурам данных без всякого проектирования и анализа алгоритмов. Хотя это очень просто - списки, различные деревья, кучи, но я не помню, например, о орграфах. Одним из преимуществ является то, что имеется бесплатная загрузка версии Oberon - http://www.inf.ethz.ch/personal/wirth/ - найдите ссылку PDF в нижней части списка книг. Википедия - очевидный ресурс, но в нем так много информации, что неплохо бы решить, чего вы хотите, а чего нет, прежде чем отправиться туда.


0

Когда вы были довольно хороши с алгоритмами и структурами данных, к каким ресурсам вы обращались?

Насколько коротким является «относительно короткий промежуток времени», который вам нужен, чтобы освежить свои знания?

Я не думаю, что знания, полученные благодаря самоотверженности, когда-либо исчезнут. Это только немного угаснет, и ВЫ будете лучшим судьей, над какими областями вам нужно работать, чтобы восстановить свое старое мастерство по тем предметам, которые вы когда-то любили.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.