Вопросы для интеврью
От: Аноним  
Дата: 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% с ходу не кто не напишет это! можете проверить на своих колегах!
Re[3]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 06:27
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>3) vector<auto_ptr<T>> почему нельзя? \\ плохой вопрос! т.к. auto_ptr<T> — что это такое и откуда?!... м...??

Хорошо auto_ptr<int>

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

V> throw 1;
V>}

То что кандидат на позицию разработчика С++ умеет читать я не сомневаюсь. А вот знание того как работает механизм исключений не факт.


Re[4]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 06:29
Оценка:
ну меня бы напугал бы такой вопрос (раньше), лучше спросить знаеш что такое exception зачем они нужны... ну можно спросить зачем такая конструкция

try {
//
} catch(...) {
//
}

если объяснит мне кажется этого достаточно!
Re[9]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 06:30
Оценка:
Здравствуйте, Vanger84, Вы писали:

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


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


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


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


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


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


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


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

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

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

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

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


V>знаеш что реально показывает этот вопрос! это то что читал ли соискатель статью где реализаваг факториал или нет! 100% с ходу не кто не напишет это! можете проверить на своих колегах!


Хорошо, тут я соглашусь. Пару лет назад меня собеседовали и задали вопрос с обратной стороны: "что делает эта конструкция?"
На прямой вопрос я бы тоже затруднился ответить.


Re[9]: Вопросы для интеврью
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 27.07.06 06:32
Оценка:
V>знаеш что реально показывает этот вопрос! это то что читал ли соискатель статью где реализаваг факториал или нет! 100% с ходу не кто не напишет это! можете проверить на своих колегах!

Согласен. Вопросы, похожие на олимпиадные, задавать не стоит. Если, конечно, не принимаешь человека в супер научно-исследовательский отдел.
Re[5]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 06:32
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>ну меня бы напугал бы такой вопрос (раньше), лучше спросить знаеш что такое exception зачем они нужны... ну можно спросить зачем такая конструкция


V>try {

V>//
V>} catch(...) {
V>//
V>}

V>если объяснит мне кажется этого достаточно!


Зависит от того на какую всетаки позицию и зп нанимают
Ведь если это Junior C++ programmer то я бы и про исключения спрашивать не стал, спросил бы только "Вы умеете читать и быстро учиться?"


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

V>знаеш что реально показывает этот вопрос! это то что читал ли соискатель статью где реализаваг факториал или нет! 100% с ходу не кто не напишет это! можете проверить на своих колегах!


Так оценка собеседуемого, не проходит а-ля:
"ответил — +, не ответил -, теперь сложим, так вам четыре, вы свободны, следущий".

Если не справляется можно дать сам код, со словами, вы наверное это имеете ввиду,
но еще не написали, и спросить а почему "вы" так это "написали".
Re[4]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 06:38
Оценка:
Здравствуйте, mr_jek, Вы писали:

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


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


_>Предложенный мною задания просто первая фраза в собеседование на знание C++,

_>"они не значат почти ничего, кроме того что возможно..." (c),

_>правильный ответ или не очень правильный, это просто способ начать собеседование,

_>каждый вопрос при желании имеет бесконечное множество дополнительных вопросов.

Как ты считаеш я удачно прошел первый этап?!
и кстате у тебя есть придложение по работе?
Re[6]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 06:40
Оценка:
а сколько у вас в компании платят Junior`ам?
Re[7]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 06:41
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>а сколько у вас в компании платят Junior`ам?


В среднем 500$. Это Новосибирск.


Re[10]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 06:42
Оценка:
опять же меня сильно выбивает из клеи когда мне дают на собеседовании задание а я сним не справляюсь (может это моя проблема), но я точно знаю что сидел бы я за компом с кружкой кофе яб решил эту проблему.....
Re[9]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 06:43
Оценка: :)
Здравствуйте, Vanger84, Вы писали:

V>знаеш что реально показывает этот вопрос! это то что читал ли соискатель статью где реализаваг факториал или нет! 100% с ходу не кто не напишет это! можете проверить на своих колегах!


Кстати, после прочтения "Александреску" такая задача решается на ура,
проверено на 3 "коллегах", правда есть зависимость от того как давно испытуемый
читал что-то подобное, но как я говорил решать вообще не обязательно
Re[8]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 06:45
Оценка:
хм... я согласен минимум на 1300$ на исп срок, в Мск... но я и не позиционирую себя на junior
Re[10]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 06:46
Оценка:
Вот вот у меня уже год прошел! а без должной практики такие вещи забываются! (
Re[8]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 06:48
Оценка:
Здравствуйте, creatman, Вы писали:

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


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


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


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


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


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


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

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

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

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

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


Давно ли ты compile-time вычисления видел в реальных проектах,
а не в интересных книжках?
В большинстве случаевсе эти compile-time вычисления можно заменить
обычными статическими lookup таблицами без ущерба для понимания, расширяемости
и без увеличния времени компиляции.

Кстати, твой факториал глупо применять и для n>=13
Re[9]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 06:52
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>хм... я согласен минимум на 1300$ на исп срок, в Мск... но я и не позиционирую себя на junior


Если ты позиционируешь себя выше чем junior и просишь соответствующую ЗП, то и требования к тебе будут выше. И вопросы на собеседование будут не про то умеешь ли ты читать или нет, а скорее на знание тонкостей языка. Потому как задавая общие вопросы трудно отделить действительно специалиста от начинающего программиста.


Re: Вопросы для интеврью
От: Какая разница Украина  
Дата: 27.07.06 06:55
Оценка: :)
Здравствуйте, Аноним, Вы писали:

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


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


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


Меня спросил что это такое?


int i(0);


Я долго думал какие подвохи мне подготовили ?
Потом ответил
После чего интервьювер сказал Хорошо
На этом все закончилось
!0xDEAD
Re[9]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 07:00
Оценка: +1
Здравствуйте, Аноним, Вы писали:

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


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


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


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


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


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


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


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

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

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

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

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


А>Давно ли ты compile-time вычисления видел в реальных проектах,

А>а не в интересных книжках?
А>В большинстве случаевсе эти compile-time вычисления можно заменить
А>обычными статическими lookup таблицами без ущерба для понимания, расширяемости
А>и без увеличния времени компиляции.

Видел недавно. Проект — физическое моделирование бурения нефтянных скважин. Там конечно не факториалы вычисляются а гораздо более серьезные формулы. Поскольку в проекте я не учавствую то не могу более детально сказать, зачем и как это там используется.
Я не говорил что compile-time вычисления это панацея. Везде нужно уметь правильно принимать решения балансируя между многими факторами. В этом заключается задача проектирования.



А>Кстати, твой факториал глупо применять и для n>=13


Задача была учебная а не практическая. Естественно что многое что тебя спросят на собеседовании ты никогда не будешь использовать в проекте, но и не та задача ставится перед интервьювером. Задача интервьювера определить твой уровень знаний и выделить тебя среди остальных.


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

А>Давно ли ты compile-time вычисления видел в реальных проектах,

А>а не в интересных книжках?
А>В большинстве случаевсе эти compile-time вычисления можно заменить
А>обычными статическими lookup таблицами без ущерба для понимания, расширяемости
А>и без увеличния времени компиляции.

А>Кстати, твой факториал глупо применять и для n>=13


А у меня работает, может пора сменить компилятор и платформу?

Вы опять все пропустили мимо ушей, соль вопроса не в вычисление факториала
и не в вычисление на стадии компиляции, а в выборе специлизации шаблона,
наличие этих специлизаций, и в том как вообще работают шаблоны под этим "необычным"
углом.
Re[4]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 07:04
Оценка:
Здравствуйте, mr_jek, Вы писали:


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


В общем я опять напутал и лень искать файл с вопросами,

смысл в том чтобы выделить интерфейс
class IB {
public:
virtual void OnEvent();
};

а вопрос подберите сами
Re[10]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 07:08
Оценка:
Здравствуйте, creatman, Вы писали:

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


А>>Давно ли ты compile-time вычисления видел в реальных проектах,

А>>а не в интересных книжках?

C>Видел недавно. Проект — физическое моделирование бурения нефтянных скважин. Там конечно не факториалы вычисляются а гораздо более серьезные формулы. Поскольку в проекте я не учавствую то не могу более детально сказать, зачем и как это там используется.

C>Я не говорил что compile-time вычисления это панацея. Везде нужно уметь правильно принимать решения балансируя между многими факторами. В этом заключается задача проектирования.

Для формул? Очень сомнительно.
Ведь нельзя использовать переменные в таких формулах.
Я имею ввиду типа такого:
unsigned int var = 5;
unsigned int fact5 = factorial<var>::value;


Т.е. именно для вычислений смысла в compile-time вычислениях точно никакого.

На интервью для продвинутых лучше спросить а когда вообще
есть смысл применять compile-time вычисления на С++...
Re: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 07:08
Оценка:
Здравствуйте, Аноним, Вы писали:

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


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


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


Еще один хороший и стандартный вопрос на понимание того как объект конструируется:

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


Re[10]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 07:13
Оценка:
Здравствуйте, creatman, Вы писали:

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


V>>хм... я согласен минимум на 1300$ на исп срок, в Мск... но я и не позиционирую себя на junior


C>Если ты позиционируешь себя выше чем junior и просишь соответствующую ЗП, то и требования к тебе будут выше. И вопросы на собеседование будут не про то умеешь ли ты читать или нет, а скорее на знание тонкостей языка. Потому как задавая общие вопросы трудно отделить действительно специалиста от начинающего программиста.



интересно какие вы тонкости языка используете в проекте?!...
Re[10]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 07:13
Оценка:
Здравствуйте, mr_jek, Вы писали:

А>>Кстати, твой факториал глупо применять и для n>=13


_>А у меня работает, может пора сменить компилятор и платформу?


unsigned int res = factorial<13>::value;

Visual C++ .Net 2003 по праву выдает:

warning C4307: '*' : integral constant overflow


Процессор у меня все еще 32-ти разрядный, но менять его пока не собираюсь
Re[11]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 07:14
Оценка:
Здравствуйте, Аноним, Вы писали:

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


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


А>>>Давно ли ты compile-time вычисления видел в реальных проектах,

А>>>а не в интересных книжках?

C>>Видел недавно. Проект — физическое моделирование бурения нефтянных скважин. Там конечно не факториалы вычисляются а гораздо более серьезные формулы. Поскольку в проекте я не учавствую то не могу более детально сказать, зачем и как это там используется.

C>>Я не говорил что compile-time вычисления это панацея. Везде нужно уметь правильно принимать решения балансируя между многими факторами. В этом заключается задача проектирования.

А>Для формул? Очень сомнительно.

А>Ведь нельзя использовать переменные в таких формулах.
А>Я имею ввиду типа такого:
А>
А>unsigned int var = 5;
А>unsigned int fact5 = factorial<var>::value;
А>


А>Т.е. именно для вычислений смысла в compile-time вычислениях точно никакого.


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

А>На интервью для продвинутых лучше спросить а когда вообще

А>есть смысл применять compile-time вычисления на С++...

Хм... ну для этого нужно понять на сколько продвинутый понимает что это такое. Ведь ответить на этот вопрос можно вобще без знания языка, а просто знать что такое compile-time. Это вопрос чисто аналитический.


Re[2]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 07:17
Оценка:
а что ты ответил?! и кстате у меня был вопрос что такое a = b; a == b; и что то в этом роде
Re[11]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 07:17
Оценка:
Здравствуйте, Vanger84, Вы писали:

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


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


V>>>хм... я согласен минимум на 1300$ на исп срок, в Мск... но я и не позиционирую себя на junior


C>>Если ты позиционируешь себя выше чем junior и просишь соответствующую ЗП, то и требования к тебе будут выше. И вопросы на собеседование будут не про то умеешь ли ты читать или нет, а скорее на знание тонкостей языка. Потому как задавая общие вопросы трудно отделить действительно специалиста от начинающего программиста.



V>интересно какие вы тонкости языка используете в проекте?!...


например в упрощенном виде

void f() throw()
{
  throw 1;
}


Если человек не знает, что под собой подразумевает запись throw() то он просто не понимает что он пишет или что у него в проекте написано.


Re[2]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 07:18
Оценка: :)
Здравствуйте, creatman, Вы писали:

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


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


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


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


C>Еще один хороший и стандартный вопрос на понимание того как объект конструируется:


C>"Напишите компелябельный код для вызова чистовиртуальной функции"


хы... даже я задумался писать код!
Re[2]: Вопросы для интеврью
От: Ubivetz Украина  
Дата: 27.07.06 07:49
Оценка:
Здравствуйте, creatman, Вы писали:

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


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


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


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


C>1) Отличия структуры от класса

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

А почему нельзя
vector<bool>?

А
vector<auto_ptr<T>>

нельзя из-за "права собственности" — это ясно и коню.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
Re[2]: Вопросы для интеврью
От: Ubivetz Украина  
Дата: 27.07.06 07:49
Оценка:
Здравствуйте, Какая разница, Вы писали:

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


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


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


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


КР>Меня спросил что это такое?



КР>
КР>int i(0);
КР>


КР>Я долго думал какие подвохи мне подготовили ?

КР>Потом ответил
КР>После чего интервьювер сказал Хорошо
КР>На этом все закончилось
Правильно. Такие вопросы и надо задавать. А то понапридумывают там всяких мега-шаблонов...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
Re[11]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 07:59
Оценка:
Здравствуйте, Аноним, Вы писали:

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


А>>>Кстати, твой факториал глупо применять и для n>=13


_>>А у меня работает, может пора сменить компилятор и платформу?


А>
А>unsigned int res = factorial<13>::value;
А>

А>Visual C++ .Net 2003 по праву выдает:
А>

А>warning C4307: '*' : integral constant overflow


А>Процессор у меня все еще 32-ти разрядный, но менять его пока не собираюсь


а gcc 4.1 прекрасно справляется, его придел по-моему 500, правда его можно изменить из командной строки.
Re[11]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 08:04
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>опять же меня сильно выбивает из клеи когда мне дают на собеседовании задание а я сним не справляюсь (может это моя проблема), но я точно знаю что сидел бы я за компом с кружкой кофе яб решил эту проблему.....


Но с другой стороны допустим ты справился со всеми заданиями с блеском, выходишь и
думаешь: "Черт возьми, меня точно возьмут, как я их...". И через две недели приходит письмо
с отказом или вообще ничего не приходит.
Re[5]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 08:09
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>Как ты считаеш я удачно прошел первый этап?!


Для первого этапа существует только оценка "завалил", "не завалил",
ты не "завалил", но кто знает возможно позже во время обсуждения таких
отвлеченных тем как "реализация виртуальных методов" в разных компиляторах,
я пойму что мы не можем работать вместе.

V>и кстате у тебя есть придложение по работе?


Есть, но только в последнее время из требования "программист C/C++", C++
улетучилась и добавился ряд специфичных технологий, так что...
Re[2]: Вопросы для интеврью
От: AndrewJD США  
Дата: 27.07.06 08:25
Оценка:
Здравствуйте, creatman, Вы писали:

C>2) vector<bool> почему нельзя?

C какой это радости нельзя?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[12]: Вопросы для интеврью
От: AndrewJD США  
Дата: 27.07.06 08:27
Оценка:
Здравствуйте, mr_jek, Вы писали:

_>а gcc 4.1 прекрасно справляется, его придел по-моему 500, правда его можно изменить из командной строки.


У тебя int скольки разрядный?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re: Вопросы для интеврью
От: mukos СССР  
Дата: 27.07.06 08:54
Оценка:
Здравствуйте, Аноним, Вы писали:

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


А мне больше всего понравился вопрос типа-
Вот у нас есть два проекта — один написание некоего протокола для работы по СОМ порту с некоим девайсом
второй — поддержка виртуального казино на Тайване.... Чем хотите заняться?

Что я тогда ответил не скажу (давно это было) ... Но только несколько позже понял подводный смыс этого вопроса...
Думаю с помощью наводящих вопросов можно выснить гораздо больше информации.

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


А>Спасибо заранее
Re: Вопросы для интеврью
От: Centaur Россия  
Дата: 27.07.06 09:25
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

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


У нас просили решить несколько задачек.

Задачка первая: есть строка, её надо извернуть задом наперёд, не выделяя много дополнительной памяти. Смотреть на то, какой тип/класс претендент использует для строки; решает через индексы, указатели или итераторы; как делает swap. Грамотный программист на C++ должен в первую очередь сказать «std::reverse» и приступить к решению только тогда, когда ему скажут, что «+1, но мы хотим посмотреть, как Вы реализуете аналогичный алгоритм»

Задачка вторая: даны два множества целых чисел, представлены сортированными массивами. Найти их объединение (вариант: пересечение), в том же представлении.
Re[13]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 09:28
Оценка:
Здравствуйте, AndrewJD, Вы писали:

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


_>>а gcc 4.1 прекрасно справляется, его придел по-моему 500, правда его можно изменить из командной строки.


AJD>У тебя int скольки разрядный?



Это зависит от параметров компиляции, если "-mint64", то 64 битный.

~> uname -a
Linux 2.6.x #1 SMP Fri Jul 2 ... ppc64 ppc64 ppc64 GNU/Linux
Re[12]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 09:35
Оценка:
Здравствуйте, mr_jek, Вы писали:

_>а gcc 4.1 прекрасно справляется, его придел по-моему 500, правда его можно изменить из командной строки.


Ну если gcc еще поместит 500! в 64-битный int, то вопросов нету
Re[13]: Вопросы для интеврью
От: mr_jek  
Дата: 27.07.06 09:43
Оценка:
Здравствуйте, Аноним, Вы писали:

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


_>>а gcc 4.1 прекрасно справляется, его придел по-моему 500, правда его можно изменить из командной строки.


А>Ну если gcc еще поместит 500! в 64-битный int, то вопросов нету



Нет, здесь я имел ввиду не переполнение целого, а переполнение стека компилятора.
Re[2]: Вопросы для интеврью
От: ChizhA.V  
Дата: 27.07.06 09:44
Оценка:
+1 отличные вопросы!
Posted via RSDN NNTP Server 2.0
Re[12]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 09:50
Оценка:
Здравствуйте, mr_jek, Вы писали:

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


V>>опять же меня сильно выбивает из клеи когда мне дают на собеседовании задание а я сним не справляюсь (может это моя проблема), но я точно знаю что сидел бы я за компом с кружкой кофе яб решил эту проблему.....


_>Но с другой стороны допустим ты справился со всеми заданиями с блеском, выходишь и

_>думаешь: "Черт возьми, меня точно возьмут, как я их...". И через две недели приходит письмо
_>с отказом или вообще ничего не приходит.

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

так что берите пример!
Re[3]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 09:52
Оценка:
нельзя так как он не отвчает требованием выдвинутым к контейнеру vector так что незя, подробнее можеш прочитать в книжке Маерса STL эфективное использование у него прям глава такая есть помоему
Re[2]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 09:56
Оценка:
Здравствуйте, mukos, Вы писали:

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


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


M>А мне больше всего понравился вопрос типа-

M>Вот у нас есть два проекта — один написание некоего протокола для работы по СОМ порту с некоим девайсом
M>второй — поддержка виртуального казино на Тайване.... Чем хотите заняться?

M>Что я тогда ответил не скажу (давно это было) ... Но только несколько позже понял подводный смыс этого вопроса...

M>Думаю с помощью наводящих вопросов можно выснить гораздо больше информации.

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


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


я бы ответил что и тем и тем интересно.... задав попутно много вопросов в чем будет заключатся работа...

а где подводные камни и почему именно в Тайване?? типо язык надо знать или че...
Re[12]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 10:11
Оценка:
Здравствуйте, creatman, Вы писали:

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


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


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


V>>>>хм... я согласен минимум на 1300$ на исп срок, в Мск... но я и не позиционирую себя на junior


C>>>Если ты позиционируешь себя выше чем junior и просишь соответствующую ЗП, то и требования к тебе будут выше. И вопросы на собеседование будут не про то умеешь ли ты читать или нет, а скорее на знание тонкостей языка. Потому как задавая общие вопросы трудно отделить действительно специалиста от начинающего программиста.



V>>интересно какие вы тонкости языка используете в проекте?!...


C>например в упрощенном виде


C>
C>void f() throw()
C>{
C>  throw 1;
C>}
C>


C>Если человек не знает, что под собой подразумевает запись throw() то он просто не понимает что он пишет или что у него в проекте написано.


а дай пожалуйсто ответ на этот вопрос...
Re[13]: Вопросы для интеврью
От: creatman Германия  
Дата: 27.07.06 10:25
Оценка:
Здравствуйте, Аноним, Вы писали:

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


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


V>>>опять же меня сильно выбивает из клеи когда мне дают на собеседовании задание а я сним не справляюсь (может это моя проблема), но я точно знаю что сидел бы я за компом с кружкой кофе яб решил эту проблему.....


_>>Но с другой стороны допустим ты справился со всеми заданиями с блеском, выходишь и

_>>думаешь: "Черт возьми, меня точно возьмут, как я их...". И через две недели приходит письмо
_>>с отказом или вообще ничего не приходит.

А>не понел к чему это ты, хм.. если я справился с блеском то почему меня не взяли на работу?!...


Например потому, что на данную позицию ищут 1 человека, а людей блестяще решивших все задачи 10.

А>и вообще как бы солидные компании должны! просто обязаны отвечать как можно скорее иначе они рискую либо потерять работника либо уважение!


Обычно как раз наоборот. Большие компании могут себе позволить упустить работника, далеко ходить не надо, можно посмотреть на Microsoft, Google.

А вот с небольшими компаниями совсем другое дело. Тем хочется именно найти человека, а не винтик. Если в компании всего 5 человек, то их естественно больше волнует кто будет 6-ым, а тех кого и так 1000 гораздо меньше волнует кто будет 1001-м.


А>некоторые солидные компания предоставляют отчет собеседования что им не понравилось и если было тестовое задание то еще и сделают коменты к строчкам кода


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


Re[3]: Вопросы для интеврью
От: mukos СССР  
Дата: 27.07.06 10:29
Оценка:
Здравствуйте, Аноним, Вы писали:

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


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


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


M>>А мне больше всего понравился вопрос типа-

M>>Вот у нас есть два проекта — один написание некоего протокола для работы по СОМ порту с некоим девайсом
M>>второй — поддержка виртуального казино на Тайване.... Чем хотите заняться?

M>>Что я тогда ответил не скажу (давно это было) ... Но только несколько позже понял подводный смыс этого вопроса...

M>>Думаю с помощью наводящих вопросов можно выснить гораздо больше информации.

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


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




А>а где подводные камни и почему именно в Тайване?? типо язык надо знать или че...


Ну по моему мнению — человек пытаясь получить работу береться за то в чем уверен-
т.е. написать какойто протокол для сом порта уже конкретная вещь и имеешь представление
о том как его реализовать, или хотябы напрвлении (если он конечно практикующий программист).
А какаято там неконкретная поддержка какогото там абстрактного казино вроде как абстракция,
и если человек не может работать с конкретикой он стремиться к абстракции (т.е. типа как нибудь вывернусь).

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


И вот как раз по этим вопросам можно многое и прояснить
Человек сам будет Вас наводить на вопросы которые ему можно (нужно ) задать.
А если человек не спрашивает , значит он ничего не знает —
ибо чтобы правильно задать вопрос надо знать 2/3 ответа

Не уверен что все доступно объяснил , но надеюсь что основная идея ясна.
Re[3]: Вопросы для интеврью
От: Jonathan  
Дата: 27.07.06 10:38
Оценка:
Здравствуйте, Vanger84, Вы писали:

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


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


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


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


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


C>>Еще один хороший и стандартный вопрос на понимание того как объект конструируется:


C>>"Напишите компелябельный код для вызова чистовиртуальной функции"


V>хы... даже я задумался писать код!


А вот и код:

class ABC
{
public:
virtual void func() = 0 { cout << "I'm Pure Virtual" << endl;};
};

class BCD : public ABC
{
public:
virtual void func() { cout << "I'm not Pure Virtual" << endl;};
void func2() {ABC::func();};
};

int main(int argc, char* argv[])
{
BCD b;
b.func2();
}
"If everything seems under control, you're just not going fast enough"
Re[4]: Вопросы для интеврью
От: Аноним  
Дата: 27.07.06 10:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>нельзя так как он не отвчает требованием выдвинутым к контейнеру vector так что незя, подробнее можеш прочитать в книжке Маерса STL эфективное использование у него прям глава такая есть помоему


А это что?

/ CLASS vector_bool
template<class _Alloc>
    class vector<_Bool, _Alloc>
        : public _Container_base
    {    // varying size array of bits


Все пашет:

vector<bool> new_vector;
new_vector.push_back(true);
new_vector.push_back(false);
new_vector.push_back(true);
new_vector.push_back(false);
    
vector<bool>::size_type new_size=new_vector.size();


Каким правилам не отвечает vector<bool>?
Re[3]: Вопросы для интеврью
От: ekamaloff Великобритания  
Дата: 27.07.06 11:04
Оценка:
Здравствуйте, AndrewJD, Вы писали:

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


C>>2) vector<bool> почему нельзя?

AJD>C какой это радости нельзя?

vector<bool> можно, но то ли для оптимизации размещения элементов, то ли еще для чего-то, в поставляемой STL должна быть предусмотрена специализация класса vector для элементов типа bool.

Вот несколько выдержек из стандарта:

23.2.4 Class template vector                                                                          [lib.vector]
1 A vector is a kind of sequence that supports random access iterators. In addition, it supports (amortized) constant time
insert and erase operations at the end; insert and erase in the middle take linear time. Storage management is handled
automatically, though hints can be given to improve efficiency. The elements of a vector are stored contiguously,
meaning that if v is a vector<T, Allocator> where T is some type other than bool, then it obeys the identity &v[n]
== &v[0] + n for all 0 <= n < v.size().


23.2.5 Class vector<bool>                                       [lib.vector.bool]
1 To optimize space allocation, a specialization of vector for bool elements is provided:

namespace std {
template < class Allocator > class vector <bool , Allocator > {
    // ...
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[13]: Вопросы для интеврью
От: srggal Украина  
Дата: 27.07.06 12:40
Оценка: +1
Здравствуйте, Vanger84, Вы писали:

V>а дай пожалуйсто ответ на этот вопрос...


См. стандарт 15.4

15.4/8
Whenever an exception is thrown and the search for a handler (15.3) encounters the outermost block of a
function with an exception-specification, the function unexpected() is called (15.5.2) if the exceptionspecification
does not allow the exception.[Example:
class X { };
class Y { };
class Z: public X { };
class W { };
void f() throw (X, Y)
{
int n = 0;
if (n) throw X(); // OK
if (n) throw Z(); // also OK
throw W(); // will call unexpected()
}
—end example]


15.4/9
The function unexpected() may throw an exception that will satisfy the exception-specification for
which it was invoked, and in this case the search for another handler will continue at the call of the function
with this exception-specification (see 15.5.2), or it may call terminate().

15.4/11
A function with no exception-specification allows all exceptions. A function with an empty exceptionspecification,
throw(), does not allow any exceptions.


Кроме этого есть

15.5.1 The terminate() function
...

15.5.2 The unexpected() function
...

которые тоже можно глянуть
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Вопросы для интеврью
От: srggal Украина  
Дата: 27.07.06 13:06
Оценка: +1 -1
Здравствуйте, Jonathan, Вы писали:


V>>хы... даже я задумался писать код!


J>А вот и код:


J>class ABC

J>{
J>public:
J> virtual void func() = 0 { cout << "I'm Pure Virtual" << endl;}; //ill-formed
J>};

J>class BCD : public ABC

J>{
J>public:
J> virtual void func() { cout << "I'm not Pure Virtual" << endl;};
J> void func2() {ABC::func();};
J>};

J>int main(int argc, char* argv[])

J>{
J> BCD b;
J> b.func2();
J>}

10.4/2

An abstract class is a class that can be used only as a base class of some other class; no objects of an
abstract class can be created except as sub-objects of a class derived from it. A class is abstract if it has at
least one pure virtual function. [Note: such a function might be inherited: see below. ] A virtual function is
specified pure by using a pure-specifier (9.2) in the function declaration in the class declaration. A pure
virtual function need be defined only if explicitly called with the qualified-id syntax (5.1). [Example:
class point { /* ... */ };
class shape { // abstract class
point center;
// ...
public:
point where() { return center; }
void move(point p) { center=p; draw(); }
virtual void rotate(int) = 0; // pure virtual
virtual void draw() = 0; // pure virtual
// ...
};
—end example] [b]Note: a function declaration cannot provide both a pure-specifier and a definition[/b]
—end note] [Example:
struct C {
virtual void f() = 0 { }; // ill-formed
};
—end example]

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Вопросы для интеврью
От: _DAle_ Беларусь  
Дата: 27.07.06 13:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>нельзя так как он не отвчает требованием выдвинутым к контейнеру vector так что незя, подробнее можеш прочитать в книжке Маерса STL эфективное использование у него прям глава такая есть помоему


Ну что значит нельзя. Можно, но с оглядкой на все отличия vector<bool> от vector<T>.
Re[5]: Вопросы для интеврью
От: Jonathan  
Дата: 27.07.06 13:22
Оценка:
в задании небыло указано должен код соответствовать стандарту или нет.
было только: "Напишите компелябельный код для вызова чистовиртуальной функции"
Что я с успехом и продемонстрировал
"If everything seems under control, you're just not going fast enough"
Re[6]: Вопросы для интеврью
От: srggal Украина  
Дата: 27.07.06 13:29
Оценка:
Здравствуйте, Jonathan, Вы писали:

J>в задании небыло указано должен код соответствовать стандарту или нет.

J>было только: "Напишите компелябельный код для вызова чистовиртуальной функции"
J>Что я с успехом и продемонстрировал

Настолько Вы со мной несогласны, что даже в виде минуса выразили, чтож, не поленитесь,
гляньте сюда Что такое ill-formed код ? ill-formed == UB ?
Автор: srggal
Дата: 01.12.05
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Вопросы для интеврью
От: Лазар Бешкенадзе СССР  
Дата: 27.07.06 13:36
Оценка: 1 (1) +1
Здравствуйте, mr_jek, Вы писали:

_>Это не задача на рекурсию,


Вспомним как ставилась задача:

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


_>это задача на понимание того какую специлизацию шаблона компилятор выберет,

_>и почему это вообще работает.

Я не вижу слова "шаблон" в вопросе.
Сомневаюсь, что до 2000 года, когда вышла книга Александреску, кто-нибудь
вообще понял бы фразу "вычислить факториал на этапе компиляции". Поэтому этот
вопрос скорее на знание хитрых и редко используемых приемов.
Если интервью строить на таком подходе, то можно упустить очень много умных,
работящих, и, главное, аккуратных программистов, а вместо них набрать команду
"блестящих гениев", которые не программируют, а кладут кучи неработающего
дерьма.
К тому же подход "завтра я провожу первое в жизни интервью — накидайте-ка мне
побольше хороших вопросов" уже характеризует интервьюирующего. Правильная
схема тестирования должна включать заранее подготовленный, продуманный,
письменный тест, который претендент должен иметь возможность выполнять в
спокойной обстановке, в одиночестве и в течение заведомо достаточного времени.
Если быть честным, такое тестирование в Москве я встречал только в одном месте.
Это — Ecora.

Лазар
Re[14]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 14:41
Оценка:
Здравствуйте, srggal, Вы писали:

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


V>>а дай пожалуйсто ответ на этот вопрос...


S>См. стандарт 15.4


S>

S>15.4/8
S>Whenever an exception is thrown and the search for a handler (15.3) encounters the outermost block of a
S>function with an exception-specification, the function unexpected() is called (15.5.2) if the exceptionspecification
S>does not allow the exception.[Example:
S>class X { };
S>class Y { };
S>class Z: public X { };
S>class W { };
S>void f() throw (X, Y)
S>{
S>int n = 0;
S>if (n) throw X(); // OK
S>if (n) throw Z(); // also OK
S>throw W(); // will call unexpected()
S>}
S>—end example]


S>15.4/9
S>The function unexpected() may throw an exception that will satisfy the exception-specification for
S>which it was invoked, and in this case the search for another handler will continue at the call of the function
S>with this exception-specification (see 15.5.2), or it may call terminate().

S>15.4/11
S>A function with no exception-specification allows all exceptions. A function with an empty exceptionspecification,
S>throw(), does not allow any exceptions.


S>Кроме этого есть

S>

S>15.5.1 The terminate() function
S>...

S>15.5.2 The unexpected() function
S>...

S>которые тоже можно глянуть

я попросил дать ответ не потомучто незнаю а потомучто хотел узнать как именно он был дал ответ на этот вопрос на собеседовании те не дают стандарт C++ чтобы ты в нем искал ответ! тебя спрашивают а ты сам должен сформулировать ответ....
Re[5]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 14:45
Оценка:
Здравствуйте, _DAle_, Вы писали:

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


А>>нельзя так как он не отвчает требованием выдвинутым к контейнеру vector так что незя, подробнее можеш прочитать в книжке Маерса STL эфективное использование у него прям глава такая есть помоему


_DA>Ну что значит нельзя. Можно, но с оглядкой на все отличия vector<bool> от vector<T>.


ну можно все если это оправдоно, есть просто вещи не входящии в состав стандарта.... вот vector<bool> не входит в стандарт
Re[6]: Вопросы для интеврью
От: _DAle_ Беларусь  
Дата: 27.07.06 15:19
Оценка:
Здравствуйте, Vanger84, Вы писали:

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


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


А>>>нельзя так как он не отвчает требованием выдвинутым к контейнеру vector так что незя, подробнее можеш прочитать в книжке Маерса STL эфективное использование у него прям глава такая есть помоему


_DA>>Ну что значит нельзя. Можно, но с оглядкой на все отличия vector<bool> от vector<T>.


V>ну можно все если это оправдоно, есть просто вещи не входящии в состав стандарта.... вот vector<bool> не входит в стандарт


А может сначала открыть этот самый стандарт, а потом уже что-то утверждать?

23.2.5 Class vector<bool>
To optimize space allocation, a specialization of vector for bool elements is provided:
...

Re[7]: Вопросы для интеврью
От: Vanger84  
Дата: 27.07.06 15:55
Оценка:
Здравствуйте, _DAle_, Вы писали:

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


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


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


А>>>>нельзя так как он не отвчает требованием выдвинутым к контейнеру vector так что незя, подробнее можеш прочитать в книжке Маерса STL эфективное использование у него прям глава такая есть помоему


_DA>>>Ну что значит нельзя. Можно, но с оглядкой на все отличия vector<bool> от vector<T>.


V>>ну можно все если это оправдоно, есть просто вещи не входящии в состав стандарта.... вот vector<bool> не входит в стандарт


_DA>А может сначала открыть этот самый стандарт, а потом уже что-то утверждать?


_DA>

_DA>23.2.5 Class vector<bool>
_DA>To optimize space allocation, a specialization of vector for bool elements is provided:
_DA>...


хм... может я ошибаюсь в книжке Майерса черным по белому написано что он не является стандартом??
Re[4]: Вопросы для интеврью
От: little_alex  
Дата: 27.07.06 16:25
Оценка:
Не компилирутся :
sh@venus:~/tmp/cpp> cat main.cpp
#include <iostream>
using namespace std;

class ABC
{
public:
virtual void func() = 0 { cout << "I'm Pure Virtual" << endl;};
};

class BCD : public ABC
{
public:
virtual void func() { cout << "I'm not Pure Virtual" << endl;};
void func2() {ABC::func();};
};

int main(int argc, char* argv[])
{
BCD b;
b.func2();
}
sh@venus:~/tmp/cpp> g++ main.cpp
main.cpp:7: error: pure-specifier on function-definition
Re[8]: Вопросы для интеврью
От: _DAle_ Беларусь  
Дата: 27.07.06 16:46
Оценка:
Здравствуйте, Vanger84, Вы писали:

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


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


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


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


А>>>>>нельзя так как он не отвчает требованием выдвинутым к контейнеру vector так что незя, подробнее можеш прочитать в книжке Маерса STL эфективное использование у него прям глава такая есть помоему


_DA>>>>Ну что значит нельзя. Можно, но с оглядкой на все отличия vector<bool> от vector<T>.


V>>>ну можно все если это оправдоно, есть просто вещи не входящии в состав стандарта.... вот vector<bool> не входит в стандарт


_DA>>А может сначала открыть этот самый стандарт, а потом уже что-то утверждать?


_DA>>

_DA>>23.2.5 Class vector<bool>
_DA>>To optimize space allocation, a specialization of vector for bool elements is provided:
_DA>>...


V>хм... может я ошибаюсь в книжке Майерса черным по белому написано что он не является стандартом??


Я к сожалению Майерса не читал, но думаю, что там написано, что vector<bool> не удовлетворяет требованиям, предъявляемым к стандартным контейнерам. Но он не мог написать, что его нет в стандарте.

Кстати, я там еще выше видел

я знаю что такое auto_ptr но видь он запрещен стандартом (и правильно)


auto_ptr не запрещен стандартом, просто нельзя использовать auto_ptr в стандартных контейнерах.
Re[7]: Вопросы для интеврью
От: Jonathan  
Дата: 27.07.06 16:48
Оценка:
Здравствуйте, srggal, Вы писали:

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


J>>в задании небыло указано должен код соответствовать стандарту или нет.

J>>было только: "Напишите компелябельный код для вызова чистовиртуальной функции"
J>>Что я с успехом и продемонстрировал

S>Настолько Вы со мной несогласны, что даже в виде минуса выразили, чтож, не поленитесь,

S>гляньте сюда Что такое ill-formed код ? ill-formed == UB ?
Автор: srggal
Дата: 01.12.05


А причем тут ето?
см. задание!!!
"If everything seems under control, you're just not going fast enough"
Re[5]: Вопросы для интеврью
От: Jonathan  
Дата: 27.07.06 17:16
Оценка:
Здравствуйте, little_alex, Вы писали:

_>Не компилирутся :

_>
_>sh@venus:~/tmp/cpp> cat main.cpp
_>#include <iostream>
_>using namespace std;

_>class ABC
_>{
_>public:
_>virtual void func() = 0 { cout << "I'm Pure Virtual" << endl;};
_>};

_>class BCD : public ABC
_>{
_>public:
_>virtual void func() { cout << "I'm not Pure Virtual" << endl;};
_>void func2() {ABC::func();};
_>};

_>int main(int argc, char* argv[])
_>{
_>BCD b;
_>b.func2();
_>}
_>sh@venus:~/tmp/cpp> g++ main.cpp
_>main.cpp:7: error: pure-specifier on function-definition
_>


скомпилируй в VC++ 6.0
"If everything seems under control, you're just not going fast enough"
Re[6]: Вопросы для интеврью
От: ekamaloff Великобритания  
Дата: 28.07.06 03:15
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>ну можно все если это оправдоно, есть просто вещи не входящии в состав стандарта.... вот vector<bool> не входит в стандарт


Что значит не входит в стандарт, про него там отдельная глава
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[6]: Вопросы для интеврью
От: creatman Германия  
Дата: 28.07.06 03:42
Оценка:
Здравствуйте, Jonathan, Вы писали:

J>в задании небыло указано должен код соответствовать стандарту или нет.


Если он ему не соответствует вы не прошли собеседование.


Re[6]: Вопросы для интеврью
От: creatman Германия  
Дата: 28.07.06 03:44
Оценка:
Здравствуйте, Jonathan, Вы писали:

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


_>>Не компилирутся :

_>>
_>>sh@venus:~/tmp/cpp> cat main.cpp
_>>#include <iostream>
_>>using namespace std;

_>>class ABC
_>>{
_>>public:
_>>virtual void func() = 0 { cout << "I'm Pure Virtual" << endl;};
_>>};

_>>class BCD : public ABC
_>>{
_>>public:
_>>virtual void func() { cout << "I'm not Pure Virtual" << endl;};
_>>void func2() {ABC::func();};
_>>};

_>>int main(int argc, char* argv[])
_>>{
_>>BCD b;
_>>b.func2();
_>>}
_>>sh@venus:~/tmp/cpp> g++ main.cpp
_>>main.cpp:7: error: pure-specifier on function-definition
_>>


J>скомпилируй в VC++ 6.0


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


Re[15]: Вопросы для интеврью
От: creatman Германия  
Дата: 28.07.06 03:49
Оценка:
Здравствуйте, Vanger84, Вы писали:

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


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


V>>>а дай пожалуйсто ответ на этот вопрос...


S>>См. стандарт 15.4


S>>

S>>15.4/8
S>>Whenever an exception is thrown and the search for a handler (15.3) encounters the outermost block of a
S>>function with an exception-specification, the function unexpected() is called (15.5.2) if the exceptionspecification
S>>does not allow the exception.[Example:
S>>class X { };
S>>class Y { };
S>>class Z: public X { };
S>>class W { };
S>>void f() throw (X, Y)
S>>{
S>>int n = 0;
S>>if (n) throw X(); // OK
S>>if (n) throw Z(); // also OK
S>>throw W(); // will call unexpected()
S>>}
S>>—end example]


S>>15.4/9
S>>The function unexpected() may throw an exception that will satisfy the exception-specification for
S>>which it was invoked, and in this case the search for another handler will continue at the call of the function
S>>with this exception-specification (see 15.5.2), or it may call terminate().

S>>15.4/11
S>>A function with no exception-specification allows all exceptions. A function with an empty exceptionspecification,
S>>throw(), does not allow any exceptions.


S>>Кроме этого есть

S>>

S>>15.5.1 The terminate() function
S>>...

S>>15.5.2 The unexpected() function
S>>...

S>>которые тоже можно глянуть

V>я попросил дать ответ не потомучто незнаю а потомучто хотел узнать как именно он был дал ответ на этот вопрос на собеседовании те не дают стандарт C++ чтобы ты в нем искал ответ! тебя спрашивают а ты сам должен сформулировать ответ....


Какая разница как бы дал его я. Я думаю тебе бы это вобще никакой информации бы не дало. Поскольку ты не интервьювер а я не на собеседовании. И даже если бы я не знал ответа то легко его нашел бы используя Google. А вот если бы ты сам написал сюда свой ответ, я думаю для тебя бы было больше пользы, может какие-нибудь для себя советы получил.


Re[16]: Вопросы для интеврью
От: Vanger84  
Дата: 28.07.06 04:39
Оценка:
Здравствуйте, creatman, Вы писали:

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


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


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


V>>>>а дай пожалуйсто ответ на этот вопрос...


S>>>См. стандарт 15.4


S>>>

S>>>15.4/8
S>>>Whenever an exception is thrown and the search for a handler (15.3) encounters the outermost block of a
S>>>function with an exception-specification, the function unexpected() is called (15.5.2) if the exceptionspecification
S>>>does not allow the exception.[Example:
S>>>class X { };
S>>>class Y { };
S>>>class Z: public X { };
S>>>class W { };
S>>>void f() throw (X, Y)
S>>>{
S>>>int n = 0;
S>>>if (n) throw X(); // OK
S>>>if (n) throw Z(); // also OK
S>>>throw W(); // will call unexpected()
S>>>}
S>>>—end example]


S>>>15.4/9
S>>>The function unexpected() may throw an exception that will satisfy the exception-specification for
S>>>which it was invoked, and in this case the search for another handler will continue at the call of the function
S>>>with this exception-specification (see 15.5.2), or it may call terminate().

S>>>15.4/11
S>>>A function with no exception-specification allows all exceptions. A function with an empty exceptionspecification,
S>>>throw(), does not allow any exceptions.


S>>>Кроме этого есть

S>>>

S>>>15.5.1 The terminate() function
S>>>...

S>>>15.5.2 The unexpected() function
S>>>...

S>>>которые тоже можно глянуть

V>>я попросил дать ответ не потомучто незнаю а потомучто хотел узнать как именно он был дал ответ на этот вопрос на собеседовании те не дают стандарт C++ чтобы ты в нем искал ответ! тебя спрашивают а ты сам должен сформулировать ответ....


C>Какая разница как бы дал его я. Я думаю тебе бы это вобще никакой информации бы не дало. Поскольку ты не интервьювер а я не на собеседовании. И даже если бы я не знал ответа то легко его нашел бы используя Google. А вот если бы ты сам написал сюда свой ответ, я думаю для тебя бы было больше пользы, может какие-нибудь для себя советы получил.


Я думаю тебе бы это вобще никакой информации бы не дало. \\ просто одно одело беседовать со знающим человеком который может быть тебя на несколько порядков выше а другое дело беседовать с junior который тока понтуется... соответственно и строится беседа.

Самое тупое занятие это беседовать с интервьювером который умеет тока задавать вопросы а ответы на них не знает.... так у меня и получилось 2 конторы мне задали вопрос что такое Абстрактный класс я естественно ответил они сказали что я не прав и не стали дальше обсуждать! и причем на мой вопрос "И что же по вашему такое абстрактный класс?" в одной конторе мне намекнули что не прелично у них спрашивать а вдругой медленно но верно дали определение интерфейса!

P.S.
мой ответ дословно "Абстрактный класс это класс которые имеет хотябы один чисто виртуальный метод"
Re[9]: Вопросы для интеврью
От: Vanger84  
Дата: 28.07.06 05:14
Оценка:
Здравствуйте, _DAle_, Вы писали:

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


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


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


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


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


А>>>>>>нельзя так как он не отвчает требованием выдвинутым к контейнеру vector так что незя, подробнее можеш прочитать в книжке Маерса STL эфективное использование у него прям глава такая есть помоему


_DA>>>>>Ну что значит нельзя. Можно, но с оглядкой на все отличия vector<bool> от vector<T>.


V>>>>ну можно все если это оправдоно, есть просто вещи не входящии в состав стандарта.... вот vector<bool> не входит в стандарт


_DA>>>А может сначала открыть этот самый стандарт, а потом уже что-то утверждать?


_DA>>>

_DA>>>23.2.5 Class vector<bool>
_DA>>>To optimize space allocation, a specialization of vector for bool elements is provided:
_DA>>>...


V>>хм... может я ошибаюсь в книжке Майерса черным по белому написано что он не является стандартом??


_DA>Я к сожалению Майерса не читал, но думаю, что там написано, что vector<bool> не удовлетворяет требованиям, предъявляемым к стандартным контейнерам. Но он не мог написать, что его нет в стандарте.


_DA>Кстати, я там еще выше видел

_DA>

_DA>я знаю что такое auto_ptr но видь он запрещен стандартом (и правильно)


_DA>auto_ptr не запрещен стандартом, просто нельзя использовать auto_ptr в стандартных контейнерах.


Текст из книжки (Майерса стр. 80) по поводу vector<bool>

vector<bool> как контейнер STL обладает лишь двумя недостатками. Вопервых это вообще не контейнер STL. Во вторых он не содержит bool.
Объект не становится контейнером STL только потому, что кто-то назвал его таковым — он становится контейнером STL лишь при соблюдении всех требований, изложенных в разделе 23.1 Стандарт С++.

Текст из книжки (Майерса стр. 48) по поводу auto_ptr

Совет 8. Никогда не создавайте контейнеры содержацие auto_ptr

Контейнеры auto_ptr (COAP, Containers Of Auto_Ptr) запрещены, а программа, которая попытается их использовать не будет компилироватся. Комитет по стандартизации С++ пролижил неслыханные усилия в этои направлении.


P.S.
А скижите пожайлусто еще почему нельзя делать vector<auto_ptr<t>> надеюсь прикол не в закрытом конструкторе по умолчанию?
Re[17]: Вопросы для интеврью
От: creatman Германия  
Дата: 28.07.06 05:51
Оценка: +1 -1
Здравствуйте, Vanger84, Вы писали:

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


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


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


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


V>>>>>а дай пожалуйсто ответ на этот вопрос...


S>>>>См. стандарт 15.4


S>>>>

S>>>>15.4/8
S>>>>Whenever an exception is thrown and the search for a handler (15.3) encounters the outermost block of a
S>>>>function with an exception-specification, the function unexpected() is called (15.5.2) if the exceptionspecification
S>>>>does not allow the exception.[Example:
S>>>>class X { };
S>>>>class Y { };
S>>>>class Z: public X { };
S>>>>class W { };
S>>>>void f() throw (X, Y)
S>>>>{
S>>>>int n = 0;
S>>>>if (n) throw X(); // OK
S>>>>if (n) throw Z(); // also OK
S>>>>throw W(); // will call unexpected()
S>>>>}
S>>>>—end example]


S>>>>15.4/9
S>>>>The function unexpected() may throw an exception that will satisfy the exception-specification for
S>>>>which it was invoked, and in this case the search for another handler will continue at the call of the function
S>>>>with this exception-specification (see 15.5.2), or it may call terminate().

S>>>>15.4/11
S>>>>A function with no exception-specification allows all exceptions. A function with an empty exceptionspecification,
S>>>>throw(), does not allow any exceptions.


S>>>>Кроме этого есть

S>>>>

S>>>>15.5.1 The terminate() function
S>>>>...

S>>>>15.5.2 The unexpected() function
S>>>>...

S>>>>которые тоже можно глянуть

V>>>я попросил дать ответ не потомучто незнаю а потомучто хотел узнать как именно он был дал ответ на этот вопрос на собеседовании те не дают стандарт C++ чтобы ты в нем искал ответ! тебя спрашивают а ты сам должен сформулировать ответ....


C>>Какая разница как бы дал его я. Я думаю тебе бы это вобще никакой информации бы не дало. Поскольку ты не интервьювер а я не на собеседовании. И даже если бы я не знал ответа то легко его нашел бы используя Google. А вот если бы ты сам написал сюда свой ответ, я думаю для тебя бы было больше пользы, может какие-нибудь для себя советы получил.


V>Я думаю тебе бы это вобще никакой информации бы не дало. \\ просто одно одело беседовать со знающим человеком который может быть тебя на несколько порядков выше а другое дело беседовать с junior который тока понтуется... соответственно и строится беседа.


Опятьже, эту информацию тебе всеравно будет сложно получить так как тут мы неограничены временем и под рукой Google, а читать я полагаю тут умеют все

V>Самое тупое занятие это беседовать с интервьювером который умеет тока задавать вопросы а ответы на них не знает.... так у меня и получилось 2 конторы мне задали вопрос что такое Абстрактный класс я естественно ответил они сказали что я не прав и не стали дальше обсуждать! и причем на мой вопрос "И что же по вашему такое абстрактный класс?" в одной конторе мне намекнули что не прелично у них спрашивать а вдругой медленно но верно дали определение интерфейса!


Вобще один мой друг (очень хороший специалист со стажем уже более 8-ми лет) на собеседовании ведет себя примерно так:

Когда ему начинают задавать вопросы по типу хитроумных, на знание стандарта, он отвечает просто "Ребята вы меня грузите, я могу вас сам щас загрузить так, что вы усомнитесь в себе как в специалистах. Вот вы мне задали задачку ....., хорошо я её решу, но прежде чем я начну решать задачу я дам вам свою задачу", тут он пишет свою задачку на листке и протягивает её интервьюверу со словами "Если вы не решаете эту задачу, то я сомневаюсь в вашей достаточной квалификации и не собераюсь работать в вашей компании с бездарностями". Самое смешное, что один раз когда он собеседовался, интервьювер так и не решил его задачу (то был тим лидер крупной софтовой компании). А второй раз все дружно посмеялись и прекратили собеседование

ИМХО это правильный подход. Собеседование это не тест а диалог. И ты вправе проверить квалификацию сотрудников компании если у тебя есть сомнения.


Re[18]: Вопросы для интеврью
От: Amouse Россия  
Дата: 28.07.06 07:18
Оценка: 1 (1) +1
Здравствуйте, creatman, Вы писали:


C>Вобще один мой друг (очень хороший специалист со стажем уже более 8-ми лет) на собеседовании ведет себя примерно так:


C>Когда ему начинают задавать вопросы по типу хитроумных, на знание стандарта, он отвечает просто "Ребята вы меня грузите, я могу вас сам щас загрузить так, что вы усомнитесь в себе как в специалистах. Вот вы мне задали задачку ....., хорошо я её решу, но прежде чем я начну решать задачу я дам вам свою задачу", тут он пишет свою задачку на листке и протягивает её интервьюверу со словами "Если вы не решаете эту задачу, то я сомневаюсь в вашей достаточной квалификации и не собераюсь работать в вашей компании с бездарностями". Самое смешное, что один раз когда он собеседовался, интервьювер так и не решил его задачу (то был тим лидер крупной софтовой компании). А второй раз все дружно посмеялись и прекратили собеседование


C>ИМХО это правильный подход. Собеседование это не тест а диалог. И ты вправе проверить квалификацию сотрудников компании если у тебя есть сомнения.



неправильное поведение на собеседовании,
логики в таком поведении нет,
есть только, уж простите за психоанализ, внутреннее недовольство, что это его собеседуют, а не он.
Re[10]: Вопросы для интеврью
От: Ubivetz Украина  
Дата: 28.07.06 07:21
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>Текст из книжки (Майерса стр. 48) по поводу auto_ptr


V>Совет 8. Никогда не создавайте контейнеры содержацие auto_ptr


V>Контейнеры auto_ptr (COAP, Containers Of Auto_Ptr) запрещены, а программа, которая попытается их использовать не будет компилироватся. Комитет по стандартизации С++ пролижил неслыханные усилия в этои направлении.



V>P.S.

V>А скижите пожайлусто еще почему нельзя делать vector<auto_ptr<t>> надеюсь прикол не в закрытом конструкторе по умолчанию?
Это потому, что

An auto_ptr is a pointer that serves as owner of the object to which it refers (if any). As a result, an object gets destroyed automatically when its auto_ptr gets destroyed. A requirement of an auto_ptr is that its object has only one owner.

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
Re: The Guerrilla Guide to Interviewing
От: Roman Odaisky Украина  
Дата: 28.07.06 07:51
Оценка: 5 (3)
Что еще может быть очень полезно:

The Guerrilla Guide to Interviewing
оно же по-русски (лучше читай первое)
До последнего не верил в пирамиду Лебедева.
Re[7]: Вопросы для интеврью
От: Кодт Россия  
Дата: 28.07.06 09:22
Оценка:
Здравствуйте, <Аноним>, Вы писали:

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


Тут библиотека должна содержать либо контроль входных параметров, либо дисклаймер: "не передавайте в strlen NULL, не ищите факториал отрицательных чисел".

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


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

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

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

А>Рерсия на шаблонах имеет очень ограниченное применение и потому на обычном интервью такие вопросы не нужны.

Некоторые бустовские библиотеки (tuple, например) реализованы на списочных структурах — а тут без рекурсии никуда не деться.
Так что для общего развития — полезно

А>Гораздо важнее понимает ли человек рекурсию воообще.

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

Как раз полезно для понимания.
ФП-языки, как правило, дружелюбны к линейной рекурсии и оптимизируют концевую рекурсию. А на С++ с этим облом (хотя есть способ...)

Вот более-менее рабочий код с логарифмической рекурсией (правда, сообщения об ошибках невнятны — но это можно доработать)
template<int N> struct fact;
template<int N, bool valid> struct fact1;
template<int N, int K> struct fact2; // N*(N+1)*...*(N+K-1)

template<int N> struct fact { enum { value=fact1<N,(N>=0)>::value }; };

template<int N> struct fact1<N,true> { enum { value=fact2<1,N>::value }; };

template<int N> struct fact2<N,1> { enum { value=N }; };
template<int N> struct fact2<N,0> { enum { value=1 }; };
template<int N, int K> struct fact2 { enum { value=fact2<N,K/2>::value*fact2<N+K/2,K-K/2>::value }; };

template<bool v> struct test;
template<> struct test<true> {};

template<int N, int F> struct testfact : test< fact<N>::value==F > {};
template<int N> struct runfact : test< fact<N>::value!=0 > {};

testfact<0,1> t0;
testfact<1,1> t1;
testfact<5,120> t5;
//testfact<-1,1> tminus; // error: нет такого факториала - проверяем, ловит ли библиотека ошибки входных параметров
//testfact<5,121> tfault; // error: N! не равно F - проверяем, ловит ли наш тестер возможные ошибки

testfact<10, fact<9>::value*10> t10;

runfact<12> t12; // просто убеждаемся, что досюда он считает
//runfact<13> t13fault; // а досюда - уже нет
... << RSDN@Home 1.2.0 alpha rev. 653>>
Перекуём баги на фичи!
Re[11]: Вопросы для интеврью
От: Vanger84  
Дата: 28.07.06 09:38
Оценка:
Здравствуйте, Ubivetz, Вы писали:

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


V>>Текст из книжки (Майерса стр. 48) по поводу auto_ptr


V>>Совет 8. Никогда не создавайте контейнеры содержацие auto_ptr


V>>Контейнеры auto_ptr (COAP, Containers Of Auto_Ptr) запрещены, а программа, которая попытается их использовать не будет компилироватся. Комитет по стандартизации С++ пролижил неслыханные усилия в этои направлении.



V>>P.S.

V>>А скижите пожайлусто еще почему нельзя делать vector<auto_ptr<t>> надеюсь прикол не в закрытом конструкторе по умолчанию?
U>Это потому, что
U>

U>An auto_ptr is a pointer that serves as owner of the object to which it refers (if any). As a result, an object gets destroyed automatically when its auto_ptr gets destroyed. A requirement of an auto_ptr is that its object has only one owner.


это язнал но понел тока сейчас..... типо когда мы попытаемся взять из контейнера auto_ptr он удалится в контейнере так?
Re[4]: Вопросы для интеврью
От: Кодт Россия  
Дата: 28.07.06 09:53
Оценка:
Здравствуйте, ekamaloff, Вы писали:

E>vector<bool> можно, но то ли для оптимизации размещения элементов, то ли еще для чего-то, в поставляемой STL должна быть предусмотрена специализация класса vector для элементов типа bool.


E>Вот несколько выдержек из стандарта:


E>
E>23.2.4 Class template vector                                                                          [lib.vector]
E>1 A vector is a kind of sequence that supports random access iterators. In addition, it supports (amortized) constant time
E>insert and erase operations at the end; insert and erase in the middle take linear time. Storage management is handled
E>automatically, though hints can be given to improve efficiency. The elements of a vector are stored contiguously,
E>meaning that if v is a vector<T, Allocator> where T is some type other than bool, then it obeys the identity &v[n]
E>== &v[0] + n for all 0 <= n < v.size().
E>


Вопрос к Степанову: почему нельзя было просто завести класс bool_vector с нужными характеристиками?... Загадка.
... << RSDN@Home 1.2.0 alpha rev. 653>>
Перекуём баги на фичи!
Re[13]: Вопросы для интеврью
От: Константин Л.  
Дата: 28.07.06 09:55
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>а дай пожалуйсто ответ на этот вопрос...


вроде terminate вызовется
Re[8]: Вопросы для интеврью
От: srggal Украина  
Дата: 28.07.06 10:01
Оценка: +1 -1
Здравствуйте, Jonathan, Вы писали:

J>>>в задании небыло указано должен код соответствовать стандарту или нет.

J>>>было только: "Напишите компелябельный код для вызова чистовиртуальной функции"
J>>>Что я с успехом и продемонстрировал

S>>Настолько Вы со мной несогласны, что даже в виде минуса выразили, чтож, не поленитесь,

S>>гляньте сюда Что такое ill-formed код ? ill-formed == UB ?
Автор: srggal
Дата: 01.12.05


J>А причем тут ето?

J>см. задание!!!
J>

Блин. Не хотел писать, дабы не вдаваться в непонятную дискуссию, больше на эту тематику — не отвечаю.

В задании, как Вы процитировали написано:

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


ТОт код, который привели вы — ill-formed, далее я дал ссылку на то, что ill-formed код — не является компилябельным, с одним исключением — нарушение ODR — может не диагностироваться компилятором.

Резюмируем:
Ваш код не соответсвует условию задачи — он не копилябельный.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Вопросы для интеврью
От: srggal Украина  
Дата: 28.07.06 10:08
Оценка:
Здравствуйте, Кодт, Вы писали:


К>Вопрос к Степанову: почему нельзя было просто завести класс bool_vector с нужными характеристиками?... Загадка.


ИМХО — он такой же человек как и все — увлекся новыми, передовыми фичами шаблонов и решил прикрутить специализацию, а потом наступило завтра ..
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Вопросы для интеврью
От: _Dreamer Россия  
Дата: 28.07.06 10:34
Оценка:
Здравствуйте, Centaur, Вы писали:

C>У нас просили решить несколько задачек.


C>Задачка первая: есть строка, её надо извернуть задом наперёд, не выделяя много дополнительной памяти. Смотреть на то, какой тип/класс претендент использует для строки; решает через индексы, указатели или итераторы; как делает swap. Грамотный программист на C++ должен в первую очередь сказать «std::reverse» и приступить к решению только тогда, когда ему скажут, что «+1, но мы хотим посмотреть, как Вы реализуете аналогичный алгоритм»


C>Задачка вторая: даны два множества целых чисел, представлены сортированными массивами. Найти их объединение (вариант: пересечение), в том же представлении.


можно поинтересоваться, как бы Вы оценили вот такие решения ваших задач ?
я позволил себе опустить некоторые проверки при решении.
1) реверс с указателями
char * str_reverse( char * str )
{
    char temp = 0;
    char * b = str, * e = str + strlen( str ) - 1;

    while( b <= e )
        //std::swap( *b++, *e-- ); // самый очевидный вариант для меня
        //(*b++ = ( temp = *b, *e )), *e-- = temp; // за такое наверно можно и по шее схлопотать =)
    {
        temp = *b;
        *b++ = *e;
        *e-- = temp;
    }

    return str;
}

void test_str_reverse()
{
    char str[] = {"hello world !"};

    std::cout << str << std::endl;
    std::cout << str_reverse( str ) << std::endl;
}


2) пересечение массивов через указатели. предполагал, что отсортированы по возрастанию, возможно с повторяющимися элементами.
для простоты предполагал, что массивы одной длинны. обьединение у меня получилось еще более наивной и громоздкой, потому не стал показывать.
template < int size >
void print_array( int (&array)[size], int print_size = size )
{
    for( int ii = 0; ii < print_size; ++ii )
        std::cout << array[ii] << " ";
    std::cout << "\n";
}

void arrays_intr( const int *ar1, const int *ar2, int *res, const int size, int *res_size )
{
    const int *ar1_end = ar1 + size, *ar2_end = ar2 + size;

    *res_size = 0;
    while( ar1 < ar1_end && ar2 < ar2_end )
    {
        if ( *ar1 == *ar2 )
        {
            if ( (*res_size) == 0 || *(res - 1) != *ar1 )
            {
                *res++ = *ar1;
                ++(*res_size);
            }
            ++ar1;
            ++ar2;
        }
        else
        {
            *ar1 > *ar2 ? ++ar2 : ++ar1;
        }
    }
}

void test_arrays()
{
    int ar1[] = { 1, 2, 3, 5, 5, 71 };
    int ar2[] = { 0, 1, 2, 3, 4, 5 };
    const int size = sizeof( ar1 ) / sizeof( ar1[0] );
    int res_intr[ size ] = {0};
    int res_size = 0;

    print_array( ar1 );
    print_array( ar2 );
    arrays_intr( ar1, ar2, res_intr, size, &res_size );
    print_array( res_intr, res_size );
}


да, и сколько времени Вы бы дали на решение задач ?
Re[2]: Вопросы для интеврью
От: spine Россия http://ruby.inuse.ru
Дата: 28.07.06 11:20
Оценка:
Здравствуйте, mr_jek, Вы писали:

_>3)Как сделать чтобы A::f был виден только ему и наследникам?


В общем случае никак, можно только ограничить доступ. Ты это хотел услышать?
Re[4]: Вопросы для интеврью
От: Ventalf Россия  
Дата: 28.07.06 12:16
Оценка:
Здравствуйте, 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;
_>}


Нафига?
Re[9]: Вопросы для интеврью
От: Jonathan  
Дата: 28.07.06 16:11
Оценка: -1
Здравствуйте, srggal, Вы писали:

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


J>>>>в задании небыло указано должен код соответствовать стандарту или нет.

J>>>>было только: "Напишите компелябельный код для вызова чистовиртуальной функции"
J>>>>Что я с успехом и продемонстрировал

S>>>Настолько Вы со мной несогласны, что даже в виде минуса выразили, чтож, не поленитесь,

S>>>гляньте сюда Что такое ill-formed код ? ill-formed == UB ?
Автор: srggal
Дата: 01.12.05


J>>А причем тут ето?

J>>см. задание!!!
J>>

S>Блин. Не хотел писать, дабы не вдаваться в непонятную дискуссию, больше на эту тематику — не отвечаю.


S>В задании, как Вы процитировали написано:

S>

S>Напишите компелябельный код для вызова чистовиртуальной функции


S>ТОт код, который привели вы — ill-formed, далее я дал ссылку на то, что ill-formed код — не является компилябельным, с одним исключением — нарушение ODR — может не диагностироваться компилятором.


S>Резюмируем:

S> Ваш код не соответсвует условию задачи — он не копилябельный.


Еще как компелябельный, причем не только у меня.
покрайней мере H. Sutter со мной согласен.
См. пример:

"This is the original GotW problem and solution substantially as posted to Usenet. See the book More Exceptional C++ (Addison-Wesley, 2002) for the most current solution to this GotW issue. The solutions in the book have been revised and expanded since their initial appearance in GotW. The book versions also incorporate corrections, new material, and conformance to the final ANSI/ISO C++ standard."

http://www.gotw.ca/gotw/031.htm
"If everything seems under control, you're just not going fast enough"
Re[7]: Вопросы для интеврью
От: Jonathan  
Дата: 28.07.06 16:13
Оценка:
Здравствуйте, creatman, Вы писали:

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


J>>в задании небыло указано должен код соответствовать стандарту или нет.


C>Если он ему не соответствует вы не прошли собеседование.


У H.Sutter прошел бы
Смотри пример:

"This is the original GotW problem and solution substantially as posted to Usenet. See the book More Exceptional C++ (Addison-Wesley, 2002) for the most current solution to this GotW issue. The solutions in the book have been revised and expanded since their initial appearance in GotW. The book versions also incorporate corrections, new material, and conformance to the final ANSI/ISO C++ standard."

http://www.gotw.ca/gotw/031.htm
"If everything seems under control, you're just not going fast enough"
Re[19]: Вопросы для интеврью
От: Андрей Хропов Россия  
Дата: 28.07.06 23:42
Оценка:
Здравствуйте, Amouse, Вы писали:

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



C>>Вобще один мой друг (очень хороший специалист со стажем уже более 8-ми лет) на собеседовании ведет себя примерно так:


C>>Когда ему начинают задавать вопросы по типу хитроумных, на знание стандарта, он отвечает просто "Ребята вы меня грузите, я могу вас сам щас загрузить так, что вы усомнитесь в себе как в специалистах. Вот вы мне задали задачку ....., хорошо я её решу, но прежде чем я начну решать задачу я дам вам свою задачу", тут он пишет свою задачку на листке и протягивает её интервьюверу со словами "Если вы не решаете эту задачу, то я сомневаюсь в вашей достаточной квалификации и не собераюсь работать в вашей компании с бездарностями". Самое смешное, что один раз когда он собеседовался, интервьювер так и не решил его задачу (то был тим лидер крупной софтовой компании). А второй раз все дружно посмеялись и прекратили собеседование


C>>ИМХО это правильный подход. Собеседование это не тест а диалог. И ты вправе проверить квалификацию сотрудников компании если у тебя есть сомнения.


A>неправильное поведение на собеседовании,

A>логики в таком поведении нет,
A>есть только, уж простите за психоанализ, внутреннее недовольство, что это его собеседуют, а не он.

Видишь ли в чем дело, по тому какой вопрос задаст интервьюируемый тоже можно судить о его уровне
(да и вообще вопросы — это повод для разговора).
Умный интервьюер это поймет и оценит.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Вопросы для интеврью
От: Андрей Хропов Россия  
Дата: 28.07.06 23:42
Оценка:
Здравствуйте, Jonathan, Вы писали:

J>скомпилируй в VC++ 6.0


В Visual C++ используется язык довольно похожий на стандартный C++,
но все же не его нельзя назвать С++. Это "C++. MS VC++ 6.0 edition".
Он вообще славен своими косяками. Никому не рекомендую.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Вопросы для интеврью
От: minorlogic Украина  
Дата: 29.07.06 16:07
Оценка:
Здравствуйте, mr_jek, Вы писали:

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


V>>знаеш что реально показывает этот вопрос! это то что читал ли соискатель статью где реализаваг факториал или нет! 100% с ходу не кто не напишет это! можете проверить на своих колегах!


_>Кстати, после прочтения "Александреску" такая задача решается на ура,

_>проверено на 3 "коллегах", правда есть зависимость от того как давно испытуемый
_>читал что-то подобное, но как я говорил решать вообще не обязательно

Видимо это характеризует задачу как жутко полезную ??
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[19]: Вопросы для интеврью
От: minorlogic Украина  
Дата: 29.07.06 16:27
Оценка:
Здравствуйте, Amouse, Вы писали:

A>неправильное поведение на собеседовании,

A>логики в таком поведении нет,
A>есть только, уж простите за психоанализ, внутреннее недовольство, что это его собеседуют, а не он.

Почему ты решил что это его собеседуют ? А не он собеседует кандидатов на будущих работодателей ?.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[4]: Вопросы для интеврью
От: minorlogic Украина  
Дата: 29.07.06 16:27
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>нельзя так как он не отвчает требованием выдвинутым к контейнеру vector так что незя, подробнее можеш прочитать в книжке Маерса STL эфективное использование у него прям глава такая есть помоему


Новые сложные задачи ? Задача 27 ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: Вопросы для интеврью
От: minorlogic Украина  
Дата: 29.07.06 16:46
Оценка:
Может ченить по алгоритмике ?

Показать наивную реализацию сложения строк на C, попросить оценить сложность , попросить улучшить асимптотику ?
Преимущества хеш таблиц перед бинарными деревьями и наоборот ?
Схематично реализовать планировщик задач кторый имеет линейную сложность от к-ва задач.

Мне всегда казалось это намного полезные вещи ?

Я встречал код где люди ЧЕСНО полагали что использование char* (извлекаемое из std::string) и далее работа с низкоуровневыми функциями УСКОРИТ программу.

Хотя мне порой кажется что я устарел , это теперь мало кого интересует ..
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Вопросы для интеврью
От: Roman Odaisky Украина  
Дата: 29.07.06 17:50
Оценка: 2 (1)
Здравствуйте, _Dreamer, Вы писали:

C>>Задачка первая: есть строка, её надо извернуть задом наперёд, не выделяя много дополнительной памяти. Смотреть на то, какой тип/класс претендент использует для строки; решает через индексы, указатели или итераторы; как делает swap. Грамотный программист на C++ должен в первую очередь сказать «std::reverse» и приступить к решению только тогда, когда ему скажут, что «+1, но мы хотим посмотреть, как Вы реализуете аналогичный алгоритм»


_D>можно поинтересоваться, как бы Вы оценили вот такие решения ваших задач ?


можно я?

_D>я позволил себе опустить некоторые проверки при решении.

_D>1) реверс с указателями
_D>
_D>char * str_reverse( char * str ) // все же лучше бы итераторы, на худой конец шаблон - вдруг wchar_t?
_D>{
_D>    char temp = 0; // зачем он здесь? место ему в блоке while
_D>    char * b = str, * e = str + strlen( str ) - 1; // по-хорошему всё же это бы в 2 строчки. А также std::strlen.

_D>    while( b <= e ) // зачем нестрогое неравенство? UB при нулевой длине!
_D>        //std::swap( *b++, *e-- ); // самый очевидный вариант для меня
        // можно еще показать знание ADL, написав using std::swap; swap(...);
_D>        //(*b++ = ( temp = *b, *e )), *e-- = temp; // за такое наверно можно и по шее схлопотать =)
_D>    {
_D>        temp = *b;
_D>        *b++ = *e;
_D>        *e-- = temp;
_D>    }

_D>    return str;
_D>}

_D>void test_str_reverse()
_D>{
_D>    char str[] = {"hello world !"}; // смысл { } ?

_D>    std::cout << str << std::endl;
_D>    std::cout << str_reverse( str ) << std::endl;
_D>}
_D>


Я бы засчитал попытку. Если понадобится, ты сможешь переделать это и с итераторами, и с std::basic_string. Наличие тестирующей проги — плюс. Еще какая тонкость — напиши тест перед основной функцией, и вообще начинай с него, а потом уже функция.

C>>Задачка вторая: даны два множества целых чисел, представлены сортированными массивами. Найти их объединение (вариант: пересечение), в том же представлении.


_D>2) пересечение массивов через указатели. предполагал, что отсортированы по возрастанию, возможно с повторяющимися элементами.

_D>для простоты предполагал, что массивы одной длинны. обьединение у меня получилось еще более наивной и громоздкой, потому не стал показывать.

В первую очередь нужно вспомнить о std::set_intersection.

_D>
_D>template < int size > // std::size_t
_D>void print_array( int (&array)[size], int print_size = size ) // std::copy, std::ostream_iterator?
_D>{
_D>    for( int ii = 0; ii < print_size; ++ii )
_D>        std::cout << array[ii] << " ";
_D>    std::cout << "\n";
_D>}

// ну здесь template и итераторы так и просятся...
_D>void arrays_intr( const int *ar1, const int *ar2, int *res, const int size, int *res_size ) // почему res_size не ссылка?
_D>{
_D>    const int *ar1_end = ar1 + size, *ar2_end = ar2 + size;

_D>    *res_size = 0;
_D>    while( ar1 < ar1_end && ar2 < ar2_end ) // привыкай к !=
_D>    {
_D>        if ( *ar1 == *ar2 ) // тебе не обещали EqualityComparable (ты же ведь добавишь template и расширишь функцию для всевозможных типов, не так ли?)
_D>        {
_D>            if ( (*res_size) == 0 || *(res - 1) != *ar1 ) // Эта строчка вообще лишняя. "abbbbccdff" * "aabbccdef" = "abbccdf".
               // Эквивалентных элементов брать по минимуму из двух последовательностей.
_D>            {
_D>                *res++ = *ar1;
_D>                ++(*res_size);
_D>            }
_D>            ++ar1;
_D>            ++ar2;
_D>        }
_D>        else
_D>        {
_D>            *ar1 > *ar2 ? ++ar2 : ++ar1; // и operator > тоже не обязан присутствовать
_D>        }
_D>    }
_D>}

_D>void test_arrays()
_D>{
_D>    int ar1[] = { 1, 2, 3, 5, 5, 71 };
_D>    int ar2[] = { 0, 1, 2, 3, 4, 5 };
_D>    const int size = sizeof( ar1 ) / sizeof( ar1[0] ); // поищи на кывте ARRAY_LENGTH и удиви интервьеров :)
_D>    int res_intr[ size ] = {0};
_D>    int res_size = 0;

_D>    print_array( ar1 );
_D>    print_array( ar2 );
_D>    arrays_intr( ar1, ar2, res_intr, size, &res_size );
_D>    print_array( res_intr, res_size );
_D>}
_D>


При некоторых возможных недостатках сия программа имеет важнейшее преимущество: работает (ведь так?). Я бы, опять же, дал положительную оценку. На собеседовании и не таких граблей можно наставить

Тебе стоит изучить Generic Programming. Поищи, где-то на этом форуме были ссылки на сайт, откуда можно скачать полезные книги, писанные гуру вроде Саттера, Александреску, Мейерса и др.

Приложение 1 Так STLport делает set_intersection, если чуть упростить (не любят в STLport постфиксные операторы):
template <class InputIter1, class InputIter2, class OutputIter>
OutputIter set_intersection(InputIter1 first1, InputIter1 last1,
                            InputIter2 first2, InputIter2 last2,
                            OutputIter result)
{
    while(first1 != last1 && first2 != last2) // как думаешь, какое из этих условий с большей вероятностью сработает первым?
                                              // и, соответственно, какое из них лучше поместить в начало?
    {
        if(*first1 < *first2)
        {
            ++first1;
        }
        else if(!(*first2++ < *first1)) // равняются
        {
            *result++ = *first1++;
        }
    }

    return result;
}

Приложение 2 А так — reverse:
template <class BidirectionalIter>
void reverse_impl(BidirectionalIter first, BidirectionalIter last, bidirectional_iterator_tag)
{
    for(; first != last && first != --last; ++first)
    {
        iter_swap(first, last);
    }
}


template <class RandomAccessIter>
void reverse_impl(RandomAccessIter first, RandomAccessIter last, random_access_iterator_tag)
{
    for (; first < last; ++first)
    {
        iter_swap(first, --last);
    }
}

template <class BidirectionalIter>
void reverse(BidirectionalIter first, BidirectionalIter last)
{
    reverse_impl(first, last, typename iterator_traits<BidirectionalIter>::iterator_category());
}
До последнего не верил в пирамиду Лебедева.
Re[7]: Вопросы для интеврью
От: Jonathan  
Дата: 30.07.06 10:36
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

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


J>>скомпилируй в VC++ 6.0


АХ>В Visual C++ используется язык довольно похожий на стандартный C++,

АХ> но все же не его нельзя назвать С++. Это "C++. MS VC++ 6.0 edition".
АХ> Он вообще славен своими косяками. Никому не рекомендую.

А чем еще можно пользоватся на Windows в серъезном проекте?
(поделки от багланда не в счет)
"If everything seems under control, you're just not going fast enough"
Re[4]: Вопросы для интеврью
От: Ventalf Россия  
Дата: 30.07.06 14:23
Оценка:
Здравствуйте, 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;
_>}
_>

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

Еще раз
Автор: Ventalf
Дата: 28.07.06
: то, что специализировано два значения, наталкивает на мысль, что воспроизведен по памяти гибрид факториала и чисел Фибоначчи. Таким образом, "простейший тест на знание шаблонов" показал, что был прочитан пример про числа Фибоначчи и человек знает, что такое факториал.
Re[4]: Вопросы для интеврью
От: _Dreamer Россия  
Дата: 30.07.06 15:08
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>можно я?

Спасибо за отзыв
Общая претензия насчет шаблонов и обобщенного программирования — я специально не стал пытаться создавать универсальные решения, предполагая что так оно будет проще, я ведь не претендовал на место =)) обобщить то не проблема, хотя конечно есть тонкие места )
общий стиль решений получился Сишный, потому и указатели вместо ссылок, и namespace std не используется. для выдержанности стиля так сказать
ADL — да, не подумал, это идея.

RO>Я бы засчитал попытку. Если понадобится, ты сможешь переделать это и с итераторами, и с std::basic_string. Наличие тестирующей проги — плюс. Еще какая тонкость — напиши тест перед основной функцией, и вообще начинай с него, а потом уже функция.


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

RO>В первую очередь нужно вспомнить о std::set_intersection.

но потом же все равно будет — "мы бы хотели посмотреть как вы решите эту задачу"
да. size_t вместо int — это мое упущение, виноват.

насчет ARRAY_LENGHT — ну я бы сказал, что код в 7- 10 строк для вычисления длинны массива, которая делается 1 раз — это выпендреж ) однако, удивить конечно можно

в итоге — достаточно позитивная оценка на мой взгляд, замечания справедливы, но не так страшны
вывод — шлифовать и практиковаться. на текущий момент C++/C это не основной язык моих задач, хотя любовь давняя =)
Re[5]: Вопросы для интеврью
От: Roman Odaisky Украина  
Дата: 30.07.06 20:17
Оценка:
Здравствуйте, _Dreamer, Вы писали:

RO>>можно я?

_D>Спасибо за отзыв
_D>не стал пытаться создавать универсальные решения, предполагая что так оно будет проще [...]
Точно? Посмотри на свою версию set_intersection. Приходится возвращать количество значений по ссылке. STL-ный подход же — вернуть итератор, подвинутый на сколько надо. Проще и красивее.

_D>ADL — да, не подумал, это идея.


Собственно, вот такое:
template <class X>
void adl_swap(X& u, X& v)
{
    using std::swap;
    swap(u, v);
}

— всего лишь workaround для случая глупых девелоперов, разместивших swap в своем пространстве имен. Они должны были специализировать std::swap. (Впрочем, стандарт 98 года явно запрещал такую специализацию, так что, возможно, проблема в legacy-коде.)

_D>кстати, а интервью как бы вы проводили ? на бумаге или в IDE ?

Однозначно на бумаге. Я приводил здесь рядом статью Joel Spolski, так вот, тест на бумаге покажет в большей степени Smartness, тест на компе — Getting-Things-Done-ness. И то, и другое важно. Но в IDE все напишут идеальный strrev... только надо будет дописать (c) P. J. Plauger или в этом роде

_D>и насчет времени на такие задачи ? полчаса ? 20 минут ?


Ответ простой: не знаю. Есть вот еще такая абстрактная идея: может, заранее огласить определенное задание и требовать его выполненным идеально? С точки зрения эффективности, универсальности, Exception Safety, повторного использования кода, человекопонятности и т. п. Вот и видно будет, что человек умеет (в т. ч. и пользоваться Google ), и как он доводит дела до конца.

_D>насчет ARRAY_LENGHT — ну я бы сказал, что код в 7- 10 строк для вычисления длинны массива, которая делается 1 раз — это выпендреж ) однако, удивить конечно можно


Если его хорошо поплющить, будет 3 строчки:
template <class X, std::size_t N>
char (&arrayLengthHelper(X (&)[N]))[N];

#define ARRAY_LENGTH(a) sizeof(arrayLengthHelper(a))

_D>вывод — шлифовать и практиковаться. на текущий момент C++/C это не основной язык моих задач, хотя любовь давняя =)
...если так, то смысл?
До последнего не верил в пирамиду Лебедева.
Re[8]: Вопросы для интеврью
От: Андрей Хропов Россия  
Дата: 30.07.06 23:01
Оценка:
Здравствуйте, Jonathan, Вы писали:

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


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


J>>>скомпилируй в VC++ 6.0


АХ>>В Visual C++ используется язык довольно похожий на стандартный C++,

АХ>> но все же не его нельзя назвать С++. Это "C++. MS VC++ 6.0 edition".
АХ>> Он вообще славен своими косяками. Никому не рекомендую.

J>А чем еще можно пользоватся на Windows в серъезном проекте?

J>(поделки от багланда не в счет)

Я говорил про VC++ 6.0 (просто в первом предложении 6.0 пропустил).
В .NET 2003 и тем более 2005 все намного лучше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[20]: Вопросы для интеврью
От: Amouse Россия  
Дата: 31.07.06 06:47
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Видишь ли в чем дело, по тому какой вопрос задаст интервьюируемый тоже можно судить о его уровне

АХ>(да и вообще вопросы — это повод для разговора).
АХ>Умный интервьюер это поймет и оценит.

тема конечно флеймовая, в общем спорить не буду, а только попрошу сказать, если это не секрет конечно,
в какую компанию устроился этот товарищ после такого собеседования,
жуть как интересно
Re[8]: Вопросы для интеврью
От: Ubivetz Украина  
Дата: 31.07.06 07:21
Оценка:
Здравствуйте, Jonathan, Вы писали:

J>А чем еще можно пользоватся на Windows в серъезном проекте?

J>(поделки от багланда не в счет)

А вот это уже тема для Holy War...
Если что и поделка, так это всякие там GUI под MinGW и Metrowerks Code Warrior 8 for Win32.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
Re[12]: Вопросы для интеврью
От: Ubivetz Украина  
Дата: 31.07.06 07:21
Оценка:
Здравствуйте, Vanger84, Вы писали:


U>>Это потому, что

U>>

U>>An auto_ptr is a pointer that serves as owner of the object to which it refers (if any). As a result, an object gets destroyed automatically when its auto_ptr gets destroyed. A requirement of an auto_ptr is that its object has only one owner.


V>это язнал но понел тока сейчас..... типо когда мы попытаемся взять из контейнера auto_ptr он удалится в контейнере так?

да, типа того
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
Re[7]: Вопросы для интеврью
От: AndrewJD США  
Дата: 31.07.06 08:23
Оценка: 1 (1)
Здравствуйте, Андрей Хропов, Вы писали:

АХ>В Visual C++ используется язык довольно похожий на стандартный C++,

АХ> но все же не его нельзя назвать С++. Это "C++. MS VC++ 6.0 edition".
АХ> Он вообще славен своими косяками. Никому не рекомендую.

Для своего времени это был весьма приличный компилятор. Много есть промышленных компиляторов которым больше 8 лет и они все еще используються?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[10]: Вопросы для интеврью
От: _DAle_ Беларусь  
Дата: 01.08.06 17:17
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>Текст из книжки (Майерса стр. 80) по поводу vector<bool>


V>vector<bool> как контейнер STL обладает лишь двумя недостатками. Вопервых это вообще не контейнер STL. Во вторых он не содержит bool.

V>Объект не становится контейнером STL только потому, что кто-то назвал его таковым — он становится контейнером STL лишь при соблюдении всех требований, изложенных в разделе 23.1 Стандарт С++.

Да, как я и говорил, утверждается, что vector<bool> не удовлетворяет требованиям, предъявляемым к стандартным контейнерам. Но тем не менее vector<bool> в стандарте есть и используется, если это необходимо.

V>Текст из книжки (Майерса стр. 48) по поводу auto_ptr


V>Совет 8. Никогда не создавайте контейнеры содержацие auto_ptr


V>Контейнеры auto_ptr (COAP, Containers Of Auto_Ptr) запрещены, а программа, которая попытается их использовать не будет компилироватся. Комитет по стандартизации С++ пролижил неслыханные усилия в этои направлении.


Заметь "Контейнеры auto_ptr", то есть контейнеры, содержащие auto_ptr, а не сам auto_ptr.
Re[10]: Вопросы для интеврью
От: ЯпонИц Россия www.yaponiz.com
Дата: 02.08.06 16:23
Оценка: +2
Здравствуйте, mr_jek, Вы писали:

_>А у меня работает, может пора сменить компилятор и платформу?


_>Вы опять все пропустили мимо ушей, соль вопроса не в вычисление факториала

_>и не в вычисление на стадии компиляции, а в выборе специлизации шаблона,
_>наличие этих специлизаций, и в том как вообще работают шаблоны под этим "необычным"
_>углом.

Может тогда проще спросить читал ли кандидат Александреску?
Я не волшебник, я только учусь.
<< RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Вопросы для интеврью
От: creatman Германия  
Дата: 03.08.06 05:39
Оценка:
Здравствуйте, AndrewJD, Вы писали:

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


АХ>>В Visual C++ используется язык довольно похожий на стандартный C++,

АХ>> но все же не его нельзя назвать С++. Это "C++. MS VC++ 6.0 edition".
АХ>> Он вообще славен своими косяками. Никому не рекомендую.

AJD>Для своего времени это был весьма приличный компилятор. Много есть промышленных компиляторов которым больше 8 лет и они все еще используються?


Watcom C++ отличный компилятор и используется больше 8 лет.


Re[9]: Вопросы для интеврью
От: AndrewJD США  
Дата: 03.08.06 07:48
Оценка:
Здравствуйте, creatman, Вы писали:

C>Watcom C++ отличный компилятор и используется больше 8 лет.


И что он лучше поддерживает стандарт чем VC6?

З.Ы.
Могу конечно ошибаться, но насколько я помню, у ваткома была фиговенькая оптимизация.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[17]: Вопросы для интеврью
От: andrey.arakcheev http://arakcheev.googlepages.com
Дата: 03.08.06 08:00
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>Самое тупое занятие это беседовать с интервьювером который умеет тока задавать вопросы а ответы на них не знает.... так у меня и получилось 2 конторы мне задали вопрос что такое Абстрактный класс я естественно ответил они сказали что я не прав и не стали дальше обсуждать! и причем на мой вопрос "И что же по вашему такое абстрактный класс?" в одной конторе мне намекнули что не прелично у них спрашивать а вдругой медленно но верно дали определение интерфейса!

И какой-же, по их мнению, был правильный ответ?

V>P.S.

V>мой ответ дословно "Абстрактный класс это класс которые имеет хотябы один чисто виртуальный метод"
вот шикарное объяснение:
http://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F
Re: Вопросы для интеврью
От: last_hardcoder  
Дата: 03.08.06 08:31
Оценка:
Здравствуйте, Аноним, Вы писали:

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



Вопрос:

Представте, что вы должны проводить тестирование кандидата на должность C++ программиста и проверить его профессиональные навыки. Придумайте 5-6 вопросов (этот повторять не надо)...
Re[2]: Вопросы для интеврью
От: Centaur Россия  
Дата: 03.08.06 09:23
Оценка:
Здравствуйте, last_hardcoder, Вы писали:

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


_>Вопрос:


_>Представте, что вы должны проводить тестирование кандидата на должность C++ программиста и проверить его профессиональные навыки. Придумайте 5-6 вопросов (этот повторять не надо)...


Вот отсюда:

Occasionally I interview C++ developers. I'm always interested in how people rate themselves, so I'll occasionally ask a candidate, "On a scale from one to ten, how do you rate your C++ skills?"
[…]
I mention this for two reasons -- first of all, my favourite question to ask the "I'm a nine out of ten" people actually came up in a real-life conversation today: OK, smartypants: what happens when a virtual base class destructor calls a virtual method overridden in the derived class? And how would you implement those semantics if you were designing the compiler?
[…]
Compared to Stanley Lippmann, I give myself a six.

Published Monday, December 01, 2003 9:58 PM by EricLippert

Philip Rieck said:
After the "I'm a nine", I always ask them "what question would you ask someone who was an 8.9 that they would have difficulty answering — just general subject is fine, but a specific question is great". The real nines have a question like (I normally tech .net) "what should you look out for when casting a structure to an interface and calling methods that modify the data". The non-nines say "Something about how inheritance works".

Re[3]: Вопросы для интеврью
От: Amouse Россия  
Дата: 03.08.06 09:38
Оценка: +1
Здравствуйте, Centaur, Вы писали:

C>After the "I'm a nine", I always ask them "what question would you ask someone who was an 8.9 that they would have difficulty answering — just general subject is fine, but a specific question is great". The real nines have a question like (I normally tech .net) "what should you look out for when casting a structure to an interface and calling methods that modify the data". The non-nines say "Something about how inheritance works".[/q]


по поводу всех этих "градуировок" — более-менее верно можно проградуировать только уровень людей ниже тебя, или примерно равных.
Re[2]: Вопросы для интеврью
От: i-maverick Россия  
Дата: 04.08.06 09:04
Оценка: +1
Здравствуйте, mr_jek, Вы писали:

В данной постановке задачи не вызовется ни один конструктор и ни один деструктор.
Да и вообще какое-то кривое условие.

_>1)Порядок вызова конструкторов и деструкторов?

_>[ccode]
_>class A {};
_>class B {};
_>class D {
_> A a;
_> B b;
_>};

_>class F : public A, B {

_>};
Re[3]: Вопросы для интеврью
От: i-maverick Россия  
Дата: 04.08.06 09:37
Оценка:
Здравствуйте, Vanger84, Вы писали:

V>а что ты ответил?! и кстате у меня был вопрос что такое a = b; a == b; и что то в этом роде


И мне тоже такие вопросы задавали. В школе, на уроках информатики.
Re[7]: Вопросы для интеврью
От: i-maverick Россия  
Дата: 04.08.06 15:14
Оценка: +1
Здравствуйте, creatman, Вы писали:

_>>>
_>>>class ABC
_>>>{
_>>>public:
_>>>virtual void func() = 0 { cout << "I'm Pure Virtual" << endl;};
_>>>};
_>>>


J>>скомпилируй в VC++ 6.0


C>Напиши код который соответствует стандарту и компилируется любым компилятором. Я думаю это уточнение можно будет добавить без проблем на собеседовании.


Помнить весь стандарт наизусть — это, имхо, не для программиста работа.
Если вынести тело ф-ии из объявления — g++ скомпилит без проблем.
Re[7]: Вопросы для интеврью
От: TarasKo Голландия  
Дата: 30.05.08 10:57
Оценка:
Здравствуйте, Аноним, Вы писали:

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


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


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


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


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


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

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

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

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

В каком смысле ограниченное. А как же всякие списки типов и генераторы иерархий? Вся mpl в бусте построена на рекурсии на этапе компляции
Re: Вопросы для интеврью
От: CTpaHHoe Россия http://ctpahhoe.blogspot.com/
Дата: 30.05.08 11:13
Оценка:
Здравствуйте, <Аноним>, Вы писали:

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


а какая специфика у ваших с++ разработчиков?
... << RSDN@Home 1.2.0 alpha 4 rev. 1089>>
Windows XP 5.1.2600.131072 ... абсолютная тишина
сразу к делу, без приветов. осторожно, злой антиспам
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.