Здравствуйте, Rothmans, Вы писали:
R>Темами для оного в том числе являются "Алгоритмы" и "Структуры данных".
R>Какие бы вы задали вопросы поступающему профессиональному программисту на эти темы?
только один
кто автор книги "Алгоритмы и структуры данных"?
Здравствуйте, Сергей Мухин, Вы писали:
СМ>Здравствуйте, Rothmans, Вы писали:
R>>Темами для оного в том числе являются "Алгоритмы" и "Структуры данных".
R>>Какие бы вы задали вопросы поступающему профессиональному программисту на эти темы?
СМ>только один СМ>кто автор книги "Алгоритмы и структуры данных"?
Так вот какую книгу написал Вирт! А то наш профессор в былые времена все Вирт, Вирт, Кнут да Пряник
Здравствуйте, Rothmans, Вы писали:
R>Привет всем,
R>Готовлюсь к собеседованию. R>Темами для оного в том числе являются "Алгоритмы" и "Структуры данных".
R>Какие бы вы задали вопросы поступающему профессиональному программисту на эти темы?
Лично я бы спросил, какие алгоритмы структуры данных свободно используются им в работе.
Это гораздо важнее, чем слепое штудирование Кнута, Седжвика и Дейкстры.
Впрочем, у работодателей обычно свое мнение на этот счет.
Здравствуйте, Rothmans, Вы писали:
R>Готовлюсь к собеседованию. R>Темами для оного в том числе являются "Алгоритмы" и "Структуры данных".
R>Какие бы вы задали вопросы поступающему профессиональному программисту на эти темы?
Програмист обычно пишет на каком-то языке и собеседуют его на соответствующую позицию. Программиста C++ я бы поспрашивал про контейнеры и алгоритмы STL:
vector, list — для чего нужны, в чем разница
map, hash_map — алгоритмическая сложность поиска, как достигается
алгоритмы сортировки — квадратичные и линейно-логарифмическиею
Ну и что-нибудь специфичное для предметной области компании: алгоритмы на графах, поиск в тексте, формальные грамматики, B-деревья, геометрические алгоритмы.
Здравствуйте, TheBeard, Вы писали:
TB>Програмист обычно пишет на каком-то языке и собеседуют его на соответствующую позицию. Программиста C++ я бы поспрашивал про контейнеры и алгоритмы STL:
vector, list — для чего нужны, в чем разница
map, hash_map — алгоритмическая сложность поиска, как достигается
алгоритмы сортировки — квадратичные и линейно-логарифмическиею
Согласен, обычный джентельменский набор вопросов, практически, как вопросы о барометре и "чисто конкретном классе". Слышал много раз, и каждый раз на чем-нибудь сыпался
ОФФТОП, специально для работодателей
ИМХО, практическая ценность таких вопросов для компании-работодателя близка к нулю. Лучший знаток алгоритмов, которого я знал, в практической работе был абсолютно неудобоварим. Например, создает экземпляр потомка QThread (Qt), и считает, что от этого у него приложение автоматически стало многопоточным. Ну да, стало, только созданный им поток ничего полезного не делает. Или как вам преждевременная (т.е. без минимального обоснования) борьба за производительность путем полного отказа от использования библиотечных контейнеров и ваяния велосипеда в виде кольцевого буфера? А в алгоритмах — в алгоритмах, да, дядька был дока, и всего Кнута чуть ли не наизусть знал, и на какой-нибудь "алгоритмической сложности вставки в дерево Адельсона-Вельского-Ландиса" его было бы не поймать.
КОНЕЦ ОФФТОПА
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Здравствуйте, slava_phirsov, Вы писали:
_>ИМХО, практическая ценность таких вопросов для компании-работодателя близка к нулю. Лучший знаток алгоритмов, которого я знал, в практической работе был абсолютно неудобоварим.
Это не совсем так. Такие вопросы отсеивают алгоритмически неграмотных соискателей. Описанного вами человека скорее всего отсеяли бы на разборе проблемного кода или просто по общей неадекватности поведения (безумный огонь в глазах и т.п.).
ОФФТОП, специально для программистов
>и на какой-нибудь "алгоритмической сложности вставки в дерево Адельсона-Вельского-Ландиса" его было бы не поймать.
Если уж знание алгоритмической сложности операций в дереве Адельсона-Вельского-Ландиса (кстати, это два человека, Адельсон-Вельский и Ландис, а не три) может быть представлено как нечто выдающеееся, особенное, то, что другие не знают, то это означает только одно — уровень большинства програмистов в плане алгоритмов снизился до уровня детского сада.
_>КОНЕЦ ОФФТОПА
Здравствуйте, TheBeard, Вы писали:
TB>Это не совсем так. Такие вопросы отсеивают алгоритмически неграмотных соискателей.
Хм, если почитать K&R, как они реализовали управление памятью... Где-то здесь на RSDN-е пробегала статья некоего Ньюкамера, который их за это прикладывал очень и очень крепко. ИМХО, все более-менее сложные алгоритмы, которые можно анализировать "в условиях сферического вакуума", уже изобретены и реализованы. Какой смысл, к примеру, обсуждать различные алгоритмы сортировки, если все равно в 99.9% случаев будет использоваться std::sort?
TB>Описанного вами человека скорее всего отсеяли бы на разборе проблемного кода или просто по общей неадекватности поведения (безумный огонь в глазах и т.п.).
Да нет, этого, кстати, за ним не замечалось. Скорее уж неуравновешенным (да еще каким!) становился я, когда мне предлагалось вместо QList использовать кольцевой буфер.
А, шастая по собеседованиям, я практически ни разу не видел разбор реального проблемного кода. Все больше надуманные примеры "в сферическом вакууме". Даже мои образцы кода, которые я, бывало, посылал с резюме, не только не разбирали, но, похоже, даже и не читали. Видимо, в тех конторах, где их читали, сразу говорили "no hire!"
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Если уж знание алгоритмической сложности операций в дереве Адельсона-Вельского-Ландиса (кстати, это два человека, Адельсон-Вельский и Ландис, а не три) может быть представлено как нечто выдающеееся, особенное, то, что другие не знают, то это означает только одно — уровень большинства програмистов в плане алгоритмов снизился до уровня детского сада.
Ну, во-первых, я и не говорил, что это три разных человека. Просто написал их через черточку. Во-вторых... Во-вторых, см. мой первоначальный пост: человек хорошо разбирался в том, что непосредственно не входило в его задачи (никто его не просил реализовывать какие бы то ни было деревья), и при этом не мог грамотно решать те задачи, которые ему поручались. Скажу откровеннее: он даже неграмотно их не мог решать. Таких теоретиков я встречал не одного, и даже не двух. С другой стороны, встречал и чистых прикладников, которые не читали, что там написал Кнут в третьем абзаце сто двадцатой страницы второго тома, зато разбирались в конкретных проблемах, конкретных фреймворках, с которыми работали, и успешно и грамотно решали поставленные задачи. Хорошо, конечно, и ядерную физику знать, и на токарном станке уметь работать, "и еще и на машинке" ((с) Матроскин). Но, увы, не каждому дано быть Леонардо. Пока что Леонардо от программирования я не встречал.
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Здравствуйте, slava_phirsov, Вы писали:
_>ИМХО, практическая ценность таких вопросов для компании-работодателя близка к нулю. _>Лучший знаток алгоритмов, которого я знал, в практической работе был абсолютно неудобоварим. Например, ...
Не стоит обобщать, компании и "практические работы" разные бывают.
Где-то вашего "неудобоваримого" дядьку оторвали бы с руками, посадив его лабать свехрбыстрые очереди и АВЛ-деревья
Ну а если в вашей компании такие знания не требуются, то да, особого смысла задавать такие вопросы нет.
Здравствуйте, Rothmans, Вы писали:
R>Привет всем,
R>Готовлюсь к собеседованию. R>Темами для оного в том числе являются "Алгоритмы" и "Структуры данных".
R>Какие бы вы задали вопросы поступающему профессиональному программисту на эти темы?
какие вы знаете виды сортировки?
какая сложность quicksort для типового и худшего случаев?
как устроен heap sort?
...
Здравствуйте, TheBeard, Вы писали:
TB>Програмист обычно пишет на каком-то языке и собеседуют его на соответствующую позицию. Программиста C++ я бы поспрашивал про контейнеры и алгоритмы STL:
TB>
TB>vector, list — для чего нужны, в чем разница TB>map, hash_map — алгоритмическая сложность поиска, как достигается TB>алгоритмы сортировки — квадратичные и линейно-логарифмическиею TB>TB>Ну и что-нибудь специфичное для предметной области компании: алгоритмы на графах, поиск в тексте, формальные грамматики, B-деревья, геометрические алгоритмы.
Годный списочек! Для C# можно спросить про:
Array, List, SortedList
Dictionary, HashSet, важность качественной хеш-функции для корректной работы этих контейнеров
StringBuilder — в каких случаях полезен
базовые отличия Struct от Class, критерии их выбора
Что касается базовых алгоритмов, то их удобнее/полезнее обсуждать не в чистом виде,
а в контексте вышеуказанных контейнеров (сложность добавления/вставки/удаления/поиска/сортировки, хеширование).
Ну и, безусловно, успешный кандидат вовсе не обязан знать всё без исключения.
Например, если на вопрос "Какова сложность поиска элемента в HashSet?",
кандидат ответил бы "Навскидку не скажу, но это узнаётся из хелпа за 30 секунд",
то такой ответ лично меня бы вполне устроил