Хорошее собеседование, если жаль своего и чужого времени, то можно еще попросить людей подготовиться по теме PHP и SQL, сказать что будешь это спрашивать. Для толкового студента вечера достаточно, чтобы выучить основы, если даже ничего не знает.
А по поводу адекватных спецов, которые не пишут код на бумажке... Значит работа не так и нужна, да и вам нафиг такой подарок нужен, если сегодня реверс строки в лом писать, что же будет когда его наймешь.
Здравствуйте, monax, Вы писали:
M>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.
С одной стороны, ничего страшного в этом вопросе нет. Однако там найдется полно поводов для придирок. Например, зачтется ли мне ответ, если я тупо выделю память под другую строку и скопирую туда символы в обратном порядке? Должен ли я заниматься проверками на null, учитывать кодировку? Скорее всего это и вызывает неприятие. Задача простейшая, но правильно ее можно решить многими способами. Если ты ожидаешь единственного рассово-верного решения, где ходят по половинке строки, то хозяин барин, конечно, но на мой взгляд студент вполне может упустить из виду такое решение. В том числе, если он больше встречался с языками, где строки — неизменяемы.
Здравствуйте, Философ, Вы писали:
Ф>Здравствуйте, monax, Вы писали:
M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.
Ф>В чём сложность? Ф>На чём люди стопоряться? Какие проблемы у них возникают при переворачивании строк? Ф>...не понимаю.
1. выходят за пределы строки
2. строка из-за сложностей в реализации остаётся исходной
3. теряют часть символов
4. городят огород из дополнительных массивов с конвертацией в строку (часто тоже с потерей символов)
Но удивляет не столько наличие этих ошибок, а то, что они не в состоянии их исправить. Т.е. примерно так, я вижу, что человек выходит за пределы строки или теряет символы. Говорю ему, что в результате работы кода получится неправильный результат, при этом уточняю, что речь идёт не о синтаксисе. Те, кто исправил ошибку, считаются написавшими переворот строки (ну мало ли из-за чего ошибся, может переволновался). Некоторые ошибку исправляют, некоторые нет. Списать всё на стресс и волнение не могу, потому что задача простая и до этого человек держался спокойно и уверенно рассказывал о своих успехах.
M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки. MM>Должен ли я заниматься проверками на null, учитывать кодировку?
Занятно было бы невзначай так сказать что строка в utf-8.
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, monax, Вы писали:
M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки. MM>С одной стороны, ничего страшного в этом вопросе нет. Однако там найдется полно поводов для придирок.
если цель придраться, то да — найдётся
MM>Например, зачтется ли мне ответ, если я тупо выделю память под другую строку и скопирую туда символы в обратном порядке?
зачтётся
MM>Должен ли я заниматься проверками на null, учитывать кодировку?
нет
MM>Скорее всего это и вызывает неприятие. Задача простейшая, но правильно ее можно решить многими способами. Если ты ожидаешь единственного рассово-верного решения, где ходят по половинке строки, то хозяин барин, конечно, но на мой взгляд студент вполне может упустить из виду такое решение. В том числе, если он больше встречался с языками, где строки — неизменяемы.
Вот решение, которое подходит под твоё описание. Если бы это был язык с неизменяемыми строками, то в цикле я бы просто создавал новую строку, а не менял старую. Этот код будет засчитан как верный. Может последовать вопрос про половинки строки. Если ответит, значит плюс умению держаться в стрессовых ситуациях, не ответит — минуса не получит.
Здравствуйте, monax, Вы писали:
MM>>Например, зачтется ли мне ответ, если я тупо выделю память под другую строку и скопирую туда символы в обратном порядке? M>зачтётся
MM>>Должен ли я заниматься проверками на null, учитывать кодировку? M>нет
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, monax, Вы писали:
M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.
KP>Ты ща еще больше удивишься, когда набежит куча народу и расскажет тебе что давать задание на переворачивание строки на собеседовании это просто жуткое ущемление прав кандидата, а ты в собеседованиях вообще нихрена не понимаешь.
А интересно, как круче всего перевернуть строку? Ну просто ходить с конца и от начала и делать swap — то конечно просто. А вот SSE2 какой-то прикрутить, чтобы пожесточее перевернуть? Ну или можно на CUDA, распердолить потоков N / 2 где N — кол-во символов, каждый поток переворачивает свою пару, ггг
Здравствуйте, monax, Вы писали:
M>1. выходят за пределы строки
При реализации на бумажке это не ошибка M>2. строка из-за сложностей в реализации остаётся исходной
При реализации на бумажке это не ошибка M>3. теряют часть символов
При реализации на бумажке это не ошибка M>4. городят огород из дополнительных массивов с конвертацией в строку (часто тоже с потерей символов)
Сложно себе это все представить, но возможно тут и ошибка, но не думаю что таких талантов много.
M>Списать всё на стресс и волнение не могу, потому что задача простая и до этого человек держался спокойно и уверенно рассказывал о своих успехах.
На практике человек ОЧЕНЬ редко пишет код на бумажке, это уже не актуально лет 20 минимум. Вот не привык он! Обленился, сейчас навык работы с перфокартами несколько потерял актуальность, очень жаль, что вы до сих пор с перфокартами работаете, пора б технику то обновить! Тем более, что обычно итерирование по строке через цикл на практике очень редко требуется, как результат, что там ставить — length() — 1 или length() хрен еще вспомнишь, так как 100 лет на практике не надо.
Он привык по быстрому написать на компе, написать тестик, прогнать тестик. Как результат, пункт 1 и 3 у кандидатов появится на практике только на твоих мегасобеседованиях. Вот выдели товарищу компутер, и странным образом количество успешных кандидатов увеличится.
Далее, задание ну ни черта не годится. Ну что ты по нему проверять будешь? Что он помнит границы массива чтоль? Такое актуальное знание?
Много с SQL работать приходится? Даешь доступ к реальной базе, и просишь написать запрос, удовлетворяющий условию. Просишь модифицировать реальный запрос. Нужно html верстать? Даешь реальную html, и просишь его немного модифицировать, а также попросить сказать, как бы это сделать пооптимальнее, чтоб часть кода кешировалась, стили ьыли настраиваемые и тому подобное. Надо немного программировать? Напиши сам формочку на jscript, с удобными интерфейсами, и попроси кандидата устранить дубликаты, например.
Ведь сделаешь если — времени меньше потратишь как своего, так и кандидата, да и больше информации о нем получишь.
А давай я тебя спрошу, раз такой умный. Для начала проверим, способен ли ты к простейшим действиям, например набрать текст на клавиатуре. Итак, проверяю. Отойди от компьютера, и нарисуй на бумажке все клавиши компа, с расположением всех символов! Как не нарисовал, как это " с ' попутал? Так ты даже на юзера не тянешь, как вообще ты можешь работать с такими знаниями! Стресс наверно, но тыж вроде вполне успешно говорил про то, как зарубаешь кандидатов. А давай проверим твои институтские знания. Ручку, бумажку, без инета, википедии, по честному... Расскажи ка мне свойства псевдообратных матриц. Расскажи ка мне в чем заключается симплекс метод. Расскажи как решать системы нелинейшых уравнений. Задачу оптимальной загрузи оборудования, формулировка и решения. Хм ... Чет как то от зубов не отскакивает смотрю, наверно лекции не посещал, троечник. Школьные знания давай проверим — напиши ка мне формулу вычисления корней кубического уравнения. Хм ... Ну хоть теорему Виета?
Ладно, давай про компьютеры. В каком году был построен Марк-1? Какая у него элементная база и характеристики? Так ... историю не знакмс, значит специальностью не интересуемся.
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, monax, Вы писали:
M>>1. выходят за пределы строки E>При реализации на бумажке это не ошибка M>>2. строка из-за сложностей в реализации остаётся исходной E>При реализации на бумажке это не ошибка M>>3. теряют часть символов E>При реализации на бумажке это не ошибка M>>4. городят огород из дополнительных массивов с конвертацией в строку (часто тоже с потерей символов) E>Сложно себе это все представить, но возможно тут и ошибка, но не думаю что таких талантов много.
т.е. чтобы человек не написал — это всё не ошибка. зачем тогда вообще собеседование, может проще сразу на работу брать?
M>>Списать всё на стресс и волнение не могу, потому что задача простая и до этого человек держался спокойно и уверенно рассказывал о своих успехах. E>Тем более, что обычно итерирование по строке через цикл на практике очень редко требуется, как результат, что там ставить — length() — 1 или length() хрен еще вспомнишь, так как 100 лет на практике не надо.
это если на php, а кандидат может писать на любом языке, который, по его мнению, знает лучше всего.
E>Он привык по быстрому написать на компе, написать тестик, прогнать тестик. Как результат, пункт 1 и 3 у кандидатов появится на практике только на твоих мегасобеседованиях. Вот выдели товарищу компутер, и странным образом количество успешных кандидатов увеличится.
какой тестик для 7 строк кода, 5 из которых — это объявление функции, скобки и возврат значения?
E>А давай я тебя спрошу, раз такой умный. Для начала проверим, способен ли ты к простейшим действиям, например набрать текст на клавиатуре. Итак, проверяю. Отойди от компьютера, и нарисуй на бумажке все клавиши компа, с расположением всех символов! Как не нарисовал, как это " с ' попутал? Так ты даже на юзера не тянешь, как вообще ты можешь работать с такими знаниями! Стресс наверно, но тыж вроде вполне успешно говорил про то, как зарубаешь кандидатов.
это было бы справедливо, если бы я "зарубал" кандидатов за то, что они не знают стандартные функции php для переворота строки. мне это не нужно, функцию он может и в гугле найти, а вот работать с массивам нужно уметь.
E>А давай проверим твои институтские знания. Ручку, бумажку, без инета, википедии, по честному... Расскажи ка мне свойства псевдообратных матриц. Расскажи ка мне в чем заключается симплекс метод. Расскажи как решать системы нелинейшых уравнений. Задачу оптимальной загрузи оборудования, формулировка и решения. Хм ... Чет как то от зубов не отскакивает смотрю, наверно лекции не посещал, троечник. Школьные знания давай проверим — напиши ка мне формулу вычисления корней кубического уравнения. Хм ... Ну хоть теорему Виета? E>Ладно, давай про компьютеры. В каком году был построен Марк-1? Какая у него элементная база и характеристики? Так ... историю не знакмс, значит специальностью не интересуемся.
ни один из твоих вопросов не катит. я спрашивал только то, что нужно в работе, либо то, что в резюме заявлено как умение. кстати, для решения систем нелинейных уравнений мне приходилось делать свою реализацию метода Бройдена, так что могу рассказать, потому что работал с этим, а всё остальное не имеет к моей работе никакого отношения.
09.08.2011 15:48, monax пишет:
> > 1. выходят за пределы строки > 2. строка из-за сложностей в реализации остаётся исходной > 3. теряют часть символов > 4. городят огород из дополнительных массивов с конвертацией в строку > (часто тоже с потерей символов)
Значит по твоей вакансии к тебе идут особые персонажи. Возможно что-то
не так в тексте вакансии. Ужесточи требования в вакансии.
Просто я очень редко сталкивался с таким, обычно это происходило, когда
знакомых начальство притаскивало.
09.08.2011 17:05, Ulitka пишет: >Ну или можно на CUDA, > распердолить потоков N / 2 где N — кол-во символов, каждый поток > переворачивает свою пару, ггг
Вот такого кадра я бы тут отправил дальше работу искать.
M>После такой беседы даю человеку карандаш с листиком или предлагаю доску с маркером (кому как нравится) и прошу написать мне функцию для переворота строки на php. Если php не его любимый язык, то допускается написать функцию на любом другом (потому что тот объём знаний php, который нужен в работе может быть получен за неделю). Этого кода на 5-10 строк достаточно, чтобы оценить логическое мышление на простой задаче.
и
M>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.
Если так то имеет смысл поставить переворот строки в самое начало. Идея — не тратить много ресурсов на собеседование впустую, если Вы считаете что человек заведомо не подходит (фильтры организуются в порядке увеличения стоимости). Лично я считаю правильной идеей давать список вопросов с вариантами ответа перед интервью (по-крайней мере перед техническим интервью).
M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки. D>Не верю, чтобы студент 4-5го курса не мог бы это сделать. Как такое возможно D>Возможно, не хотели. Иногда сразу видно, что эта компания, эта работа, этот собеседующий(как потенциальный начальник) вовсе не то, что хотелось бы иметь. Или задание сбило с толку своей простотой.
Люди, по нескольку лет работающие программистами тоже не всегда справляются.
Здравствуйте, Vzhyk, Вы писали:
V>Значит по твоей вакансии к тебе идут особые персонажи. Возможно что-то V>не так в тексте вакансии. Ужесточи требования в вакансии. V>Просто я очень редко сталкивался с таким, обычно это происходило, когда V>знакомых начальство притаскивало.
возможно, что ты прав. если ещё один такой придёт, то так и сделаю
Здравствуйте, 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?
Например так:
* вводная introductionary болтовня (типа чем компания занимается, кто нужен). Если есть HR — можно дать ему и не тратить время. Если Вы считаете что народ и так к вам прет — можно забить на эту стадию наверное.
* формальный тест на дебильность. Тест, который Вы считаете отсеивает тех, кто точно Вам не подходит. Сюда можно положить переворот строки и структуры файлов/классов. Если результат сильно не нравится — собеседование прекращатся, инача продолжаете.
* более содержательный разговор
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, Vzhyk, Вы писали:
>>>Ну или можно на CUDA, V>>Вот такого кадра я бы тут отправил дальше работу искать.
BZ>и ошибся бы. меня менеджеры чуть не на коленях уламывали хоть что-нибудь реализовать на куде, поскольку это даст такой рекламный импульс...!
Дык сложил бы два вектора в global memory и концы в воду
Здравствуйте, kosmik, Вы писали:
M>>После такой беседы даю человеку карандаш с листиком или предлагаю доску с маркером (кому как нравится) и прошу написать мне функцию для переворота строки на php. Если php не его любимый язык, то допускается написать функцию на любом другом (потому что тот объём знаний php, который нужен в работе может быть получен за неделю). Этого кода на 5-10 строк достаточно, чтобы оценить логическое мышление на простой задаче.
K>и
M>>З.Ы. я был удивлён, как много людей не способны написать код для переворачивания строки.
K>Если так то имеет смысл поставить переворот строки в самое начало. Идея — не тратить много ресурсов на собеседование впустую, если Вы считаете что человек заведомо не подходит (фильтры организуются в порядке увеличения стоимости). Лично я считаю правильной идеей давать список вопросов с вариантами ответа перед интервью (по-крайней мере перед техническим интервью).
вариантов может быть много и не факт, что мой — лучший. когда искал прошлой зимой человека в группу, то увидел несколько новых для себя решений. а давать человеку сразу задание написать код, не поговорив — вот это уже невежливо и неадекватно. ну вот если непредвзято посмотреть, то собеседование — это не только выбор сотрудника с моей стороны, но и выбор работодателя с его стороны. если я начну сразу человека гонять вопросами, не объяснив, что он будет делать, зачем и для кого, а также сколько он будет получать за это, то я его вполне пойму, если он встанет и уйдёт сразу же. к тому же общий разговор в начале знакомства как раз помогает кандидату освоиться и не сильно теряться из-за стресса.
09.08.2011 18:42, BulatZiganshin пишет:
> > и ошибся бы. меня менеджеры чуть не на коленях уламывали хоть что-нибудь > реализовать на куде, поскольку это даст такой рекламный импульс...!
Так а нафига что-то реализовывать — это же рекламный импульс? Главное в
требованиях к продукту написать, что нужна Tesla и пропиарить.