Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы для интервью 
:(
    Опции темы
vinter
Дата 12.11.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(mes @  12.11.2008,  13:59 Найти цитируемый пост)
вот вам два условных примера, попробуйте реализовать через if  

точно smile


--------------------
Мой блог
PM MAIL WWW   Вверх
Vyacheslav
Дата 12.11.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(azesmcar @  11.11.2008,  14:17 Найти цитируемый пост)
поясняю smile
Если ответил
Представляет как устроен полиморфизм, что такое виртуальная таблица, знает что для класса храниться указатель на виртуальную таблицу. Умеет применять теоретические знания для решения практических задач - это не однозначно конечно, но вместе с остальными тестами дает кое какое представление

Угу. Только вот стандарт не предполагает обязательного использование виртуальных таблиц. И таблицы виртуальных функций - это лишь одна из реализаций полиморфизма, довольно успешная и поэтому получившая распространение. Если не ошибаюсь, в некоторых  первых компиляторах встречались другие способы реализации, о которых успешно забыли. И если у меня кандидат пытается объяснить суть полиморфизма посредством таблиц, я его сразу прерываю и предлагаю ограничиваться в объяснении  формулировками  ООП и объемом  стандарта С++  При этом, что очень странно, довольно часто сразу же возникают затруднения. Меня довольно часто привлекают к проведению технических интервью, и с моей точки зрения Ваши вопросы выглядят больше как способ продемонстрировать Вашу эрудицию, нежели выяснить действительную квалификацию кандидата. 
И настораживает фраза, что у Вас есть вопросы для засыпки особо наглых. То есть Вы выполняя техническое интервью, берете на себя не свойственные задачи: рубите квалифицированного специалиста из-за собственных предпочтений. Ваша - это всего лишь выяснить компетентность кандидата по весьма узкому техническому  вопросу.  Вопросы о  психической адекватности обычно решается другими людьми, в частности специалистами отдела HR. 
Любопытно, были ли в Вашей практике отзывы : типа "Кандидат показал очень высокий уровень знаний в объеме стандарта С++. Оцениваю его квалификацию, как минимум не ниже моей, а может быть и выше"? Очень сомневаюсь





--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 12.11.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(vinter @  12.11.2008,  12:33 Найти цитируемый пост)
Цитата(azesmcar @  11.11.2008,  08:18 Найти цитируемый пост)
Исключения из конструкторов и деструкторов

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

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


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Mayk
Дата 12.11.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(vinter @  12.11.2008,  16:33 Найти цитируемый пост)
 он редко пытается размышлять вслух, а это как раз и самое интересное. 

Вот это кстати верно.

Цитата(mes @  12.11.2008,  16:59 Найти цитируемый пост)
вот вам два условных примера, попробуйте реализовать через if

реализовать можно. правда надо учитывать что if - это statement а не expression.
Код

struct A1 { A1(int a) {/*...*/} };

struct A2 : public A1 { 
    A2(bool flag) : A1(calcA(flag)) {} 
    static int calcA(bool flag) {
        if(flag) return 100; 
                                  return 0;
    }
};

template<class A, class B>
bool equalSizes(){
    if(sizeof(A) ==sizeof(B))
        return 1;
    return 0;
}

int foo()
{
    const bool  a = equalSizes<A1,A2>();
}

Цитата(azesmcar @  11.11.2008,  15:10 Найти цитируемый пост)
как реализован полиморфизм во многих компиляторах". 

Тут наверное ожидается; "Полиморфизм времени выполнения или времени компиляции?"

Это сообщение отредактировал(а) Mayk - 12.11.2008, 15:04


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Torsten
Дата 12.11.2008, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 10.6.2008
Где: Pskov

Репутация: 3
Всего: 7



Почитав эту тему, и еще похожие и сам проходя интервью пришел к выводу, что во всех интервью обычно задают 50% вопросов, ответы на которые есть у Саттера...
Собственно идя на интервью рекомендую прочитать обе его книги + про шаблоны что-нибудь, типа Гаммы, Всиледеса или Александреску (хотя этот черт пишет сложно, раза по 2-3 перечитывать приходится чтобы некоторые вещи понять).

Это сообщение отредактировал(а) Torsten - 12.11.2008, 16:38
--------------------
We have no begining, we have no end. We are infinite.
PM MAIL   Вверх
Vyacheslav
Дата 12.11.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(Torsten @  12.11.2008,  16:36 Найти цитируемый пост)
Почитав эту тему, и еще похожие и сам проходя интервью пришел к выводу, что во всех интервью обычно задают 50% вопросов, ответы на которые есть у Саттера...

Ну не знаю. Вам просто не повезло. Когда я проходил и когда проводил сам, все обычно ограничивалось объемом книги Страструпа первого  издания с поправками на стандарт. Проблема в том, что даже в этом объеме у меня из 10 кандидатов хороший отзыв получали не больше двух.  Иногда шел и думал, что судя по резюме интервью будет чисто формальным для человека с таким-то опытом работы.
А начинаешь спрашивать, получаешь ответы типа:
- виртуальные функции можно переопределять в производных классах, в отличие невиртуальных.
- в случае неудачи выделения памяти, глобальный new возвращает NULL

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





--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Alek86
Дата 12.11.2008, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(Vyacheslav @  12.11.2008,  18:11 Найти цитируемый пост)
виртуальные функции можно переопределять в производных классах, в отличие невиртуальных.

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

хотя могу и ошибаться в названиях
да и все равно, имхо, так придираться к терминологии - не правильно


Цитата(Vyacheslav @  12.11.2008,  18:11 Найти цитируемый пост)
глобальный new возвращает NULL

в студии есть волшебный дефайн - кидать исключение или возвращать NULL


--------------------
user posted image    user posted image
PM MAIL   Вверх
J0ker
Дата 12.11.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Alek86 @  12.11.2008,  18:44 Найти цитируемый пост)
в студии есть волшебный дефайн - кидать исключение или возвращать NULL 

Цитата(Vyacheslav @  12.11.2008,  18:11 Найти цитируемый пост)
- в случае неудачи выделения памяти, глобальный new возвращает NULL

вы не поверите, но это правда, и это никакой не дефайн
new(std::nothrow) T;
 smile 




--------------------
user posted image
PM MAIL   Вверх
mes
Дата 12.11.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Vyacheslav @  12.11.2008,  18:11 Найти цитируемый пост)
- виртуальные функции можно переопределять в производных классах, в отличие невиртуальных.

а чем не устраивает такой ответ ?

Цитата(Alek86 @  12.11.2008,  18:44 Найти цитируемый пост)
есть переопределение, а есть перегрузка. и вроде как переопределение - это только для виртуальных, чтоб работал полиморфизм

 И я, и я и я того же мнения (© из м/ф Винни Пух и все-все-все)



--------------------
PM MAIL WWW   Вверх
J0ker
Дата 12.11.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Alek86 @  12.11.2008,  18:44 Найти цитируемый пост)
есть переопределение, а есть перегрузка. и вроде как переопределение - это только для виртуальных, чтоб работал полиморфизм

переопределение (overriding) - это создание в классе потомке функции с той-же сигнатурой, что и в классе предке
перегрузка (overloading) - это создание функций с одним именем но разными наборами параметров в одном неймспейсе

Добавлено через 1 минуту и 28 секунд
Цитата(mes @  12.11.2008,  19:06 Найти цитируемый пост)
а чем не устраивает такой ответ ?

тем, что он неправильный  smile 




--------------------
user posted image
PM MAIL   Вверх
mes
Дата 12.11.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(J0ker @  12.11.2008,  19:13 Найти цитируемый пост)
переопределение (overriding) - это создание в классе потомке функции с той-же сигнатурой, что и в классе предке

А как называется тогда переопределение реализации функции ?


--------------------
PM MAIL WWW   Вверх
Alek86
Дата 12.11.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



J0ker, я ж написал - на собеседованиях придираться к терминологии - не правильно
ибо это не экзамен, а проверка знаний

Цитата(J0ker @  12.11.2008,  18:56 Найти цитируемый пост)
вы не поверите, но это правда, и это никакой не дефайн

я говорю не про new(nothrow), а про new
этим дефанойм меняется поведение самого new


--------------------
user posted image    user posted image
PM MAIL   Вверх
Vyacheslav
Дата 12.11.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(Alek86 @  12.11.2008,  18:44 Найти цитируемый пост)
есть переопределение, а есть перегрузка. и вроде как переопределение - это только для виртуальных, чтоб работал полиморфизм

хотя могу и ошибаться в названиях
да и все равно, имхо, так придираться к терминологии - не правильно


Ну вот приехали.   smile 
Это не просто терминология, это понимание, что такое полиморфизм и когда нужно и когда ненужно использовать виртуальные функции и деструкторы. Причем я считаю, что этот вопрос просто так типа поддержать разговор. 


Цитата(Alek86 @  12.11.2008,  18:44 Найти цитируемый пост)
в студии есть волшебный дефайн - кидать исключение или возвращать NULL

Я набираю людей оценивая их знание С++. Иногда я понятия не имею, на каком компиляторе они в конечном счете будут выполнять проект. Мне известно только одно: все эти компиляторы как минимум процентов 93-97% соответствуют стандарту. Вот будьте любезны его и знать.

Добавлено @ 20:12


Цитата(mes @  12.11.2008,  19:53 Найти цитируемый пост)
Цитата(J0ker @  12.11.2008,  19:13 Найти цитируемый пост)
переопределение (overriding) - это создание в классе потомке функции с той-же сигнатурой, что и в классе предке

А как называется тогда переопределение реализации функции ?


Так и называется :переопределением  smile 





--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 12.11.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(Alek86 @  12.11.2008,  20:02 Найти цитируемый пост)
я говорю не про new(nothrow), а про new
этим дефанойм меняется поведение самого new

Угу. А в проекте у кандидата, допустим, предполагается написание приложения, которое должно компилироваться под Visual C++, gcc и acc соотвественно работать под Window, Linux и HP-UX.  smile

Добавлено через 2 минуты и 42 секунды
Цитата(Alek86 @  12.11.2008,  20:02 Найти цитируемый пост)
J0ker, я ж написал - на собеседованиях придираться к терминологии - не правильно
ибо это не экзамен, а проверка знаний

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


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
J0ker
Дата 12.11.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(mes @ 12.11.2008,  19:53)
Цитата(J0ker @  12.11.2008,  19:13 Найти цитируемый пост)
переопределение (overriding) - это создание в классе потомке функции с той-же сигнатурой, что и в классе предке

А как называется тогда переопределение реализации функции ?

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

Добавлено через 1 минуту и 56 секунд
Цитата(Alek86 @  12.11.2008,  20:02 Найти цитируемый пост)
J0ker, я ж написал - на собеседованиях придираться к терминологии - не правильно
ибо это не экзамен, а проверка знаний

причем тут терминология
это РАЗНЫЕ вещи имеющие РАЗНЫЕ названия
они НЕ СИНОНИМЫ, их нельзя смешивать и иметь личное мнение по этому поводу  smile 


--------------------
user posted image
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0791 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.