Как затирать про Singleton на собесе

Итак, вы на интервью на .NET-разработчика, и вас спрашивают: какие паттерны проектирования вы чаще всего использовали в своей работе? И вы не придумали ничего лучше, чем Singleton. Всё OK, Singleton тоже паттерн. Вопрос в том, как его правильно «готовить».

Во-первых, вы реально должны знать, что такое Singleton, для чего он нужен и как работает. А дальше начинается самое интересное — это то, куда этот вопрос может вас привести.

Если бы этот вопрос задал я, то хотел бы услышать вот что:

Во-первых, если позиция предполагает работу с ASP.NET Core, можно сразу рассказать, что именно этот паттерн вы часто используете. И не потому, что сами всё это ручками пишете, а потому что используете DI (dependency injection). Работая с ASP.NET Core, вы так или иначе его юзаете.

Таким образом, отвечая на вопрос о Singleton, вы выходите на рассказ о том, что такое DI, и упоминаете модели внедрения зависимостей с использованием методов:

• AddSingleton,

• AddScoped,

• AddTransient.

На этом не останавливаемся. Дальше рассказываем, какие проблемы могут возникнуть с Singleton в многопоточной среде. Например, что будет, если работать с этим Singleton из нескольких потоков?

Тут нужно упомянуть:

• Race Condition

• механизмы синхронизации потоков (Lock, Mutex, Semaphore и т.д.)

Естественно, нужно знать, чем они отличаются.

Если нужно, вас всегда остановят и зададут уточняющий вопрос. Но благодаря такому подходу вы показываете, что не просто формально выучили паттерн. К тому же, если из вас не нужно «выдавливать» знание, это сильно упрощает задачу интервьюеру и создаёт впечатление человека, который шарит.

И, что немаловажно, вы хоть немного, пусть и не гарантированно, управляете тем, куда пойдёт интервью — туда, где с вашими знаниями всё ок. А время на интервью, сами понимаете, ограничено. 😉