Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Я бы с тобой как обычно поспорил бы :) 21.10.08 10:50 Число просмотров: 3962
Автор: Heller <Heller> Статус: Elderman
|
Собеседование - это для интервьюируваемого определенный стресс. Даже очень умный человек может растеряться от немного необычной постановки задачи и сесть в лужу, и даже полный дурак может сосредоточиться и решить недоступную его мозгам в обычных условиях задачу. Это раз.
Мозг человека весьма сложно устроен. Оценивать задачки по принципу "решил-не решил" нельзя. Скажем, лично я достаточно медленно соображаю. Тем не менее, если дать мне несколько больше времени, то я прихожу к решениям, к которым большинство других быстро-соображающих не могут прийти в принципе. Результирующая скорость и качество кодинга у меня в результате в среднем выше чем у быстросоображающих. Я вот вообще считаю, что быстрые решения почти не бывают хорошими. Это два.
Даже не в состоянии стресса (а просто спать хочется) я вот сейчас прочитав твой пост пропустил, что реверс списка должен быть за O(const) по памяти, и сильно удивился, зная, что реверс списка может быть проведен лишь за O(N) по времени. Я не дурак - просто в определенных ситуациях (скажем, человек ехал на собеседование на электричке из другого штата пять часов) может быть погрешность в работе мозгов. Погрешность эта весьма велика для большинства человек. Это три.
Человеческое мышление, еще раз, очень сложно. Вот задача со стеклянными шарами: кидаем со 100-этажного здания стеклянные шары, надо узнать начиная с какого этажа шары начнут биться. Надо найти наибыстрейший алгоритм при наличии двух шаров. Дурак пропустит мимо ушей слово "наибыстрейший", и будет кидать шары с первого, пока не дойдет до номера этажа. Потом будет чесать репу и думать зачем нужен второй шар. Математик же, зная, что множество этажей упорядочено по принципу "бьется-не бьется" и надо найти наискорейший алгоритм, кинет шар сразу по методу дихотомии с пятидесятого этажа и шар разобьется. Математик подумает, что это подъебка, и скажет, что задачу нельзя решить (я однажды так и сказал на собеседовании, не спав перед собеседованием двое суток, ибо играл в стрип-покер). Даже если математику подсказать решение, то он может отказаться от нахождения производной, ибо знает, что потом придется решать уравнение, а это чаще всего занимает много времени (если он видел задачки сложнее чем в учебнике). Это четыре.
Все задачи разноплановые. Вот лично у меня не особо хорошо мозги работают в сторону дискретной математики и вообще практически не умеют решать геометрию, зато замечательно воспринимают математику непрерывную, а так же теорию вероятностей. Задашь мне простейшую задачку по геометрии - придешь к выводу, что я полный идиот. Задашь мне весьма трудную задачу по терверу - придешь к выводу, что гениальный мальчик. А на самом деле я всего лишь посередине. То есть задание задачек - это со статистической точки зрения не совсем корректный метод оценки интеллектуального потенциала человека. Это пять.
Ну а по поводу senior php'шника, в принципе, его алгоритм безусловно плох, и я банально не верю, что у него 10 лет разработки за плечами. Однако если говорить о подходе, то если мне на собеседовании зададут написать дерево поиска, то я не буду писать АВЛ-дерево, а если зададут отсортировать массив, то я применю метод прямого выбора либо пузырька. Я знаю и о других алгоритмах, но пока у меня нет в них необходимости, я не буду их писать.
В нашей компании был такой случай - программисту надо было на КПК'шной версии продукта нарисовать кнопку со стрелочкой ">". Так как экран можно "перевернуть", то и знак на кнопке можно перевернуть. За четрые дня он написал алгоритм преобразования битмапы используя умножение на матрицу (он слегка подзабыл теорию, поэтому провозился долго). Скажем, даже если бы это было эффективней, чем подставить бникодовский символ в кнопочку, или уж если работать с битмапой, то просто сделать тупо в цикле ряд swap-пов, это все равно плохое решение. Потому что долгое и неоправданно сложное. Поэтому стремление программиста всегда найти "лучшее" решение меня лично очень настораживает.
|
|
|