Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.66
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
#1

Собеседования по С++ для джуна - C++

29.07.2015, 13:22. Просмотров 4218. Ответов 100
Метки нет (Все метки)

Добрый день,

если вы бы проводили собеседования по С++ для джуна - какой вопрос по С++ вы бы припасли как самый сложный?

Кликните здесь для просмотра всего текста
Для меня пока, что самый сложный вопрос (который расскрыл бы многие области знания по С++) такой:
- опишите все факторы, которые влияют на размер экземпляра класса. Какой минимальный и максимальный размер пустого класса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2015, 13:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Собеседования по С++ для джуна (C++):

Трудоустройство: что нужно знать для успешного прохождения собеседования в самые крутые компании? - C++
Добрый вечер. Напишите пожалуйста список того, что нужно знать для успешного прохождения собеседования в самые крутые компании, c++...

Пример из собеседования по C++ - C++
Граждане, есть такой пример: class B { private: virtual void f() { std::cout << "B::f()" << std::endl;} public: void g() {...

Задания с++ с собеседования - C++
Предложите ваши варианты решения заданий 1. Перечислите все проблемы, которые вы видите в данном коде: class Foo { public: ...

Задание с собеседования (циклы) - C++
День добрый! Был сегодня на собеседовании, и было такое задание где было такое задание: Описать одним предложением что делает данная...

Задача с собеседования (аллокатор памяти) - C++
Вопрос звучит так: "Напишите быстрый аллокатор памяти" Как я его понимаю: можно пожертвовать растратой памяти, всякими наворотами,...

ООП. Тестовое задание собеседования. - C++
Это тестовое задание для устройста на работу. Я не совсем понимаю что от меня хотят. Не могли бы вы мне далее составить набросок плана...

100
Убежденный
Ушел с форума
Эксперт С++
15697 / 7207 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
29.07.2015, 13:44 #2
Я бы завернул в трехэтажную лямбду какой-нибудь трюк с expression
sfinae и CRTP и спросил: что это, для чего, где используется ?
1
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.07.2015, 13:46 #3
на джуна мне кажется хватило бы описать работу вирт.ф-ций, а Ваш вопрос это мегажесть, учитывая современные технологии особо нет смысла следить за размерами классов...да вообще зачем это...

Добавлено через 34 секунды

Не по теме:

Убежденный, остановитесь jinor мозгом потечет, отобъется желание прогать хД



Добавлено через 16 секунд

Не по теме:

Убежденный, остановитесь jinor мозгом потечет, отобъется желание прогать хД

0
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
29.07.2015, 13:56  [ТС] #4
я б расчитывал услышать, что размер экземпляра пустого класса не может быть нулём, так как чтобы иметь адресс объект должен иметь размер минимум байт. Так же хоетл услышать помимо обычного, что размер экземпляра зависит от полей класса:
- про возможное выравнивания полей
- про указатель на __vfptr в экзепляре +4байта, если есть вирт. метод или один с одителей с виртуальной функцией
- про "смещение адрессов" к виртуальному наследнику +4байта

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
Я бы завернул в трехэтажную лямбду какой-нибудь трюк с expression
sfinae и CRTP и спросил: что это, для чего, где используется ?
помню ваши посты, что "трюки это зло, надо сперва знать основы и уметь писать правильно, а потом уже в качестве самообразования учить трюки языка, так как использование разных трюков вредит читабельности кода и зачастую приводит к багам и не понятному поведении при сопровождению кода другим прогарммистом".

Я всё помню! )

0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
29.07.2015, 13:57 #5
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
я б расчитывал услышать, что размер экземпляра пустого класса не может быть нулём,
Может.
Добавить можно еще и статические члены класса, наследование простое и виртуальное.
0
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
29.07.2015, 14:01  [ТС] #6
Цитата Сообщение от Ilot Посмотреть сообщение
Может.
Можно пример?

Помню с учебника:
"Если бы экземпляр класса не занимал бы память, у него не было бы адресса. А значит при сравнение адрессов экземпляра данного класса - их адресса бы совпадали"
0
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,095
29.07.2015, 14:04 #7
rikimaru2013, а с чем связан интерес? Просто так?

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

Живой пример: был кандидат на уровень мидла. Он писал такую дикую шаблонную магию, что другие даже не пытались понять — настолько было сложно. А на практике оказалось, что он не знает таких базовых вещей как алгоритмическая сложность доступа к элементам контейнеров стандартной библиотеки, не различает dynamic и reinterpret касты и не понимает как ведут себя исключения, сгенерированные в деструкторах.
4
ct0r
Игогошка!
1776 / 678 / 42
Регистрация: 19.08.2012
Сообщений: 1,294
Завершенные тесты: 1
29.07.2015, 14:13 #8
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
если вы бы проводили собеседования по С++ для джуна - какой вопрос по С++ вы бы припасли как самый сложный?
По-моему, задавать вопросы от простых к сложным на собеседовании - это фиговый метод. Я бы взял например один из демонов, который сам писал на работе, и предложил бы поговорить на эту тему. Сверху вниз. Требования, архитектура, конкуррентность, алгоритмы, структуры данных, организация классов, уровни безопасности исключений, RAII, реализация отдельных функций, тестирование, сопровождение, документация. Там бы все знания джуна и выяснились.

Цитата Сообщение от Убежденный Посмотреть сообщение
Я бы завернул в трехэтажную лямбду какой-нибудь трюк с expression
sfinae и CRTP и спросил: что это, для чего, где используется ?
Ага, а потом бы разбирался и материл его код в таком же стиле?

Цитата Сообщение от aLarman Посмотреть сообщение
на джуна мне кажется хватило бы описать работу вирт.ф-ций
Попсовый вопрос. Годится только для того, чтобы убедиться, что кандидат не подходит точно.

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
я б расчитывал услышать, что размер экземпляра пустого класса не может быть нулём, так как чтобы иметь адресс объект должен иметь размер минимум байт. Так же хоетл услышать помимо обычного, что размер экземпляра зависит от полей класса:
- про возможное выравнивания полей
- про указатель на __vfptr в экзепляре +4байта, если есть вирт. метод или один с одителей с виртуальной функцией
- про "смещение адрессов" к виртуальному наследнику +4байта
Ну фигня это все. Сколько раз тебе это было реально важно? Да и почему 4 байта? А давай еще поговорим про размеры подобъектов базовых классов (которые вполне могут быть 0), про множественное виртуальное наследование и прочую мутотень. Только нафига? Вот реально, тот факт, ответил правильно джун на этот вопрос, или нет, повлияет на то, возьмешь ты его или нет?
1
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
29.07.2015, 14:14  [ТС] #9
0x10, так сам для себя проверю себя ))

Кликните здесь для просмотра всего текста
Цитата Сообщение от 0x10 Посмотреть сообщение
алгоритмическая сложность доступа к элементам контейнеров стандартной библиотеки
Насколько это важно знать? log n или n-1 и т.д ? Оптимизацией проекта можно заняться при наличии проекта. Откуда такой опыт? Или требовалось просто зазубрить значения, чтобы понимать когад надо вектор когда лист?


Цитата Сообщение от 0x10 Посмотреть сообщение
dynamic и reinterpret касты
Динамик - приведение регулируется стандартом и работает если указатель приведение присущий к иерархии к какому типу приводят, если dynamic_type<T>(a) а имеет тип T то вернёт указатель на a, иначе nullptr


Цитата Сообщение от 0x10 Посмотреть сообщение
как ведут себя исключения, сгенерированные в деструкторах.
Если при раскрутки стека встретится еще одна расскрутка стека (расскрутка запускается при throw value пока не стретит свою ловушку или конец main), программа аварийно завершает свою работу.
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
29.07.2015, 14:21 #10
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Можно пример?
Оптимизация пустого базового класса не о чем не говорит?
0
ct0r
Игогошка!
1776 / 678 / 42
Регистрация: 19.08.2012
Сообщений: 1,294
Завершенные тесты: 1
29.07.2015, 14:40 #11
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Насколько это важно знать? log n или n-1 и т.д ? Оптимизацией проекта можно заняться при наличии проекта. Откуда такой опыт? Или требовалось просто зазубрить значения, чтобы понимать когад надо вектор когда лист?
Алгоритмическую сложность очень важно знать. Откуда опыт? Должны быть домашние проекты. Если человек увлекается программированием, то у него будут домашние проекты. Джун - это не нуль в программировании. Это уже программист. Просто опыта реальных проектов, связанных с бизнесом, у него еще нет.

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Динамик - приведение регулируется стандартом и работает если указатель приведение присущий к иерархии к какому типу приводят, если dynamic_type<T>(a) а имеет тип T то вернёт указатель на a, иначе nullptr
Я думаю, тебе лучше повторить Слишком мало и слишком нечетко.

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Если при раскрутки стека встретится еще одна расскрутка стека (расскрутка запускается при throw value пока не стретит свою ловушку или конец main), программа аварийно завершает свою работу.
А почему так происходит? Почему будет terminate? А если во время работы деструктора массива компилятор проходит по его элементам, вызывая их деструкторы, и один из них рванет, то что будет с остальными элементами? А если мы вызываем delete, и у нас деструктор кидает исключение, то память корректно освободится?
1
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
29.07.2015, 14:47  [ТС] #12
Цитата Сообщение от Ilot Посмотреть сообщение
Оптимизация пустого базового класса не о чем не говорит?
Вы не читали мой пост про адресса? Если сравнивать адресса, то у них он есть - и он разных для каждого. 1 байт же ж. Сделано это в качестве оптимизации или еще как. 300 экземпляров = 300 байт.
0
ct0r
Игогошка!
1776 / 678 / 42
Регистрация: 19.08.2012
Сообщений: 1,294
Завершенные тесты: 1
29.07.2015, 14:53 #13
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
#include <iostream>
 
struct A
{
    ~A() { throw 2; }
};
 
struct B: A
{
    int x;
};
struct C
{
    int x;
};
 
int main()
{
    try {
        A a;
    }
    catch (...) {
        std::cout << "OK\n";
        std::cout << (sizeof(B) == sizeof(C));
    }
}
Что будет, если запустить?
0
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
29.07.2015, 14:59  [ТС] #14
Цитата Сообщение от ct0r Посмотреть сообщение
А почему так происходит? Почему будет terminate? А если во время работы деструктора массива компилятор проходит по его элементам, вызывая их деструкторы, и один из них рванет, то что будет с остальными элементами? А если мы вызываем delete, и у нас деструктор кидает исключение, то память корректно освободится?
А можете объяснить?



Цитата Сообщение от ct0r Посмотреть сообщение
Что будет, если запустить?
А создатся и удалится. Всё правильно же ж. В чём подвох?)
0
ct0r
Игогошка!
1776 / 678 / 42
Регистрация: 19.08.2012
Сообщений: 1,294
Завершенные тесты: 1
29.07.2015, 15:05 #15
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
А можете объяснить?
Могу. Но лучше ссылку дам https://akrzemi1.wordpress.com/2011/09/21/destructors-that-throw/

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
А создатся и удалится. Всё правильно же ж. В чём подвох?)
Будет terminate. Почему так - объяснение есть в ссылке выше.
1
29.07.2015, 15:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2015, 15:05
Привет! Вот еще темы с ответами:

Ищу задачки для собеседования - Java SE
Ищу всякие хитрые и не хитрые задачки, которые могут спрашивать на собеседованиях. Однажды уже был такой опыт, но тогда затупил на простой...

Вот такой тест скинули на Джуна, пока еще не решил - PHP
Вот такой тест на джуна, пока еще не знаю даже с чего начать!))

Подскажите пожалуйста, как ответить на вопрос про полиморфизм в JAVA в достаточном объеме для прохождения собеседования - Java SE
Здравствуйте. Подскажите пожалуйста, как ответить на вопрос про полиморфизм в JAVA в достаточном объеме для прохождения собеседования....

Задача с собеседования - C (СИ)
Всем привет! Недавно был на собеседование. Было много вопросов по строкам. Такое объявление строки я не видел ни разу char *A; и,...


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

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

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