1 2 3 4 5 6 7 8 9 10 1114
Вопрос по С++ на собеседовании в избранное  новое горячее всё    подписка   модер. 
От: bauer 
Дата: 20.01.08 06:19
Оценка: -30 :))
Я недавно был на собеседовании, где мне задали два следующих вопроса по С++, которые мне кажутся откровенно дурацкими и совершенно не относящимися к программированию в реальной жизни. У меня 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);

Надеюсь вы согласитесь, что вопросы абсолютно дурацкие. Тот, кто проводил со мной собеседование, скорее всего посчитал, что я ответил неправильно... Огорчает то, что задают вопросы академического характера, которые меня абсолютно не интересуют, потому что практически никто так код не пишет. Но они на этом основывают свое представление о кандидате...
Re: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Vaingoogle.ru
Дата: 20.01.08 06:44
Здравствуйте, bauer, Вы писали:

B>Я недавно был на собеседовании, где мне задали два следующих вопроса по С++, которые мне кажутся откровенно дурацкими и совершенно не относящимися к программированию в реальной жизни. У меня 10 летний опыт программированния на С/C++, и за свою практику я такого не встречал.

...
B>Надеюсь вы согласитесь, что вопросы абсолютно дурацкие. Тот, кто проводил со мной собеседование, скорее всего посчитал, что я ответил неправильно... Огорчает то, что задают вопросы академического характера, которые меня абсолютно не интересуют, потому что практически никто так код не пишет. Но они на этом основывают свое представление о кандидате...
Второй вопрос действительно дурацкий. Они ещё там код ошибки не спрашивали?
На какое ЗП, если не секрет?
In theory there is no difference between theory and practice. In
practice there is.
Re: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Сергей Мухин 
Дата: 20.01.08 06:56
Оценка: +2
Здравствуйте, bauer, Вы писали:

B>Я недавно был на собеседовании, где мне задали два следующих вопроса по С++, которые мне кажутся откровенно дурацкими и совершенно не относящимися к программированию в реальной жизни. У меня 10 летний опыт программированния на С/C++, и за свою практику я такого не встречал.


There are more things in heaven and earth, bauer,
Than are dreamt of in your philosophy.

B>Надеюсь вы согласитесь, что вопросы абсолютно дурацкие.

позвольте с Вами не согласиться. На собеседовании можно задавать любые вопросы. Время обычно очень ограничено а тебе надо понять, что за человек сидит перед тобой. Мы тоже задаем странные вопросы (правда не такие) и смотрим как себе ведут. Берем даже если не правильно ответил, но была мысль.
Нормальные люди берут не за знания (хотя и они должны быт), а за умение работать.

B>Тот, кто проводил со мной собеседование, скорее всего посчитал, что я ответил неправильно...

К сожалению, мы лишены возможности оценить Ваши ответы. Вы о них скромно умолчали.

B> Огорчает то, что задают вопросы академического характера, которые меня абсолютно не интересуют, потому что практически никто так код не пишет. Но они на этом основывают свое представление о кандидате...


на самом деле, не зная С++ в полном объеме, легко догадаться в обоих вариантах (если предположить, что ошибка есть).
---
С уважением,
Сергей Мухин
Re[2]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Сергей Мухин 
Дата: 20.01.08 07:02
Оценка: +1
Здравствуйте, Vain, Вы писали:

V>Второй вопрос действительно дурацкий. Они ещё там код ошибки не спрашивали?


т.е. на первый Вы наступали

это вопросы на логику, а не на знания. Я уже говорил, если человек имеет практику работы на С++, то он увидит какая конструкция здесь странная, которую он не использует обычно, и т.к. есть ошибка в примере, то это она и будет!
---
С уважением,
Сергей Мухин
Re: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Sergey Chadov 
Дата: 20.01.08 07:09
Оценка: +2
Здравствуйте, bauer, Вы писали:

B>Я недавно был на собеседовании, где мне задали два следующих вопроса по С++, которые мне кажутся откровенно дурацкими и совершенно не относящимися к программированию в реальной жизни. У меня 10 летний опыт программированния на С/C++, и за свою практику я такого не встречал.

Виртуальных функций не встречал?

B>Надеюсь вы согласитесь, что вопросы абсолютно дурацкие.

Они всего лишь нужны для того, чтобы проверить понимает ли человек что такое виртуальные функции и как в С++ работает динамический полиморфизм.

B> Тот, кто проводил со мной собеседование, скорее всего посчитал, что я ответил неправильно... Огорчает то, что задают вопросы академического характера, которые меня абсолютно не интересуют,

Мне вот буквально несколько дней назад пришлось разбираться и править код человека, который либо не понимал как пользоваться полиморфизмом, либо сознательно это знание игнорировал. Занатие не для слабых духом.
К тому же вопросы несложные. На уровне экзамена по ООП на первом/втором курсе.

B>потому что практически никто так код не пишет. Но они на этом основывают свое представление о кандидате...
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Аноним 776 
Дата: 20.01.08 07:53
B>Надеюсь вы согласитесь, что вопросы абсолютно дурацкие.
Да нет. Вполне нормальные для собеседования.

B>Тот, кто проводил со мной собеседование, скорее всего посчитал, что я ответил неправильно...

А как вы ответили?

B>Огорчает то, что задают вопросы академического характера, которые меня абсолютно не интересуют, потому что практически никто так код не пишет.

Как — так не пишет? Наследование и виртуальные функции никто не использует? Мы используем. Повсеместно.
Re: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Qbit86http://bik-top.livejournal.com
Дата: 20.01.08 08:04
Оценка:17 (10) +15 -3
B>Я недавно был на собеседовании, где мне задали два следующих вопроса по С++, которые мне кажутся откровенно дурацкими и совершенно не относящимися к программированию в реальной жизни.

Чувак, ты реально надеялся получить здесь сочувствие? Дескать, ай-яй-яй какие недобросовестные собеседователи, и какие у них некорректные вопросы?

B>У меня 10 летний опыт программированния на С/C++, и за свою практику я такого не встречал.


Месье, вы быдлокодер. Если б вы не размахивали своим 10-летним опытом, вам бы вполне спокойно объяснили суть ошибок. А так имеем ситуацию, когда 20-летний студент будет учить жизни якобы опытного программсита, всем неловко.

B>Дана программа, в которой якобы есть ошибка. Сказать, почему программа работает неправильно.


1) Вызов. Виртуальной. Функции. В конструкторе!

2) Вы серъёзно были не в курсе, что полиморфизм работает только через указатели и ссылки? У вас массив базовых классов, а не указателей на базовые классы, каким же образом выполнится диспетчирование виртуальной функции?

B>Надеюсь вы согласитесь, что вопросы абсолютно дурацкие.


Ну ты понял уже, да? Берёшь Страуструпа, и читаешь про конструкторы, механизм реализации фиртуальных функций, гуглишь в сторону vtable. Хотя, у вас, может, и книжки такой нет, зачем вам книжки читать, у вас же 10-летний опыт.

B>Но они на этом основывают свое представление о кандидате...


Я думаю, что вы уже догадались, что упомянутые не к месту 10 лет лишь усугубили мнение о вас в той конторе? Не факт, что они возьмут вас переучивать.

10 лет человек программирует на Си/C++, 10 лет. Ппц.

P. S. Извините за излишне эмоциональный ответ.
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: techgl 
Дата: 20.01.08 08:32
Здравствуйте, <Аноним>, Вы писали:

А>Да нет. Вполне нормальные для собеседования.

На такие вопросы можно спокойно отвечать "я так не напишу". Они ведь не пишут так при разработке.

А>Как — так не пишет? Наследование и виртуальные функции никто не использует? Мы используем. Повсеместно.

Думаю, имелось в виду что так не используют. Используют правильно.
К чему эти вопросы? Человек будет править чужой код? Или должен уметь разбираться в любом коде на С++?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: techgl 
Дата: 20.01.08 08:34
Оценка: +2
Здравствуйте, Qbit86, Вы писали:

Q>Месье, вы быдлокодер. Если б вы не размахивали своим 10-летним опытом, вам бы вполне спокойно объяснили суть ошибок. А так имеем ситуацию, когда 20-летний студент будет учить жизни якобы опытного программсита, всем неловко.

Он не просит объяснять где ошибка, он спрашивает смысл таких вопросов на собеседовании.
Про характеристику ты вообще поторопился. Сам то ты не быдло, случайно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: skeptik_ 
Дата: 20.01.08 08:36
Здравствуйте, bauer, Вы писали:

B>
B>int scan(drink drinks[], int n)
B>{
B>    for (int i = 0; i < n; ++i)
B>    {
B>        if (!drinks[i].spiked())
B>            return i;
B>    }

B>    return -1;
B>}

B>martini drinks[100];
B>int select = scan(drinks, 100);
B>


Эта часть на самом деле показывает фирму в не самом лучшем свете (так же как и #include <stdio.h>), ибо о STL ребята похоже не ведают. Если уж задавать этот вопрос, то я написал бы его в сонтейнерно-итераторной форме и заодно вопрос на засыпку по слайсингу в него бы встроил.
Re[3]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: skeptik_ 
Дата: 20.01.08 08:38
Оценка: +1
Здравствуйте, techgl, Вы писали:

T>Здравствуйте, <Аноним>, Вы писали:


А>>Да нет. Вполне нормальные для собеседования.

T>На такие вопросы можно спокойно отвечать "я так не напишу".
Следующий вопрос — "Почему Вф так не напишете?"

А>>Как — так не пишет? Наследование и виртуальные функции никто не использует? Мы используем. Повсеместно.

T>Думаю, имелось в виду что так не используют. Используют правильно.
T>К чему эти вопросы? Человек будет править чужой код? Или должен уметь разбираться в любом коде на С++?
Будет. Должен. Вопросы на самом деле элементарны.
Re[3]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Qbit86http://bik-top.livejournal.com
Дата: 20.01.08 08:47
T>Он не просит объяснять где ошибка...

А почему нет? C++ сложный язык, «в C++ мы все новички», как говорил один неглупый человек. В попытке разобраться нет ничего зазорного, почему бы вначале не разобраться? Прежде чем 1) критиковать собеседователей, 2) заявлять о 10-летнем опыте.

T>...он спрашивает смысл таких вопросов на собеседовании.


Так я вам объясню, это не сложно. Смысл таких вопросов в том, чтобы узнать, разбирается ли человек в полиморфизме.
Глаза у меня добрые, но рубашка — смирительная!
Re[4]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: techgl 
Дата: 20.01.08 08:49
Здравствуйте, skeptik_, Вы писали:

_>Следующий вопрос — "Почему Вф так не напишете?"

Потому что так не пишут.

_>Будет. Должен. Вопросы на самом деле элементарны.

Возникают вопросы:
1. как в такую серьезную фирму попал человек, который писал (и видимо долго) такой код, что таперь ищут другого человека, чтобы разгребать.
2. я не зря сказал любой код. Вы готовы разгребать код (любой, даже после обфускатора) и не недели, а месяцы? много ли это даст очков опыта? Поэтому все-таки далеко не любой код.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: techgl 
Дата: 20.01.08 08:53
Оценка: :)
Здравствуйте, Qbit86, Вы писали:

Q>А почему нет?

Потому что он наверняка знал ответы. У него 10 лет, а его спрашивают странное.

Q>Так я вам объясню, это не сложно. Смысл таких вопросов в том, чтобы узнать, разбирается ли человек в полиморфизме.

Это частный случай — полифорфизм через указатель на базовый класс. Так что по одной такой задаче не узнаешь ты ничего.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: skeptik_ 
Дата: 20.01.08 08:56
Здравствуйте, techgl, Вы писали:

Q>>А почему нет?

T>Потому что он наверняка знал ответы. У него 10 лет, а его спрашивают странное.
По первому постингу как раз незаметно, что он знает ответ.

Q>>Так я вам объясню, это не сложно. Смысл таких вопросов в том, чтобы узнать, разбирается ли человек в полиморфизме.

T>Это частный случай — полифорфизм через указатель на базовый класс. Так что по одной такой задаче не узнаешь ты ничего.
Где ты увидел указатель?
Re[6]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: techgl 
Дата: 20.01.08 09:05
Здравствуйте, skeptik_, Вы писали:

T>>Это частный случай — полифорфизм через указатель на базовый класс. Так что по одной такой задаче не узнаешь ты ничего.

_>Где ты увидел указатель?
В том то и дело. Поэтому и происходит упомянутый тобой "срез". Обычно в сигнатуре метода указатель на базовый класс.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Qbit86http://bik-top.livejournal.com
Дата: 20.01.08 09:18
Оценка:5 (2) +1
T>Потому что он наверняка знал ответы. У него 10 лет, а его спрашивают странное.

«Наверняка» — я бы не рискнул употребить тут это слово. С другой стороны, не знал и не знал, криминала нет. Но! Ведь аппеляция шла к опыту работы, в контексте «не понадобилось за 10 лет, значит, не важно». Это порочная практика, я против такого подхода.

T>Это частный случай — полифорфизм через указатель на базовый класс.


Ок, не только полиморфизм. Первый пример может показать, знает ли человек, что такое список инициализации и полиморфное создание объекта.

T>Так что по одной такой задаче не узнаешь ты ничего.


«Ничего», говорите? Вы знакомы с понятием информационной энтропии? Ок, переформулирую вопрос попроще: в какой букве больше информации, в «ы» или в «а»? Ок, не парьтесь, сформулирую по-человечески  Если человек правильно отвечает на первый вопрос, то это для собеседователя несёт меньше информации, чем если человек отвечает неправильно. В этом смысле по такой задаче можно много чего узнать. А если собеседуемый неправильно отвечает на второй вопрос, то это мгновенно даёт собеседователю информацию достаточную для принятия решения о приёме на работу. И в этом случае 10-летний опыт сыграл злую шутку. Если бы плохо ответил студент, то его могли бы нанять на должность «афроайтишника» с перспективой доучить. А если человек, акцентирующий внимание на своём опыте...
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: rg45 
Дата: 20.01.08 09:50
Оценка:1 (1) +3
Здравствуйте, Qbit86, Вы писали:

B>>Я недавно был на собеседовании, где мне задали два следующих вопроса по С++, которые мне кажутся откровенно дурацкими и совершенно не относящимися к программированию в реальной жизни.


Q>Чувак, ты реально надеялся получить здесь сочувствие? Дескать, ай-яй-яй какие недобросовестные собеседователи, и какие у них некорректные вопросы?


B>>У меня 10 летний опыт программированния на С/C++, и за свою практику я такого не встречал.


Q>Месье, вы быдлокодер. Если б вы не размахивали своим 10-летним опытом, вам бы вполне спокойно объяснили суть ошибок. А так имеем ситуацию, когда 20-летний студент будет учить жизни якобы опытного программсита, всем неловко.


B>>Дана программа, в которой якобы есть ошибка. Сказать, почему программа работает неправильно.


Q>1) Вызов. Виртуальной. Функции. В конструкторе!


Q>2) Вы серъёзно были не в курсе, что полиморфизм работает только через указатели и ссылки? У вас массив базовых классов, а не указателей на базовые классы, каким же образом выполнится диспетчирование виртуальной функции?


B>>Надеюсь вы согласитесь, что вопросы абсолютно дурацкие.


Q>Ну ты понял уже, да? Берёшь Страуструпа, и читаешь про конструкторы, механизм реализации фиртуальных функций, гуглишь в сторону vtable. Хотя, у вас, может, и книжки такой нет, зачем вам книжки читать, у вас же 10-летний опыт.


B>>Но они на этом основывают свое представление о кандидате...


Q>Я думаю, что вы уже догадались, что упомянутые не к месту 10 лет лишь усугубили мнение о вас в той конторе? Не факт, что они возьмут вас переучивать.


Q>10 лет человек программирует на Си/C++, 10 лет. Ппц.


Q>P. S. Извините за излишне эмоциональный ответ.


Эх, хотел поставить и плюс и минус одновременно, но не получилось.
По сути согласен, а по форме — можно было сказать то же самое но без эпитетов типа "быдлокодер".
--
С уважением, Сергей.
Re: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Кодт модератор 
Дата: 20.01.08 09:52
Оценка:6 (4) +4
Здравствуйте, bauer, Вы писали:

B>Я недавно был на собеседовании, где мне задали два следующих вопроса по С++, которые мне кажутся откровенно дурацкими


Именно: это проверка, не дурак ли вы. А вдруг дурак, но скрываете? (ничего личного, просто риторический возглас).
Ведь бывают же такие случаи: человек десять лет пишет на С++ методом копипаста из кода друзей-индусов. Сам видел.

B>и совершенно не относящимися к программированию в реальной жизни.


Относятся напрямую. Это очень простые детские грабли, которые легко сделать случайно, а потом при отладке нужен намётанный глаз, чтобы их быстро выявлять.
Даже на Хаскеле без отладки не обходятся, а тут С++.

B>У меня 10 летний опыт программированния на С/C++, и за свою практику я такого не встречал.


Везение? Невнимательность? Не приходилось отлаживать чужие баги?

B>Вопросы следующие:


B>Дана программа, в которой якобы есть ошибка. Сказать, почему программа работает неправильно.


Вызов виртуального метода из конструктора/деструктора — финальный объект ещё не существует, vfptr нацелен(ы) на vtbl данного класса.
В данном случае это приведёт к неинициализированной переменной appears и, в дальнейшем, к вылету в printf.

B>Второй вопрос сходного типа. Что неправильно в программе:


Не сходного. В первом случае проблемы с логикой виртуальных вызовов, а во втором — с layout'ом.
B>class drink { ... };

B>class martini : public drink { ... };

B>int scan(drink drinks[], int n) { ... }

B>martini drinks[100];
B>int select = scan(drinks, 100);

Указатель на одиночный объект можно привести к родительскому типу, а указатель на массив — нельзя. (То есть, компилятор-то позволит... но программа вылетит).
Массив martini трактуется как массив drink, и уже второй объект будет с неправильным смещением.

B>Надеюсь вы согласитесь, что вопросы абсолютно дурацкие.


Надежды твои не оправдались.

B>Тот, кто проводил со мной собеседование, скорее всего посчитал, что я ответил неправильно...


Ну мы же не знаем, как ответил ТЫ. Поэтому не можем телепатически догадаться, кто и что посчитал.

B>Огорчает то, что задают вопросы академического характера, которые меня абсолютно не интересуют, потому что практически никто так код не пишет. Но они на этом основывают свое представление о кандидате...


Да уж прямо-таки никто?
Даже если у твоей группы всё на высоте — представь ситуацию: проект разросся, часть его зааутсорсили (не приведи господь, в Индию), а потом вам нужно совместить и отдебажить результат.

Это жизнь!
Перекуём баги на фичи!
Re[3]: Вопрос по С++ на собеседовании в избранное  новое    модер. 
От: Qbit86http://bik-top.livejournal.com
Дата: 20.01.08 10:05
Оценка:13 (2) +1
R>можно было сказать то же самое но без эпитетов типа "быдлокодер".

Согласен, можно было, виноват.

Хочу также, чтобы понимали: быдлокодер — это не тот, кто пишет глючной код, или не видит подводных граблей. Все лажаются, я чаще, чем хотелось бы. Быдлокодер тот, кто защищает своё незнание, оправдывает его, пренебрежительно поплёвывает свысока на саттеров и мейерсов, противопоставляет касты прагматиков и окодемегов, практиков и теоретиков. Тот кто опыт не углубляет, а консервирует. Тот, кто нелюбознателен и мнителен.

Я не говорю, что всё перечисленное относится к автору топика, просто некоторые нотки задели: «вопросы абсолютно дурацкие», «вопросы академического характера, которые меня абсолютно не интересуют», «у меня 10 летний опыт программированния на С/C++».
Глаза у меня добрые, но рубашка — смирительная!
1 2 3 4 5 6 7 8 9 10 1114