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

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

08.08.2016, 18:40. Показов 9276. Ответов 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
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
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
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
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
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
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
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
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
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru