Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 467новых вакансий за сутки·93 721вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 267
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 129
  • Облачные технологии14 088
  • QA вакансии3 457
  • Backend вакансии2 115
  • Инженер данных1 805
  • Продакт-менеджер1 262

Разработка

  • Android1 865
  • iOS1 698
  • Fullstack вакансии989
  • AI вакансии949
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 660
  • Java6 550
  • Node.js2 020
  • .NET1 722
  • Kotlin1 619
  • Rust1 455
  • C#711
  • PHP683
  • C++572

DevOps и инфраструктура

  • Kubernetes7 769
  • DevOps вакансии6 056
  • Linux-инфраструктура5 493
  • Terraform / IaC4 266
  • CI/CD3 250
  • Мониторинг и Observability1 788
  • SRE567
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 141
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

Другие направления

  • Проджект-менеджер616
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 281
  • Вакансии в Европе23 875
  • Вакансии в Канаде4 475
  • Работа в России3 922

По формату

  • Удалённые вакансии75 035
  • Релокация в США44 281
  • Гибридная работа12 401
  • Офисная работа7 079

По уровню

  • Senior вакансии42 679
  • Middle вакансии20 894
  • Junior вакансии6 722

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме QtВсе вопросы
QtMiddleОпыт

Какие ошибки делают команды, когда используют Qt без понимания его модели выполнения или сборки?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Самые частые ошибки: вызов методов QObject из чужого треда, забытый Q_OBJECT макрос, блокировка event loop в главном треде и сборка без rebuild после изменений .ui/.qrc-файлов.

1. Нарушение thread affinity

Самая частая причина крашей в production — вызов методов QObject напрямую из другого треда вместо использования сигналов или QMetaObject::invokeMethod.

// НЕПРАВИЛЬНО: прямой вызов из рабочего треда
void WorkerThread::run() {
    mainWindowPtr->updateLabel("done"); // UB, краш
}

// ПРАВИЛЬНО: через очередь событий
void WorkerThread::run() {
    emit workFinished("done"); // маршрутизируется в главный тред
    // или:
    QMetaObject::invokeMethod(mainWindowPtr, "updateLabel",
                              Qt::QueuedConnection,
                              Q_ARG(QString, "done"));
}

Типичные командные ошибки при работе с Qt

2. Забытый Q_OBJECT

Если подкласс QObject не имеет Q_OBJECT в private-секции, сигналы и слоты не работают, qobject_cast возвращает nullptr, свойства не видны из QML. Компилятор не предупреждает — MOC просто не генерирует метаданные.

3. Блокировка event loop

Тяжёлые операции в слоте главного треда (I/O, вычисления > 16ms) замораживают GUI и ломают таймеры:

// НЕПРАВИЛЬНО: блокировка на 2 секунды
void MainWindow::onButtonClicked() {
    QThread::sleep(2); // GUI заморожен
}

// ПРАВИЛЬНО: вынести в worker thread
void MainWindow::onButtonClicked() {
    auto *worker = new QThread(this);
    connect(worker, &QThread::started, this, [this]() {
        // тяжёлая работа здесь
    });
    worker->start();
}

4. Не пересобирают после изменений MOC-зависимых файлов

Изменение .ui, .qrc, добавление нового сигнала в .h требует пересборки — make не всегда это обнаруживает. Команды запускают старый бинарник и удивляются, что сигнал не работает. Решение: make clean && make или настроить инкрементальную сборку через CMake с AUTOMOC ON.

5. Смешение raw pointer и QObject parent ownership

Удаление объекта, у которого есть Qt-parent, через delete вместо deleteLater или доверие parent-у — двойное удаление:

QWidget *parent = new QWidget;
QLabel *label = new QLabel(parent); // parent владеет label
delete label; // OK, но parent попытается удалить снова!
// Лучше: label->setParent(nullptr); delete label;
// Или: просто не вызывать delete — parent сделает это

6. Игнорирование Qt::ConnectionType при connect

Использование Qt::DirectConnection для кросс-тредных сигналов без осознания последствий — слот выполняется в треде sender-а, не receiver-а.

7. Неправильная работа с QML и C++ типами

Передача неregistered типов в QML через сигналы ведёт к undefined в QML. Все кастомные типы должны быть зарегистрированы через qmlRegisterType или QML_ELEMENT.

Подводные камни

  • CMake target_link_libraries без Qt6::Core даёт линковочные ошибки, которые выглядят как «Qt не установлен».
  • AUTOMOC в CMake не обрабатывает .cpp-файлы с Q_OBJECT — только .h. Нужно явно добавить файл в set_source_files_properties.
  • QTimer в non-GUI треде без event loop никогда не срабатывает — тихая ошибка.
  • Создание QApplication после форка (в daemon-процессах) ломает X11-соединение.
  • Qt Quick Controls 2 и Qt Quick Controls 1 нельзя смешивать в одном приложении — конфликт QML module namespace.
  • Отсутствие Q_DECLARE_METATYPE для кастомного типа в QVariant приводит к silent data loss.

Частые вопросы на собеседовании

  • Как Qt работает с многопоточностью? Что такое QThread и паттерн worker-object?
  • Как работает управление памятью в Qt?
  • В каких проектах Qt оправдан, а где он становится источником лишней сложности?
  • Что такое иерархия объектов Qt и как работает владение по принципу parent-child?

Что портит ответ

  • Перечислять ошибки без объяснения причин
  • Не отличать beginner mistakes от production failure modes
  • Не предлагать процесс, который предотвращает повторение ошибок

Что слушает интервьюер

  • Знает типичные ошибки при работе с Qt
  • Понимает причины ошибок
  • Предлагает практики prevention и early detection

Как вы знаете этот вопрос?

Проверить себя по теме Qt →
←Предыдущий вопросВ чём разница между `moveToThread()` и наследованием от `QThread`?Следующий вопрос→Какая mental model Qt важна для диагностики: lifecycle, graph, runtime, targets, protocol, threads или resources?

Связанные темы

Qttechnical-communicationtechnology-selectiontrade-off-analysis