![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Довольно часто сталкиваешся на форумах с вопросами типа "какие вопросы задают при приеме на работу?"
Я предлагаю создать раздел где мы совместными усилиями будем выкладывать вопросы которые задаем или задавали нам во время интервью. Многим хочеться проверить свои знания в области C++ и для них данный раздел будем весьма полезен. Если администрация поддержит идею можно закрепить ее и даже открыть подобные темы во всех разделах посвященных языкам программирования. Спасибо за внимание |
|||
|
||||
| azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
С моей стороны пока пара вопросов которые люблю задавать во время интервью
1. Написать код на С++, который выяснит и выведет в консоль "Да" если в некоем А классе есть виртуальные функции и соответственно "Нет" - если их там нет 2. Написать код на С++, который выяснит и выведет в консоль "Да" если некая переменная определенного типа константна и "Не"т соответственно если не константна. теперь немного code review
Какие проблемы есть в данном коде? Вопрос из Саттера
Какие потенцианьные проблемы есть в данном коде? можно заменить на
Какие потенцианьные проблемы есть в данном коде? для особо наглых (добавлю - кого хочеться завалить) ;) Вопрос из Саттера
Какие проблемы есть в данном коде? далее вопросы 1. dynamic_cast, static_cast, reinterpret_cast, const_cast 2. Исключения из конструкторов и деструкторов 3. Разница между тернарным оператором и if - else 4. Перегрузка и значения по умолчанию в виртуальных функциях 5. Оператор new, перегрузка, placement new и явный вызов деструктора 6. Немного о шаблонах, typename и.т.д.. 7. Очередность обработки catch блоков по очереди или по подходящему типу (если сперва поймать базовый тип, дойдет ли дело до остальных) 8. Design patterns В общем-то вышеперечисленного бывает достаточно чтобы сложилось мнение о человеке, если недостаточно - вдогонку еще парочку каверзных вопросов. Но в основном хватает так как во время ответов на вопросы также общаетесь и понимаете как человек думает. Это сообщение отредактировал(а) azesmcar - 11.11.2008, 11:35 |
||||||||
|
|||||||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
azesmcar, а ответы?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| azesmcar |
|
||||||||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
А я думал людям интересно будет самим попробовать
Ладно..ответы ---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
ответ при вызове функции указатель не передаеться по ссылке а копируется, в следствии в функции main указатель не будет инициализирован. Ну и удалять массивы нужно так delete [] p. И вообще рекомендуется проводить очистку памяти в том же модуле где и выделение. ---------------------------------------------------------------------------------------------------------------
ответ постановка аргументов функции по стандарту не определено, т.е. по стандарту вполне приемлемо выполнение вызова функции в следующей поочередности 1. new A 2. new A 3. Вызов конструктора для std::auto_ptr 4. Вызов второго конструктора для std::auto_ptr в результате если конструктор А сгенерирует исключение при втором вызове - получиться утечка памяти ---------------------------------------------------------------------------------------------------------------
ответ Ну а тут вообще извращение http://en.wikipedia.org/wiki/C_trigraph |
||||||||||||||
|
|||||||||||||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
azesmcar, первый ответ не стандартен. Класс, содержащий вирт функции не обязан иметь указатель на таблицу. И класс, не содержащий вирт функции, не обязан НЕ иметь этот указатель.
помойму, это реализовнао в бусте, причем ОЧЕНЬ сложно а вопрос о триграфах в интервью - это еще большее извращение их никто не знает и знать не хочет и спрашивать о них поступающих на работу - только если хош завалить тогда уж лучше спрашивай, существуют ли ссылки на функции, ссылки на функции члены и т.п. Это сообщение отредактировал(а) Alek86 - 11.11.2008, 10:59 |
|||
|
||||
| Ln78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: 13 Всего: 15 |
Alek86, ИМХО, этот вопрос и бессмысленен, разве что для того, чтобы найти причину не взять сотрудника. Трудно представить себе реальную ситуацию, когда такой способ может использоваться. Индусский код по определению истинности переменной и то изящнее. К тому же в ответе почему-то virtual ~A(), в классе B |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
а я что сказал? для особо наглых которых хочешь завалить, кстати не соглашусь, я знаю, и хочу знать еще больше. Если есть какие-то узкие аспекты, я непременно хочу о них знать, несмотря на то буду использовать или нет, знания не повредят. а насчет первого - знаю что не стандартен, тут не вопрос стандарта, я сообщаю человеку что решение не должно быть обьязательно стандартным, тут вопрос как человек думает..просто на размышление. Виртуальная таблица тоже не входит в стандарт, но ее почти всегда спрашивает в виде формулировки "как реализован полиморфизм во многих компиляторах". Можно навести человека на ответ и тем самым понять насколько он глубоко представляет себе язык и вообще програмирование, и как он думает. |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
и насчет второго
Добавлено через 56 секунд аа, хорошо я просто сказал - вдруг ты не знал |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Спорный вопрос мне кажеться. если задается вопрос - не значит что при неправильном ответе или отсутствии такового сотрудник на работу принят не будет. Чем больше он знает - тем лучше. Если он подумает и ответит - несмотря на то что ответ не стандартен разве вы не повысите о нем свое мнение? А если не ответит не факт что снизите. Насчет деструктора - не компилировал, писал прямо здесь..щас исправлю Добавлено через 2 минуты и 55 секунд
и что? ошибка компиляции и ничего страшного, вообще то речь шла только о переменных |
||||
|
|||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
Ln78, не знаю, как насчет "есть ли вирт функции", но насчет "есть ли вирт конструктор" - это даже в бусте есть
http://www.boost.org/doc/libs/1_37_0/libs/...destructor.html к примеру, dynamic_cast для неполиморфных типов не работает |
|||
|
||||
| Ln78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: 13 Всего: 15 |
azesmcar, если бы вопрос был задан примерно так: а каким образом обычно реализуется полиморфизм, то это было бы ясно и без затей. А так: приведи ситуацию, когда я вывожу потомка класса, наверное, знаю определение его и всех базовых классов для него, но вот таким образом буду проверять нахождение виртуальных функций. Разве что у этого класса 777 предков, но в реальной жизни как-то я бы поостерёгся использовать такой метод.
|
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
azesmcar, сори
хреново я прочел твой топик, видимо |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Нет. \ означает пропустить следующий ентер тогда и только тогда когда он стоит в конце строки. в данном случае это не так. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
разумеется! Mayk, сорри исправляюсь
С кем не бывает ? Это сообщение отредактировал(а) azesmcar - 11.11.2008, 11:28 |
||||
|
|||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
немного подправлю - я привел далеко не способ определения, а вариант, где может понадобиться знание полиморфности
способ определения тут http://www.boost.org/doc/libs/1_37_0/libs/...olymorphic.html в код лучше не заглядывать без хорошей подготовки и крепких нервов |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |