Skip to content

Instantly share code, notes, and snippets.

@rodion-m
Last active February 17, 2024 14:15
Show Gist options
  • Save rodion-m/4e5d399d460195c0ae69e55ea34cefc5 to your computer and use it in GitHub Desktop.
Save rodion-m/4e5d399d460195c0ae69e55ea34cefc5 to your computer and use it in GitHub Desktop.
Вопросы для экзамена по ASP.NET Core

Вопросы для экзамена по ASP.NET Core

Положение

  • Для сдачи экзамена каждому студенту следует ответить на 3 вопроса.
  • Ответ хотя бы на 1 вопрос из категории Junior обязателен.
  • В категории Senior можно ответить максимум на 1 вопрос.
  • В категории Middle можно ответить максимум на 2 вопроса.
  • Исчерпывающий ответ на вопрос дает максимальный балл в соответствии с категорией вопроса.
  • Частичный ответ снижает балл.
  • Если ответ не дан, баллы за него не начисляются.
  • Вопросы из категории Senior можно пропустить максимум 2 раза, каждый пропущенный вопрос уменьшает общее кол-во баллов на 1.
  • Вопросы из категории Junior и Middle пропустить нельзя. Пропуск вопроса из этих категорий равносилен отсуствию ответа (т. е. 0 баллов)
  • Вопросы выбираются в случайном порядке.
  • Если жребий выпадает на тот вопрос, на который ранее был дан ответ другим студентом, то такой вопрос пропускается.

Примеры

  • В случае исчерпывающего ответа на 3 вопроса из категории Junior студент получает 9 баллов.
  • В случае исчерпывающего ответа на 2 вопроса из категории Junior и на 1 вопрос из категории Middle студент получает 10 баллов.
  • В случае исчерпывающего ответа на 1 вопрос из категории Junior и на 2 вопроса из категории Middle студент получает 11 баллов.
  • В случае исчерпывающего ответа на 1 вопрос из категории Junior, 1 из Middle, 1 Senior с первой попытки студент получает 12 баллов.

"Junior" (3 балла за ответ, макс. 3 вопроса)

  1. ASP.NET Core - что это, где используется, какими ОС поддерживается?
  2. Что такое и зачем нужен Web API? Приведите примеры использования.
  3. Что такое Роутинг?
  4. В чем разница между REST и RPC?
  5. В чем преимущества и недостатки многопоточного выполнения запросов?
  6. Зачем нужен MVC?
  7. Чем примечателен слой с контроллерами?
  8. Что такое домейн (domain)?
  9. Где следует хранить API ключи и другие конфиденциальные данные? (Middle Up: дайте ответ для Development и для Production среды)
  10. Что такое структурное логирование и какие у него преимущества?
  11. Какие задачи решает библиотека Polly?
  12. Что такое и зачем нужен DI?
  13. Что такое и зачем нужен DIP?
  14. Какие границы применения DIP? Когда он избыточен?
  15. Что такое и зачем нужен DI-container? Какая у него ответственность?
  16. Какая разница между services.AddTransient и services.AddScoped?
  17. Каковы особенности работы с Singleton зависимостями?
  18. Как безопасно хранить пароли в БД?
  19. Передавать Transient зависимости в Singltone сервисы - хорошая идея? Обоснуйте свой ответ.
  20. Передавать Scoped зависимости в Singltone сервисы - хорошая идея? Обоснуйте свой ответ.
  21. Чем отличается Blazor WebAssembly от Blazor Server? Опишите преимущества и недостатки каждого.
  22. Что такое репозиторий? Зачем он нужен?
  23. Что такое и зачем нужен Unit Of Work?
  24. Для чего применяется CORS? Где настраивают CORS — на сервере или на клиенте?
  25. Какой алгоритм хеширования рекомендуется применять для хранение хешей паролей?
  26. Как следует хранить пароли пользователей?
  27. В чем отличие аутентификации от авторизации?
  28. Что такое и зачем нужен JWT?
  29. Что такое и зачем нужен Middleware?
  30. Что такое Request Pipeline?
  31. Что такое фильтр MVC?
  32. Что такое MVC filter pipeline?
  33. Какие типы фильтров вы знаете?

"Middle" (4 баллов за ответ)

  1. Что такое и зачем нужен SignalR?
  2. Почему именно "инверсия" зависимостей?
  3. Что такое и зачем нужен Service Locator? Почему это антипаттерн? Приведите примеры применения.
  4. Как можно решить задачу рассылки Email по расписанию?
  5. Почему методы контроллеров должны быть асинхронными?
  6. Для высоконагруженных вычислений (cpu bound) следует использовать многопоточность или асинхронность?
  7. Что такое слабосвязанный код? Чем он лучше сильносвязанного кода? Как бы вы достигали более слабой связности кода?
  8. Какой тип лучше возвращать в методе действия: IActionResult или ActionResult? Почему?
  9. Что такое Kestrel?

"Senior" (5 баллов за ответ, макс. 1 вопрос)

максимум 2 скипа, за каждый скип -1 балл

  1. Что плохого в таком использовании механизма синхронизации потоков Monitor.Enter(1)?
  2. Как ORM (Entity Framework или Entity Framework Core) транслируют C# код в язык запросов базы данных? Что для этого используется?
  3. Будет ли выполнен следующий код, и, если да, то как? Предполагаем, что в контексте объявлен DbSet, и у каждого пользователя указано имя (FirstName).
var michles = context.Users.Where(u => u.FirstName.StartsWith(Майкл));
foreach (var user in michles)
    Console.WriteLine(user.FirstName);
  1. Какая проблема у этого кода?
var sync = new object();
lock(sync) {
   await DoWork();
}
  1. Служба доставки осуществляет доставку товаров каждый час: с 7 до 8, с 8 до 9 и т. д. За 1 час служба может доставить максимум 5 заказов. Будут ли какие-то особенности в реализации метода приема заказов? (представим, что новые заказы приходят по HTTP API, реализованный на ASP.NET Core) Вот примерный код метода, принимающего заказ. Все ли с ним в порядке?
void OfferOrder(Order order, Interval interval)
{
  var intervalOrders = repo.GetOrdersByInterval(interval);
  if(intervalOrders.Count >= 5)
     throw new Exception("Выбранный интервал доставки недоступен");
  repo.AddOrder(order, interval);
}
  1. В данном примере класс AccountService нарушает DIP?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment