Разбор публичного мок-интервью на позицию Xamarin/WPF C# Developer. Формат сочетает вопросы по фундаментальным механизмам C#, архитектуре, code review и многопоточности с подробными комментариями ведущего.
Публичное пробное собеседование для C#-разработчика с опытом Xamarin.Forms: кандидат рассказывает о фриланс-заказах, а ведущий последовательно проверяет знания языка, платформы и архитектуры. Обсуждаются using и IDisposable, сборщик мусора, строки, generics, WPF/Xamarin.Forms, MVVM, исключения, LINQ и многопоточность. Ведущий дополняет и исправляет неполные ответы, а в конце выделяет темы, которые кандидату стоит повторить перед реальным интервью.
Уметь объяснить, что using разворачивается в конструкцию с гарантированным вызовом Dispose, освобождающим внешние ресурсы, а не просто «удаляющим объект из памяти».
Повторить различие String и StringBuilder: неизменяемость строк, лишние выделения при множественных изменениях и выбор StringBuilder для интенсивной сборки или модификации текста.
Разобраться в value type/reference type, boxing и unboxing, а также в преимуществах List<T> перед ArrayList при работе со значимыми типами и типобезопасными коллекциями.
Для code review подготовить аргументы в пользу разделения сущностей БД, доменных моделей и моделей представления; связи таблиц лучше выражать через соответствующие сущности и внешние ключи, а не вручную проверять строковые поля.
Повторить WPF/Xamarin.Forms binding, MVVM и INotifyPropertyChanged: когда изменение свойства должно дойти до View и почему ViewModel нужна как прослойка между интерфейсом и моделью.
Уметь различать async void, Task и Task<T>, понимать роль await и обработку исключений; отдельно изучить синхронизацию, тайм-ауты и отмену задач через CancellationToken.
Для вопросов по производительности полезно знать отложенное выполнение LINQ, отличия IEnumerable и материализации коллекций, а также стоимость поиска элемента в разных структурах данных.