Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/39: Рейтинг темы: голосов - 39, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 18.08.2011
Сообщений: 4

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

22.08.2011, 14:39. Показов 8673. Ответов 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.08.2011, 14:39
Ответы с готовыми решениями:

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

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

Пример того, как можно быстро поднять тИЦ яндекса
Убрано модератором тема закрыта

24
Заблокирован
22.08.2011, 14:49
вот вы какие видите ?
самая важная - отсутсвие форматирования
несоответсвие форм операторов new и delete, ub
Цитата Сообщение от Fantomайзэ Посмотреть сообщение
class Bar: Foo
разве это не синтаксическая ошибка или компилятор по умолчанию поставит туда public уже не помню? но если он ставит туда что-то кроме public, то это ошибка

Цитата Сообщение от Fantomайзэ Посмотреть сообщение
Bar(int j) { i=new char[j]; }
не вызывается конструктор суперкласса
в наследнике и родителе переменные с одинаковым именем
деструктор не виртуальный, утечка памяти
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.08.2011, 14:57
Цитата Сообщение от LosAngeles Посмотреть сообщение
разве это не синтаксическая ошибка или компилятор по умолчанию поставит туда public уже не помню? но если он ставит туда что-то кроме public, то это ошибка
По умолчанию private, а в чем ошибка?

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

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

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

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

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

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

7) ах да конечно, деструктор не виртуальный
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:00
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Fantomайзэ Посмотреть сообщение
какими знаниями и навыками он должен обладать
Настоящий профессионал использует не менее пятидесяти смайликов на каждую тысячу слов.

Добавлено через 3 минуты
И, если придираться, то конструкторы без explicit объявлены.
3
Заблокирован
22.08.2011, 16:09
Цитата Сообщение от Kastaneda Посмотреть сообщение
По умолчанию private, а в чем ошибка?
тогда это ошибка потому что наследование приватное
Цитата Сообщение от Kastaneda Посмотреть сообщение
По-моему конфликтов быть не должно, Bar не видит переменную i из Foo.
с компилятором конфликтов нет, с програмистом который это написал - есть
Цитата Сообщение от Fantomайзэ Посмотреть сообщение
ну в смысле родитель
да
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
22.08.2011, 16:10
Deviaphan,
вот кстати, никогда особо не понимал зачем всё таки этот explicit.
хороший тон и все дела , но какие реальные баги могут возникнуть ?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:12
Цитата Сообщение от LosAngeles Посмотреть сообщение
тогда это ошибка потому что наследование приватное
Приватное наследование это не ошибка.)

Добавлено через 1 минуту
Цитата Сообщение от OstapBender Посмотреть сообщение
но какие реальные баги могут возникнуть ?
C++
1
Foo f = 3;
Вместо явного
C++
1
Foo f = Foo(3);
Соответственно, можно натворить делов и не заметить даже.
0
Заблокирован
22.08.2011, 16:17
Цитата Сообщение от Deviaphan Посмотреть сообщение
Приватное наследование это не ошибка.)
это почти всегда сигнализирует об ошибке проектирования, вместо этого существует агрегирование
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.08.2011, 16:22
Цитата Сообщение от OstapBender Посмотреть сообщение
вот кстати, никогда особо не понимал зачем всё таки этот explicit.
хороший тон и все дела , но какие реальные баги могут возникнуть ?
при неявной иницилизации
C++
1
Foo obj = 3;
вызывается конструктор копирования, что нежелательно
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
22.08.2011, 16:25
Maxwe11, Да вроде нет - http://liveworkspace.org/code/... ecc29d76e6
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:30
Цитата Сообщение от LosAngeles Посмотреть сообщение
это почти всегда сигнализирует об ошибке проектирования
boost::noncopyable, например. И никакого агрегирования.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.08.2011, 16:32
там у g++ версия выше, а сдесь кажись 4.4.1
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:33
Цитата Сообщение от asics Посмотреть сообщение
Да вроде нет
Это уже компилятор мог наоптимизировать.) Суть не в этом. Можно случайно создать объект, того не желая. Точнее, ошибочно создать его.
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
22.08.2011, 16:41
Цитата Сообщение от Deviaphan Посмотреть сообщение
Соответственно, можно натворить делов и не заметить даже.
так а каких делов то?

Цитата Сообщение от Maxwe11 Посмотреть сообщение
вызывается конструктор копирования, что нежелательно
да, я тоже думал над этим. но даже в классе где есть выделение/освобождение памяти всё отрабатывает без ошибок..
вон asics показал что временных объектов не создаётся выходит ..
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.08.2011, 16:44
Цитата Сообщение от OstapBender Посмотреть сообщение
да, я тоже думал над этим. но даже в классе где есть выделение/освобождение памяти всё отрабатывает без ошибок..
но копировать незачем если происходит иницилизация, так что explicit как защита от кривых рук
1
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
22.08.2011, 16:50
Цитата Сообщение от OstapBender Посмотреть сообщение
так а каких делов то?
Изменяешь интерфейс, по "счастливой случайности" забытые аргументы оказываются совместимы с конструктором новых параметров. Долго и радостно отлаживаешь.

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

/// всё разобрался
0
Заблокирован
22.08.2011, 17:21
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.08.2011, 17:21
Помогаю со студенческими работами здесь

Пояснение задания и пример диаграммы
Я не понимаю задания, а именно что от меня хотят? Нужно создать несколько форм или в одной форме несколькой полей и по ним рассчитать...

Скиньте кто-нибудь пример тех. задания (ТЗ)
Я начинающий программер в 1С... Дали задание прихреначить готовую конфигурацию к веб-расширению от 1С... вот прифигачил, заодно поглядел на...

Нужен простой пример исходного задания на разработку
Пытаюсь устроиться на работу программистом 1с. Но никто не хочет брать без опыта работы. Говорят что нет времени учить. Хотелось бы...

Исчезновение сайта из Яндекса
Итого, жил был сайт этот после переделки вылез в топ яндекса по НЧ и СЧ. И тут пришел "бот черного понедельника" вот так...

Двиг сайта в выдаче Яндекса
Имеется недавно созданный сайт игровой тематики (www.pc-gaming.ru). Контент уникальный, вся аудитория целевая. С недавнего времени ( с...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru