Как пройти СОБЕСЕДОВАНИЕ на C# & .Net РАЗРАБОТЧИКА (3)
Продолжение учебного разбора каверзных вопросов собеседования по C# и .NET. Обсуждаются язык, базы данных, архитектура, HTTP, Docker, тестирование и локализация.
Учебный разбор вопросов технического собеседования для C#/.NET-разработчика: от yield, enum с [Flags], const и readonly до баз данных, индексов, тестирования и микросервисов. Участники объясняют, как разворачивать ответы на собеседовании через практические примеры: авторизацию ролей, выбор SQL или NoSQL, работу ORM и Dapper, REST, Docker и локализацию. В финале разбирают нюансы локализации интерфейса, включая хранение языкового выбора и формы множественного числа.
Для yield return важно объяснить ленивое выполнение: элементы и связанные вызовы создаются только при фактическом перечислении IEnumerable.
[Flags] enum подходит для независимых комбинируемых состояний, например прав Read, Write и Delete; значения флагов задают степенями двойки.
const — значение, известное и неизменное для всей программы, а readonly фиксирует поле после инициализации конкретного объекта; ссылка readonly-объекта не меняется, но его внутренние свойства могут меняться.
Проверку доступа не стоит копировать в каждый endpoint: в зависимости от архитектуры её размещают в authorization-атрибутах, на контроллере, в middleware или на уровне доступа к данным.
При выборе SQL и NoSQL следует отталкиваться от ожидаемой структуры и связей данных: SQL удобнее для предсказуемой схемы и связей, NoSQL — для сильно различающихся документов; возможна гибридная схема.
Индексы ускоряют чтение ценой записи и поддержки структуры; индекс по полю с очень малым числом вариантов обычно не даёт существенной пользы.
Тестами стоит целенаправленно покрывать бизнес-логику и критические пользовательские сценарии, а не стремиться к 100% покрытия всего связующего кода.