С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.90
Fantomайзэ
0 / 0 / 0
Регистрация: 18.08.2011
Сообщений: 4
#1

Пример задания с сайта Яндекса =) - C++

22.08.2011, 14:39. Просмотров 4975. Ответов 24
Метки нет (Все метки)

Доброе время суток всем страждущим
Просматривая объявления вакансий для программистов не мог не заметить некую шаблонность что-ли, этих самых объявлений.
В них говориться что нужен специалист, профессионал.
Владение стандартными алгоритмами, знание основных структур данных , знание ООП и умение применять его на практике и тд...
А кто он ? Этот самый профессионал ?
В моем понимании профессионал это человек закончивший профильное образование и зарабатывающий себе на жизнь им. (нууу программист пишет программы )
Так же понятно что человек все на свете знать не может, а технологии довольно быстро развиваются

В связи с чем и вопрос, кто по вашему может считаться профессионалом и какими знаниями и навыками он должен обладать обязательно чтобы таковым считаться ? (Опыт само собой конечно )
Может есть какие-нибудь блин тесты ?? Там задания какие-нибудь ? Применительно к С и С++. Ну я утрирую конечно ... но решив которые можно было бы знать что ты обладаешь обязательным минимумом ...
блин все я сдаюсь
Ну вы меня поняли я надеюсь

Второй вопрос более предметный
Это тестовое задание с сайта Яндекса

Продемонстрируйте свои знания

Вопрос 1

Перечислите все проблемы, которые вы видите в данном коде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Foo
{
public:
    Foo(int j) { i=new int[j]; }
    ~Foo() { delete i; }
private:
    int* i;
};
 
class Bar: Foo
{
public:
    Bar(int j) { i=new char[j]; }
    ~Bar() { delete i; }
private:
    char* i;
};
 
 
void main()
{
    Foo* f=new Foo(100);
    Foo* b=new Bar(200);
    *f=*b;
    delete f;
    delete b;
}
вот вы какие видите ?

Благодарю за внимание, ваш Фантомайзе
Уважаемые модераторы, прошу сильно не пинать меня, если я что не так разместил О_о ... или не там О_о
Хотел экспертам кинуть но мне туда ходу нет О_о

 Комментарий модератора 
Используйте теги форматирования кода!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2011, 14:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пример задания с сайта Яндекса =) (C++):

Задача от Яндекса на знание C++ - C++
Решил, в академических целях, посмотреть какие у Яндекса есть задачки на знание C++, встретил такую: Задание - исправить код, не меняя...

WinInet - Сохранить на диске главную страницу яндекса - C++
Нужно сохранить на диске главную страницу яндекса. Я делаю так: #include <Windows.h> #include <WinInet.h> #pragma comment(lib,...

Не компилируется пример пример! - C++
Добрый день, я только-только решил начать изучать програмирование на С++! Как учебное пособие использую книгу Стефана Р. Девитса "С++ для...

Нужен пример парсинга с гугла / рамблера / яндекса - C#
Всем пример , плиз скиньте пример вот такой вод софтины : а именно парсинг ссылок с гугла / яндекса / рамблера опр. запроса который...

Преобразования keys и values списков в словарь (задания от Яндекса для Python разработчика) - Lisp
http://company.yandex.ru/job/vacancies/dev_python_main.xml (вопрос 1). За None положим nil. В качестве словаря hash-table, alist,...

Вместо сайта Яндекса открывается ВКонтакте - Удаление вирусов
почему когда я открываю яндекс у меня вместо него открывается сайт Вконтакте, и при чем не грузится, а когда открываешь просто контакт, он...

24
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.08.2011, 16:41 #16
Цитата Сообщение от Deviaphan Посмотреть сообщение
Соответственно, можно натворить делов и не заметить даже.
так а каких делов то?

Цитата Сообщение от Maxwe11 Посмотреть сообщение
вызывается конструктор копирования, что нежелательно
да, я тоже думал над этим. но даже в классе где есть выделение/освобождение памяти всё отрабатывает без ошибок..
вон asics показал что временных объектов не создаётся выходит ..
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2011, 16:44 #17
Цитата Сообщение от OstapBender Посмотреть сообщение
да, я тоже думал над этим. но даже в классе где есть выделение/освобождение памяти всё отрабатывает без ошибок..
но копировать незачем если происходит иницилизация, так что explicit как защита от кривых рук
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:50 #18
Цитата Сообщение от OstapBender Посмотреть сообщение
так а каких делов то?
Изменяешь интерфейс, по "счастливой случайности" забытые аргументы оказываются совместимы с конструктором новых параметров. Долго и радостно отлаживаешь.

Добавлено через 1 минуту
Например, заменив
C++
1
void Foo( Bar b, int a);
на
C++
1
void Foo(int a, Bar b);
компилятор не увидит никакой разницы, если у класса Bar есть конструктор Bar(int);
1
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.08.2011, 16:59 #19
Deviaphan, не понял вашего примера,
вызываются же конструкторы копирования, так при чём тут explicit вообще?

/// всё разобрался
0
Сыроежка
Заблокирован
22.08.2011, 17:21 #20
Цитата Сообщение от Fantomайзэ Посмотреть сообщение
Доброе время суток всем страждущим
Просматривая объявления вакансий для программистов не мог не заметить некую шаблонность что-ли, этих самых объявлений.
В них говориться что нужен специалист, профессионал.
Владение стандартными алгоритмами, знание основных структур данных , знание ООП и умение применять его на практике и тд...
А кто он ? Этот самый профессионал ?
В моем понимании профессионал это человек закончивший профильное образование и зарабатывающий себе на жизнь им. (нууу программист пишет программы )
Так же понятно что человек все на свете знать не может, а технологии довольно быстро развиваются

В связи с чем и вопрос, кто по вашему может считаться профессионалом и какими знаниями и навыками он должен обладать обязательно чтобы таковым считаться ? (Опыт само собой конечно )
Может есть какие-нибудь блин тесты ?? Там задания какие-нибудь ? Применительно к С и С++. Ну я утрирую конечно ... но решив которые можно было бы знать что ты обладаешь обязательным минимумом ...
блин все я сдаюсь
Ну вы меня поняли я надеюсь

Второй вопрос более предметный
Это тестовое задание с сайта Яндекса

Продемонстрируйте свои знания

Вопрос 1

Перечислите все проблемы, которые вы видите в данном коде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Foo
{
public:
    Foo(int j) { i=new int[j]; }
    ~Foo() { delete i; }
private:
    int* i;
};
 
class Bar: Foo
{
public:
    Bar(int j) { i=new char[j]; }
    ~Bar() { delete i; }
private:
    char* i;
};
 
 
void main()
{
    Foo* f=new Foo(100);
    Foo* b=new Bar(200);
    *f=*b;
    delete f;
    delete b;
}
вот вы какие видите ?

Благодарю за внимание, ваш Фантомайзе
Уважаемые модераторы, прошу сильно не пинать меня, если я что не так разместил О_о ... или не там О_о
Хотел экспертам кинуть но мне туда ходу нет О_о

Используйте теги форматирования кода!

Вы путаете разные вещи! Профессиональный программист и программист, знающий С++, - это не одно и тоже.
Профессионального программиста определяют по его коду. То есть надо смотреть его код и выслушать его объяснения, почему он так сделал. То есть ваше задание по С++ к оценке профессионализма программиста никакого отношения не имеет.

То есть программист, который может ответить более-менее правильно на ваше задание, может быть при этом никудышным программистом!
1
fasked
22.08.2011, 17:58
  #21

Не по теме:

Сыроежка, оверквотинг это нехорошо

1
Fantomайзэ
0 / 0 / 0
Регистрация: 18.08.2011
Сообщений: 4
23.08.2011, 07:19  [ТС] #22
Цитата Сообщение от Deviaphan Посмотреть сообщение
Настоящий профессионал использует не менее пятидесяти смайликов на каждую тысячу слов.

Добавлено через 3 минуты
И, если придираться, то конструкторы без explicit объявлены.
Какой вы придирчивый молодой человек
0
schdub
2959 / 1304 / 239
Регистрация: 19.01.2009
Сообщений: 3,431
Завершенные тесты: 1
23.08.2011, 13:08 #23
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Foo
{
public:
    Foo(int j) { i=new int[j]; } // [1] конструктор позволяет непреднамеренное
                                 //     преобразование   
    ~Foo() { delete i; } // [2] нужно вызывать оператор delete[] для массивов
                         //     а не для скаляров, см. выделение памяти в
                         //     конструкторе
private:
    int* i;
 
    // [3] нужно запретить конструктор копирования и оператор копирования
    //     определив их в private части класса, чтобы предотвратить
    //     побочные эффекты сгенерированных компилятором побитовых версий
    Foo(const Foo &);
    Foo & operator= (const Foo &);
};
 
class Bar: Foo
{
public:
    Bar(int j)   // [4] то же что и [1]
        : Foo(j) // [5] т.к. коструктор по умолчанию не определен, то
                 //     необходимо явно вызывать данную версию конструктора
                 //     базового класса
    { i=new char[j]; } 
    ~Bar() { delete i; } // [6] то же что [2] см. описание в Foo
private:
    char* i;
    // [7] то же что [3] см. описание в Foo
    Bar(const Bar &);
    Bar & operator= (const Bar &);
};
 
int main() // [8] по стандарту нужно чтобы функция main() возвращала int
{
    Foo* f=new Foo(100);
    Foo* b=new Bar(200); // [9] т.к. используется private наследование, то
                         //     явное приведение тут необходимо, иначе ошибка
                         //     'Foo' is an inaccessible base of 'Bar'
 
    *f=*b;               // [10] срезка
 
    delete f;
    delete b;            // [11] т.к. деструктор Foo не объявлен как виртальный,
                         //      то имеем здесь неопределенное поведение
}
1
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
23.08.2011, 13:16 #24
Объясните, кто разбирается.
Не стоит ли занести в класах копировальные конструкторы в private, что бы ограничить юзера от них?
В противном случае компилятор наградит нас своим копированием, и копироватся будет не информация указателя, а сам указатель и в случае
C++
1
2
Foo f = new Foo(2);
Foo f2 (f);
вызовется два деструктора, которые попытаются удалить один и тот же указатель.

Am I right or am I right?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 13:27 #25
Цитата Сообщение от Mee Посмотреть сообщение
Не стоит ли занести в класах копировальные конструкторы в private, что бы ограничить юзера от них?
Скорее, нужно реализовать конструктор копирования.
1
23.08.2011, 13:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2011, 13:27
Привет! Вот еще темы с ответами:

Неправильная структура сайта в вебмастере яндекса - Yandex
Здравствуйте! Есть сайт probrelok.ru. Впервые решил сделать сайт на php. Добавлен в поиск 7 марта. Изначально структура сайта в вебмастере...

Строка поиска от гугла и яндекса для сайта - HTML, CSS
Здравствуйте, как мне вставить поисковую строку гугла и яндекса к себе на сайт? Что бы поиск именно осуществлялся не по моему сайту, а по...

Поднятие сайта с нуля в 5 -10 то яндекса. Как и сколько? - Yandex
Всем здравствуйте! Как думаете во сколько обойдётся поднятие сайта в топ 5 и 10 яндекса ? (фотографии и описание будет оригинальное т.е...

Удаление сайта в системе ucoz, созданный на базе narod.ru от Яндекса - Бесплатный хостинг
Здравствуйте, ребята. У меня возникла следующая проблема. Несколько лет назад создал небольшой сайт на Narod.ru (изучал работу с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.