Ответ
Я оцениваю себя как strong Middle / начинающий Senior разработчик (Middle+) в контексте C++.
Аргументы для уровня Middle+:
- Глубокое знание языка: Уверенное владение современными стандартами (C++17/20), идиомами (RAII, SFINAE, CRTP), STL, шаблонами.
- Системные навыки: Опыт работы с многопоточностью (
std::thread,std::atomic, lock-free структуры), сетевым программированием (asio/Boost.Asio), понимание модели памяти. - Инструменты: Повседневная работа с CMake, системами сборки, отладчиками (GDB/LLDB), профилировщиками (perf, VTune), санитайзерами (AddressSanitizer, ThreadSanitizer).
- Архитектура и качество кода: Участие в проектировании модулей, проведение code review, написание unit-тестов (Google Test), следование принципам SOLID/DRY.
Пример из опыта — реализация thread-safe кэша с истечением срока действия:
#include <shared_mutex>
#include <unordered_map>
#include <list>
#include <chrono>
template<typename Key, typename Value>
class TimedLRUCache {
using TimePoint = std::chrono::steady_clock::time_point;
struct Node { Key key; Value val; TimePoint timestamp; };
std::list<Node> items;
std::unordered_map<Key, typename std::list<Node>::iterator> index;
mutable std::shared_mutex mutex; // Читатели-писатели
size_t capacity;
std::chrono::seconds ttl;
void cleanup() {
auto now = std::chrono::steady_clock::now();
while (!items.empty() && (now - items.back().timestamp > ttl || index.size() > capacity)) {
index.erase(items.back().key);
items.pop_back();
}
}
public:
TimedLRUCache(size_t cap, std::chrono::seconds timeToLive)
: capacity(cap), ttl(timeToLive) {}
std::optional<Value> get(const Key& key) {
std::shared_lock lock(mutex); // Множественное чтение
if (auto it = index.find(key); it != index.end()) {
if (std::chrono::steady_clock::now() - it->second->timestamp <= ttl) {
items.splice(items.begin(), items, it->second); // Move-to-front
return it->second->val;
}
}
return std::nullopt;
}
void put(const Key& key, Value val) {
std::unique_lock lock(mutex); // Эксклюзивная запись
cleanup();
// ... логика вставки/обновления
}
};
Направление роста до Senior: Углубление в архитектурное проектирование распределенных систем на C++, оптимизацию на уровне CPU cache/памяти, менторинг команды и более активное участие в выработке технической стратегии проекта.
Видео-ответы
▶
Открытое собеседование на Middle Go-разработчика
▶
СОБЕСЕДОВАНИЕ REACT FULLSTACK В ГОСУХУ || MIDDLE
▶
СОБЕСЕДОВАНИЕ НА FRONTEND РАЗРАБОТЧИКА | REACT TYPESCRIPT
▶
#2 Собеседование смелого Frontend Middle разработчика
▶
#1 Cобеседование Middle Frontend разработчика
▶
Успешное Собеседование Javascript Middle+ Frontend Developer Interview - Московская биржа (160к)
▶
Мок-интервью Ruby on Rails: как пройти техническое собеседование без стресса
▶
Прохожу собеседование на iOS разработчика
▶
Собеседование frontend junior+ разработчика (CSS, HTML, JS, React, Typescript, Redux)
▶
#7 Первое собеседование Junior Frontend разработчицы