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

Написать ответы на тестовое задание при приёме на работу (исключения, sizeof, mutex)

30.12.2015, 17:48. Показов 2078. Ответов 14
Метки нет (Все метки)

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

Ходил недавно на собеседование. Имеется список вопросов, на некоторые ответил правильно на какие-то - нет.
Хотелось бы услышать мнение других людей как бы они решили поставленные задачи/вопросы, особенно интересует вопрос под номером 2 и его подробный разбор.

Задачи решались без компьютера и подобных средств для проверки кода.
Хотелось бы услышать именно ваши рассуждения, а потом уже решение с компилятором.

Вопрос 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
28
29
30
31
32
33
34
35
# include <stdio.h>
 
class BaseException
{
public:
    virtual void PrintMessage()
    {
        printf("BaseException");
    }
};
 
class RuntimeException : public BaseException
{
public:
    virtual void PrintMessage()
    {
        printf("RuntimeException");
    }
};
 
int main()
{
    try
    {
        throw RuntimeException();
    }
    catch(BaseException exc)
    {
        exc.PrintMessage();
    }
    catch (...)
    {
        printf("UnexpectedException");
    }
}


Вопрос 2: Какое значение вернёт sizeof(A), sizeof(B), sizeof(C), если выравнивание установлено в 1 байт, платформа x86.
Кликните здесь для просмотра всего текста
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
struct A
{
    A();
 
    char str[1];
    const char* pstr;
    static int si;
    const char ci;
    char& ri;
 
    virtual void f1();
    virtual void f2();
    void f3();
};
 
struct B
{
    virtual void f4() = 0;
};
 
struct C : public A, B
{
    virtual void f1();
    virtual void f2();
    virtual void f4();
};


Вопрос 3: Как могло бы выглядеть тело функции, осуществляющей транзакцию денежных средств одного счёта на другой? Функция должна проверять достаточность денежных средств на счёте для списания, осуществлять списание, выполнять зачисление средств на другой счёт счёт и возвращать true. В случае, если денежных средств на счёте недостаточно, функция должна возвращать false.
Необходимо предусмотреть возможность осуществления параллельных операций со счетами.

Счет представлен следующей структурой:
C++
1
2
3
4
5
struct Account
{
  int money;
  std::mutex mutex;
}
Функция осуществления транзакции:
C++
1
2
3
4
5
6
7
8
// _from - счет, с которого необходимо выполнить списание
// _to - счет, на который необходимо выполнить зачисление
// _money - количество денежных средств, которое необходимо списать/зачислить
 
bool Transaction(Account& _from, Account& _to, unsigned _money)
{
  // ваш код
}
Чуть позже напишу своё решение этих задач.

Спасибо за ваши ответы, с наступающим!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.12.2015, 17:48
Ответы с готовыми решениями:

Тестовое задание при приеме на работу
Друг искал работу. В одной из контор предложили тестовое задание: ----- Разработать на VC векторный графический редактор, с...

О том как я провалил тестовое задание при приеме на работу
Привет всем! На днях мне поступило предложение поработать программистом на шарпе в некой фирме. Но для начала мне нужно было выполнить...

Задание при приеме на работу
Здравствуйте, уважаемые форумчане! При устройстве на работу получила перечень заданий, с большинством из которых уже справилась. Осталось...

14
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
30.12.2015, 18:04
Какая должность то? По вопросам кажись: jun/mid в большом городе. Все вопросы jun'a, а вот про std::mutex - чтобы ответить на него развёрнуто - то jun/mid
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.12.2015, 18:07
1. BaseException ибо срезка.
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
30.12.2015, 18:12
1. BaseException ибо срезка.
я бы еще добавил, что позднее связывания срабатывает только при работе с указателем или ссылкой, а тут вирт метод вызывается от объекта.
1
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
30.12.2015, 18:19  [ТС]
rikimaru2013, junior спб

А что можете сказать по второму вопросу? Он как раз у меня больше всего проблем вызвал)
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
30.12.2015, 18:27
Цитата Сообщение от PakistanCode Посмотреть сообщение
Он как раз у меня больше всего проблем вызвал)
Ну так давайте рассуждать: чур вы первый говорите Ваши мысли)
1
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
30.12.2015, 18:43  [ТС]
rikimaru2013, из того что я знаю (не заглядывая в google).

По структуре A:

Sizeof для структуры - выдаёт размер в байтах. Размер складывается из памяти, занимаемой всеми элементами в структуре + байты отведённые на выравнивание.

C++
1
2
3
4
5
char str[1]; // по идее занимает 1 байт
const char* pstr; // 4 байта т.к. система 32 битная))
static int si; // возможно 4 байта, но я не знаю влияет ли как-то static на размер переменной
const char ci; // 1 байт, по идее. Кстати эту переменную было бы неплохо инициализировать
char& ri; // 4 байта, так как по сути хранит в себе адрес и так же было бы неплохо её инициализировать
Честно говоря что у нас по функциям я вообще не знаю, но попробую догадаться
У функций нет реализации и входных параметров => нам необходимо знать по какому адресу нужно обратиться чтобы её выполнить, а это 4 байта. Единственное у нас 2 функции - виртуальные, не знаю как ведёт себе компилятор с ними.

Выходит: 1+4+4+1+4 = 16 байт на переменные
Итого: 16 + (4*3) = 28 байт
Либо: 16 + 4 = 20 байт

Т.к. 1 функция не виртуальная
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
30.12.2015, 18:48
Цитата Сообщение от PakistanCode Посмотреть сообщение
Размер складывается из памяти, занимаемой всеми элементами в структуре + байты отведённые на выравнивание.
уже не то:

1) память под class-члены
2) указатель VTABLE
3) смещение вирт наслед
3) выравнивание данных
4) размер родителя(ей)
1
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
30.12.2015, 18:57  [ТС]
rikimaru2013, почитаю часик про всё это, вникну и попытаюсь Вам ответить, а не гадать!) Спасибо за наводящие вопросы/подсказки.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
30.12.2015, 19:08
PakistanCode, учи лучше C++, до джуниора тебе еще нормально так расти. На собеседования рано ходишь.
0
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
30.12.2015, 20:25  [ТС]
ct0r, а как Вы определили что я не дотягиваю?) И что по вашему он должен знать.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
31.12.2015, 02:40
Цитата Сообщение от PakistanCode Посмотреть сообщение
а как Вы определили что я не дотягиваю?) И что по вашему он должен знать.
Ну это было очень просто Джуниор - это кто? Это разработчик, у которого за плечами нету опыта промышленной разработки (или он мал). Это разработчик, у которого за плечами домашние проекты и который может самостоятельно, без подсказок, решить несложную задачу.
Ты же приходишь сюда с элементарными вопросами и неверными рассуждениями, чем показываешь полное незнание того, как устроен механизм ООП в С++. А ведь это тот фундамент, который у джуниоров должен от зубов отлетать. Без него нельзя вообще что-либо адекватно написать.
Хочешь получить хотя бы примерное представление об уровне младшего разработчика - берешь любой опенсорсный проект и фиксишь мелкие баги. А еще читаешь темы форума про джуниоров, собеседования, тестовые задания и тп и тд, их тут полно было.
1
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
31.12.2015, 03:57  [ТС]
ct0r, спасибо за Ваши замечания Своего незнания я конечно не отрицаю, именно в данной тематике! Ну на то это и форум где умные люди делятся знаниями с новичками

Так что надеюсь скоро закрою свои пробелы в знаниях.

Просто мне всегда было интересно как правильно изучить ту или иную функцию?
Вот допустим я хочу узнать про sizeof. Захожу на MSDN, читаю "...Если оператор sizeof применяется к объекту типа class, struct или union, то результатом будет число байт в объекте этого типа, плюс любое заполнение, которое добавляется для выравнивания членов в границах слова. ...".

А потом что? Как понять что этого достаточно? Что нужно углубляться ещё?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
31.12.2015, 04:37
Цитата Сообщение от ct0r Посмотреть сообщение
PakistanCode, учи лучше C++, до джуниора тебе еще нормально так расти. На собеседования рано ходишь.
не слушайте старых пердунов.
действуйте.

Индустрии нужно свежее мясо.

Добавлено через 3 минуты
Цитата Сообщение от PakistanCode Посмотреть сообщение
Как понять что этого достаточно?
нет нужды заморачиваться
этого - достаточно.
для решения ваших проблем.

заморачиваться будите тогда,
когда информации не достаточно.
но для таких ситуаций существует гугл.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
31.12.2015, 04:58
Цитата Сообщение от hoggy Посмотреть сообщение
Индустрии нужно свежее мясо.
Ну так возьми пацана к себе, индустрия. Или ты в кусты?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.12.2015, 04:58
Помогаю со студенческими работами здесь

Задание при приёме на работу
Всем привет! Мне дали на собеседовании задание по access. Я его до этого не изучал, а сейчас сижу и усиленно читаю мануалы для...

Почему не прошло тестовое задание на работу?
Нужно было выполнить следующее тестовое задание: Необходимо описать задачу с применением принципов ООП. Дано объекты-фигуры следующих...

Поиск файлов в папках (не тривиальное тестовое задание для приема на работу)
Доброе время суток . Был не давно на собеседовании в одной фирме . Задали задание на дом . Вот сижу ломаю голову как его сделать. В...

Мне дали тестовое задание написать фреймворк
Будущий работодатель дал мне тестовое задание - написать небольшой js-фреймворк работы с css классами dom элементов. Срок две недели на это...

Задача при приеме на работу
Офигенская задача, я ее давно услышал. Сейчас Вам повествую о ней Пришел один человек для приема на работу. Ему задают 4...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru