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 );
}


да, и сколько времени Вы бы дали на решение задач ?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.