большинство крупных технологических компаний, таких как Microsoft, сосредоточены в основном на структурах данных. Кажется, что структуры данных - единственное, что они ожидают от выпускника.
Нет, это еще не все. Например, мы также ожидаем, что вы быстро учитесь и сможете за короткое время освоить новые фреймворки, API или даже языки программирования. Это минимальная минимальная планка. Тот, кому потребуется много времени для изучения новой инфраструктуры, API или языка, не будет успешным разработчиком в большинстве команд Microsoft.
И, конечно же, на собеседованиях мы фокусируемся на еще многих аспектах, помимо простого знания структур данных. Способность иметь дело, например, с неоднозначными спецификациями или способность распознавать шаблоны кодирования, которые создают небезопасный код, или дюжину других вещей. Но способность понимать структуры данных, безусловно, очень большая.
В частности , собеседники склонны к проверке знаний о структурах данных для недавних выпускников CS. От недавних выпускников, большинство из которых не имеют большого опыта в реальной жизни, не ожидается, что они будут хороши в тех же вещах, что и человек с пятнадцатилетним опытом работы в отрасли.
Я должен признаться, что я не был так силен в структурах данных
Это хорошо, что ты знаешь это о себе. Если вы не можете или не хотите изменить это в отношении себя, я рекомендую вам не подавать заявку на работу, требующую возможности со структурами данных.
Существует такая общая точка зрения, что хороший программист обязательно должен иметь хорошие знания о структурах данных.
Тавтологично, что хороший программист - это программист, который умеет создавать программы, которые нужно создавать. Многие программисты работают над задачами, которые не требуют глубокого знания структур данных. Некоторые из них работают, например, над задачами, требующими глубоких знаний в области дизайна пользовательского интерфейса. Или нормализация базы данных. Или что угодно. Эти люди все еще могут быть «хорошими программистами» в своих областях.
Почему все это делает упор на структуры данных?
Я задаю вопросы об интервью о структурах данных, потому что в моей команде разработчики ежедневно проектируют, внедряют и управляют сложными структурами данных. Вчера у нас было четыре часа собраний, на которых полдюжины разработчиков обсуждали плюсы и минусы добавления одного логического поля к конкретному узлу дерева. Наверное, в моей команде нет более важного навыка, чем умение понимать структуры данных на глубоком уровне. Было бы глупо не задавать вопросы об этом на собеседовании, потому что это то, что мы делаем.
Разве знания в структурах данных не влияют на карьеру программиста?
Ну, это, безусловно, помешает вам устроиться на работу в моей команде. Но, как я уже говорил, программирование - это огромное поле. Существует множество видов компьютерного программирования, которые не требуют знания структур данных.
действительно ли знания по этому предмету являются достаточной основой для того, чтобы отличать хорошего программиста от плохого?
Нет. Но почти всегда достаточно обнаружить разработчиков, которые вряд ли добьются успеха в Microsoft. Так как это то, что я в первую очередь заинтересован в обнаружении, знание структур данных является одним из факторов, которые я проверяю в интервью.