C#. Подготовка к интервью
Какие темы стоит повторить🔹 .NET/C#
Мы ожидаем, что вы знакомы с внутренним устройством стандартных структур данных, особенностями их поведения с точки зрения платформы .NET и знаете вычислительную сложность основных операций над ними. Будет большим плюсом, если вы знакомы с потокобезопасными структурами данных.
Ещё будет отлично, если вы знакомы с основными примитивами синхронизации, моделью работы памяти современных архитектур и lock-free-операциями (поговорим про GC, стек и кучу), умеете справляться с типичными проблемами, возникающими в многопоточном/асинхронном контексте.
🔹 Архитектура
Опытным специалистам мы можем предложить спроектировать сложную отказоустойчивую и высоконагруженную систему. Вам предстоит определить и сформулировать функциональные и технические требования, спроектировать высокоуровневую архитектуру, детально описать один из компонентов, оценить вычислительные ресурсы, необходимые для полномасштабного внедрения.
Как правило, задача формулируется в очень общих чертах, поэтому здесь важна активная коммуникация: задавайте уточняющие вопросы, выдвигайте обоснованные предположения и идеи, аргументируйте свою точку зрения. В процессе беседы вам может понадобиться описать потоки данных в системе, API, определить ключевые алгоритмы и структуры данных или описать структуру таблиц в СУБД, набросать черновик реализации одной из частей. Кроме проектирования ядра системы, важно определить её структуру и топологию в целом: балансировку нагрузки, сценарии отказов и соответствующих защитных механизмов, нюансы эксплуатации, способы и методы контроля штатного функционирования системы.
Также можем обсудить такие темы, как SOLID, микросервисная архитектура и Domain-Driven Design.
🔹 Алгоритмы*
Важно, чтобы вы были знакомы со стандартными алгоритмами, включая разные методы сортировки и обхода графов. Нужно уметь давать оценку сложности алгоритма в нотации big O.
🔹 Базы данных*
Темы, которые можно повторить: реляционные и нереляционные БД, план и оптимизация запросов, индексы, транзакции, очереди сообщений.
Стоит отметить, что основная база данных в компании Ozon — PostgreSQL. Основной брокер сообщений — Kafka.
*Для некоторых департаментов в Ozon
📚 Полезные ресурсы для подготовки
- https://docs.microsoft.com/ru-ru/dotnet/standard/threading
- https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/concepts/async
- https://microservices.io/patterns/microservices.html
- https://www.postgresql.org/docs/13/index.html
- Вернон Вон «Предметно-ориентированное проектирование. Самое основное»
- Нархид Ния, Гвен Шапира «Apache Kafka. Потоковая обработка и анализ данных»
- Джеффри Рихтер «CLR via C#»
- Ганс-Юрген Шениг «PostgreSQL 11. Мастерство разработки»
- Задачи на ресурсе https://leetcode.com уровня easy и middle
По материалам блога Ozon Tech
Тэги: #csharp, #dotnet, #собеседование