Есть ли опыт работы с фреймворком Qt
Что проверяют
Насколько глубоко вы знаете Qt: собирали формы в Designer или понимаете объектную модель, потоки и владение памятью. Следом почти всегда идут технические вопросы, чаще всего про типы соединений и многопоточность.
Как отвечать
Начните с фактов: версия, модули, тип приложения, срок. «Три года, Qt 5.15 и Qt 6, Widgets, Network, SQL, десктоп под Windows и Linux, участвовал в миграции на Qt 6» сразу задаёт уровень разговора. Затем пример задачи и готовность к деталям:
- сигналы и слоты: синтаксис на указателях
connect(sender, &Sender::valueChanged, receiver, &Receiver::update)проверяется компилятором, макросыSIGNAL()иSLOT()только в рантайме; - типы соединений:
Qt::AutoConnectionпо умолчанию даёт прямой вызов в том же потоке иQt::QueuedConnectionчерез цикл событий получателя, если потоки разные; - потоки: рабочий объект переносят через
moveToThread, разовые задачи отдаютQtConcurrent. Виджеты трогают только из главного потока; - память: объект с родителем удаляется вместе с ним, из слотов безопаснее звать
deleteLater(); - Model/View: свои модели от
QAbstractItemModelсbeginInsertRowsиendInsertRows; - сборка: в Qt 6 основной инструмент CMake, qmake остался в старых проектах.
mocгенерирует код для классов сQ_OBJECT.
Для коммерческого продукта упомяните лицензию: LGPL требует, чтобы пользователь мог заменить библиотеку, на практике это динамическая линковка. Иначе нужна коммерческая лицензия.
Если опыта нет, скажите прямо и опирайтесь на близкое: другой GUI-фреймворк, событийная модель, многопоточность в C++. Покажите, что понимаете основы.
Где спотыкаются
Говорят «да, работал», а на QueuedConnection плывут. Интервьюер именно этим и проверяет, поэтому лучше честно назвать реальный объём.
Наследуют QThread, объявляют в нём слоты и ждут, что они выполнятся в новом потоке. Слоты работают в потоке, где живёт сам объект QThread, обычно в главном.
Путают владение: вызывают delete для объекта, который ещё обрабатывает событие, или создают на стеке объект с родителем, который разрушится раньше него. Итог: двойное удаление и падение.