Russian Qt Forum
Ноябрь 22, 2024, 12:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 ... 5   Вниз
  Печать  
Автор Тема: Тестовое задание на программиста С++/Qt компания некстерс  (Прочитано 49311 раз)
nsxwrs
Гость
« : Сентябрь 02, 2016, 15:57 »

https://ideone.com/Pv89YH

1.Что выведет код. Ответ 4 - преинкремент а, добавить b, на постинкремент пофиг
Код
C++ (Qt)
int a = 1;
int b = 2;
 
cout<<++a+b--<<endl;

2.Найти ошибку компиляции
Код
C++ (Qt)
void f(string & s)
{
cout<<s<<endl;
}
...
f("hello");
 
   
Код
C++ (Qt)
//Решение, но цепляются и просят другие варианты
void f(const string & s)
 
   
 
}
3.Что выведет код. Ответ 2. Дальше спрашивают про отличия std::vector и QVector и вообще чем контейнеры Qt круче контейнеров STL.
Код
C++ (Qt)
vector<int> v;
v.reserve(10);
for(int i=0;i<10;++i)
v[i]=1;
v.push_back(2);
for(auto a:v)
cout<<a<<endl;
}
4. Что в фрагменте кода неправильно
Удаление массива - delete[] a
Считают, что есть ещё ошибки, спрашивают if(a) избыточно или нет, про исключения если new потерпит неудачу, и чему в этом случае будет а равен
Код
C++ (Qt)
char* a=new char[10];
if(a)
{
delete a;
}
}

5.Что выведет код. Ответ СВ, здесь вроде без подвоха
Код
C++ (Qt)
struct A {
virtual void f(){cout<<"A"<<endl;}
};
struct B {
void f(){cout<<"B"<<endl;}
};
struct C:A,B {
void f(){cout<<"C"<<endl;}
};
...
A* a = new C();
B* b = new C();
 
   

 
6. Что выведет код. Ответ АС, т.к. шаблон частично специализирован для класса В

Код
C++ (Qt)
template<class T>
struct A {
virtual void f(){T()();}
};
struct B {
void operator()(){cout<<"B"<<endl;}
};
struct C:B {
void operator()(){cout<<"C"<<endl;}
};
template<>
struct A<B>
{
void f()
{
cout<<"A"<<endl;
}
};
...
A<B>().f();
A<C>().f();
 

7. Что выведет код. Ответ construct copy хер знает почему.
Код
C++ (Qt)
struct A
{
A()
{
cout<<"construct"<<endl;
}
A(const A&)
{
cout<<"copy"<<endl;
}
A& operator=(const A&)
{
cout<<"assign"<<endl;
return *this;
}
};
 
A f()
{
return A();
}
...
A a1 = f();
A a2 = a1;
 

Какие преимущества взаимодействия объектов через сигнал-слот по сравнению с callback функциями (передача указателя на функцию другого объекта)? По-моему никакого, но некоторым удобнее форма записи. Требуют другого объяснения.

Спрашивают про взаимодействие потоков в Qt. Правильный для них ответ - через сигнал-слот, дальше начинают копать на тему почему это так круто.

Почему графический интерфейс всегда однопоточный?

Расскажите про Implicit sharing в Qt.

Зачем указатель d-> во внутренностях Qt ? (ответ для инкапсуляции не засчитывается, правильно - для бинарной совместимости)

Собеседование проводят крайне недружелюбные ребята (технический директор и ещё кто-то), поэтому и выкладываю всю эту херню.

Уже к вам вопрос, зачем знание внутренней реализации Qt нужно на должность программиста GUI?
« Последнее редактирование: Сентябрь 02, 2016, 16:31 от nsxwrs » Записан
Bepec
Гость
« Ответ #1 : Сентябрь 02, 2016, 18:30 »

Нахрен не нужно...

Если задания про наследование, виртуалы ещё нормальны - проверяют знания, остальные шлак.
Вопросы ещё про сигнал-слоты, многопоточность и Implicit sharing тоже нормальны.

Вспомню своё собеседование - пришёл, пара вопросов про конструктор, деструктор, отрисовку. Дали тестовое задание - сделай блокнот красивый. На след день принёс им чудо блокнот на делфях, с кастомными картинками натянутыми на стандартные элементы Веселый
На вопрос: "Эт же стандартные элементы?"? Последовал ответ - сказали блокнот, вот блокнот. А остальное не обговаривалось Веселый Взяли, заодно документацией занимался Показает язык
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #2 : Сентябрь 02, 2016, 21:10 »

вообще все вопросы по тему - начало C\C++, затем Qt
пятница, им уже наверно не терпелось, а тут очередной пришел )
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Сентябрь 03, 2016, 05:14 »

Собеседование проводят крайне недружелюбные ребята (технический директор и ещё кто-то), поэтому и выкладываю всю эту херню.
А по мне так нормальная проверка на "ненулевой", а остального тесты все равно не покажут, в работе смотреть надо. 

Уже к вам вопрос, зачем знание внутренней реализации Qt нужно на должность программиста GUI?
Человек понимающий внутренние механизмы напишет гораздо быстрее и лучше. В общем "недружелюбные ребята" правы

Зачем указатель d-> во внутренностях Qt ? (ответ для инкапсуляции не засчитывается, правильно - для бинарной совместимости)
Этого я не знал  Плачущий
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #4 : Сентябрь 03, 2016, 06:31 »

вопрос 3 (про вектор) - runtime error  Смеющийся
Рантайм еррор выдала только студия в дебаге.
« Последнее редактирование: Сентябрь 03, 2016, 06:43 от alex312 » Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Сентябрь 03, 2016, 11:22 »

в 3 однозначно будет крэш.
reserve только выделяет память, но длина вектора то не меняется.

в 7 - это уже как компилятор соптимизирует. но во 2 случае должен вызваться копи-конструктор, имхо.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Сентябрь 03, 2016, 11:24 »

В 3 не будет краша. То есть, иногда может быть. Краш будет где-то в другом месте.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Сентябрь 03, 2016, 12:16 »

В 3 не будет краша. То есть, иногда может быть. Краш будет где-то в другом месте.
В MSVC debug будет, не раз правил
Код:
int * a = &vec[0];  
if (a) {
...
В одних реализациях std индекс < size() проверяется, в других нет. Для MSVC в debug проверяется, в release нет и, помнится, еще можно управлять через макросы 
Записан
nsxwrs
Гость
« Ответ #8 : Сентябрь 03, 2016, 14:00 »

А по мне так нормальная проверка на "ненулевой", а остального тесты все равно не покажут, в работе смотреть надо.  
Человек понимающий внутренние механизмы напишет гораздо быстрее и лучше. В общем "недружелюбные ребята" правы
Они что делают GUI, переписывая Qt под себя?
1,3,4,7 вопрос не имеют однозначного ответа. Ребята ссылаются на стандарт.
В дополнительных проверяется знание рекламных заявлений разработчиков Qt. Например, какая революционная технология сигнал-слот, и её надо использовать всегда и везде.
« Последнее редактирование: Сентябрь 03, 2016, 14:03 от nsxwrs » Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #9 : Сентябрь 03, 2016, 14:35 »

1 - однозначно 4, независимо от компиля.
4 - насчет delete[] тоже однозначно. насчет new - проверять поинтер смысла нет, т.к. все равно капут проге, если нету памяти.
3 - тут отсутствие крэша скорее исключение, тк. все зависит от реализации библиотеки и компилятора (кстати, в студии в дебаге падает 100%).
7 - да, неоднозначно.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #10 : Сентябрь 03, 2016, 14:43 »

Какие преимущества взаимодействия объектов через сигнал-слот по сравнению с callback функциями (передача указателя на функцию другого объекта)? По-моему никакого, но некоторым удобнее форма записи. Требуют другого объяснения.

Спрашивают про взаимодействие потоков в Qt. Правильный для них ответ - через сигнал-слот, дальше начинают копать на тему почему это так круто.

Почему графический интерфейс всегда однопоточный?

И какие Ваши ответы на эти вопросы?

Уже к вам вопрос, зачем знание внутренней реализации Qt нужно на должность программиста GUI?

Чтобы "программист GUI" этот самый GUI не развалил Улыбающийся, особенно если там многопоточность присутствует.
Записан

Пока сам не сделаешь...
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #11 : Сентябрь 03, 2016, 16:13 »

Какие преимущества взаимодействия объектов через сигнал-слот по сравнению с callback функциями (передача указателя на функцию другого объекта)? По-моему никакого, но некоторым удобнее форма записи. Требуют другого объяснения.
Я бы этим вопросом и ограничился. Впрочем и ответом кандидата тоже, в смысле того, что он бы мне не подошёл Улыбающийся
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #12 : Сентябрь 03, 2016, 17:51 »

Какие преимущества взаимодействия объектов через сигнал-слот по сравнению с callback функциями (передача указателя на функцию другого объекта)? По-моему никакого, но некоторым удобнее форма записи. Требуют другого объяснения.
Я бы этим вопросом и ограничился. Впрочем и ответом кандидата тоже, в смысле того, что он бы мне не подошёл Улыбающийся

Объясните тогда, какой ответ вас бы устроил  Улыбающийся
Записан

Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #13 : Сентябрь 03, 2016, 17:53 »

Цитировать
Уже к вам вопрос, зачем знание внутренней реализации Qt нужно на должность программиста GUI?
Нужно только, если он собирается портировать Qt на другие платформы.
Иначе нахрен не нужно Улыбающийся

Цитировать
Какие преимущества взаимодействия объектов через сигнал-слот по сравнению с callback функциями (передача указателя на функцию другого объекта)? По-моему никакого, но некоторым удобнее форма записи. Требуют другого объяснения.
По сути метасистема сигнал-слотов и есть унифицированные коллбэки, но вынесенные за пределы классов, что позволяет программистам абстагироваться от необходимости строить собственную систему коллбэков во первых, а во-вторых, представляет более гибкий менеджмент связей.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
nsxwrs
Гость
« Ответ #14 : Сентябрь 03, 2016, 19:54 »

Цитировать
Уже к вам вопрос, зачем знание внутренней реализации Qt нужно на должность программиста GUI?
Нужно только, если он собирается портировать Qt на другие платформы.
Иначе нахрен не нужно Улыбающийся

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

Ничего за пределы классов не вынесено. Ты же сигнал в хидере прописываешь. Расскажете им про менеджмент связей, допилите чатик https://titanium.im/ru/. У них офис больше на спортзал похож. Наверное чтобы легко уволить кого надо за то, что не кодил на работе.
Записан
Страниц: [1] 2 3 ... 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.237 секунд. Запросов: 23.