Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/41: Рейтинг темы: голосов - 41, средняя оценка - 4.54
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826

Что на собеседовании показалось самым сложным

08.08.2016, 18:40. Показов 9021. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер,

какой вопрос по С++ самый сложный ? Имеется ввиду вопросы на собеседованиях, очередной вопрос колеге за чашечкой кофе и т.д.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.08.2016, 18:40
Ответы с готовыми решениями:

Какой экзамен, по вашему мнению, был самым сложным?
Какой экзамен был для вас самый сложный? Может быть, к которому было тяжело готовиться, или на котором преподы были принципиальные,...

Показалось, что снизилась производительность пк
Показалось, что снизилaсь производительность пк, решил в cpu-z бенче прогнать и что-то очень странные результаты какие-то,вроде, раньше...

Что спрашивают на собеседовании?
Заканчиваю универ, техническую специальность, опыта нет, хочу устроиться 1с-программистом. 1с-ку, бух.учет, бд все это знаю. Но в...

60
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
08.08.2016, 22:32
Лучший ответ Сообщение было отмечено hoggy как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от DrOffset Посмотреть сообщение
примеры кода пожалуйста под спойлер
так?
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
#include <iostream>
 
class Test
{
    void foo(){std::cout << "foo" << std::endl;}
};
 
 
typedef void (Test::*UT_PTR)();
 
 
UT_PTR hole_ptr = nullptr;
 
template<UT_PTR PTR>    
struct Hole {    
    struct Fake{
        Fake(){hole_ptr = PTR;}
    };
    static Fake fake;
};
 
template <UT_PTR ptr> typename Hole<ptr>::Fake Hole<ptr>::fake;
template class Hole<&Test::foo>;
 
 
int main() 
{    
    Test t;
    (t.*hole_ptr)();
}
http://rextester.com/RBNE67175
11
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
08.08.2016, 22:32
Цитата Сообщение от DrOffset Посмотреть сообщение
Нужно продемонстрировать полностью стандартный (легальный) способ вызвать приватную функцию чужого класса (класс менять нельзя).
DrOffset, не уж-то так:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
class Class_Locked
{
private :
void foo(){cout<<"No passaran!";};
friend void func(Class_Locked & cl);//можно и класс объявить)
};
void func(Class_Locked & cl)
{
    cl.foo();// вот так?
}
 
int main(int argc, char* argv[])
{
Class_Locked a;
//a.foo(); //невозможно обратиться к private член, объявленному в классе "Class_Locked"
func(a);
cout<<endl;
system("pause");
return 0;
}

?
2
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
08.08.2016, 22:34
Цитата Сообщение от DrOffset Посмотреть сообщение
Нужно продемонстрировать полностью стандартный (легальный) способ вызвать приватную функцию чужого класса (класс менять нельзя).
Кликните здесь для просмотра всего текста

IMHO, полностью легального способа (т.е. без UB) не существует.
Кто не согласен - ссылочку на пункт стандарта, оправдывающий
такие грязно-хаки.
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
08.08.2016, 22:35
Убежденный, при явном инстанцировании можно воспользоваться дырой в шаблонах, см. код выше
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
08.08.2016, 22:35
DrOffset, видимо, имеется в виду
Кликните здесь для просмотра всего текста
угнать адрес через nontype template parameter

Как я понял, предложенное HelicopterK52 решение это и делает.
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
08.08.2016, 22:40
Кликните здесь для просмотра всего текста
HelicopterK52, ага. все верно.
IGPIGP, класс менять нельзя.
Nick Alte, если ты о решении HelicopterK52, то да.
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
08.08.2016, 22:48
DrOffset,
решение давно валялось в закромах, но я еще один класс убрал:
убрал еще один не нужный класс
C++
1
2
3
4
5
6
7
8
template<UT_PTR PTR>    
struct Hole {
    Hole(){hole_ptr = PTR;}
    static Hole fake;
};
 
template <UT_PTR ptr> Hole<ptr> Hole<ptr>::fake;
template class Hole<&Test::foo>;
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
08.08.2016, 22:50
HelicopterK52, Что-то вообще ничего не понятно, надо наконец-то прочесть книгу по шаблонам.
2
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
08.08.2016, 22:50
Кликните здесь для просмотра всего текста

Надеюсь, что никогда такого не увижу в реальном коде.
Сломал мозг.

6
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
08.08.2016, 22:58
Лучший ответ Сообщение было отмечено Убежденный как решение

Решение

Цитата Сообщение от Убежденный Посмотреть сообщение
Кто не согласен - ссылочку на пункт стандарта, оправдывающий
такие грязно-хаки.
Цитата Сообщение от 14.7.2/12
The usual access checking rules do not apply to names used to specify explicit instantiations. [ Note: In particular, the template arguments and names used in the function declarator (including parameter types, return types and exception specifications) may be private types or objects which would normally not be
accessible and the template may be a member template or member function which would not normally be accessible. — end note ]
Так что никаких грязных хаков - всё в пределах стандарта.
Цитата Сообщение от GbaLog- Посмотреть сообщение
Что-то вообще ничего не понятно
Кликните здесь для просмотра всего текста
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
#include <iostream>
 
 
 
class Test
{
    void foo(){std::cout << "foo" << std::endl;}//Целевая функция-член
};
 
 
typedef void (Test::*UT_PTR)();//прост псевдоним для удобства
 
 
UT_PTR hole_ptr = nullptr;//Сюда запишем указатель на функцию-член foo класса Test
//Остается один вопрос. Как до него достучаться.
//А здесь нам поможет пункт 14.7.2/12 стандарта (приведен выше).
 
template<UT_PTR PTR>    
struct Hole {
    Hole(){
        hole_ptr = PTR;//В конструкторе записываем указатель
    }
    static Hole fake;
};
 
template <UT_PTR ptr> Hole<ptr> Hole<ptr>::fake;//При создании объекта fake вызовется конструктор, который и выполнит нужный нам "хак"
template class Hole<&Test::foo>;//Явно инстанцируем шаблон, здесь не действует private, так что пихаем указатель на функцию-член как параметр шаблона
 
 
int main() 
{    
    Test t;
    (t.*hole_ptr)();//Здесь уже всё нормально
}
16
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
08.08.2016, 22:58
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
#define private public
 
class Foo
{
private:
    void bar() { std::cout << "You shall not pass" << std::endl; }
};
 
#undef private
 
 
int main()
{
    Foo foo;
    foo.bar();
}
3
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
08.08.2016, 23:00
Цитата Сообщение от GbaLog- Посмотреть сообщение
надо наконец-то прочесть книгу по шаблонам.
В книгах про такое не пишут. Хотя книгу прочесть надо конечно
Цитата Сообщение от Убежденный Посмотреть сообщение
Надеюсь, что никогда такого не увижу в реальном коде.
Поэтому и не нужно такое спрашивать не собеседованиях.
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
не достоин прийти на собеседование
Я лично про это ничего не говорил.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
08.08.2016, 23:00  [ТС]
avgoor,
Кликните здесь для просмотра всего текста
define ключевых слов UB
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
08.08.2016, 23:01
avgoor, флеймовый вопрос: будет ли тут нарушение ODR?
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
08.08.2016, 23:01
DrOffset, нарушению ODR быть (разный поток токенов)
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
08.08.2016, 23:01
HelicopterK52, спасибо, супер!
Люблю Киберфорум, за полчаса узнал больше, чем за всю прошлую неделю!
6
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
08.08.2016, 23:09
DrOffset, Будет. Но я не уверен, что существует способ без UB вообще. Например, вышеприведенный код в студии не работает (там вообще много чего связанного с шаблонами работает не так, как в gcc).
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
08.08.2016, 23:11

Не по теме:

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
то я только могу заполнить заявку в МакДональс
Вы можете готовить блинчики? Я - нет. Я вообще не могу готовить, разве что пельмешей наваять - с нула (фаршик, тесто и т.д.).
Салатик могу порубать и яичек поджарить, али сварить. На этом мои кулинарные навыки кончаются. Ах, да, могу еще картошку пожарить, но только до состояния углей :D

P.S. Шашлык не еда, его в расчет не берем.



Добавлено через 29 секунд
Цитата Сообщение от avgoor Посмотреть сообщение
Например, вышеприведенный код в студии не работает
Это студия не работает. Там вообще что должно - не работает, что не должно - работает
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
08.08.2016, 23:14
Цитата Сообщение от avgoor Посмотреть сообщение
Например, вышеприведенный код в студии не работает
В 2013 точно работает, прям вот сейчас собрал
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
08.08.2016, 23:15

Не по теме:

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Минуснул, отписался, пожаловался на сообщение, пошёл взламывать страничку вконтакте!!!!111
Забыли петицию накатать :)



Добавлено через 1 минуту
Цитата Сообщение от DrOffset Посмотреть сообщение
В 2013 точно работает, прям вот сейчас собрал
На рекстестере тож не собирается: http://rextester.com/KCO99449
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2016, 23:15

Что ожидать на собеседовании?
Доброго времени суток. Хотелось бы узнать у вас на что я могу рассчитывать при устройстве на работу и какие вопросы скорее всего будут на...

Что мне задавали на собеседовании
Добрый день, уважаемые коллеги. Совсем недавно посетил интервью (компанию опускаю) на вакансию Программист .NET (язык C#, VB.NET). Хочу...

Что спрашивают на собеседовании на сеньора
Привет всем я джуниор -хотел поитересоваться что спрашивают на собеседовании на сеньора?

Что спрашивают на собеседовании junior c# developer?
Я боюсь идти первый раз на собеседование поделитесь опытом пожалуйста

Что спросят на собеседовании в компании систем мониторинга и диагностики
Завтра иду на собеседование в компанию, занимающуюся системами мониторинга и диагностики роторных и поршневых машин на вакансию...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru