Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.90
Fantomайзэ
0 / 0 / 0
Регистрация: 18.08.2011
Сообщений: 4
22.08.2011, 14:39     Пример задания с сайта Яндекса =) #1
Доброе время суток всем страждущим
Просматривая объявления вакансий для программистов не мог не заметить некую шаблонность что-ли, этих самых объявлений.
В них говориться что нужен специалист, профессионал.
Владение стандартными алгоритмами, знание основных структур данных , знание ООП и умение применять его на практике и тд...
А кто он ? Этот самый профессионал ?
В моем понимании профессионал это человек закончивший профильное образование и зарабатывающий себе на жизнь им. (нууу программист пишет программы )
Так же понятно что человек все на свете знать не может, а технологии довольно быстро развиваются

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

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

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

Вопрос 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2011, 14:39     Пример задания с сайта Яндекса =)
Посмотрите здесь:

Задания со строками C++
C++ Задания по C++
Пример задания C++
WinInet - Сохранить на диске главную страницу яндекса C++
Задача от Яндекса на знание C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
22.08.2011, 14:49     Пример задания с сайта Яндекса =) #2
вот вы какие видите ?
самая важная - отсутсвие форматирования
несоответсвие форм операторов new и delete, ub
Цитата Сообщение от Fantomайзэ Посмотреть сообщение
class Bar: Foo
разве это не синтаксическая ошибка или компилятор по умолчанию поставит туда public уже не помню? но если он ставит туда что-то кроме public, то это ошибка

Цитата Сообщение от Fantomайзэ Посмотреть сообщение
Bar(int j) { i=new char[j]; }
не вызывается конструктор суперкласса
в наследнике и родителе переменные с одинаковым именем
деструктор не виртуальный, утечка памяти
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
22.08.2011, 14:57     Пример задания с сайта Яндекса =) #3
Цитата Сообщение от LosAngeles Посмотреть сообщение
разве это не синтаксическая ошибка или компилятор по умолчанию поставит туда public уже не помню? но если он ставит туда что-то кроме public, то это ошибка
По умолчанию private, а в чем ошибка?

Цитата Сообщение от LosAngeles Посмотреть сообщение
в наследнике и родителе переменные с одинаковым именем
По-моему конфликтов быть не должно, Bar не видит переменную i из Foo.

+ ко всему еще нужно определить конструктор копирования в Foo, т.к. в классе есть члены-указатели.

Добавлено через 1 минуту
оператор присваивания я хотел сказать
Fantomайзэ
0 / 0 / 0
Регистрация: 18.08.2011
Сообщений: 4
22.08.2011, 15:02  [ТС]     Пример задания с сайта Яндекса =) #4
Цитата Сообщение от LosAngeles Посмотреть сообщение
самая важная - отсутсвие форматирования
несоответсвие форм операторов new и delete, ub

разве это не синтаксическая ошибка или компилятор по умолчанию поставит туда public уже не помню? но если он ставит туда что-то кроме public, то это ошибка

не вызывается конструктор суперкласса
в наследнике и родителе переменные с одинаковым именем
деструктор не виртуальный, утечка памяти
Насколько мне не изменяет память по умолчанию компилятор должен сгенерить спецификатор доступа по наследованию private О_о ... вроде бы ..
Суперкласс енто что за зверь такой ?! О_о Это базовый что-ли класс... ну в смысле родитель ? Нада погуглить впервый раз слышу такое
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.08.2011, 15:49     Пример задания с сайта Яндекса =) #5
давно как-то смотрел это задание ...
1) наследование закрытое
2) нет конструктора по умолчанию для Foo
3) main типа void
4) вместо delete[] delete
5) не говорящие имена переменных + имена в баз. и произв. классах совпадают
6) не перегружен оператор присваивания для Foo

что щас увидел

7) ах да конечно, деструктор не виртуальный
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:00     Пример задания с сайта Яндекса =) #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Fantomайзэ Посмотреть сообщение
какими знаниями и навыками он должен обладать
Настоящий профессионал использует не менее пятидесяти смайликов на каждую тысячу слов.

Добавлено через 3 минуты
И, если придираться, то конструкторы без explicit объявлены.
LosAngeles
Заблокирован
22.08.2011, 16:09     Пример задания с сайта Яндекса =) #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
По умолчанию private, а в чем ошибка?
тогда это ошибка потому что наследование приватное
Цитата Сообщение от Kastaneda Посмотреть сообщение
По-моему конфликтов быть не должно, Bar не видит переменную i из Foo.
с компилятором конфликтов нет, с програмистом который это написал - есть
Цитата Сообщение от Fantomайзэ Посмотреть сообщение
ну в смысле родитель
да
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.08.2011, 16:10     Пример задания с сайта Яндекса =) #8
Deviaphan,
вот кстати, никогда особо не понимал зачем всё таки этот explicit.
хороший тон и все дела , но какие реальные баги могут возникнуть ?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:12     Пример задания с сайта Яндекса =) #9
Цитата Сообщение от LosAngeles Посмотреть сообщение
тогда это ошибка потому что наследование приватное
Приватное наследование это не ошибка.)

Добавлено через 1 минуту
Цитата Сообщение от OstapBender Посмотреть сообщение
но какие реальные баги могут возникнуть ?
C++
1
Foo f = 3;
Вместо явного
C++
1
Foo f = Foo(3);
Соответственно, можно натворить делов и не заметить даже.
LosAngeles
Заблокирован
22.08.2011, 16:17     Пример задания с сайта Яндекса =) #10
Цитата Сообщение от Deviaphan Посмотреть сообщение
Приватное наследование это не ошибка.)
это почти всегда сигнализирует об ошибке проектирования, вместо этого существует агрегирование
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2011, 16:22     Пример задания с сайта Яндекса =) #11
Цитата Сообщение от OstapBender Посмотреть сообщение
вот кстати, никогда особо не понимал зачем всё таки этот explicit.
хороший тон и все дела , но какие реальные баги могут возникнуть ?
при неявной иницилизации
C++
1
Foo obj = 3;
вызывается конструктор копирования, что нежелательно
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
22.08.2011, 16:25     Пример задания с сайта Яндекса =) #12
Maxwe11, Да вроде нет - http://liveworkspace.org/code/3a640b...ebafecc29d76e6
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:30     Пример задания с сайта Яндекса =) #13
Цитата Сообщение от LosAngeles Посмотреть сообщение
это почти всегда сигнализирует об ошибке проектирования
boost::noncopyable, например. И никакого агрегирования.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2011, 16:32     Пример задания с сайта Яндекса =) #14
там у g++ версия выше, а сдесь кажись 4.4.1
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:33     Пример задания с сайта Яндекса =) #15
Цитата Сообщение от asics Посмотреть сообщение
Да вроде нет
Это уже компилятор мог наоптимизировать.) Суть не в этом. Можно случайно создать объект, того не желая. Точнее, ошибочно создать его.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.08.2011, 16:41     Пример задания с сайта Яндекса =) #16
Цитата Сообщение от Deviaphan Посмотреть сообщение
Соответственно, можно натворить делов и не заметить даже.
так а каких делов то?

Цитата Сообщение от Maxwe11 Посмотреть сообщение
вызывается конструктор копирования, что нежелательно
да, я тоже думал над этим. но даже в классе где есть выделение/освобождение памяти всё отрабатывает без ошибок..
вон asics показал что временных объектов не создаётся выходит ..
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2011, 16:44     Пример задания с сайта Яндекса =) #17
Цитата Сообщение от OstapBender Посмотреть сообщение
да, я тоже думал над этим. но даже в классе где есть выделение/освобождение памяти всё отрабатывает без ошибок..
но копировать незачем если происходит иницилизация, так что explicit как защита от кривых рук
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 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);
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.08.2011, 16:59     Пример задания с сайта Яндекса =) #19
Deviaphan, не понял вашего примера,
вызываются же конструкторы копирования, так при чём тут explicit вообще?

/// всё разобрался
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2011, 17:21     Пример задания с сайта Яндекса =)
Еще ссылки по теме:

Задания по с++ C++
Не компилируется пример пример! C++

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

Или воспользуйтесь поиском по форуму:
Сыроежка
Заблокирован
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;
}
вот вы какие видите ?

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

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

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

То есть программист, который может ответить более-менее правильно на ваше задание, может быть при этом никудышным программистом!
Yandex
Объявления
22.08.2011, 17:21     Пример задания с сайта Яндекса =)
Ответ Создать тему
Опции темы

Текущее время: 18:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru