Re: Покритикуйте собеседование
От: Son of Northern Darkness  
Дата: 09.08.11 12:22
Оценка:
Здравствуйте, monax, Вы писали:

M>Критика?


Хорошее собеседование, если жаль своего и чужого времени, то можно еще попросить людей подготовиться по теме PHP и SQL, сказать что будешь это спрашивать. Для толкового студента вечера достаточно, чтобы выучить основы, если даже ничего не знает.
А по поводу адекватных спецов, которые не пишут код на бумажке... Значит работа не так и нужна, да и вам нафиг такой подарок нужен, если сегодня реверс строки в лом писать, что же будет когда его наймешь.
Re: Покритикуйте собеседование
От: MxMsk Португалия  
Дата: 09.08.11 12:31
Оценка:
Здравствуйте, monax, Вы писали:

M>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.

С одной стороны, ничего страшного в этом вопросе нет. Однако там найдется полно поводов для придирок. Например, зачтется ли мне ответ, если я тупо выделю память под другую строку и скопирую туда символы в обратном порядке? Должен ли я заниматься проверками на null, учитывать кодировку? Скорее всего это и вызывает неприятие. Задача простейшая, но правильно ее можно решить многими способами. Если ты ожидаешь единственного рассово-верного решения, где ходят по половинке строки, то хозяин барин, конечно, но на мой взгляд студент вполне может упустить из виду такое решение. В том числе, если он больше встречался с языками, где строки — неизменяемы.
Re[2]: Покритикуйте собеседование
От: monax  
Дата: 09.08.11 12:48
Оценка:
Здравствуйте, Философ, Вы писали:

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


M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.


Ф>В чём сложность?

Ф>На чём люди стопоряться? Какие проблемы у них возникают при переворачивании строк?
Ф>...не понимаю.

1. выходят за пределы строки
2. строка из-за сложностей в реализации остаётся исходной
3. теряют часть символов
4. городят огород из дополнительных массивов с конвертацией в строку (часто тоже с потерей символов)

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

Уточню, меня вполне устроит такой вот код:

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


и даже если человек вместо strlen по ошибке напишет count — это лишь небольшой минус, но не значит, что задача не решена.
Re[2]: Покритикуйте собеседование
От: warhast Россия  
Дата: 09.08.11 12:50
Оценка: +1 :))) :))) :))
M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.
MM>Должен ли я заниматься проверками на null, учитывать кодировку?
Занятно было бы невзначай так сказать что строка в utf-8.
Re[2]: Покритикуйте собеседование
От: monax  
Дата: 09.08.11 12:57
Оценка:
Здравствуйте, MxMsk, Вы писали:

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


M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.

MM>С одной стороны, ничего страшного в этом вопросе нет. Однако там найдется полно поводов для придирок.

если цель придраться, то да — найдётся

MM>Например, зачтется ли мне ответ, если я тупо выделю память под другую строку и скопирую туда символы в обратном порядке?


зачтётся

MM>Должен ли я заниматься проверками на null, учитывать кодировку?


нет

MM>Скорее всего это и вызывает неприятие. Задача простейшая, но правильно ее можно решить многими способами. Если ты ожидаешь единственного рассово-верного решения, где ходят по половинке строки, то хозяин барин, конечно, но на мой взгляд студент вполне может упустить из виду такое решение. В том числе, если он больше встречался с языками, где строки — неизменяемы.


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

$s = 'abcde';
$s2 = '';
for ($i = strlen($s) - 1; $i > -1; $i--) {
    $s2 .= $s[$i];
}

print $s2;
Re[3]: Покритикуйте собеседование
От: MxMsk Португалия  
Дата: 09.08.11 13:31
Оценка:
Здравствуйте, monax, Вы писали:

MM>>Например, зачтется ли мне ответ, если я тупо выделю память под другую строку и скопирую туда символы в обратном порядке?

M>зачтётся

MM>>Должен ли я заниматься проверками на null, учитывать кодировку?

M>нет

Тогда ок!
Re[2]: Покритикуйте собеседование
От: Ulitka США http://lazarenko.me
Дата: 09.08.11 14:05
Оценка:
Здравствуйте, kaa.python, Вы писали:

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


M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.


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


А интересно, как круче всего перевернуть строку? Ну просто ходить с конца и от начала и делать swap — то конечно просто. А вот SSE2 какой-то прикрутить, чтобы пожесточее перевернуть? Ну или можно на CUDA, распердолить потоков N / 2 где N — кол-во символов, каждый поток переворачивает свою пару, ггг
Re[3]: Покритикуйте собеседование
От: elmal  
Дата: 09.08.11 14:19
Оценка: 1 (1) +2 -1 :))) :))
Здравствуйте, monax, Вы писали:

M>1. выходят за пределы строки

При реализации на бумажке это не ошибка
M>2. строка из-за сложностей в реализации остаётся исходной
При реализации на бумажке это не ошибка
M>3. теряют часть символов
При реализации на бумажке это не ошибка
M>4. городят огород из дополнительных массивов с конвертацией в строку (часто тоже с потерей символов)
Сложно себе это все представить, но возможно тут и ошибка, но не думаю что таких талантов много.

M>Списать всё на стресс и волнение не могу, потому что задача простая и до этого человек держался спокойно и уверенно рассказывал о своих успехах.

На практике человек ОЧЕНЬ редко пишет код на бумажке, это уже не актуально лет 20 минимум. Вот не привык он! Обленился, сейчас навык работы с перфокартами несколько потерял актуальность, очень жаль, что вы до сих пор с перфокартами работаете, пора б технику то обновить! Тем более, что обычно итерирование по строке через цикл на практике очень редко требуется, как результат, что там ставить — length() — 1 или length() хрен еще вспомнишь, так как 100 лет на практике не надо.
Он привык по быстрому написать на компе, написать тестик, прогнать тестик. Как результат, пункт 1 и 3 у кандидатов появится на практике только на твоих мегасобеседованиях. Вот выдели товарищу компутер, и странным образом количество успешных кандидатов увеличится.
Далее, задание ну ни черта не годится. Ну что ты по нему проверять будешь? Что он помнит границы массива чтоль? Такое актуальное знание?
Много с SQL работать приходится? Даешь доступ к реальной базе, и просишь написать запрос, удовлетворяющий условию. Просишь модифицировать реальный запрос. Нужно html верстать? Даешь реальную html, и просишь его немного модифицировать, а также попросить сказать, как бы это сделать пооптимальнее, чтоб часть кода кешировалась, стили ьыли настраиваемые и тому подобное. Надо немного программировать? Напиши сам формочку на jscript, с удобными интерфейсами, и попроси кандидата устранить дубликаты, например.
Ведь сделаешь если — времени меньше потратишь как своего, так и кандидата, да и больше информации о нем получишь.

А давай я тебя спрошу, раз такой умный. Для начала проверим, способен ли ты к простейшим действиям, например набрать текст на клавиатуре. Итак, проверяю. Отойди от компьютера, и нарисуй на бумажке все клавиши компа, с расположением всех символов! Как не нарисовал, как это " с ' попутал? Так ты даже на юзера не тянешь, как вообще ты можешь работать с такими знаниями! Стресс наверно, но тыж вроде вполне успешно говорил про то, как зарубаешь кандидатов. А давай проверим твои институтские знания. Ручку, бумажку, без инета, википедии, по честному... Расскажи ка мне свойства псевдообратных матриц. Расскажи ка мне в чем заключается симплекс метод. Расскажи как решать системы нелинейшых уравнений. Задачу оптимальной загрузи оборудования, формулировка и решения. Хм ... Чет как то от зубов не отскакивает смотрю, наверно лекции не посещал, троечник. Школьные знания давай проверим — напиши ка мне формулу вычисления корней кубического уравнения. Хм ... Ну хоть теорему Виета?
Ладно, давай про компьютеры. В каком году был построен Марк-1? Какая у него элементная база и характеристики? Так ... историю не знакмс, значит специальностью не интересуемся.
Re[4]: Покритикуйте собеседование
От: monax  
Дата: 09.08.11 14:57
Оценка:
Здравствуйте, elmal, Вы писали:

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


M>>1. выходят за пределы строки

E>При реализации на бумажке это не ошибка
M>>2. строка из-за сложностей в реализации остаётся исходной
E>При реализации на бумажке это не ошибка
M>>3. теряют часть символов
E>При реализации на бумажке это не ошибка
M>>4. городят огород из дополнительных массивов с конвертацией в строку (часто тоже с потерей символов)
E>Сложно себе это все представить, но возможно тут и ошибка, но не думаю что таких талантов много.

т.е. чтобы человек не написал — это всё не ошибка. зачем тогда вообще собеседование, может проще сразу на работу брать?

M>>Списать всё на стресс и волнение не могу, потому что задача простая и до этого человек держался спокойно и уверенно рассказывал о своих успехах.

E>Тем более, что обычно итерирование по строке через цикл на практике очень редко требуется, как результат, что там ставить — length() — 1 или length() хрен еще вспомнишь, так как 100 лет на практике не надо.

а написать код без индексов фантазии не хватает?

$str = 'abcd';
$dst = '';
foreach (str_split($str) as $ch) {
        $dst = $ch . $dst;
}


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

E>Он привык по быстрому написать на компе, написать тестик, прогнать тестик. Как результат, пункт 1 и 3 у кандидатов появится на практике только на твоих мегасобеседованиях. Вот выдели товарищу компутер, и странным образом количество успешных кандидатов увеличится.


какой тестик для 7 строк кода, 5 из которых — это объявление функции, скобки и возврат значения?

E>А давай я тебя спрошу, раз такой умный. Для начала проверим, способен ли ты к простейшим действиям, например набрать текст на клавиатуре. Итак, проверяю. Отойди от компьютера, и нарисуй на бумажке все клавиши компа, с расположением всех символов! Как не нарисовал, как это " с ' попутал? Так ты даже на юзера не тянешь, как вообще ты можешь работать с такими знаниями! Стресс наверно, но тыж вроде вполне успешно говорил про то, как зарубаешь кандидатов.


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

E>А давай проверим твои институтские знания. Ручку, бумажку, без инета, википедии, по честному... Расскажи ка мне свойства псевдообратных матриц. Расскажи ка мне в чем заключается симплекс метод. Расскажи как решать системы нелинейшых уравнений. Задачу оптимальной загрузи оборудования, формулировка и решения. Хм ... Чет как то от зубов не отскакивает смотрю, наверно лекции не посещал, троечник. Школьные знания давай проверим — напиши ка мне формулу вычисления корней кубического уравнения. Хм ... Ну хоть теорему Виета?

E>Ладно, давай про компьютеры. В каком году был построен Марк-1? Какая у него элементная база и характеристики? Так ... историю не знакмс, значит специальностью не интересуемся.

ни один из твоих вопросов не катит. я спрашивал только то, что нужно в работе, либо то, что в резюме заявлено как умение. кстати, для решения систем нелинейных уравнений мне приходилось делать свою реализацию метода Бройдена, так что могу рассказать, потому что работал с этим, а всё остальное не имеет к моей работе никакого отношения.
Re[3]: Покритикуйте собеседование
От: Vzhyk  
Дата: 09.08.11 15:16
Оценка:
09.08.2011 15:48, monax пишет:

>

> 1. выходят за пределы строки
> 2. строка из-за сложностей в реализации остаётся исходной
> 3. теряют часть символов
> 4. городят огород из дополнительных массивов с конвертацией в строку
> (часто тоже с потерей символов)

Значит по твоей вакансии к тебе идут особые персонажи. Возможно что-то
не так в тексте вакансии. Ужесточи требования в вакансии.
Просто я очень редко сталкивался с таким, обычно это происходило, когда
знакомых начальство притаскивало.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Покритикуйте собеседование
От: Vzhyk  
Дата: 09.08.11 15:19
Оценка:
09.08.2011 17:05, Ulitka пишет:
>Ну или можно на CUDA,
> распердолить потоков N / 2 где N — кол-во символов, каждый поток
> переворачивает свою пару, ггг
Вот такого кадра я бы тут отправил дальше работу искать.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Покритикуйте собеседование
От: BulatZiganshin  
Дата: 09.08.11 15:42
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>>Ну или можно на CUDA,

V>Вот такого кадра я бы тут отправил дальше работу искать.

и ошибся бы. меня менеджеры чуть не на коленях уламывали хоть что-нибудь реализовать на куде, поскольку это даст такой рекламный импульс...!
Люди, я люблю вас! Будьте бдительны!!!
Re: Покритикуйте собеседование
От: kosmik Россия http://www.linkedin.com/in/kosmik
Дата: 09.08.11 15:44
Оценка:
M>После такой беседы даю человеку карандаш с листиком или предлагаю доску с маркером (кому как нравится) и прошу написать мне функцию для переворота строки на php. Если php не его любимый язык, то допускается написать функцию на любом другом (потому что тот объём знаний php, который нужен в работе может быть получен за неделю). Этого кода на 5-10 строк достаточно, чтобы оценить логическое мышление на простой задаче.

и

M>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.


Если так то имеет смысл поставить переворот строки в самое начало. Идея — не тратить много ресурсов на собеседование впустую, если Вы считаете что человек заведомо не подходит (фильтры организуются в порядке увеличения стоимости). Лично я считаю правильной идеей давать список вопросов с вариантами ответа перед интервью (по-крайней мере перед техническим интервью).
Re[2]: Покритикуйте собеседование
От: kosmik Россия http://www.linkedin.com/in/kosmik
Дата: 09.08.11 15:44
Оценка:
M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.
D>Не верю, чтобы студент 4-5го курса не мог бы это сделать. Как такое возможно
D>Возможно, не хотели. Иногда сразу видно, что эта компания, эта работа, этот собеседующий(как потенциальный начальник) вовсе не то, что хотелось бы иметь. Или задание сбило с толку своей простотой.

Люди, по нескольку лет работающие программистами тоже не всегда справляются.
Re[4]: Покритикуйте собеседование
От: monax  
Дата: 09.08.11 15:47
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Значит по твоей вакансии к тебе идут особые персонажи. Возможно что-то

V>не так в тексте вакансии. Ужесточи требования в вакансии.
V>Просто я очень редко сталкивался с таким, обычно это происходило, когда
V>знакомых начальство притаскивало.

возможно, что ты прав. если ещё один такой придёт, то так и сделаю
Re[4]: Покритикуйте собеседование
От: Ulitka США http://lazarenko.me
Дата: 09.08.11 15:51
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>09.08.2011 17:05, Ulitka пишет:

>>Ну или можно на CUDA,
>> распердолить потоков N / 2 где N — кол-во символов, каждый поток
>> переворачивает свою пару, ггг
V>Вот такого кадра я бы тут отправил дальше работу искать.

А почему? Вдруг он хороший программист, просто любопытный и идейный, да и разговор поддержать? Вот допустим у нас строка — 5K символов. Это влезет в 80 cache lines на каком-то Xeon-е. Что быстрее — идти с обеих сторон строки и делать swap или CUDA? Тут интересно как сработает prefetcher в случае reverse iteration, не будет ли давать cold miss на каждом 65-м байтике? Возможно, прийдется дать hint (ну, GCC например сама умеет такое делать, если использовать subscript). Ну или залить всю память в GPU, обсчитать и слить результат обратно? Или лучше host mapped mamory заиспользовать? Стойте, погодите, может MPI лучше прикрутить? Или самому распараллелить? Кстати, кто-то из кандидатов делал/упоминал loop unrolling?
Re: Покритикуйте собеседование
От: kosmik Россия http://www.linkedin.com/in/kosmik
Дата: 09.08.11 15:53
Оценка:
Имеет смысл IMHO поменять порядок.

Например так:
* вводная introductionary болтовня (типа чем компания занимается, кто нужен). Если есть HR — можно дать ему и не тратить время. Если Вы считаете что народ и так к вам прет — можно забить на эту стадию наверное.
* формальный тест на дебильность. Тест, который Вы считаете отсеивает тех, кто точно Вам не подходит. Сюда можно положить переворот строки и структуры файлов/классов. Если результат сильно не нравится — собеседование прекращатся, инача продолжаете.
* более содержательный разговор
Re[5]: Покритикуйте собеседование
От: Ulitka США http://lazarenko.me
Дата: 09.08.11 15:53
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

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


>>>Ну или можно на CUDA,

V>>Вот такого кадра я бы тут отправил дальше работу искать.

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


Дык сложил бы два вектора в global memory и концы в воду
Re[2]: Покритикуйте собеседование
От: monax  
Дата: 09.08.11 15:54
Оценка:
Здравствуйте, kosmik, Вы писали:

M>>После такой беседы даю человеку карандаш с листиком или предлагаю доску с маркером (кому как нравится) и прошу написать мне функцию для переворота строки на php. Если php не его любимый язык, то допускается написать функцию на любом другом (потому что тот объём знаний php, который нужен в работе может быть получен за неделю). Этого кода на 5-10 строк достаточно, чтобы оценить логическое мышление на простой задаче.


K>и


M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.


K>Если так то имеет смысл поставить переворот строки в самое начало. Идея — не тратить много ресурсов на собеседование впустую, если Вы считаете что человек заведомо не подходит (фильтры организуются в порядке увеличения стоимости). Лично я считаю правильной идеей давать список вопросов с вариантами ответа перед интервью (по-крайней мере перед техническим интервью).


вариантов может быть много и не факт, что мой — лучший. когда искал прошлой зимой человека в группу, то увидел несколько новых для себя решений. а давать человеку сразу задание написать код, не поговорив — вот это уже невежливо и неадекватно. ну вот если непредвзято посмотреть, то собеседование — это не только выбор сотрудника с моей стороны, но и выбор работодателя с его стороны. если я начну сразу человека гонять вопросами, не объяснив, что он будет делать, зачем и для кого, а также сколько он будет получать за это, то я его вполне пойму, если он встанет и уйдёт сразу же. к тому же общий разговор в начале знакомства как раз помогает кандидату освоиться и не сильно теряться из-за стресса.
Re[5]: Покритикуйте собеседование
От: Vzhyk  
Дата: 09.08.11 16:04
Оценка:
09.08.2011 18:42, BulatZiganshin пишет:

>

> и ошибся бы. меня менеджеры чуть не на коленях уламывали хоть что-нибудь
> реализовать на куде, поскольку это даст такой рекламный импульс...!
Так а нафига что-то реализовывать — это же рекламный импульс? Главное в
требованиях к продукту написать, что нужна Tesla и пропиарить.
Posted via RSDN NNTP Server 2.1 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.