Вопросы структуры данных и проектирования систем - PullRequest
1 голос
/ 07 февраля 2011

Если вас попросят «Разработать систему для того-то и того-то» или «Какую структуру данных вы бы использовали для того-то и того-то?» ... Можно ли ответить с помощью проектирования системы реляционных баз данных?В комплекте с таблицами, сущностями, отношениями между ними, внешними ключами и первичными ключами и т. Д.?Будет ли это хорошо для тех, кто имеет большой опыт использования систем баз данных, но не имеет опыта проектов с использованием структур данных?Я знаю только связанные списки, двоичные деревья, двоичные деревья поиска, стеки и очереди ... нервничаю из-за моего предстоящего собеседования со стажером.Любой совет?

Ответы [ 3 ]

1 голос
/ 07 февраля 2011

В интервью вопросы, предназначенные для проверки вашего знакомства со структурами данных (и часто с алгоритмической сложностью), НЕ касаются реляционных баз данных.Вопросы о дизайне системы могут включать вопросы проектирования базы данных.

Все упомянутые вами структуры данных важны.Наиболее явно отсутствует и очень важна хеш-таблицы (или неупорядоченные карты и основа для структур данных во многих языках сценариев, таких как dicts в python и объекты / карты в javascript).Вы также должны прочитать о btrees , которые обычно используются для реализации реляционных баз данных (и имеют свойства, такие как бинарные деревья поиска, но лучше подходят для хранения на диске).

1 голос
/ 07 февраля 2011

Связанные списки, деревья и стеки - это инструменты для работы с данными в программе.Таблицы базы данных и схемы и связи таблиц являются инструментами для хранения данных.«Система» использует оба из них, но для разных целей, но они работают вместе.

«Проектирование системы для того-то и того-то» Это вопрос более высокого уровня, и поэтому я сначала начну с разговора о таблицах базы данных, а затем, в зависимости от того, насколько детализированы они, перейдем к особенностям программы.

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

Надеюсь, это поможет: p

0 голосов
/ 08 февраля 2011

На собеседовании со стажером это не нормально.

Я ожидаю, что вы знакомы с фундаментальными структурами данных, но я не ожидаю, что вы станете экспертом в любой из них. (Во всяком случае, не то, что я бы назвал экспертом.) Меня больше интересовало бы, как вы отвечаете на вопросы, которые явно выходят за рамки ваших текущих знаний. Если бы я спросил вас о теоретических преимуществах дерева Ван Эмда Боаса, «я не знаю», вероятно, будет правильным ответом. (Лучше, чем пытаться обмануть меня.)

Но, с практической точки зрения, вы можете выгодно применять принципы реляционного проектирования ко многим проблемам, которые явно не являются реляционными. Большинство приложений Lotus Notes выиграют от надежного реляционного дизайна. Даже если вы не можете реализовать ограничения декларативно в Notes, вам все равно придется как-то их учитывать - отчеты об исключениях, периодическое сканирование документов и т. Д.

И, IIRC, первый расширенный пример в Large Scale Design C ++ был такой же проблемой проектирования реляционных систем, как и проблема проектирования C ++ или OO. (Эта вещь была опубликована в 1996 году. Я такой старый? Да, наверное.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...