• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Тест на знание С++ и ООП.

  • Автор темы 62316e
  • Дата начала
Статус
Закрыто для дальнейших ответов.
6

62316e

Это обычный тест на знание С++ и ООП.
Код:
int a = 0;
int b = 1;
int c = a+b; //результат == 1
Постановка задачи: убрать с кода знак "=". (Желатель что бы оно потом ещё компилилось:angry:)
 
P

Partisan

Ответ:

Код:
	int a(0);
int b(1);
int c(a+b);

:angry:
 
6

62316e

Для: Partisan
Ех. Я думал тему роскрутить, поспорить немного. А бы - БАЦ и ответил(
 
P

Partisan

Для: Partisan
Ех. Я думал тему роскрутить, поспорить немного. А бы - БАЦ и ответил(

С удовольствием бы пораскручивал и поспорил тоже :angry:
Тогда задавай вопросы посложнее, а не такие :)
Хотя и такие тоже можно - другие форумчане узнают для себя полезное быстро и безболезненно :)
 
P

Partisan

Для: Partisan
:angry:
Вопрос: NULL или 0?

Хмм... обычно это одно и то же,
в заголовочных файлах компилятора обычно определено:

#define NULL 0

Но "0", если он присваивается указателю или сравнивается с указателем, означает "нулевой указатель",
а не "число 0".
То есть в памяти "нулевой указатель" может быть и не забит нулями, как число "0", а содержать какое-то другое значение.
 
6

62316e

Хмм... обычно это одно и то же,
"Б.Страуструп. Язык программирования С++. Специальное издание. Москва, Бином, 2005 г." стр. 128,
5.1.1 Ноль.
использование банального нуля вместо NULL приведет к меньшим проблемам. Если вы чувствуете, что просто обязанны определить NULL, воспользуйтесь const int NULL=0;

Дальше там уже вроди от компилятора зависит. (Уже пару лет не видел с++ - забываю понемногу:))
 
P

Partisan

"Б.Страуструп. Язык программирования С++. Специальное издание. Москва, Бином, 2005 г." стр. 128,
5.1.1 Ноль.
Дальше там уже вроди от компилятора зависит. (Уже пару лет не видел с++ - забываю понемногу:()

Да... это уже дебри :)

Я тут нарыл такой документик:


Оказывается, столько подводных камней бывает :)
 
D

DAle

Кстати, являетса ли ЦПП полностю ОО языком П?
Это смотря, что ты под этим подразумеваешь. Если является ли с++ pure OO языком, то конечно нет. Pure OO не являются и С# с Java. В отличие от Ruby.
Кстати исходный вопрос не имеет никакого отношения к OOП. Может быть ты решил, что это вызов конструкторов... На самом деле это просто такой синтаксис инициализации.
initializer:
= initializer-clause
( expression-list )
 
6

62316e

Для: DAle
Pure OO не являются и С# с Java.
Согласен. Хотя на MSDN форумах говорят по другому;)
Может быть ты решил, что это вызов конструкторов...
Да нет, я ничего не ришал - хотел немного форум розговорить. Оказалось гуру ЦПП не так уж и много на этом форуме. (Наверно после этой фразы щяс ломанутса постить:))
 
S

sdriver

1. Даны 2 буфера фиксированной длины. В начале каждого лежат данные (строчки текст), дальне до конца нули. Поменять строчки местами и перевернуть их задом наперед так, чтобы в итоге нули опять находились в конце, а текст - в начале. (Microsoft)

2a. Два игрока играют по очереди называют число, достоинство воображаемой разменной монеты. При этом нужно, чтобы это число нельзя было выплатить при помощи ранее названных монет. Проигрывает назвавший число 1. Доказать, что игра не может продолжаться бесконечно. (J.H.Conway)
2b. Если у нас уже есть монеты достоинствами x[0]...x[n] (каждого типа - неограниченное количество), то можно задать вопрос: как нам выплатить данную сумму денег S минимальным общим числом монет? Напишите соответствующую программу.

3. Может ли цепная реакция в gridgame продолжаться бесконечно? (Mark James)

4. Что делает следующий С++ код? (Matt Marcus)

struct A {
A(const volatile void*);
};

char f(A);
int f(...);

template
struct Test {
static const int value = (sizeof(f(*(T*)0)) == sizeof(char));
};


5а. Вы сидите в лодке, плавающей посреди небольшого озера. У Вас собой на борту есть большой кирпич. Если выкинуть его в озеро, уровень воды увеличится? уменьшится? останется неизменным? (популярный вопрос, на многих фирмах задают, в том числе на и Микрософте)
5b. Кусок замороженного спирта в бочке с пивом. Что станет с уровнем жидкости, когда спирт весь растает? (не помню откуда)

6. Вы отправились в прошлое на машине времени и повстречали, ну скажем, Михайло Ломоносова (варианты: А.С. Пушкина, Томаса Эдисона, Николу Теслу и т.п.) Объясните ему, что такое "Интернет". (Садистский вариант: объясните ему, что такое General Protection Failure :))

7. У вас есть 8 с виду одинаковых монет, одна из которых, тем не менее, фальшивая. Фальшивая монета чуть тяжелее, но во всем остальном идентична настоящим. У вас также есть, в лучших традициях жанра, весы с чашечками, как у богини правосудия. За какое минимальное число взвешиваний можно определить фальшивку? (популярная задача).

8. Придумайте структуру данных, которую бы мог на выходе создать парсер MAKE-файлов. Напишите (на псевдокоде) интерпретатор/исполнитель для этой структуры (Microsoft).

9. Протестируйте Save Dialog в Notepad'e (задача для микософтовских тестеров).

10. Есть три урны из тех, что содержат шары в задачках по теории вероятности. На первой написано "ЧЕРНЫЕ", на второй - "БЕЛЫЕ", на третьей - "ЧЕРНЫЕ И БЕЛЫЕ". В одной лежат белые шары, в другой - черные, в оставшейся - и черные и белые. Все надписи заведомо ложны. Разрешается достать один шар из только одной урны. Как определить в какой урне что лежит? (Microsoft)

11. Дано много картинок в формате RGB (т.е. цвет каждого пикселя представлен тремя числами: количеством красного цвета, зеленого цвета и синего цвета). Перевести картинки в 256-цветовой формат (а-ля Gif) с использованием заданной палитры (палитра одна на все картинки). Т.е. вместо каждого цвета подставить индекс ближайшего к нему цвета в палитре. Разумеется, хорошо бы это сделать как можно более эффективно. (Google)

12. Обойти двоичное дерево, НЕ используя рекурсию. (Michael Abrash)

13. На консоли Xbox адрес пикселя с координатами x, y записывается в двоичной форме как x7 y7 x6 y6 x5 y5 x5 y5 x4 y4 x3 y3 x2 y2 x1 y1 x0 y0 (где xn, yn - соответствующие биты чисел x и y). Дан пиксель с адресом a, найти адрес его соседа справа. (Visual Concepts)

14. Дана строчка текста, переставить в ней все слова в противоположном порядке, так чтобы, например, строчка "Здесь был Вася" превратилась в "Вася был Здесь". Дополнительную память выделять не разрешается. (популярная задача)

15. Дано число. Определить, является ли оно целой степенью 2. (Microsoft и другие)

16а. Дан связный список. Проверить, нет ли в нем циклов. (популярная)
16b. Сделать то же самое с двоичным деревом.

17. В вершинах равностороннего треугольника со стороной 200 метров сидит по собаке. По команде "старт!" каждая из них начинает гнаться за своей соседкой слева со скоростью 200 метров в минуту. Каждая собака бежит точно в направлении текущего положения своей (тоже, разумеется, бегущей) цели. Поэтому их траектории представляют некие сходящиеся спирали. Через какое время все собаки сойдутся, (вернее, сбегутся) в центре? (вариант популярной задачи)

18. Почему пивные банки скошены сверху и снизу? (Microsoft)

19. Как провести электричество, чтобы свет на лестнице можно было включать/выключать и с верхней площадки, и с нижней. Нарисуйте схему проводки.

20. Даны указатели на два элемента в двоичном дереве, найти их общего родителя. (Microsoft)

21. Стандартный способ "честного" деления пирога: первый участник делит, второй выбирает себе один из кусков, оставшийся кусок достается первому. Что делать если участников 3? (Мартин Гарднер?)

22. Есть круглый бассейн. От его бортика в направлении точно на север отплыла рыба. Проплыв 6 метров, она опять столкнулась с бортиком. Тогда рыба повернула на восток, проплыла еще 8 метров и опять столкнулась с бортиком. Найти диаметр бассейна. (опять Мартин Гарднер)

23. Дано число int x. Как наиболее эффективно подсчитать количество единичных битов в нем, если нельзя пользоваться дополнительной памятью. Соответствующей командой ассемблера тоже пользоваться нельзя. (впервые видел в Dr.Dobbs Journal)

24. У вас есть зажигалка и веревка. Если веревку поджечь с конца, то она вся сгорит за полчаса. Как отмерить, при помощи этих двух предметов 15 минут? Важное обстоятельство: Веревка горит неравномерно, где-то быстрее, где-то медленнее. (очень популярная задача)

25. Вы стоите посреди замерзшего озера на идеально скользком льду. Трения нет вообще. Придумайте как можно больше способов добраться до берега. (Physics Mountain)

26.a (Для мэнеджеров, наверное) Вы - добрый эльф, меткий стрелок из лука. За Вами гонится отряд из 10 орков, злах и эгоистичных тварей. К счастью, они пока далеко позади. К несчастью, через какое-то время они Вас догонят и съедят. К счастью у Вас есть стрелы, которыми Вы можете разить орков наповал. К еще большему счастью, на одного орка хватает одной стрелы и бьете Вы без промаха. К несчастью, у Вас имеется только 5 стрел. К еще большему несчастью, орки об этом знают. Как Вам спастись? (D.Friedman)
Update26.b Какие у орков могут быть контр-приемы?

27. В какие времена суток положение всех трех стрелок часов (часовой, минутной и секундной) совпадает? Разъяснение: Часы механические, и стрелки двигаются с равномерной скоростью.

28. Почему в стандарте С++ не позволено по умолчанию преобразовывать char** в const char**? Напишите пример кода, где такое преобразование (если бы его разрешили) привело бы к ошибке. (С++ faq)

29. У Вас с другом есть прямоугольный торт, из которого какой-то гад, к сожалению, уже вырезал (и съел) прямоугольный кусок. Ориентация и положение вырезанного куска могут быть совершенно произвольными. Как вам с другом разделить оставшийся торт на две равные части? (Microsoft)

30. Как передвинуть гору Фудзи? (Microsoft)

31. В Лондоне женщина вышла из автобуса около дома № 37 и спросила мужчину, в каком направлении идти к дому № 33 - по ходу автобуса или в обратную сторону? Что ей ответить?

Тесты при приеме на работу в ABBYY Software

1. Царь построил своих чиновников в колонну (лицом к затылку следующего), надел по колпаку одного из цветов — красного или белого.. и сказал поочереди назвать цвет своего колпака. Кто не угадает — смерть. Первый отвечал тот кто видит всех и т.д. попорядку.. Вопрос: о чем должны договорится чиновники чтоб минимизировать кол-во смертей.
2. Дан массив a[1],..a[N].. найти m,k (m<k) такие что a[m] + ..+a[k] — максимальна. Сложность алг-ма = N.
3. Алгоритм вычисления a^N (N- целое) за log N шагов без выделения доп. памяти.
4. На турляндском языке дан перевод чисел:
23: апвып пвадлор вапр (пишу примерно)
334: пвап по пвадалл
.. (не помню)
Переведите 35, 343..
И в качестве контрольного выстрела еще дали задачу:
5. На клетчатом поле 8х8 вырезали по клетке в противопол-х углах диагонали.. Можно ли замостить получившееся поле паркетинами 2х1? Ответ доказать.


1.Перевернуть строку, не пользуясь дополнительным буфером.
2.Перевернуть связный список.
3.Посчитать все ненулевые биты в байте.
4.Бинарный поиск.
5.Найти в строке самую длинную подстроку из одинаковых букв.

Тест по языку С++.

Из предложенных вариантов необходимо выбрать правильный. Примеры написаны в среде Microsoft Visual Studio 6.0. В комментарии необходимо прокомментировать пример. В случае если пример неработоспособен, указать причину и способы ее устранения.

1. Выбрать результат выполнения программы.

#include "iostream.h"
class A
{
private:
A() { cout<<"A"; }
};
int main(int argc, char* argv[])
{
A a;
A b;
return 0;
}

A. AA
B. A
C. Пустой экран
D. Программа не скомпилируется
E. Программа не запустится
F. Свой вариант _________

Комментарий:____________________________________________________________________
________________________________________________________________________________
_
______________________________________________________________________________

2. Выбрать результаты выполнения программы.

#include "iostream.h"
class A
{
public:
A() { cout<<"A"; }
A(char c) { cout<<c; }
~A() { cout<<"~A"; }
};
class B:public A
{
public:
B() { cout<<"B"; }
B(char c) { cout<<c; }
~B() { cout<<"~B"; }
};
int main(int argc, char* argv[])
{
B c('C');
return 0;
}

A. AC~B~A
B. AC~C~A
C. AB~B~A
D. CA~A~B
E. BA~A~B
F. Пустой экран
G. Программа не скомпилируется
H. Программа не запустится
I. Свой вариант _________

Комментарий:____________________________________________________________________
________________________________________________________________________________
_
______________________________________________________________________________

3. Выбрать результаты выполнения программы.

#include "iostream.h"
class A
{
int *a;
public:
A() { a=new int[10]; cout<<"A"; }
A(char c) { a=new int[10]; cout<<c; }
~A() { delete a; cout<<"~A"; }
};
class B:public A
{
int *b;
public:
B() { b=new int[10]; cout<<"B"; }
B(char c) { b=new int[10]; cout<<c;}
~B() { delete b; cout<<"~B"; }
};
int main(int argc, char* argv[])
{
B *b=new B('C');
A *a=b;
delete a;

return 0;
}

A. A~A
B. C~C
C. AC~C~A
D. Пустой экран
E. Программа не скомпилируется
F. Программа не запустится
G. Свой вариант _________

Комментарий:____________________________________________________________________
________________________________________________________________________________
_
______________________________________________________________________________

4. Выбрать результаты выполнения программы.

#include "iostream.h"
class A
{
public:
char ch_A;
A() {ch_A='A';};
};
class B : public A
{
public:
char ch_B;
B() {ch_B='B';};
};
class C : public A
{
public:
char ch_C;
C() {ch_C='C';};
};
class D : public B, public C
{
public:
char ch_D;
D() {ch_D='D';};
};
int main(int argc, char* argv[])
{
D d;
cout<<d.ch_A;

return 0;
}

A. A
B. Пустой экран
C. Программа не скомпилируется
D. Программа не запустится
E. Свой вариант _________

Комментарий:____________________________________________________________________
________________________________________________________________________________
_
______________________________________________________________________________

5. Выбрать результаты выполнения программы.

#include "iostream.h"
class A
{
public:
virtual Text() { cout<<"A"; }
};
class B : public A
{
public:
virtual Text() { cout<<"B"; }
};
class C : public A
{
public:
virtual Text() { cout<<"C"; }
};
int main(int argc, char* argv[])
{
B b;
C* c=(C*)&b;
A* a=(A*)&b;
c->A::Text();
c->Text();
return 0;
}

A. CA
B. BA
C. CB
D. AB
E. BC
F. AC
G. Пустой экран
H. Программа не скомпилируется
I. Программа не запустится
J. Свой вариант _________

Комментарий:____________________________________________________________________
________________________________________________________________________________
_
______________________________________________________________________________

6. Выбрать результаты выполнения программы.

#include "iostream.h"

int Func(int a,int& b, int* c)
{
(*c)++;
b++;
a++;
return a+b;
}

int main(int argc, char* argv[])
{
int a=1;
cout<<Func(a,a,&a);

return 0;
}

A. 1
B. 2
C. 3
D. 4
E. 5
F. Пустой экран
G. Программа не скомпилируется
H. Программа не запустится
I. Свой вариант _________

Комментарий:____________________________________________________________________
________________________________________________________________________________
_
______________________________________________________________________________

7. Укажите строчки, в которых есть ошибка и объясните почему.

1 int main(int argc, char* argv[])
2 {
3 typedef float(*n)();
4 goto nam;
5 nam:
6 struct nam
7 {
8 int nam;
9 float nam;
10 } nam;
11 union nam
12 {
13 int nam;
14 float f;
15 }f;
16 class f
17 {
18 int nam;
19 long f;
20 }nam;
21 enum Nm
22 {
23 val1,
24 val2,
25 f
26 }n;
27 return 0;
28 }

Комментарий:____________________________________________________________________
________________________________________________________________________________
_
______________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

8. Выбрать код, который будет компилироваться (если нужно укажите несколько вариантов)?

#include "iostream.h"
class A
{
public:
int a;
protected:
int b;
private:
int c;
};
class B:public A { };
class C:private A { };
class D:protected A { };

int main(int argc, char* argv[])
{
B b;
C c;
D d;

/*
Сюда вставляется код из вариантов ответа
*/
}

A. Никакой
B. b.a=1;
C. b.a=d.a=1;
D. b.a=d.a=c.a=1;
E. b.a=d.a=c.a= b.b=d.b=c.b=1;
F. b.a=d.a=c.a= b.b=d.b=c.b= b.c=d.c=c.c=1;

Комментарий:____________________________________________________________________
________________________________________________________________________________
_
______________________________________________________________________________
 
6

62316e

Для: sdriverДва года назад спать не мог, ибо боялся что такое приснитса. А вот прошлой зимой на одной "конторке" примерно так и грузили. (
 
S

sdriver

Для: 62316e Я тебя понимаю. Ты еще тестовые задания не видел:p
 
6

62316e

Для: sdriver Ты меня не понял) я же говорю год назад такие и увидел. Потом на Motorola подаваляся - там такие же... Те читай выше) нет смысла в таких заданиях на этом форуме в этот чяс, сам знаеш почему:huh:
 
O

osja

int main(void)
{
int i, N = 20;
for(i=0; i<N; i--)
{
printf("*");
}
}

задание (1): добавить или изменить один символ чтобы напечаталось ровно 20 звездочек
задание (2): добавить или изменить один символ чтобы напечаталась ровно 21 звездочка
задание (3): добавить или изменить один символ чтобы напечаталась ровно 1 звездочка
 
O

Ogion7

Для osja:

задание (1):
Код:
int main(void)
{
int i, N = 20;
for(i=0; i<N; N--)
{
printf("*");
}
}

можно еще так

int main(void)
{
int i, N = 20;
for(i=0; -i<N; i--)
{
printf("*");
}
}


задание (2):
наверно так :) не бить, давно в си не сидел

int main(void)
{
int i, N = 20;
for(i=0; i+N; i--)
{
printf("*");
}
}
 
D

deadhash

Для: sdriver
Есть еще такая задачка например у нас есть нерабочий адоес в памяти можно вычислить в каком чипе он находится
 
E

European

Для: deadhash
К тесту на ООП это никак не относится, а свою научную работу делайте сами
 
G

greedcat

Слушай, а скинь мне все это письмом, лады? Hа greedcat@tut.by
Да. и как можно побольше таких задачек...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!