Здравствуйте, amberovsky, Вы писали:
A>Здравствуйте.
A>При попытке устроится в одну фирму прислали "удалённое" тестовое задание.
Мне пришло такое задание от DrWeb. Кто-то еще так развлекается?
В общем, побывал я в DrWeb на собеседовании и даю правильный с их точки зрения ответ:
По первому заданию:
void f_drWeb( size_t n )
{
using namespace std;
vector<char> a (n), b(n);
g( &a[0], &b[0], n );
cout<<endl<<"func f_drWeb said:"<<"a="<<&a[0]<<" b="<<&b[0];
};
По второму заданию:
int main(int argc, char* argv[])
{
const char *locId="Russian";
// Для C
if(argc>1)
{
printf("\n printf said: %s", argv[1]);
setlocale(LC_ALL, "Russian"); // "Russian" - для винды и русского. Это необходимо для C,
// но недостаточно для wcout
}
//Для потоков
locale loc(locId);
locale::global(loc); // Это необходимо для wcout(setlocale недостаточно).
wcout.imbue(loc); // Применяем к wcout, потому что wcout УЖЕ открыт. Действует и на stdout
// так что в принципе можно обойтись и без setlocale
if(argc>1)
{
wcout<<endl<<"wcout said:"<<argv[1];
};
return 0;
}
A>A>Какие проблемы Вы видите в этих фрагментах кода и как предлагаете их решать?
A>1.
A>void g( char *, char *, size_t );
A>void f( size_t n )
A>{
A> char *a = new char[n];
A> char *b = new char[n];
A> g( a, b, n );
A> delete [] b;
A> delete [] a;
A>}
A>2.
A>int main(int argc, char* argv[])
A>{
A> if( argc > 1 )
A> printf( argv[1] );
A> return 0;
A>}
A>
Кроме того, можете скачать
http://piterludi.com/fordeveloponbox/stlfuns.zip
В этом проекте (VC++ 2008) я продемонстрировал также поведение виртуальных функций, вызываемых из конструкторов и деструкторов — вопрос,
который почему-то нередко возникает на собеседованиях. Также немного побаловался с промышленным дизайном для этой же задачи.
Хотя по ходу собеседования я и сделал вывод, что промышленный дизайн и общепринятые подходы они считают
ненужным усложнением и ретроградством.
Возможно, я ошибаюсь: все-таки собеседование проходило в стиле "опусти кандидата",
а при таком стиле язвительно критикуется любое высказывание.
Вероятно, предполагается, что осознавший свое ничтожество и полностью дезориентированный кандидат
преисполнится безумной радости, если ему все-таки сделают предложение поработать в такой новаторской фирме.
Просто держите в голове, что "опустить" можно любого: конкретно моих "экзаменаторов" можно было бы легко "опустить" как минимум
по знаниям паттернов проектирования (особенно сoncurrency) и подходам к разработке сложных систем. Никто не может знать всего.
Если будете у них на собеседовании — в момент, когда от вас потребуют что-либо написать, постарайтесь не отвлекаться
на вопросы "экзаменаторов", "заторапливание" и попытки вывести вас из себя. Иначе наделаете таких ляпов, что самому потом будет стыдно.