Blog / 21 вопрос по .NET для Junior, Middle и Senior
Tuesday, 10 November 2020Сегодня на портале ДОУ вышла статья 150+ вопросов п .NET для Junior, Middle та Senior. Вопросы для этой статьи готовило много людей, у которых есть большой опыт работы c платформой .NET, в том числе есть там несколько вопросов и от меня.
В этой же публикации я хочу не только перечислить вопросы, которые обычно задаю соискателям, но и поделиться некоторыми ожиданиями от разработчиков и своими соображениями по поводу тестовых заданий и того, чего я скорее всего, никогда не буду просить сделать соискателя.
Вопросы на позицию Junior
- Объясните ваше понимание основных принципов ООП.
- В чем разница между значимыми и ссылочными типами?
- Что такое боксинг и анбоксинг?
- Что такое сборка мусора?
- Как можно обработать исключение?
- Что такое дженерик (generic) и для чего нужны такие типы?
- Что такое пространство имен (namespace) и для чего оно нужно?
Чего я жду от разработчика уровня Junior
В первую очередь Junior разработчик должен показать желание развиваться и готовность инвестировать собственное время в собственное развитие.Вопросы на позицию Middle
- Какие паттерны вы знаете и используете?
- Какие способы отладки приложения вы применяете?
- Есть ли преимущества у иммутабельности? Если да, то какие?
- Используете ли вы логирование, когда пишете код?
- Что такое в вашем понимании чистая функция? Какие у нее преимущества?
- Что такое внедрение зависимостей и для чего оно нужно?
- Расскажите, как работают асинхронные методы? Чем асинхронность отличается от параллелизма?
Чего я жду от разработчика уровня Middle
От разработчика этого уровня я ожидаю способностей самостоятельно разобраться в поставленной задаче и решить ее наилучшим способом.Вопросы на позицию Senior
- Расскажите про проекты, в которых вы работали. Опишите их архитектуру (если это не нарушает NDA).
- Назовите три самые сложные проблемы, которые вам приходилось решать. Как вы их решили, как пришли к этому решению?
- Какие способы взаимодействия между микросервисами вы знаете и какие у них есть достоинства и недостатки.
- Каким образом вы будете отлаживать систему, состоящую из множества миросервисов, если нужно отследить полный путь обработки запроса?
- Опишите, какие вы знаете потенциальные проблемы, связанные с параллелизмом данных и задач.
- Какие инструменты выберете для работы с реляционными базами данных? Опишите их достоинства и недостатки.
- Какие инструменты для работы с очередями вам известны (как в .NET, так и отдельные продукты), какой инструменты/продукт вы бы выбрали и почему?
Чего я жду от разработчика уровня Senior
На этом уровне разработчик должен уметь самостоятельно разбить крупную задачу на подзадачи и определить архитектуру решения, которое он собирается реализовать. Также я ожидаю, помимо знаний этот специалист обладает уже определённым опытом, который поможет ему предусмотреть возможные проблемы, которые на первый взгляд не видны разработчикам уровня Middle.В целом, каждый из приведенных выше вопросов – это приглашение беседе и более глубокому обсуждению, которое вполне вероятно сможет вывести беседу на совершенно новые темы, которые помогут кандидату лучше раскрыться и показать свой опыт.
Чего я точно не буду делать во время собеседования
Я точно не буду спрашивать расшифровку аббревиатур. Знает ли человек на память что значит SOLID, DWH, ROR, FOSS, или уже давно забыл – это никак не поможет определить уровень его компетентности.Я точно не буду просить кандидата написать код на бумаге. Вообще просьба написать программиста код на бумаге сродни просьбе водителя грузовика показать, что он умеет переносить грузы на спине, а водителя экскаватора – показать, как он умеет обращаться с совковой лопатой. В реальной обстановке писать код за пределами IDE разработчику придется примерно никогда.
Я точно не буду просить перечислить на память сигнатуры методов. Вообще нет смысла спрашивать у кандидата ту информацию, которая легко находится в документации. Задача инженера – спроектировать и подготовить наиболее эффективное решение, а не выучить на память весь MSDN.