|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
Собеседования по С++ для джуна29.07.2015, 13:22. Показов 13544. Ответов 100
Метки нет (Все метки)
Добрый день,
если вы бы проводили собеседования по С++ для джуна - какой вопрос по С++ вы бы припасли как самый сложный? Кликните здесь для просмотра всего текста
Для меня пока, что самый сложный вопрос (который расскрыл бы многие области знания по С++) такой:
- опишите все факторы, которые влияют на размер экземпляра класса. Какой минимальный и максимальный размер пустого класса.
0
|
|
| 29.07.2015, 13:22 | |
|
Ответы с готовыми решениями:
100
Ищу задачки для собеседования
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||||||||||||||||||||||||||
| 04.08.2015, 13:15 | |||||||||||||||||||||||||||
|
Вот еще: 1.8 [intro.object]/6 Unless an object is a bit-field or a base class subobject of zero size, the address of that object is the address of the first byte it occupies. Two objects that are not bit-fields may have the same address if one is a subobject of the other, or if at least one is a base class subobject of zero size and they are of different types; otherwise, they shall have distinct addresses. [...] Отсюда следует, что согласно формальной терминологии С++, объекты могут иметь нулевой размер. Добавлено через 21 час 26 минут Кстати мы тут говорили-говорили про empty base class optimization, но так и не сказали, где эта оптимизация применяется. Попробую немного устранить этот пробел (на примере libstd++). Давайте рассмотрим самый обычный std::unique_ptr, которым мы все так любим пользоваться. Вот его объявление:
Сам объект deleter мы можем передать непосредственно в конструктор, например такой:
Смотрим дальше. Вот есть код:
То есть: в данной реализации tuple у нас есть оптимизация пустых классов! Поэтому unique_ptr и использует tuple: мы автоматом получаем, что если класс делитера у нас пустой, то он не занимает у нас никакого места! Поэтому в данном случае размеры unique_ptr и обычного указателя совпадают. Еще оптимизация пустого базового класса применяется например и в аллокаторах. Это вы можете сами посмотреть ![]() PS фиг знает, нормально я объяснил или нет. Надеюсь поймете все
9
|
|||||||||||||||||||||||||||
| 04.08.2015, 14:34 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 04.08.2015, 17:16 | ||
|
при этом, между "объектом" и "подобъектом" нигде знак равенства не ставится. само понятие "подобъект" нужно лишь для описания взаимоотношений частей класса. но часть класса не является классом ------------------------------------------------------- вы можете взять размер у объекта. но вы никак не сможете взять размер у подобъекта. потому что любая корректная попытка будет приводить к тому, что размер вы берете имменно у объекта. в случае с Гайкой, получилось, что компилятор сделал выравнивание, в результате которого, оказалось, что под "объект-пустышку" память выделена не была, что как бы понятно: зачем выделять память под пустоту? но если запросить sizeof пустышки, или запросить sizeof базового-класса-пустышки, или кастить наследника к базе-пустышки и запрашивать... в общем, нуля вы там никогда не получите. потому что все подобные запросы выполняются в отношении объектов. а не в отношении частей из которых состоит класс.
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||
| 04.08.2015, 17:25 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 04.08.2015, 17:28 | ||
|
но подобъект - не есть объект. вы там ещё полазийте по стандарту. где то должно быть упоминание, согласно которому, можно делать массивы из объектов любого типа. и поэтому, размер объекта никак не может быть нулем.
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||
| 04.08.2015, 17:31 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 04.08.2015, 17:55 | ||||||||
|
вы можете обратиться к нему, как к объекту, пожалуйста:
а не как к части класса.
0
|
||||||||
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|
| 04.08.2015, 18:01 | |
|
Ferrari F1, это хорошая тема,я уже немало полезной и интересной информации узнал. Может, через пару лет, и вы из неё что-то сможете почерпнуть.
0
|
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 04.08.2015, 18:22 | |
|
hoggy, блин
Я тебе привел стандарт. Хочешь оспаривать стандарт и продвигать в массы свою терминологию С++ - твое право, но я в этом участвовать не буду.Добавлено через 10 минут Еще раз докажу, что ненулевой размер относится не к object, а к most derived object, а это не одно и то же: Unless it is a bit-field (9.6), a most derived object shall have a non-zero size and shall occupy one or more bytes of storage.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 04.08.2015, 18:43 | ||||||||
|
что подобъект - всегда часть объекта, и не более того. спасибо конечно за выдержки из стандарта. однако я продвигаю не терминологию, а суть понятий, которые за этой терминологией скрываются. например, я говорю вам: "объект состоит из двух подобъектов" и вы сразу же понимаете, что я имел ввиду: "класс состоит из двух каких то частей". но когда вы захотите обратится к какой нибудь части, то обращаться вы будете именно что к полноценному объекту, а не к "части класса". вести себя "подобъект" будет как самый обычный объект, со всеми вытекающими. и получить его нулевого размера у вас не получится никак. вот есть иерархия:
я здесь вижу: что объект класса der состоит из инта и подобъекта класса base. при этом объект класса base не будет иметь нулевой размер. несмотря на то, что под подобъект base в объекте класса der, память выделена не будет.
0
|
||||||||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||||||
| 04.08.2015, 21:44 | |||||||
|
5.3.3 p2 The result of applying sizeof to a base class subobject is the size of the base class type. То есть по определению sizeof возвращается размер базового класса, а не самого подобъекта базового класса. То есть ты ну вообще никак не сможешь вывести реальный размер этого самого подобъекта базового класса. А этот размер может быть в действительности меньше результата sizeof.
0
|
|||||||
|
|
|||
| 05.08.2015, 07:35 | |||
|
Я смотрю пьянка до сих пор продолжается. Я конечно не хотел бы снова в ней участвовать, но все же заметил, что hoggy проводит последний (надеюсь) рубеж обороны на понятии:
hoggy, как вы это прокомментируете?
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 05.08.2015, 11:06 | ||||
|
я несколько раз делал ударение на различие понятий "объект" и "подобъект". и делал акцент: работать мы можем только с объектами. а "подобъект" - всего лишь абстракция, которая обозначает отношение включения. я считаю некорректно называть "подобъект" частным случаем "объекта". вот есть объект "автомобиль". мы поставили его на "паром". от этого этот "автомобиль" не стал быть "частным случаем автомобиля". это тот же самый автомобиль. и мы можем к нему обратиться, и в этом случае обращение будет именно как к "объекту-атомобилю", а не как к "части парома". что касается парома - по некоторым правилам все его подобъекты будут расставлены. для автомобилей-пустышок за ненадобностью не будет выделено места. хотя фигурировать они по прежнему будут, и к ним можно будет обращаться. вот и все. в которой весьма точно подмеченно - конструкторы отрабатывают для объектов. вы можете попробовать взять размер объекта в конструкторе, и убедиться, что он - не нулевой. объект базового класса действительно существует. к нему можно обратиться. цемес в том, что это будет обращение именно к объекту, а не к "подобъекту". ваша точка зрения: вы считаете, что подобъект - это объект, который был включен в состав другого объекта. и в отдельных ситуациях такой подобъект, может не занимать памяти. следовательно иногда объекты могут быть нулевого размера. вроде бы все логично и верно. но понимаете, все дело в том, что формально никаких подобъектов не существует. это - абстракция, которая фимгурирует лишь в декларации классов, и в голове программиста. вся работа ведется только с объектами. а объекты нулевыми быть не могут.
0
|
||||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
| 05.08.2015, 12:08 | |
|
Вы бы лучше код с таким усердием писали
0
|
|
|
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
|
|
| 05.08.2015, 12:16 | |
|
Кто или что такое Джуна?
(вики я уже смотрел)
0
|
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||||
| 05.08.2015, 12:21 | ||||
|
0
|
||||
|
|
|
| 05.08.2015, 12:22 | |
|
ture, https://www.cyberforum.ru/post7923632.html
Кроме вики нужно еще смотреть и тему.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 05.08.2015, 12:35 | ||
|
а вот "частей объекта" не существует. существуют только объекты. это все.
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 05.08.2015, 12:53 | |
|
hoggy, короче забей. Мы слишком много времени тратим на выяснение фактов, которые в принципе никак не помогут писать нам лучший код.
0
|
|
|
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
|
|
| 05.08.2015, 12:59 | |
|
Сеньёр выбирает себе мальчика по вкусу. Потому что есть задел работ, который намеревается передать мальцу. По сути мальчик может не знать даже с++, если сеньёр захочет. Рекомендую взять студента, т.к. они быстро обучаются самостоятельно, притаскивают из ВУЗа перлы преподов, которые будут полезны даже сеньеру.
И да - мальца придется подучить программировать, а значит нужен сговорчивый и без "так не делают, потому что на прошлой работе так не делали".
1
|
|
| 05.08.2015, 12:59 | |
|
Вот такой тест скинули на Джуна, пока еще не решил
Задача с собеседования Пример из собеседования по C++ Задачи с собеседования Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|