-. -. Пожелания и особенности: Требования (+/-): - уверенное знание C# / .NET; - хорошее понимание структур данных и алгоритмов; - понимание асимптотической сложности и умение оценивать стоимость алгоритмических решений; - понимание работы памяти в .NET: GC, аллокации, value/reference types; - уверенное владение многопоточностью и синхронизацией; - опыт профилирования и оптимизации CPU/memory; - умение разбираться в сложном существующем коде и предметной области; - способность самостоятельно проектировать решение, а не только реализовывать готовое ТЗ. - графовые алгоритмы: Dijkstra, A*, поиск путей; - эвристический поиск, Beam Search, Best-First Search, Branch & Bound; - задачи scheduling / routing / optimization / simulation; - Span, stackalloc, unsafe, unmanaged memory; - object/memory pooling, понимание cache locality и false sharing; SIMD / hardware intrinsics; - опыт CPU-bound многопоточных вычислений; - C/C++ на уровне чтения и анализа существующего кода. Не является достаточным опытом сам по себе: преимущественно разработка CRUD/API/микросервисов без алгоритмических, вычислительных или performance-critical задач. Проект: разработка и развитие высокопроизводительного расчётного ядра для оптимизации железнодорожных процессов: движение локомотивов и составов по графу путей, планирование ресурсов, разрешение конфликтов и поиск оптимальных вариантов. Задачи: предстоит развивать модель состояния и алгоритмы solver-а, реализовывать генерацию и отсечение вариантов, работать с графом железнодорожных путей, оптимизировать использование памяти и производительность расчёта, распараллеливать поиск и переносить необходимую бизнес-логику из существующего C++ решения.