Re[14]: собеседование
От: Ytz https://github.com/mtrempoltsev
Дата: 15.01.10 19:08
Оценка:
Да я понял, прошу прощения если резко вышло, просто собеседую контингент и грустно становиться. Начинаешь про алгоритмы — непонимание, про паттерны — шок. Поэтому я теперь чтобы не терять время сразу простую задачку, типа найти минимальное число в массиве или ту же строку развернуть — страшно становится, от того сколько отсеивается людей, а ведь в резюме написано по пять лет опыта работы разработчиком. И это без придирок, просто человек тупо не может развернуть строку без выделения памяти под еще одну строку.
Re[13]: собеседование
От: elmal  
Дата: 15.01.10 19:17
Оценка:
Здравствуйте, Ytz, Вы писали:

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

Эти -1, самые поганые ошибки, вообще-то. Которые никак не влияют на квалификацию. На -1 скорее всего ошибется тот, кто знает до черта языков и имеет черти какой опыт. В одном языке нумерация с 0, в другом с 1, в одном len это число элементов, в другом индекс последнего элемента. И синтаксис цикла не у всех такой ясный как в Сиподобных языках, не понятно включает ли интервал крайнее значение или нет. Потому и стараются от такой гадости уходить, и такой код в основном, работающий напрямую с указателями пишут в основном в институте. Это вообще не ошибка. Вот то, что забыл про переполнение кое кто, там да, ошибка. И то, далеко не факт, что его допустившего надо браковать сразу, зависит все от задач во первых, и от того, что он еще знает. Научиться сможет быстро, если что.
Re[2]: собеседование
От: Mephisto666 Великобритания  
Дата: 15.01.10 19:43
Оценка:
Здравствуйте, Ulitka, Вы писали:

U>Мне очень нравятся string similarity алгоритмы (http://www.dcs.shef.ac.uk/~sam/stringmetrics.html).

U>Вряд-ли кто-то ответит что-то вменяемое, если никогда с этим не сталкивался, но для завязывания разговора может подойти.
U>Ну а если в поисковик набираем и т.п. — must.

wow, спасибо! Я как раз смотрел вопрос с анаграммами (часто в гугле/мс задают) и заинтересовался как в ворде сделаны подсказки на слова с ошибками.
Т.е. предлагаются все слова из словаря "расстояние" до который от ошибочного слова меньше либо равно N. Но хотелось все таки уже разработанные методики изучить
Re[15]: собеседование
От: LordMAD Россия  
Дата: 15.01.10 19:49
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>страшно становится, от того сколько отсеивается людей, а ведь в резюме написано по пять лет опыта работы разработчиком.


А вот интересно, когда шеф-повар дорогого ресторана набирает себе команду, к нему тоже приходят толпы бывших работников McDonald's?
Re[14]: собеседование
От: MozgC США http://nightcoder.livejournal.com
Дата: 15.01.10 20:19
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Ага. Когда-то, в туманной дали, когда я вовсю педалил на С++ Builder-е, обращение с указателями для меня было, как завязка шнурков.

SA>Был ли я тогда хорошим программистом? Глядя на тогдашний код — увы. С указателями там все было в порядке. Зато на уровень абстракции выше — полный швах.
SA>С тех пор утекло много воды, я как-то начал думать больше о дизайне и меньше об указателях. Перешел на обувь без шнурков, условно говоря-ногу забил и пошел.

Такая же фигня. Лет 5-7 назад баловался на ассемблере и С++, и в уме знал как будет выглядеть тот код который я пишу на С++ в дизассемблированном виде. Был ли я хорошим программистом? Да вообще никаким не был, только и мог сортировки писать и задачки с олимпиад и ничего более серьезного. До сих пор кстати иногда разгребаю говнокод который 4-5 лет назад писал.
Re[6]: а никто и не задумывается: зачем собеседование
От: IT Россия linq2db.com
Дата: 15.01.10 20:28
Оценка: +3
Здравствуйте, Pizarro, Вы писали:

P>Технарей до собеседования допускать нельзя. Собеседовать должен только менеджер (желательно, забывший кодирование) которого интересует только одно: сможет ли человек решать задачи и выполнять работу.


А на основании чего он это будет решать?

P>Для этого хорошо помогает разговор о прошлых проектах.


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

P>Задачки предлагают только идиоты. Особенно для сеньоров.


... задачки не предлагают только идиоты. Особенно для сеньоров.

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

P>Джуниорам можно предложить что-то несложное, на понимание. Никаких алгоритмов обычно не надо. вообще.


Заумные алгоритмы действительно мало что показывают, но код человеку дать пописать необходимо. Желательно не на бумажке.
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: а никто и не задумывается: зачем собеседование
От: MozgC США http://nightcoder.livejournal.com
Дата: 15.01.10 20:32
Оценка:
Здравствуйте, IT, Вы писали:

IT>... задачки не предлагают только идиоты. Особенно для сеньоров.

IT>Заумные алгоритмы действительно мало что показывают, но код человеку дать пописать необходимо. Желательно не на бумажке.

Игорь, вот ваше мнение мне всегда интересно. Можно пример какие вопросы бы вы задавали при собеседовании на позицию старшего .NET/C#/Desktop программиста на проект по разработке типичного корпоративного приложения? Можно буквально 3 предложения, просто из интереса.
Re[14]: собеседование
От: Vlad_SP  
Дата: 15.01.10 20:35
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>С тех пор утекло много воды, я как-то начал думать больше о дизайне и меньше об указателях. Перешел на обувь без шнурков, условно говоря-ногу забил и пошел.


Глупости. Взялся за C++ — не говори, что не дюж. Что тебе мешало написать тот же самый переворот строки на C# или на чем там? С дюжиной паттернов впридачу и прочим там.... Ась?
Re[8]: а никто и не задумывается: зачем собеседование
От: IT Россия linq2db.com
Дата: 15.01.10 21:02
Оценка: 6 (2) :)
Здравствуйте, MozgC, Вы писали:

MC>Игорь, вот ваше мнение мне всегда интересно. Можно пример какие вопросы бы вы задавали при собеседовании на позицию старшего .NET/C#/Desktop программиста на проект по разработке типичного корпоративного приложения? Можно буквально 3 предложения, просто из интереса.


У нас интервью выглядит примерно так.

Телефонный скрининг. Расскажите о себе (тут как правило скупая мужская слеза и счастье знакомства). Далее несложные вопросы по списку. SQL, .NET, ASP. Из SQL самый сложный вопрос, если не ошибаюсь, это LEFT/INNER/FULL JOIN, по .NET даже не помню, ASP — ViewState.

Всё в пределах получаса. До следующего интервью доходит в лучшем случае 20%, но не потому что мы такие суровые, а потому что см. мой постинг выше.

Далее приглашаем человека на face to face. Первая часть интервью мы его слушаем, он рассказывает о проектах. Вторая — предлагается решить две задачи.

Первая — SQL скрипт из нашего реального проекта на одну страничку с объяснением проблемы в этом скрипте. Просим найти проблему и предложить фикс. Наблюдать за этим крайне интересно. Кода страница, а проблемное место одно. По описанию проблемы в принципе можно быстро выйти на это место. Здесь сразу виден уровень разработчика, не его написанный в резюме "problem solving skil", а настоящий. Используемое в скрипте решение на самом деле не совсем очевидно и далее мы просим высказать предположение, почему именно это решение используется.

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

По ходу дела, естественно, могут возникнуть дополнительные вопросы. Если видим, что возникают затруднения, пробуем ненавязчиво подсказывать.

ЗЫ. При этом на данный момент в нашей команде работают только те, кто пришёл по рекомендации и этого интервью не проходил
Если нам не помогут, то мы тоже никого не пощадим.
Re[15]: собеседование
От: StandAlone  
Дата: 15.01.10 21:57
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Глупости. Взялся за C++ — не говори, что не дюж. Что тебе мешало написать тот же самый переворот строки на C# или на чем там? С дюжиной паттернов впридачу и прочим там.... Ась?


Да ради бога:

Func<string, string> revFunc = sourceStr => new string(sourceStr.ToCharArray().Reverse().ToArray());

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

P.S. Жалко нельзя лямбду в вар запихать
Re[9]: а никто и не задумывается: зачем собеседование
От: StandAlone  
Дата: 15.01.10 21:59
Оценка:
Здравствуйте, IT, Вы писали:

IT>ЗЫ. При этом на данный момент в нашей команде работают только те, кто пришёл по рекомендации и этого интервью не проходил


А в чем подвох-то? Только не говорите, что никто не знает атрибута [WebMethod]
SQL для выборки последовательности чисел с разрывом? Или еще какая-нить задачка с sql-ex ?
Re[13]: собеседование
От: FR  
Дата: 16.01.10 04:46
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>С какой целью опустили? Вообще есть мнение, например у Спольски, которое я разделяю, что у хорошего программиста ответ как написать < или <=, отнять единицу или нет, приходит сам, без дополнительных усилий. Ну если на велосипеде научился ездить, то не будешь задумываться как крутить педали и когда жать на тормоз. Потому и странно.


Такие навыки очень быстро выветриваются (и так же быстро восстанавливаются).
Как пример я (очень давно) практически думал на языке Forth сейчас с трудом разбираю не очень сложные программки. C++ конечно до форта не дотягивает, но даже программируя на нем постоянно в высокоуровневом стиле мелочи из памяти выветриваются, и написать на бумажке простую вещь с указателями может стать затруднительным, мелкие ошибки точно будут.
Re[9]: а никто и не задумывается: зачем собеседование
От: Pizarro  
Дата: 16.01.10 04:50
Оценка:
Здравствуйте, IT, Вы писали:


IT>Первая — SQL скрипт из нашего реального проекта на одну страничку с объяснением проблемы в этом скрипте. Просим найти проблему и предложить фикс. Наблюдать за этим крайне интересно. Кода страница, а проблемное место одно. По описанию проблемы в принципе можно быстро выйти на это место. Здесь сразу виден уровень разработчика, не его написанный в резюме "problem solving skil", а настоящий. Используемое в скрипте решение на самом деле не совсем очевидно и далее мы просим высказать предположение, почему именно это решение используется.


IT>Вторая задача письменная. В наличии лаптоп, интернет, созданный в студии и уже открытый проект. Просьба написать в этом проекте один веб-метод, который должен делать то-то и то-то и возвращать то-то и то-то. Примитивная задачка, которая может быть решена в пол строки кода.


Кстати довольно разумно. пару задачек и я даю, не надо же доводить дело до абсурда.
Re[16]: собеседование
От: FR  
Дата: 16.01.10 04:57
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>
SA>Func<string, string> revFunc = sourceStr => new string(sourceStr.ToCharArray().Reverse().ToArray());
SA>

SA>пользуйтесь Количество использованных паттернов предлагаю посчитать самостоятельно
SA>Как видим, нормальные языки позволяют сосредоточиться на логике, а не на том, как передвигать каждую из сорока ножек


std::reverse(Str.begin(), Str.end());
Re[6]: собеседование
От: dilmah США  
Дата: 16.01.10 08:48
Оценка:
H>>int avg(int x, int y) { return (x+y)/2; };

SA>А он сейчас вызовет ее с аргументами (2^32-1,2^32-1)


у интов верхний предел это обычно 2^31-1
Re[9]: собеседование
От: alzt  
Дата: 16.01.10 09:13
Оценка:
Здравствуйте, LordMAD, Вы писали:

A>>
A>>int is_odd(int x) {
A>>    return x & 1;
A>>}

A>>int avg_my(int x, int y) { 
A>>    return x/2 + y/2 + is_odd(x & y); 
A>>}
A>>


LMA>Похожая проблема: avg_my(-3, -3) == -1


Да. как-то на отрицательных числах не проверил её.
Похоже без функции sign не обойтись.
Re[14]: собеседование
От: hrensgory Россия  
Дата: 16.01.10 10:30
Оценка:
LordMAD пишет:
>
> H>2. Архитектура и проектирование
> H>4. Объектно-ориентированное программирование
> H>7. Базы данных
> H>10. Автоматизированное тестирование
> H>12. Составление спецификаций и анализ требований
>
> Я думаю будет понятно, если я просто приведу пример вопроса, например,
> по теме Объектно-ориентированное программирование:
>
> К каким требованиям на предусловия (preconditions) и постусловия
> (postconditions) приводит Принцип замещения Лисков (Liskov Substitution
> Principle — LSP)?

К сожалению, стало яснее только на 20%. Более всего интересуют примеры
вопросов к рядовому разработчику №№ 12 и 2 (если на все лениво примеры
приводить).

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: собеседование
От: ettcat США  
Дата: 16.01.10 12:57
Оценка:
> for (int i=0; i<strlen(a); i++)
> {
> b[i]=a[strlen(a)-i-1];
> }

Вот пример, как на ровном месте получили квадратичную сложность вместо линейной.

Мне кажется, что такая задача дается не для того, чтоб проверять умение биты и байты сдвигать, а
для того, что посмотреть за поведением кандидата при решении задачи. Спрашивает или сразу все
понятно, сразу начинает код писать, или что-то пишет на бумажке, вводит тестовые примеры с
клавиатуры (как в решении выше), либо забивает тесты в программе/запускалке, сколько у него тестовых
случаев рассмотрено (один или несколько) и т.д.

Ну и в любом случае, решение брать/не брать по результату одной задачи не принимается. Есть еще
задачки на приектирование (спроектируйте Яндекс.Маркет например).

А что можно понять о кандидате в разговоре о прошлых проектах?
Posted via RSDN NNTP Server 2.1 beta
Re[10]: а никто и не задумывается: зачем собеседование
От: IT Россия linq2db.com
Дата: 16.01.10 18:27
Оценка:
Здравствуйте, StandAlone, Вы писали:

IT>>ЗЫ. При этом на данный момент в нашей команде работают только те, кто пришёл по рекомендации и этого интервью не проходил


SA>А в чем подвох-то? Только не говорите, что никто не знает атрибута [WebMethod]


Атрибут уже стоит. Поставлен визардом. Веб-сервис больше нужен как способ тестирования написанного кода. Если человек никогда не работал с веб-сервисами, то мы ему расскажем что к чему.

Сама задача примитивна до нельзя. Нужно по заданному параметру прочитать строчку из файла и вернуть её. Файл не большой.

SA>SQL для выборки последовательности чисел с разрывом? Или еще какая-нить задачка с sql-ex ?


В тесте с SQL не надо ничего писать, нужно найти ошибку. Большую часть скрипта занимает UPDATE выражение вообще не относяшиееся к делу. Оно вызывается в цикле и этот цикл никогда не завершается. Это и надо найти и пофиксить. Ещё нужно попытаться объяснить зачем мы используем цикл, т.к. на первый взгляд он абсолютно не нужен. Можно было бы всё сделать одним UPDATE, но мы устанавливаем ROWCOUNT в 10000 и крутим пока всё не проапдейтится.
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: собеседование
От: Олег К.  
Дата: 17.01.10 02:39
Оценка:
E>Мне ни разу не приходилось в своей практике переворачивать строку. Написать переворот я напишу, он будет работать, если буду писать за компом. Если на бумажке, запросто могу и ошибку сделать.
Было бы странно если бы в течении 30 — 50 минут которое длится интервью тебя бы попросили написать реальный код. Развернуть строку — несложное и довольно-таки примитивное задание которое не требует каких-либо специальный знаний или поисков алгоритма в Интернете.

ОК>>Я не думаю что кто-либо будет спрашивать студентов о ролях в предыдущих проектах, но меня откровенно умиляют заявления что человека с 10-летним опытом знания плюсов спрашивать не нужно.

E>По плюсам отдельная тема, там действительно много чего требуется знать. Вопрос только, что считать знанием? Я лично считаю, что под знанием языка должно подразумеваться представление, а во что твой код превратится после компиляции.
Это тоже не сложно но большинство даже простого синтаксиса не знают.

E>Обращение строки — это вопрос не на знание языка, это вопрос по алгоритмам, независящим от языка.

Да никакой это не алгоритм. В смысле сложности, то есть. Нужно всего лишь помнить немного синтаксиса да иметь голову на плечах.

E>Если человек много ходит по собеседованиям — он ответ будет знать,

Ты удивишся, но большинство не напишет даже после хождения по интервью.

E>если мало, он напишет реализацию в лоб, и возможно она будет неидеальна, скажемс ему до свидания.

До свидания сразу никто не скажет но я вообще не понимаю как можно извратить код такой функции чтобы струдом понимать что она делает. Такие тоже бывали. Пример с memcpy() я уже приводил. По-твоему такого человека надо было нанять?

ОК>>Впрочем, как погляжу, для тебя это больная тема.

E>Слабейшая сторона у меня при прохождении собеседований — многопоточность. А так как у меня одно собеседование в 2 месяца в лучшем случае, то я забываю кое какие детали, так как не используются они у меня в работе.
Так почему не подтянешь слабую сторону? Особенно перед интервью.

E>При реальной работе я обставлю всех кандидатов, конкурентов не боюсь, а о них мечтаю. При собеседованиях — приоритет будет у того, кто меньше ошибется в вопросах многопоточности. Отношусь философски — не требуются мои сильные стороны, вам же хуже. А может и лучше, а то если возьмете меня, то по прошествии времени, авторитет будет у меня, а не у вас .

За это я спокоен. Наоборот, считаю, что лучше работать с толковыми ребятами.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.