Я недавно был на собеседовании, где мне задали два следующих вопроса по С++, которые мне кажутся откровенно дурацкими и совершенно не относящимися к программированию в реальной жизни. У меня 10 летний опыт программированния на С/C++, и за свою практику я такого не встречал.
Вопросы следующие:
Дана программа, в которой якобы есть ошибка. Сказать, почему программа работает неправильно.
#include <stdio.h>
class animal
{
public:
animal()
{
init();
}
virtual void init()
{}
};
class ground_hog : public animal
{
public:
char const * appears;
virtual void init()
{
appears = "Feb 2";
}
};
int main()
{
ground_hog x;
printf("ground hog appears %s\n", x.appears);
}
Второй вопрос сходного типа. Что неправильно в программе:
class drink
{
public:
// ...
virtual bool spiked();
};
class martini : public drink
{
double gin;
double vermouth;
public:
virtual bool spiked()
{
// ...
}
};
int scan(drink drinks[], int n)
{
for (int i = 0; i < n; ++i)
{
if (!drinks[i].spiked())
return i;
}
return -1;
}
martini drinks[100];
int select = scan(drinks, 100);
Надеюсь вы согласитесь, что вопросы абсолютно дурацкие. Тот, кто проводил со мной собеседование, скорее всего посчитал, что я ответил неправильно... Огорчает то, что задают вопросы академического характера, которые меня абсолютно не интересуют, потому что практически никто так код не пишет. Но они на этом основывают свое представление о кандидате...