Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
PakistanCode
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
#1

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

30.12.2015, 17:48. Просмотров 692. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2015, 17:48
Ответы с готовыми решениями:

Проверить и прокомментировать вариант решения тестового задания при приёме на работу
Приветствую! Сделал тестовое задание, которое попросил сделать один...

Тестовое задание
private class Connect (){ public Device dev1 = new Device(); public Device...

Задание при приёме на работу
Всем привет! Мне дали на собеседовании задание по access. Я его до этого не...

Тестовое задание при приеме на работу
Друг искал работу. В одной из контор предложили тестовое задание: -----...

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

14
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
30.12.2015, 18:04 #2
Какая должность то? По вопросам кажись: jun/mid в большом городе. Все вопросы jun'a, а вот про std::mutex - чтобы ответить на него развёрнуто - то jun/mid
1
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
30.12.2015, 18:07 #3
1. BaseException ибо срезка.
1
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
30.12.2015, 18:12 #4
1. BaseException ибо срезка.
я бы еще добавил, что позднее связывания срабатывает только при работе с указателем или ссылкой, а тут вирт метод вызывается от объекта.
1
PakistanCode
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
30.12.2015, 18:19  [ТС] #5
rikimaru2013, junior спб

А что можете сказать по второму вопросу? Он как раз у меня больше всего проблем вызвал)
0
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
30.12.2015, 18:27 #6
Цитата Сообщение от PakistanCode Посмотреть сообщение
Он как раз у меня больше всего проблем вызвал)
Ну так давайте рассуждать: чур вы первый говорите Ваши мысли)
1
PakistanCode
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
30.12.2015, 18:43  [ТС] #7
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
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
30.12.2015, 18:48 #8
Цитата Сообщение от PakistanCode Посмотреть сообщение
Размер складывается из памяти, занимаемой всеми элементами в структуре + байты отведённые на выравнивание.
уже не то:

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

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

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

А потом что? Как понять что этого достаточно? Что нужно углубляться ещё?
0
hoggy
Нарушитель
Эксперт С++
7054 / 3100 / 643
Регистрация: 15.11.2014
Сообщений: 7,062
Завершенные тесты: 1
31.12.2015, 04:37 #14
Цитата Сообщение от ct0r Посмотреть сообщение
PakistanCode, учи лучше C++, до джуниора тебе еще нормально так расти. На собеседования рано ходишь.
не слушайте старых пердунов.
действуйте.

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

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

заморачиваться будите тогда,
когда информации не достаточно.
но для таких ситуаций существует гугл.
0
ct0r
Игогошка!
1789 / 690 / 44
Регистрация: 19.08.2012
Сообщений: 1,339
Завершенные тесты: 1
31.12.2015, 04:58 #15
Цитата Сообщение от hoggy Посмотреть сообщение
Индустрии нужно свежее мясо.
Ну так возьми пацана к себе, индустрия. Или ты в кусты?
0
31.12.2015, 04:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2015, 04:58

Почему не прошло тестовое задание на работу?
Нужно было выполнить следующее тестовое задание: Необходимо описать задачу с...

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

Тесты при приёме на работу
Какие примерно тестовые задания могут дать по ООП и по самому синтаксису языка...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru