Re[3]: собеседование
От: LordMAD Россия  
Дата: 15.01.10 06:22
Оценка:
Здравствуйте, Handie, Вы писали:


LMA>>Напишите функцию, вычисляющую среднее значение двух любых значений типа int:

LMA>>int avg(int x, int y);

H>Вы нанимаете умственно отсталых инвалидов?


Нет, просто мы не нанимаем людей, которые на ровном месте спотыкаются об UB или implementation-defined resulting value.
Кстати, когда этот вопрос использовали на собеседовании, количество людей, которые сходу писали верный результат, не превышало 10% для позиций с уровнем зарплаты выше среднего по городу.

LMA>>Предположим, что у Вас есть некий класс, реализующий идиому pimpl. Требуется реализовать для него эффективную специализацию функции swap.


H>Бред какой-то


А что конкретно не нравится?
Re[3]: собеседование
От: LordMAD Россия  
Дата: 15.01.10 06:28
Оценка:
Здравствуйте, Ytz, Вы писали:

LMA>>Напишите функцию, вычисляющую среднее значение двух любых значений типа int:

LMA>>int avg(int x, int y);

Ytz>А подвох в чем? В проверке на переполнение, округлении результата деления или использовании сдвига вместо деления?


Большинство кандидатов спотыкались на §5/5 для C++03 (ISO 14882-2003) и §6.5/5 для C99 (ISO 9899-TC3), и, соответственно, §5.8/3 для C++03 и §6.5.7/5 для C99. Но, как уже тут писали, любое задание — всего лишь повод для разговора.
Re[4]: собеседование
От: Handie  
Дата: 15.01.10 06:33
Оценка: :)
LMA>Большинство кандидатов спотыкались на §5/5 для C++03 (ISO 14882-2003) и §6.5/5 для C99 (ISO 9899-TC3), и, соответственно, §5.8/3 для C++03 и §6.5.7/5 для C99. Но, как уже тут писали, любое задание — всего лишь повод для разговора.

Вы просили кандидатов продекламировать эти параграфы наизусть или пересказать своими словами?
Re[4]: собеседование
От: Handie  
Дата: 15.01.10 06:37
Оценка:
Здравствуйте, LordMAD, Вы писали:

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



LMA>>>Напишите функцию, вычисляющую среднее значение двух любых значений типа int:

LMA>>>int avg(int x, int y);

H>>Вы нанимаете умственно отсталых инвалидов?


LMA>Нет, просто мы не нанимаем людей, которые на ровном месте спотыкаются об UB или implementation-defined resulting value.

LMA>Кстати, когда этот вопрос использовали на собеседовании, количество людей, которые сходу писали верный результат, не превышало 10% для позиций с уровнем зарплаты выше среднего по городу.

Может я отношусь к 10% особо талантливых людей, рискну написать функцию среднего двух интов:
int avg(int x, int y) { return (x+y)/2; };

В чем я не прав?
Re[5]: собеседование
От: elmal  
Дата: 15.01.10 06:48
Оценка:
Здравствуйте, Handie, Вы писали:

H>В чем я не прав?

У интов ограничение по разрядности, вообще-то. При сложении очень вероятно получим отрицательное значение, поделив на 2 результат тоже будет отрицательный.
Re[9]: собеседование
От: LordMAD Россия  
Дата: 15.01.10 06:51
Оценка:
Здравствуйте, MozgC, Вы писали:

MC>Вообще такие споры по поводу вопросов на собеседовании и, в частности, вопросов по различным алгоритмам возникают из-за того, что все мы работаем с разными вещами, и увлекаемся тоже разными вещами. Кому-то по работе часто нужно писать эффективные достаточно низкоуровневые алгоритмы обработки данных, кто-то увлекается решением алгоритмических задач и этюдов, и соответственно будет задавать такие вопросы на собеседовании. А кто-то работает с более высокоуровневыми вещами и решает совсем другие проблемы. Мне, например, сейчас нужно продумать дизайн веб-сервиса для сотен наших клиентов, и продумать его так, чтобы сотни клиентов могли потом долго этим веб-сервисом пользоваться, встраивая работу с ним в свой внутренний софт. И сделать нужно так, чтобы через неделю не оказалось, что что-то не продумано, или что-то надо переделать так, что у клиентов код использующий наш веб-сервис перестанет работать. Или чтобы не пришлось писать через неделю всем клиентам письма, сообщая "вы знаете, мы тут кое что добавили/переделали в нашем веб-сервисе" или "доводим до вашего сведения, что теперь этот метод может выбрасывать такое-то исключение". Но при этом алгоритм быстрой сортировки я не помню. У меня просто другие задачи.


У нас, например, для каждой вакансии формируется список тем, и для каждой из них задается приоритет в рамках этой вакансии. Соответственно для каждой из тем, кандидату задается минимум один вопрос (или больше, если одного вопроса недостаточно для принятия решения о квалификации в данной теме). Например, для рядового разработчика список тем может быть таким:
1. Алгоритмы
2. Архитектура и проектирование
3. Системы счисления и булева алгебра
4. Объектно-ориентированное программирование
5. Программирование на языке C
6. Программирование на языке С++
7. Базы данных
8. Разработка под ОС Windows
9. Продвинутый пользователь ОС Windows
10. Автоматизированное тестирование
11. Отладка
12. Составление спецификаций и анализ требований
13. Документирование кода
14. Сопровождение кода
Re[5]: собеседование
От: LordMAD Россия  
Дата: 15.01.10 06:54
Оценка: -1
Здравствуйте, Handie, Вы писали:

LMA>>Большинство кандидатов спотыкались на §5/5 для C++03 (ISO 14882-2003) и §6.5/5 для C99 (ISO 9899-TC3), и, соответственно, §5.8/3 для C++03 и §6.5.7/5 для C99. Но, как уже тут писали, любое задание — всего лишь повод для разговора.


H>Вы просили кандидатов продекламировать эти параграфы наизусть или пересказать своими словами?


Нет, помнить стандарты вообще не требуется. Требуется уметь писать код, который им не противоречит.
Re[5]: собеседование
От: LordMAD Россия  
Дата: 15.01.10 07:01
Оценка: 3 (1) -5
Здравствуйте, Handie, Вы писали:

LMA>>Нет, просто мы не нанимаем людей, которые на ровном месте спотыкаются об UB или implementation-defined resulting value.

LMA>>Кстати, когда этот вопрос использовали на собеседовании, количество людей, которые сходу писали верный результат, не превышало 10% для позиций с уровнем зарплаты выше среднего по городу.

H>Может я отношусь к 10% особо талантливых людей, рискну написать функцию среднего двух интов:

H>int avg(int x, int y) { return (x+y)/2; };

H>В чем я не прав?


В том, что Вы не умеете складывать два числа на C/C++.

Для C++03 (ISO 14882-2003) — §5/5: «If during the evaluation of an expression, the result is not mathematically defined or not in the range of representable values for its type, the behavior is undefined, unless such an expression is a constant expression (5.19), in which case the program is ill-formed. [Note: most existing implementations of C + + ignore integer overflows. Treatment of division by zero, forming a remainder using a zero divisor, and all floating point exceptions vary among machines, and is usually adjustable by a library function. ]»

Для C99 (ISO 9899-TC3) — §6.5/5: «If an exceptional condition occurs during the evaluation of an expression (that is, if the result is not mathematically defined or not in the range of representable values for its type), the behavior is undefined.»

Вариант решения:
int sign(int a) { return (a < 0) ? -1 : 1; }
int avg(int x, int y) { return (sign(x) == sign(y)) ? x+(y-x)/2 : (x+y)/2; }
Re[11]: собеседование
От: errest  
Дата: 15.01.10 07:25
Оценка:
Ytz>Не в обиду, но вы написали два варианта решения элементарной задачи и не один из них не работает, не понятно о чем вообще после этого говорить.
Ты можешь привести один — но что бы он работал
Re[7]: собеседование
От: маген Россия https://ru.linkedin.com/pub/alexey-smorkalov/4/283/8b8
Дата: 15.01.10 07:31
Оценка: +2
S>на такое решение обычно говорят а теперь тоже самое без char tmp (типо через XOR)

А вот смысл этого, зачеем? Кто-нибудь себе в проект предпочтет код через Xor?
Вопрос скорее не к вам, а риторический.
Надо же помнить, что код всегда — это то, что кто-то потом сопровождает.
Re[10]: собеседование
От: hrensgory Россия  
Дата: 15.01.10 07:41
Оценка:
LordMAD пишет:
>

> У нас, например, для каждой вакансии формируется список тем, и для

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

(длинный список skipped)

Прикольно. Вы специализируетесь на разработке софта или просто на найме
Самых Лучших Читателей Самых Умных Книг?

Есть конечно вариант что для прохода уровня "автоматизированное
тестирование" достаточно просто громко произнести ключевое слово
"юнит-тест", но тогда к чему такое перечисление?

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[11]: собеседование
От: LordMAD Россия  
Дата: 15.01.10 08:02
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>Прикольно. Вы специализируетесь на разработке софта или просто на найме

H>Самых Лучших Читателей Самых Умных Книг?

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

H>Есть конечно вариант что для прохода уровня "автоматизированное

H>тестирование" достаточно просто громко произнести ключевое слово
H>"юнит-тест", но тогда к чему такое перечисление?

Примеры из тем "Программирование на языке C" и "Программирование на языке С++" я привел выше — можете посмотреть, чтобы составить впечатление о вопросах.
Re[6]: собеседование
От: Codechanger Россия  
Дата: 15.01.10 09:28
Оценка: +2
Здравствуйте, LordMAD, Вы писали:
LMA>Вариант решения:
LMA>int sign(int a) { return (a < 0) ? -1 : 1; }
LMA>int avg(int x, int y) { return (sign(x) == sign(y)) ? x+(y-x)/2 : (x+y)/2; }

Самое смешное, что данный вариант не во всех случаях корректно отработает .
Re[7]: собеседование
От: LordMAD Россия  
Дата: 15.01.10 09:46
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Самое смешное, что данный вариант не во всех случаях корректно отработает .


Это в каких?
Re[5]: собеседование
От: StandAlone  
Дата: 15.01.10 12:16
Оценка:
Здравствуйте, Handie, Вы писали:

LMA>>Большинство кандидатов спотыкались на §5/5 для C++03 (ISO 14882-2003) и §6.5/5 для C99 (ISO 9899-TC3), и, соответственно, §5.8/3 для C++03 и §6.5.7/5 для C99. Но, как уже тут писали, любое задание — всего лишь повод для разговора.


H>Вы просили кандидатов продекламировать эти параграфы наизусть или пересказать своими словами?


Спеть, с выражением и стоя на табуретке...
Слегка отвлекусь в сторону — из чисто моего опыта прохождения собеседований.
Контора, в которой гоняли на собеседованиях особенно сильно — три экзамена на брейнбенче, задачки на листе бумаги с сортировкой выбором и тракторами, пашущими поле, затем собеседование с двумя сеньорами и предложения написать intrusive_ptr опять же на бумажке — оказалась самой говенной потовыжималкой.
Узнал об этом, встретив через год человека уже там поработавшего. Уровень зарплат вдвое ниже рынка, временные штрафы — не уложился в сроки выполнения задачи, сброшенные тим-лидом в трекер, будь любезен отрабатывай это время, иначе накажут денежно
Как вы думаете, это случайное совпадение?
Re[6]: собеседование
От: LordMAD Россия  
Дата: 15.01.10 12:20
Оценка:
Здравствуйте, StandAlone, Вы писали:

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


И сколько времени проходили такие собеседования?
Re[11]: собеседование
От: StandAlone  
Дата: 15.01.10 12:20
Оценка: 1 (1)
Здравствуйте, Ytz, Вы писали:

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


Без обид, но ни, и "непонятно". Так вот, непонятно, вам шашечки или ехать?
Алгоритм проверить или навыки работы с адресной арифметикой псевдокода, набранного в браузере?
В первом примере обнуление последнего байта строки я опустил намеренно, а во втором — да, каюсь, позабыл в спешке -1 после strlen() дописать. Слава богу, три года с указателями не работаю Ну и, о чем это говорит? Может, о вас, раз с вами помимо указателей говорить не о чем?
Re[5]: собеседование
От: StandAlone  
Дата: 15.01.10 12:23
Оценка:
Здравствуйте, Handie, Вы писали:


H>Может я отношусь к 10% особо талантливых людей, рискну написать функцию среднего двух интов:

H>int avg(int x, int y) { return (x+y)/2; };

H>В чем я не прав?


А он сейчас вызовет ее с аргументами (2^32-1,2^32-1), после чего будет весело смеяться и декламировать вслух параграф §6.5/5 для ISO 9899-TC3.

И дикий же народ!

Re[7]: собеседование
От: StandAlone  
Дата: 15.01.10 12:26
Оценка:
Здравствуйте, LordMAD, Вы писали:

LMA>И сколько времени проходили такие собеседования?


У меня заняло три дня. День на брейнбенч — Основы ООП, С++ и SQL. День на задачки, ну и на третий день — беседа с сеньорами.
Re[8]: собеседование
От: UA Украина  
Дата: 15.01.10 12:31
Оценка:
Здравствуйте, LordMAD, Вы писали:

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


C>>Самое смешное, что данный вариант не во всех случаях корректно отработает .


LMA>Это в каких?


переполнение типа int при сложении чисел близких к INT_MAX?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.