Собеседование на позицию Middle разработчика C# в Тинькофф Банке включает вопросы, проверяющие как теоретические знания, так и практические навыки.
Устные вопросы: Теоретические основы C#
Вопросы проверяют базовое понимание ключевых концепций C#:
- Паттерн Singleton. Singleton гарантирует существование только одного экземпляра класса. Важно понимать разницу между экземпляром класса и объектом.
- Разница между ref и out? ref и out — модификаторы параметров метода, передающие ссылку на переменную. ref требует предварительной инициализации переменной, out — нет. Метод с ref может, а с out обязательно изменяет значение переменной. Понимание ковариантности и контравариантности типов также приветствуется.
- Модификаторы доступа в C#. Стандартные модификаторы: public, private, protected, internal, internal protected. internal protected допускает доступ в рамках сборки и от производных классов. Может быть задан вопрос о модификаторе доступа по умолчанию для вложенных типов.
- Боксинг и анбоксинг. Хотя ранее широко использовались, с развитием параметрического полиморфизма (C# 3.0/LINQ в C# 3.5) их актуальность снизилась.
- Суть полиморфизма. Полиморфизм — один интерфейс, множество реализаций. Возможность использовать производный тип вместо базового.
Практические задания: Код и алгоритмы
Практические задачи включают написание кода:
- Задача 1: Тернарный оператор и типы данных. Фрагмент кода с тернарным оператором проверяет понимание типов данных, инициализации ссылочных типов и сравнения типов времени. Необходимо определить корректность кода и объяснить результаты, учитывая, что прямое сравнение DateTime с нулём некорректно.
- Задача 2: Вычисление окружности без изменения класса. Необходимо вычислить окружность, не изменяя класс Circle. Возможные подходы: методы расширения, производный класс, паттерн Стратегия с делегатами или лямбда-выражения.
- Задача 3: Преобразование единиц измерения. Написать программу, преобразующую километры в метры и выводящую результат. Проверяет базовые навыки программирования.
Вопросы и задачи охватывают широкий спектр знаний, необходимых для Middle разработчика C#. Часть вопросов может показаться элементарной, однако реальный набор вопросов на собеседовании может отличаться.