Re[6]: Покритикуйте собеседование
От: kittown  
Дата: 18.08.11 10:16
Оценка:
Здравствуйте, elmal, Вы писали:

E>Я даже соглашусь, но:

E>1) Здесь на бумажке требовалось написать тривиальный, но рабочий код. Тривиальная ошибка вида выход за пределы массива, считалась критичной. Соответственно никакой потребности в бамажке нет. И далее, на практике на бумажке требуют не набросать алгоритм, а чаще всего требуется полная реализация. Некоторые орлы хотят еще ввод вывод элементов чтоб был, если ввод вывод не написал то это недочет;

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

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

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

Есть еще сеньеры, которые тратят много времени на перетряску работающей системы и замену критичного, но старого и обветшалого кода на новый и правильный (поясню — это диаметральная противоположность переписыванию системы с нуля). Такие кадры тоже могут много написать на бумаге. Потому что им и так приходится держать значительную часть кода в голове с его подводными камнями и всеми лажами, допущенными в дизайне прежними разработчиками, т.е. к ide они никак не привязаны. Эти кадры на задачку о перевороте строки среагируют скучно — напишут сходу пару простых работающих вариантов и выкинут вопрос из головы. Для достигших этой стадии неуместных вопросов почти не бывает, им пофиг. Но и ничего интересного о данных кадрах решение этой задачки не скажет.

E>2) Когда мне дают задачу, где на бумажке требуется набросать высокоуровневый алгоритм — у меня никакого неприятия нет, я только приветствую такие задания, особенно если они приближены к реальности. Я готов выполнять, и действительно, я скорее всего на практике возьму именно бумажку. Но когда требуют чтоб я на бумажке этот алгоритм реализовал в деталях, с вводом-выводом, и без ошибок — такие задания меня просто бесят.


Спокойнее относиться надо. Не напишете идеально конечный код — ну и чорт с ним. Невысоко оценят правильный псевдокод при неполном точном коде — ну и чорт с ними. Их проблемы.
Re[7]: Покритикуйте собеседование
От: elmal  
Дата: 18.08.11 11:25
Оценка:
Здравствуйте, kittown, Вы писали:

K>Спокойнее относиться надо. Не напишете идеально конечный код — ну и чорт с ним. Невысоко оценят правильный псевдокод при неполном точном коде — ну и чорт с ними. Их проблемы.

Да я и так спокоен как удав . Мне по большому счету не так то охота работать неизвестно у кого, при необходимости срочно сменить работу я и по знакомству пролезу по крайней мере в 2 фирмы, возможно и в 3 (правда с потерей в зарплате, ибо она и у собеседующих будет меньше, про другие условия я молчу — тоже потеряю. Да и не любитель я устройства на работу по блату). Просто своего времени жалко, от кодирования на бумажке я не получаю ни малейшего удовольствия. При этом я даже от простеньких логических задач могу удовольствие получить, но вот от кодирования на бумажке ни малейшего у меня удовольствия, одно раздражение. Последний раз я на бумажке кодировал в 1990-м году, тогда это было оправдано.
Re[6]: Покритикуйте собеседование
От: genre Россия  
Дата: 18.08.11 15:13
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>Только такой "непростой код" вообще не на языке программирования обычно выражен. А какими-нибудь схемами, диаграммами — в общем, псевдокодом.

SD>Писать код на реальном языке программирования на бумажке неудобно и непривычно. Простой пример: я вот _вообще_ не помню, какие классы в Java работают с файлами (нутром чую, что должен быть класс File, у него какие-нибудь Input/Output Streams, и какие-нибудь форматтеры али ридеры). Я не помню точных названий классов и их методов (в основном потому, что никогда не надо было). Написать код на бумажке не смогу. А вот с IDE + google — легко, названия находятся за 5 минут. Методы — еще за 5 минут.

А что на твой взгляд должен очень хорошо знать программист на Java? ну если файлы помнить не надо, то что надо?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[3]: Покритикуйте собеседование
От: tofox2 Россия  
Дата: 18.08.11 15:38
Оценка:
Здравствуйте, monax, Вы писали:

M>
M>function myrev($src) {
M>    $length = strlen($src);
M>    for ($i = 0; $i < $length / 2; $i++) {
M>        $a = $src[$i];
M>        $src[$i] = $src[$length - $i - 1];
M>        $src[$length - $i - 1] = $a;
M>    }
M>    return $src;    
M>}
M>


и что, реально много людей не могут это написать?
Re[4]: Покритикуйте собеседование
От: kittown  
Дата: 18.08.11 16:30
Оценка:
Здравствуйте, tofox2, Вы писали:

M>>
M>>function myrev($src) {
M>>    $length = strlen($src);
M>>    for ($i = 0; $i < $length / 2; $i++) {
M>>        $a = $src[$i];
M>>        $src[$i] = $src[$length - $i - 1];
M>>        $src[$length - $i - 1] = $a;
M>>    }
M>>    return $src;    
M>>}
M>>


T>и что, реально много людей не могут это написать?


Вы не видели людей, которые после курса по Си на экзамене отказываются написать код подсчета длины строки ? То есть просто опускают руки, и с понурой головой следуют на выход? А они есть.

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

Никаких внятных выводов, не имея соответствующей подготовки и не диагностируя человека подробно, вы из этих фейлов не сделаете. Понравился человек все равно — можно брать, недостаточно понравился — не брать. Как-то так.
Re[5]: Покритикуйте собеседование
От: tofox2 Россия  
Дата: 18.08.11 16:49
Оценка:
Здравствуйте, kittown, Вы писали:

K>Здравствуйте, tofox2, Вы писали:


M>>>
M>>>function myrev($src) {
M>>>    $length = strlen($src);
M>>>    for ($i = 0; $i < $length / 2; $i++) {
M>>>        $a = $src[$i];
M>>>        $src[$i] = $src[$length - $i - 1];
M>>>        $src[$length - $i - 1] = $a;
M>>>    }
M>>>    return $src;    
M>>>}
M>>>


T>>и что, реально много людей не могут это написать?


K>Вы не видели людей, которые после курса по Си на экзамене отказываются написать код подсчета длины строки ? То есть просто опускают руки, и с понурой головой следуют на выход? А они есть.


как бы задачки школьные, странно это. если б меня попросили такое написать, я б оскорбился, ну или недоумевал по меньшей мере.
Re[4]: Покритикуйте собеседование
От: zubr Россия  
Дата: 18.08.11 17:50
Оценка:
Здравствуйте, shrecher, Вы писали:

Z>>надо придумать задачу в которой это будет требоваться, но только будет завуалировано.

S>А зачем? Задача на переворот строки — банально. Ее спрашивают на каждом втором собеседовании.
1. задача заезженна по самое не балуй, далеко от неё не укопаешь
2. я не знаю вообще в жизни где она бы применялась — разве только AMBULANCE переворачивают.

сложная задача позволит вам посмотреть как человек думает (на самом деле сейчас умру со смеху — один идиот придумал теперь бараны повторяют).
как он её решит — какое решение придумает, и как для себя потом докажет что это лучшее решение.
с другой стороны что еще лучше попытаться увести человека сразу в другом направлении.
то есть посмотреть как ваш авторитет давит (довольно сложно посмотреть на уже работающей команде кстати, фиг кто вам из текущих сотрудников покажет это лучше).
Re[7]: Покритикуйте собеседование
От: SkyDance Земля  
Дата: 18.08.11 23:44
Оценка: +1
G>А что на твой взгляд должен очень хорошо знать программист на Java? ну если файлы помнить не надо, то что надо?

Стоп-стоп, не файлы помнить не надо. А не надо синтаксис или наименования помнить.
Что помнить реально надо: базу. Основу. То, что не гуглится за 5 минут — т.е. любые вещи на понимание. К примеру, понимание нормальных форм в теории СУБД. Можно не помнить конкретику запросов в T-SQL, но знать, что такое НФ, зачем нужна нормализация и почему не стоит увлекаться денормализацией раньше времени — это помнить надо.
Можно не помнить, какие буковки писать, чтобы открывать файлы (сокеты или еще что). Но надо знать о существовании этих самых файлов.
Можно не помнить, что за классы реализуют SSL-соединение, но нужно понимать, что такое public key, private key и чем всякие эти key отличаются от certificate.
Можно не знать, какой класс осуществляет хеширование (я вот не знаю, есть ли в Java что-нибудь вроде SHA1Stream, чтобы в него писать, а потом взять SHA1-хеш от записанного). Но нужно знать про сам факт существования хеширования, про применение его, про то, где какой хеш следует применять.

Можно не знать, как запустить новый поток. Но нужно помнить о синхронизации доступа к данным из разных потоков. Даже если не помнить конструкции (вот я реально сейчас не помню — последние 9 месяцев писал на голом Си, и из головы Java-конструкции выветрились). Найти эти конструкции, их синтаксис и особенности работы — легко и быстро. Но вот если человек принципиально не понимает, что такое memory barriers, не поможет ему знание всех этих synchronized штук.

Вывод: на собеседовании надо проверять умение человека _решать задачу_, а не функционирование его головы в режиме справочника. Благо в интернете все равно справочного материала больше.
Re[6]: Покритикуйте собеседование
От: kittown  
Дата: 19.08.11 10:28
Оценка:
Здравствуйте, tofox2, Вы писали:

K>>Вы не видели людей, которые после курса по Си на экзамене отказываются написать код подсчета длины строки ? То есть просто опускают руки, и с понурой головой следуют на выход? А они есть.


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


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

Умение отличать простые задачи (и решать их быстро, просто, не парясь) от сложных (которые решать вдумчиво) — очень важный скилл. С которым довольно фигово у олимпиадников.
Re[7]: Покритикуйте собеседование
От: kuzmaprutkov2  
Дата: 19.08.11 10:41
Оценка:
Здравствуйте, kittown, Вы писали:

С которым довольно фигово у олимпиадников.

Первый раз такое слышу =) откуда это навеяло?
Re[5]: Покритикуйте собеседование
От: Stanislav V. Zudin Россия  
Дата: 19.08.11 10:50
Оценка:
Здравствуйте, zubr, Вы писали:

Z>>>надо придумать задачу в которой это будет требоваться, но только будет завуалировано.

S>>А зачем? Задача на переворот строки — банально. Ее спрашивают на каждом втором собеседовании.
Z>1. задача заезженна по самое не балуй, далеко от неё не укопаешь
Z>2. я не знаю вообще в жизни где она бы применялась — разве только AMBULANCE переворачивают.

Переворот текстовых строк, согласен, экзотическая операция.
А вот в геометрических задачах перевернуть массив вершин — частая операция.
Кстати, как и переворот односвязного списка (тоже частенько спрашивают на собеседованиях).
_____________________
С уважением,
Stanislav V. Zudin
Re[8]: Покритикуйте собеседование
От: genre Россия  
Дата: 22.08.11 10:18
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>Вывод: на собеседовании надо проверять умение человека _решать задачу_, а не функционирование его головы в режиме справочника. Благо в интернете все равно справочного материала больше.


все верно. только вот интересно как предполагается проверять умение человека решать задачу не давая ему никаких задач?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[9]: Покритикуйте собеседование
От: SkyDance Земля  
Дата: 23.08.11 00:41
Оценка:
G>все верно. только вот интересно как предполагается проверять умение человека решать задачу не давая ему никаких задач?

Например, дать ему компьютер. Эх, помню 2000 год, чудесную контору Агава — пришел, посадили за комп, дали задание, ушли и не парили мозг, спокойно сел, почитал задание, сделал, показал, объяснил, — все! Скажу честно: концентрация очень хороших программистов именно вот с таким методом набора — впечатляющая. Пожалуй, что наивысшая среди подобных фирм. Я веду речь только о разработке софта (не веб-порталов и прочих хостингов, а именно те люди, кто на С/С++ писали и до сих пор пишут).

Другой вариант — поговорить. Именно что по основам. Можно без терминов (человеку свойственно забывать неиспользуемые термины), но по общим вещам — например, как работает TCP. Как организовать man-in-the-middle. А можно ли защититься от MITM? А как? А без использования third-party trusted store? Во, придумали trusted network... как, не мы первые?
Если кандидат сообразительный, даже без знаний о существовании PGP (там все уже украдено до нас) он сможет решить задачу о создании сети доверия.
Re: Покритикуйте собеседование
От: ArtemGorikov Австралия жж
Дата: 23.08.11 00:57
Оценка:
Здравствуйте, monax, Вы писали:

Укажи вилку на эту "вроде приличную зп для Ростова"
Re[10]: Покритикуйте собеседование
От: Alex Dav Россия  
Дата: 23.08.11 01:21
Оценка: +1
Здравствуйте, SkyDance, Вы писали:

SD>Другой вариант — поговорить. Именно что по основам. Можно без терминов (человеку свойственно забывать неиспользуемые термины), но по общим вещам — например, как работает TCP. Как организовать man-in-the-middle. А можно ли защититься от MITM? А как? А без использования third-party trusted store? Во, придумали trusted network... как, не мы первые?

SD>Если кандидат сообразительный, даже без знаний о существовании PGP (там все уже украдено до нас) он сможет решить задачу о создании сети доверия.

а на фига человеку знать как работает TCP? Как часто в крупном проекте вы пишите модули соединения? — поправьте меня но это делается раз и на годы, т.к. кому то надо бизнес логику реализовывать. (Хотя, если вы пишите небольшие апликушки — может быть)

Остальные слова вообще не знаю и даже не слышал — ни от тупых собратьев ни от умных — видать обходятся как то?
Re[10]: Покритикуйте собеседование
От: genre Россия  
Дата: 23.08.11 08:10
Оценка:
Здравствуйте, SkyDance, Вы писали:

G>>все верно. только вот интересно как предполагается проверять умение человека решать задачу не давая ему никаких задач?


SD>Например, дать ему компьютер. Эх, помню 2000 год, чудесную контору Агава — пришел, посадили за комп, дали задание, ушли и не парили мозг, спокойно сел, почитал задание, сделал, показал, объяснил, — все! Скажу честно: концентрация очень хороших программистов именно вот с таким методом набора — впечатляющая. Пожалуй, что наивысшая среди подобных фирм. Я веду речь только о разработке софта (не веб-порталов и прочих хостингов, а именно те люди, кто на С/С++ писали и до сих пор пишут).


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


SD>Другой вариант — поговорить. Именно что по основам. Можно без терминов (человеку свойственно забывать неиспользуемые термины), но по общим вещам — например, как работает TCP. Как организовать man-in-the-middle. А можно ли защититься от MITM? А как? А без использования third-party trusted store? Во, придумали trusted network... как, не мы первые?

SD>Если кандидат сообразительный, даже без знаний о существовании PGP (там все уже украдено до нас) он сможет решить задачу о создании сети доверия.

поговорить это естественно.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[11]: Покритикуйте собеседование
От: kittown  
Дата: 23.08.11 15:39
Оценка: +1
Здравствуйте, Alex Dav, Вы писали:

AD>Здравствуйте, SkyDance, Вы писали:


SD>>Другой вариант — поговорить. Именно что по основам. Можно без терминов (человеку свойственно забывать неиспользуемые термины), но по общим вещам — например, как работает TCP. Как организовать man-in-the-middle. А можно ли защититься от MITM? А как? А без использования third-party trusted store? Во, придумали trusted network... как, не мы первые?

SD>>Если кандидат сообразительный, даже без знаний о существовании PGP (там все уже украдено до нас) он сможет решить задачу о создании сети доверия.

AD>а на фига человеку знать как работает TCP? Как часто в крупном проекте вы пишите модули соединения? — поправьте меня но это делается раз и на годы, т.к. кому то надо бизнес логику реализовывать. (Хотя, если вы пишите небольшие апликушки — может быть)


AD>Остальные слова вообще не знаю и даже не слышал — ни от тупых собратьев ни от умных — видать обходятся как то?


Все приведенные слова — из категории общей грамотности. MITM сокращение никогда раньше не видел, но очевидно, что это сокращение от man-in-the-middle. Смысл извествен, но если бы не был — он в общем и из названия понятен. Trusted store/network — базовые знания по безопасности, читали на 3 курсе. Как ориентировочно работает TCP рассказали еще на 2 курсе; и там и там забывать особо нечего — меняются только алгоритмы шифрования, а не основные принципы.

Спрашивать тонкие детали, если не специалист по конкретной области, неправильно, но общие принципы не знать (хотя бы после второго курса вуза по CS/IT специальностям) — аномалия. От частоты применения не зависит.

А вот про "бизнес-логику реализовывать" — это уже наброс. Ничего хорошего от кандидата, слишком часто применяющего терминологию такого сорта, я бы не ждал. Баззворд ни о чем.
Re: Покритикуйте собеседование
От: Piko  
Дата: 23.08.11 20:08
Оценка:
M>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.

Я вот помню перешёл в математическую гимназию в 10-ом классе. Там на первом уроке информатики учительница спросила
— "Кто умеет программировать?".
Поднял руку только я — дали задание похожее на переворот строки: является ли input строка/слово палиндромом (одинаково читается с обоих концов).
Этот первый урок проходил в классе без компов, поэтому писал программу тетрадке.
Решил, потом ещё проверили в компьютерном классе — заработало.
Меня тогда больше всего удивило, что к 10-му классу в математической гимназии никто не научился программировать. А учительницу больше всего удивило, что я пришёл из обычной школы и был единственным кто решил задачу.
Re[3]: Покритикуйте собеседование
От: Piko  
Дата: 23.08.11 20:15
Оценка:
Здравствуйте, Ulitka, Вы писали:

U>А интересно, как круче всего перевернуть строку? Ну просто ходить с конца и от начала и делать swap — то конечно просто. А вот SSE2 какой-то прикрутить, чтобы пожесточее перевернуть? Ну или можно на CUDA, распердолить потоков N / 2 где N — кол-во символов, каждый поток переворачивает свою пару, ггг


На CUDA совсем не круто, так как будет медленней чем на CPU — скорость передачи данных на GPU меньше чем скорость обычной памяти.
Re[11]: Покритикуйте собеседование
От: SkyDance Земля  
Дата: 24.08.11 23:31
Оценка:
AD>а на фига человеку знать как работает TCP? Как часто в крупном проекте вы пишите модули соединения? —

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