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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python9 224
  • Облачные технологии6 770
  • QA вакансии2 176
  • Android1 322
  • Инженер данных940
  • Продакт-менеджер435

Разработка

  • Backend вакансии1 317
  • iOS1 239
  • AI вакансии608
  • Fullstack вакансии523
  • Frontend вакансии456
  • Mobile вакансии28

По стеку

  • Go5 445
  • Java3 175
  • Kotlin1 119
  • Node.js1 026
  • Rust949
  • .NET666
  • PHP311
  • C++273
  • C#210

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

  • Kubernetes4 025
  • Linux-инфраструктура3 060
  • DevOps вакансии2 713
  • Terraform / IaC2 214
  • Мониторинг и Observability1 106
  • CI/CD919
  • SRE341
  • Кибербезопасность90

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

  • Аналитик данных555
  • Data Scientist513
  • Бизнес-аналитик431
  • Системный аналитик65

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

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

По регионам

  • Вакансии в США29 375
  • Вакансии в Европе11 048
  • Работа в России3 627
  • Вакансии в Канаде2 514

По формату

  • Удалённые вакансии48 640
  • Релокация в США29 375
  • Гибридная работа5 790
  • Офисная работа4 553

По уровню

  • Senior вакансии25 029
  • Middle вакансии13 245
  • Junior вакансии4 377

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

Все компании
  • Wise191 вакансия
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

Что такое STL? Назовите ключевые контейнеры и их характеристики производительности.

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

STL — контейнеры, алгоритмы и итераторы стандартной библиотеки. vector (O(1) random access, лучшая кэш-локальность) — выбор по умолчанию; unordered_map (O(1) lookup) — для частых поисков; map (O(log n), упорядоченный) — когда нужен порядок ключей.

Адаптеры

  • std::stack — обёртка над deque (или vector). LIFO.
  • std::queue — обёртка над deque. FIFO.
  • std::priority_queue — бинарная куча (max-heap по умолчанию). push O(log n), top/pop O(log n).
#include <vector>
#include <unordered_map>
#include <map>
#include <set>
#include <algorithm>
#include <iostream>

int main() {
    // vector — рабочая лошадь
    std::vector<int> v = {5, 3, 1, 4, 2};
    std::sort(v.begin(), v.end());  // O(n log n)
    v.push_back(6);                 // амортизированно O(1)
    v.insert(v.begin() + 2, 99);   // O(n) — сдвигает элементы

    // reserve — избегаем реаллокаций
    std::vector<int> big;
    big.reserve(1'000'000);  // одно выделение памяти

    // unordered_map — O(1) lookup
    std::unordered_map<std::string, int> freq;
    for (const auto& word : {"a", "b", "a", "c", "b", "a"}) {
        freq[word]++;
    }
    // freq["a"] == 3

    // map — если нужен порядок ключей
    std::map<int, std::string> ordered;
    ordered[3] = "three";
    ordered[1] = "one";
    ordered[2] = "two";
    for (const auto& [k, v2] : ordered) {
        std::cout << k << " " << v2 << '\n';  // 1, 2, 3
    }

    // set — уникальные элементы, отсортированы
    std::set<int> s = {5, 3, 1, 3, 5};
    // s == {1, 3, 5}

    // lower_bound — бинарный поиск в map/set O(log n)
    auto it = ordered.lower_bound(2);
    std::cout << it->first << '\n';  // 2
}

Что такое STL

STL (Standard Template Library) — часть стандартной библиотеки C++, содержащая обобщённые контейнеры, алгоритмы и итераторы. Все алгоритмы работают через итераторы и не зависят от конкретного контейнера.

Последовательные контейнеры

  • std::vector<T> — динамический массив. Random access O(1). push_back амортизированно O(1). Вставка/удаление в середину O(n). Лучшая кэш-локальность.
  • std::deque<T> — двусторонняя очередь. push_front/push_back O(1). Random access O(1), но хуже кэш-локальность (блоки памяти).
  • std::list<T> — двусвязный список. Вставка/удаление O(1) при наличии итератора. Нет random access. Плохая кэш-локальность — в реальных задачах часто медленнее vector даже для вставки.
  • std::array<T, N> — массив фиксированного размера на стеке. Zero overhead, random access O(1).

Ассоциативные контейнеры (упорядоченные)

  • std::map<K, V> — красно-чёрное дерево, ключи отсортированы. Insert/find/erase O(log n). Требует operator<.
  • std::set<K> — то же, без значений. O(log n) операции.
  • std::multimap / std::multiset — допускают дубликаты ключей.

Хеш-контейнеры (C++11)

  • std::unordered_map<K, V> — хеш-таблица. Амортизированно O(1) insert/find/erase. Worst case O(n) при коллизиях. Требует std::hash<K>.
  • std::unordered_set<K> — то же, без значений.

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

  • vector vs list: list проигрывает vector по скорости вставки в середину на реальных данных из-за плохой кэш-локальности — L1/L2 промахи дороже, чем O(n) сдвиг в vector.
  • Инвалидация итераторов vector: любая операция, вызывающая реаллокацию (push_back без reserve), инвалидирует все итераторы, указатели и ссылки.
  • unordered_map порядок не гарантирован: итерация даёт произвольный порядок; не полагайтесь на него в тестах.
  • std::map operator[]: map[key] создаёт элемент с нулевым значением, если ключа нет — используйте find() или count() для проверки без вставки.
  • Хеш-коллизии: при атаке на хеш (DoS) unordered_map деградирует до O(n) — используйте рандомизированный seed или robin-hood hashing в продакшне.
  • reserve для unordered_map: без reserve таблица перехеширует данные при заполнении — для известного числа элементов вызовите m.reserve(n) заранее.
  • emplace vs insert/push_back: emplace_back конструирует элемент на месте, insert — создаёт временный объект; для нетривиальных типов разница ощутима.

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

  • Что такое undefined behavior в C++ и приведите примеры?
  • Что такое smart pointers в C++? Объясните unique_ptr, shared_ptr и weak_ptr.
  • Что такое правило трёх / правило пяти / правило нуля (Rule of Three / Five / Zero)?
  • Что такое RAII (Resource Acquisition Is Initialization) и почему это важно?

Типичные ошибки

  • Объяснять STL контейнеры и сложность только по синтаксису, без жизненного цикла и стоимости.
  • Игнорировать ошибки, null/empty состояния, порядок инициализации или режим сборки.
  • Давать пример, который работает в демо, но ломается при изменении владельца ресурса.
  • Показывать сырой указатель без объяснения владельца и момента освобождения.

Что проверяет интервьюер

  • Кандидат формулирует точную модель для STL контейнеры и сложность, а не только определение.
  • Пример компилируем, безопасен по lifetime и соответствует версии технологии.
  • Названы trade-off, ограничения и диагностируемые симптомы ошибки.

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

Проверить себя по теме C++ →

Источники

  • https://en.cppreference.com/w/cpp/container
←Предыдущий вопросВ чём разница между выделением памяти на стеке (stack) и в куче (heap)?Следующий вопрос→В чём разница между `std::string_view` и `std::string`?

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

C++Debuggingmemory-managementperformance-tradeoffs

Вакансии с этим навыком

C++ вакансии
  • Senior C++ Software Engineer (#5819)
  • Security Architect
  • Sr. Software Developer - C#/WPF for UI/UX Development
  • Data Scientist (NLP Deep Learning Engineer)
  • Manager, Engineering (Remote Eligible in Bulgaria)