Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 10.09.2011, 04:45   #1
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Лампочка Почувствуй себя ламьем

Мр.Ф прислал ссылку на тест
http://www.proprofs.com/quiz-school/...andidate-tests
У мну 2 из 6. При чем я даже не уверен, где именно точно правильно ответил. Печально.
__________________

(Offline)
 
Ответить с цитированием
Эти 11 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
ABTOMAT (10.09.2011), baton4ik (10.09.2011), Dream (10.09.2011), falcon (10.09.2011), Mhyhr (10.09.2011), moka (10.09.2011), Randomize (10.09.2011), Reizel (10.09.2011), Reks888 (10.09.2011), SBJoker (10.09.2011), St_AnGer (10.09.2011)
Старый 10.09.2011, 15:00   #2
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Почувствуй себя ламьем

Хм.... странно я два раза нашару прошёл тест результат 2 of 6.

развод походу

Upd. А нет! повезло (ну чтобы два раза хмм...).Эт не развод.
(Offline)
 
Ответить с цитированием
Старый 10.09.2011, 15:01   #3
Nuprahtor
Элита
 
Аватар для Nuprahtor
 
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений
(для 3,923 пользователей)
Ответ: Почувствуй себя ламьем

6 из 6
Ошибок
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо Nuprahtor за это полезное сообщение:
Dream (10.09.2011), LLI.T.A.L.K.E.R. (11.09.2011), moka (10.09.2011), Mr_F_ (10.09.2011), St_AnGer (10.09.2011)
Старый 10.09.2011, 17:35   #4
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Почувствуй себя ламьем




__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Антихрист (14.09.2011), Mr_F_ (10.09.2011), Reks888 (10.09.2011), Taugeshtu (10.09.2011)
Старый 10.09.2011, 18:36   #5
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Почувствуй себя ламьем

2 из 6.
Блин почему не пишут что неправильно было.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
NitE (10.09.2011)
Старый 10.09.2011, 19:16   #6
falcon
Разработчик
 
Аватар для falcon
 
Регистрация: 12.07.2008
Сообщений: 523
Написано 196 полезных сообщений
(для 470 пользователей)
Ответ: Почувствуй себя ламьем

http://www.quizful.net/test
советую вот этот ресурс.
после прохождения есть ответы и коментарии чо как и почему.
настоятельно советую помимо чтения книг и стандарта, почаще проходить такие вещи, мозги стимулирует (да и на практике некоторые задачки попадаются, но не часто конечно)
(Offline)
 
Ответить с цитированием
Эти 7 пользователя(ей) сказали Спасибо falcon за это полезное сообщение:
.Squid (11.09.2011), den (11.09.2011), FireOwl (11.09.2011), LLI.T.A.L.K.E.R. (11.09.2011), moka (10.09.2011), Reizel (11.09.2011), SBJoker (10.09.2011)
Старый 11.09.2011, 01:24   #7
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Почувствуй себя ламьем

17 из 100
1 из 6

мудрёный этот с++
это как изучить китайский, чтобы программировать. А зачем это надо?

пытался понять по логике, но корючки языка не знаю.
(Offline)
 
Ответить с цитированием
Старый 11.09.2011, 01:36   #8
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Почувствуй себя ламьем

Некорректное сравнение, имхо. Скорее, это как выучить иностранный язык на уровне филолога + носителя языка. Круто, но практический смысл теряется, т.к. можно успешно использовать язык и с гораздо меньшим словарным запасом. Возможно, речь будет не настолько изящна, но с другой стороны, и завернуть что-то заумное и непонятное не получится.
__________________

(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
falcon (11.09.2011), HolyDel (11.09.2011), LLI.T.A.L.K.E.R. (11.09.2011), Reizel (11.09.2011)
Старый 11.09.2011, 01:47   #9
falcon
Разработчик
 
Аватар для falcon
 
Регистрация: 12.07.2008
Сообщений: 523
Написано 196 полезных сообщений
(для 470 пользователей)
Ответ: Почувствуй себя ламьем

.Squid
Круто, но практический смысл теряется
часто приходится спорить по поводу требуемых навыков, до какой степени действительно стоит погружаться в язык и т.п.
и на самом деле смысл не теряется. В реальной практике гуру языка действительно нужны, но их в команде много не надо, ибо они дорого стоят, а с основной массой задачь и правда справятся и менее прокаченые люди.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (11.09.2011)
Старый 11.09.2011, 14:23   #10
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Почувствуй себя ламьем

2 из 6. А там вообще больше можно набрать? =)
(Offline)
 
Ответить с цитированием
Старый 11.09.2011, 17:43   #11
falcon
Разработчик
 
Аватар для falcon
 
Регистрация: 12.07.2008
Сообщений: 523
Написано 196 полезных сообщений
(для 470 пользователей)
Ответ: Почувствуй себя ламьем

http://www.proprofs.com/quiz-school/...uname=falco n
Samodelkin ды как бы можно..
я вот чо не понял, вопрос там такой:
class A
{
public:
    A(){ cout<<"1"<<endl; }
    ~A() { cout<<"2"<<endl; }
}

class B:public A
{
    B() { cout<<"3"<<endl; }
    ~B() { cout<<"4"<<endl; }
}

void foo( A a )
{
}
что происходит при вызове func? Вроде ж должен вызываться A( A& ) для аргумента, не?
(Offline)
 
Ответить с цитированием
Старый 11.09.2011, 20:20   #12
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: Почувствуй себя ламьем

Под спойлером, по просьбам общественности, Кнайтэ дает ответы на все задачи с объяснением почему и как, а так же рассказывает, почему этот тест говно и его составил мудак не разбирающийся в стандарте С++.
Алсо для начала вброс:

Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 811
Размер:	145.4 Кб
ID:	14793

Итак, скандалы, интриги, расследования:

1.
Нажмите на изображение для увеличения
Название: q3_task.PNG
Просмотров: 801
Размер:	6.6 Кб
ID:	14794
Верный ответ: a will have accidental value
Почему: члены объекта будут проинициализированны строго в порядке их объясления (и уничтожены в обратном). Поэтому нет разницы, что с вписке инициализаторов мы написали b перед а, а потом заюзали в инициализации а. Все равно а проинициализируется первым. Т.к. стандарт не говорит нам, чем должны инициализироваться скалярные типы, значение а будет равно какому-то мусору (значение b до инициализации) - 2. Точное значение зависит от платформы. В общем-то, в некоторых условиях можно словить и ошибку компиляции (есть там такой вариант), т.к. компилятор может кинуть ворнинг на неверный порядок инициализаторов, а ворнинги могут считаться и ошибками. Но это очень и очень маловероятно.

2.
Нажмите на изображение для увеличения
Название: q5_task.PNG
Просмотров: 851
Размер:	13.4 Кб
ID:	14795
(вариация где надо вбить ответ)
Верный ответ: 112.
Почему: при new Derived() сперва вызовется конструктор базового класса. В нем дернется виртуальный метод. Но. На этом этапе, объект еще не мутировал в Derived и является типа Base (пункт 10.4.6), поэтому вызовется реализация Base::method() (а если бы это была чисто виртуальная функция мы либо сразу отхватили Segmentation Fault, либо что хуже поломали бы стэк и получили фиерические баги в самых неожиданных местах). В метод будет передано 0, и он вернет 0 + 1 = 1, что и будет выведено. Далее произойдет мутация в Derived и будет выполнен его конструктор. Вызовется Derived::method() с аргументом 2, он вернет 2 - 1 = 1, что и будет выведенно. Далее это все ляжет в автопоинтер, это все херня и ни на что не влияет, исключая то, что как и полагается автопоинтеру, он уничтожит объект которым владеет при выходе из области видимости. Т.е. шаблон автопоинтера инстанциирован с типом Base, произойдет вызов деструктора Base::~Base(). Т.к. деструктор не виртуальный (а он обязан им быть) не произойдет вызова Derived::~Derived(), поэтому в результате будет выведено 2. После чего программа захлопнется. Итог - 112.

3.
Нажмите на изображение для увеличения
Название: q4_task(1).PNG
Просмотров: 845
Размер:	13.4 Кб
ID:	14796
(тут нас спрашивают в чем же проблема этого кода)
Правильный ответ: Base class should declare virtual desctructor
Почему: ну, это было выше, объект типа Derived будет уничтожен как Base, что может привести к утечкам памяти и неверному поведению. Поэтому надо сделать деструктор виртуальным. Вообще, его надо делать виртуальным и у отнаследованного класса, но это не важно. Алсо тут проблема вызова виртуальных методов из конструктора и деструктора., этим можно себе прострелить ногу.

4.
Нажмите на изображение для увеличения
Название: q7_task.PNG
Просмотров: 810
Размер:	2.2 Кб
ID:	14797
ПравильныйТипа правильный ответ: Compilation error because const_cast must be called as const_cast(i)
Почему: вообще этот вопрос придумал идиот. Во-первых, я подозреваю что там должно быть Compilation error because const_cast must be called as const_cast<int>(i). В таком случае у меня для него плохие новости, оно вернет rvalue, и, конечно же, в него невозможно присвоить значение. Еще вариант - Compilation error because const_cast must be called as *const_cast<int*>(&i). О да, мы сможем присвоитьзначение. Но тогда у меня еще более плохая новость для автора вопроса - пункт 7.1.5.1.4 стандарта, который говорит нам, что изменение константы это UB. Все. Никаких других вариантов, мы должны тут ответить вариантом об UB, но он неверный, очень приятно.

5.
Нажмите на изображение для увеличения
Название: q6_task(1).PNG
Просмотров: 842
Размер:	6.3 Кб
ID:	14798
ПравильныйТипа правильный ответ: 132242
Почему: сразу - автор неимевший дела с кросс-платформенным программирвоанием мудак и ответ действителен только для MSVC, другой компилятор скорее всего выдаст 13242. Теперь растолковывавние: При конструировании объекта типа B сперва вызовется конструктор А (выход 1), потом уже конструктор В (выхлоп 3). После этого что поизодйет в студии - она создаст проксирующий объект типа А из В (используя конструктор копирования A(const A & other), который не определен и, следовательно, ничего не выведет, т.к. будет использован сгенерированный компилятором, тупо копирующий все поля класса), а потом из него скопирует этим же конструктором копирования аргумент для func (и опять конструктор ничего не выведет). После этого функция отработает свое (тупо ничего не сделает) и аргумент будет убит. Вызоается деструктор А (выхлоп 2). После этого убъется проксирующий объект (опять 2). Вот это место никак не оговоренно стандартом и проксирующий объект инициатива студии (понятия не имею зачем, может есть какие-то реальные причины). Тот же GCC не будет создавать ничего лишнего и напрямую скопирует аргумент из b, поэтому и выведет только одну двойку. Далее все просто и по стандарту - вызовется деструктор B (выхлоп 4) и за них деструктор базового класса А (выхлоп 2). Поэтому и получает 132(2)42.

6.
Нажмите на изображение для увеличения
Название: q8_task.PNG
Просмотров: 786
Размер:	12.5 Кб
ID:	14799
Правильный ответ: Provide implementation of copy constructor and assignment operator
Почему: тут думаю все ответили правильно, ибо тривиальный вопрос. Хотя на самом деле хватит конструктора копирования, т.к. String b = a; это вызов конструктора копирования, а не вызов дефолтного конструктора и следом оператора присваивания. А нужно это все для того, чтобы у каждой строки был свой буфер символов (который уничтожится в деструкторе).

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


Таким образом, человеки посчитавшие этот тест неибацо сложным могут облить себя бензином и поджечьидут курить стандарт С++
(Offline)
 
Ответить с цитированием
Эти 16 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
ANIK123 (10.10.2011), baton4ik (11.09.2011), den (11.09.2011), Dream (11.09.2011), falcon (11.09.2011), ffinder (11.09.2011), Harter (15.09.2011), HolyDel (11.09.2011), LLI.T.A.L.K.E.R. (11.09.2011), moka (11.09.2011), Mr_F_ (11.09.2011), NitE (11.09.2011), pepel (11.09.2011), Reks888 (11.09.2011), SBJoker (11.09.2011), St_AnGer (11.09.2011)
Старый 11.09.2011, 20:23   #13
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Почувствуй себя ламьем

а так же рассказывает, почему этот тест говно и его составил мудак не разбирающийся в стандарте С++.
кнайтэ вернулся
(Offline)
 
Ответить с цитированием
Старый 11.09.2011, 20:33   #14
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Почувствуй себя ламьем

Олсо этот тест выводит рандомные вопросы в рандомном порядке. Хотя думается их там мало.
__________________
(Offline)
 
Ответить с цитированием
Старый 11.09.2011, 22:14   #15
falcon
Разработчик
 
Аватар для falcon
 
Регистрация: 12.07.2008
Сообщений: 523
Написано 196 полезных сообщений
(для 470 пользователей)
Ответ: Почувствуй себя ламьем

про прокси объект - новость, спс))
про константность вопрос действительно совсем косячный, да..
а ваще, подобного рода вопрсы самое то, для собеседования по плюсам, имхо)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:37.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com