Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 03:08
Оценка:
Завтра впервые в жизни буду проводить интвервью кандидатов на позицию С++ девелоперов. Понятния не имею, что спрашивать..

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

Спасибо заранее
Re: Вопросы для интеврью
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 27.07.06 03:35
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Завтра впервые в жизни буду проводить интвервью кандидатов на позицию С++ девелоперов. Понятния не имею, что спрашивать..


Как самого себя проверить на знание С++
... << RSDN@Home 1.2.0 alpha rev. 654>>
Re: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 03:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Завтра впервые в жизни буду проводить интвервью кандидатов на позицию С++ девелоперов. Понятния не имею, что спрашивать..


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


1)Порядок вызова конструкторов и деструкторов?
class A {};
class B {};
class D {
 A a;
 B b;
};

class F : public A, B {
};


class A { 
public:
 virtual void f() {} 
 void g() { f(); }
}; 

class B : public A {
public:
 void f() {}
};


2)Зачем может понадобиться виртуальный деструктор в данном случае?
3)Как сделать чтобы A::f был виден только ему и наследникам?

3)Есть одно-свзанный список,
class List {
struct Node {
  int data;
  Node *next;
};
insert();
remove();
..
};


Обобщить на случай произвольного типа вместо "int" с помощью шаблонов.

4)

class B;

class A {
public:
  void SomethingHappen() { b_.DoSomething(); }
private:
  B &b_;
};

class B {
public:
  void DoSomething();
};


Как избавиться от "циркулярной зависимости А и B?

5)Вычислить факториал на этапе компиляции, на выходе константа 'n', на выходе факториал

6)Реализовать сингелтон.
Re[2]: Вопросы для интеврью
От: Vain Россия google.ru
Дата: 27.07.06 04:35
Оценка: :)))
Здравствуйте, mr_jek, Вы писали:

7) Вычислить Pi в уме, на входе бумага-ручка, на выходе — книга
8) Написать искуственный интеллект на ассемблере

[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 05:20
Оценка:
Здравствуйте, Vain, Вы писали:

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


V>7) Вычислить Pi в уме, на входе бумага-ручка, на выходе — книга

V>8) Написать искуственный интеллект на ассемблере

V>

Имелась ввиду простейщая конструкция вида:

#include <cstdio>

template<unsigned int i> struct factorial;
template<> struct factorial<0> { enum { value = 1 }; };
template<> struct factorial<1> { enum { value = 1 }; };
template<unsigned int i> struct factorial { enum { value = factorial<i - 1>::value * i }; };

int main()
{
        printf("10! = %d\n", factorial<10>::value);
        return 0;
}


простейший тест на знание шаблонов, что вам так не понравилось?
Re[4]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 05:33
Оценка: -1
Здравствуйте, mr_jek, Вы писали:

_>Имелась ввиду простейщая конструкция вида:


_>
_>#include <cstdio>

_>template<unsigned int i> struct factorial;
_>template<> struct factorial<0> { enum { value = 1 }; };
_>template<> struct factorial<1> { enum { value = 1 }; };
_>template<unsigned int i> struct factorial { enum { value = factorial<i - 1>::value * i }; };

_>int main()
_>{
_>        printf("10! = %d\n", factorial<10>::value);
_>        return 0;
_>}
_>


_>простейший тест на знание шаблонов, что вам так не понравилось?


Угу... Потом пишем
int main()
{
printf("-10! = %d\n", factorial<-10>::value);
return 0;
}
[/code]
и радуемся, как загибается компилятор...
Re[5]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 05:41
Оценка: +1
Здравствуйте, Аноним, Вы писали:

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


А>и радуемся, как загибается компилятор...


и в чем ваше возражение?

во-первых глупо вычислять n!, при n>33, резултат не влезет, тем более (UINT_MAX — 10)!
во-вторых это тест на понимание шаблонов, а не на вычисление (UINT_MAX — 10)!
Re[2]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 05:56
Оценка:
class A {};
class B {};
class D {
A a;
B b;
};

class F : public A, B {
};

Порядок такой
конструкторы A B D и A B F
деструкторы D B A и F B A


class A {
public:
virtual void f() {}
void g() { f(); }
};

class B : public A {
public:
void f() {}
};



2)Зачем может понадобиться виртуальный деструктор в данном случае?
Если в друг у наследника от A или от B будут переопределена функция f и в ней будет new а 0удаляться будут черз указатель на B или A то будет утечка памяти
3)Как сделать чтобы A::f был виден только ему и наследникам?
подозреваю что поместить в секцию protected

3)Есть одно-свзанный список,

class List {
struct Node {
int data;
Node *next;
};
insert();
remove();
..
};

Обобщить на случай произвольного типа вместо "int" с помощью шаблонов.

4)
template <class T>class List {
struct Node {
T data;
Node *next;
};tempalte <class T>
insert<T>(List<T> & list, T & t);
remove<T>(List<T> & list, T & t);
..
};



class B;

class A {
public:
void SomethingHappen() { b_.DoSomething(); }
private:
B &b_;
};

class B {
public:
void DoSomething();
};


Как избавиться от "циркулярной зависимости А и B? \\ чет я с утра не проснулся или где циркулярная зависимость? кстате интесрно ты на верность кода не притендуеш?

5)Вычислить факториал на этапе компиляции, на выходе константа 'n', на выходе факториал \\ ммм... затрудняюсь... но точно видал в рсдн \\ ну если че я прям сейчас сяду и буду изучать чтоб на такие вопросы отвечать легко на собеседовании

6)Реализовать сингелтон. \\ м.... его можно пол дня писать пример в книге александрески... но в краце, кстате на этот вопрос можно интересно пообщатся...

class Singleton {
Singleton(void) {};
static Singleton * instance;
// желательно еще закрыть всякие конструктора копирования и т.д.
public:
static Singleton * getInstance();
~Singleton(void) {};
};

Singleton * Singleton::instance = NULL;

Singleton * Singleton::getInstance() {
if (!instance)
instance = new Singleton;
return instance;
}

P.S.
Ну что кто возмет меня на работу? (без шуток готов рассмотреть придложения)
Re[2]: Вопросы для интеврью
От: night beast СССР  
Дата: 27.07.06 05:57
Оценка: +1
Здравствуйте, mr_jek, Вы писали:

_>
_>class B;

_>class A {
_>public:
_>  void SomethingHappen() { b_.DoSomething(); }
_>private:
_>  B &b_;
_>};

_>class B {
_>public:
_>  void DoSomething();
_>};
_>


_>Как избавиться от "циркулярной зависимости А и B?


глупый вопрос можно? спасибо.
а где здесь циркулярная зависимость?
Re[3]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 06:01
Оценка:
+1 см выше я тоже не сообразил
Re[4]: Вопросы для интеврью
От: CreatorCray  
Дата: 27.07.06 06:04
Оценка:
Здравствуйте, mr_jek, Вы писали:

V>>

_>Имелась ввиду простейщая конструкция вида:

_>
_>#include <cstdio>

_>template<unsigned int i> struct factorial;
_>template<> struct factorial<0> { enum { value = 1 }; };
_>template<> struct factorial<1> { enum { value = 1 }; };
_>template<unsigned int i> struct factorial { enum { value = factorial<i - 1>::value * i }; };

_>int main()
_>{
_>        printf("10! = %d\n", factorial<10>::value);
_>        return 0;
_>}
_>


_>простейший тест на знание шаблонов, что вам так не понравилось?


У нас бы за такой код дали бы по голове с формулировкой "не выделывайся".
И правильно б сделали ИМХО.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 06:06
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Завтра впервые в жизни буду проводить интвервью кандидатов на позицию С++ девелоперов. Понятния не имею, что спрашивать..


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


А>Спасибо заранее


1) Отличия структуры от класса
2) vector<bool> почему нельзя?
3) vector<auto_ptr<T>> почему нельзя?
4) что произойдет
void f() throw() {
   throw 1;
}


Re[6]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 06:06
Оценка: +1
Здравствуйте, mr_jek, Вы писали:

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


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


А>>и радуемся, как загибается компилятор...


_>и в чем ваше возражение?


_>во-первых глупо вычислять n!, при n>33, резултат не влезет, тем более (UINT_MAX — 10)!

_>во-вторых это тест на понимание шаблонов, а не на вычисление (UINT_MAX — 10)!

Глупо вообще вычислять факториал рекурсивно.
Рерсия на шаблонах имеет очень ограниченное применение
и потому на обычном интервью такие вопросы не нужны.
Гораздо важнее понимает ли человек рекурсию воообще.
Это можно проверить дав ему нормальную задачу на рекурсивных структурах данных.
А рекурсия на шаблонах — это всего лишь частный, очень неудачный, случай рекурсии вообще.
Re[3]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 06:10
Оценка:
Здравствуйте, night beast, Вы писали:

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


_>>
_>>class B;

_>>class A {
_>>public:
_>>  void SomethingHappen() { b_.DoSomething(); }
_>>private:
_>>  B &b_;
_>>};

_>>class B {
_>>public:
_>>  void DoSomething();
_>>};
_>>


_>>Как избавиться от "циркулярной зависимости А и B?


NB>глупый вопрос можно? спасибо.

NB>а где здесь циркулярная зависимость?

Немного не точная формулировка

Дайвайте разделим реализацию и объявление, причем конечно нужн контроль типов:

//a.hpp
class B;
_>>class A {
_>>public:
_>> void SomethingHappen(int i);
_>>private:
_>> B &b_;
_>>};

//b.hpp
_>>class B {
_>>public:
_>> void DoSomething(int i);
_>>};
_>>[/code]

//a.cpp
#include "b.hpp"
#include "a.hpp"

void A::SomethingHappen(int i) { b_.DoSomething(i); }
Re[7]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 06:15
Оценка:
Здравствуйте, Аноним, Вы писали:

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


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


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


А>>>и радуемся, как загибается компилятор...


_>>и в чем ваше возражение?


_>>во-первых глупо вычислять n!, при n>33, резултат не влезет, тем более (UINT_MAX — 10)!

_>>во-вторых это тест на понимание шаблонов, а не на вычисление (UINT_MAX — 10)!

А>Глупо вообще вычислять факториал рекурсивно.

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

Это не задача на рекурсию,
это задача на понимание того какую специлизацию шаблона компилятор выберет,
и почему это вообще работает.
Re[7]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 06:19
Оценка:
Здравствуйте, Аноним, Вы писали:

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


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


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


А>>>и радуемся, как загибается компилятор...


_>>и в чем ваше возражение?


_>>во-первых глупо вычислять n!, при n>33, резултат не влезет, тем более (UINT_MAX — 10)!

_>>во-вторых это тест на понимание шаблонов, а не на вычисление (UINT_MAX — 10)!

А>Глупо вообще вычислять факториал рекурсивно.

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

Задача показывает не способность вычислить факториал или понимание рекурсии, она показывает насколько человек вобще представляет себе, как делаются compile-time вычисления.


Re[2]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 06:19
Оценка: -2 :)
3) vector<auto_ptr<T>> почему нельзя? \\ плохой вопрос! т.к. auto_ptr<T> — что это такое и откуда?!... м...??


void f() throw() { // прикольно, но тоже видь читает за 5 минут в книжке...
throw 1;
}

P.S.
я знаю что такое auto_ptr но видь он запрещен стандартом (и правильно)
Re: Вопросы для интеврью
От: igna Россия  
Дата: 27.07.06 06:20
Оценка: +1 :)
Здравствуйте, Аноним, Вы писали:

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


C++ "состоит" из 4-х различных языков:

I have come to view C++ as a federation of several different languages: C, OO C++, STL, [and] TMP. (Scott Meyers)


Тебе какие?
Re[3]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 06:21
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>Ну что кто возмет меня на работу? (без шуток готов рассмотреть придложения)


Предложенный мною задания просто первая фраза в собеседование на знание C++,
"они не значат почти ничего, кроме того что возможно..." (c),

правильный ответ или не очень правильный, это просто способ начать собеседование,
каждый вопрос при желании имеет бесконечное множество дополнительных вопросов.
Re[8]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 06:22
Оценка: 1 (1) +3
Здравствуйте, creatman, Вы писали:

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


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


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


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


А>>>>и радуемся, как загибается компилятор...


_>>>и в чем ваше возражение?


_>>>во-первых глупо вычислять n!, при n>33, резултат не влезет, тем более (UINT_MAX — 10)!

_>>>во-вторых это тест на понимание шаблонов, а не на вычисление (UINT_MAX — 10)!

А>>Глупо вообще вычислять факториал рекурсивно.

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

C>Задача показывает не способность вычислить факториал или понимание рекурсии, она показывает насколько человек вобще представляет себе, как делаются compile-time вычисления.


знаеш что реально показывает этот вопрос! это то что читал ли соискатель статью где реализаваг факториал или нет! 100% с ходу не кто не напишет это! можете проверить на своих колегах!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.