мы должны знать, как реализовать встроенные структуры данных? - PullRequest
0 голосов
/ 03 декабря 2010

Я разработчик на C # и все время использую структуры данных, такие как List и Dictionary, я читаю некоторые книги по собеседованиям, и все они, кажется, подсказывают, что мы должны знать, как реализовать такиеструктуры данных, а также как их использовать, многие из вас разделяют одну и ту же точку зрения?

Ответы [ 4 ]

2 голосов
/ 03 декабря 2010

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

Под этим я подразумеваю возможность объяснить, как они работают внутри, и какие гарантии сложности (как во времени, так и в пространстве) они предлагают.

0 голосов
/ 03 декабря 2010

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

У вас должно быть высокое понимание (очевидно) того, что они делают, а также того, как они это делают. Этого должно быть достаточно.

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

Лучшие программисты будут знать такие структуры данных и все известные варианты наизнанку, но затем они также будут знать каждый маленький уголок своего языка / фреймворка. Они намного выше «компетентного» уровня.

0 голосов
/ 03 декабря 2010

Если вы не знаете, как реализовать структуру данных, как вы можете сказать, что понимаете сильные и слабые стороны рассматриваемой структуры? Как уже упоминалось, это должно быть требованием, чтобы вы понимали, что вы используете. Я бы никогда не поверил механику, который не понимал, как работает двигатель.

0 голосов
/ 03 декабря 2010

Да.

По тем же причинам, что программист C или C ++ должен быть знаком с языком ассемблера;это помогает вам понять, что происходит под капотом, и улучшает вашу способность выбирать подходящую структуру данных для вашей конкретной проблемы программирования.

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

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