Вопросы для интервью: разработчик WPF

Что должен знать каждый разработчик WPF?

Уровень входа

  • Сильный фон .NET 2.0 и желание учиться!
  • Объяснить свойства зависимостей?
  • Какой стиль?
  • Какой шаблон?
  • Привязка
  • Различия между базовыми классами: Visual, UIElement, FrameworkElement, Control
  • Визуальное vs Логическое дерево?
  • Уведомление об изменении свойства (INotifyPropertyChange и ObservableCollection)
  • ResourceDictionary - Добавил a7an
  • UserControls - добавлено a7an
  • разница между стратегиями маршрутизации пузырьков и туннелей - добавлен Карло
  • Почему Microsoft представила еще один язык разметки?
  • XAML

Середина уровня

  • Маршрутизированные события и команды
  • Преобразователи - Добавил (а) Artur Carvalho
  • Объясните механизм компоновки двухпроходного WPF?
  • Как реализовать панель?
  • Взаимодействие (WPF/WinForms)
  • Blend/Cider - добавлено by a7an
  • Анимация и раскадровка
  • Развертывание ClickOnce
  • Обшивка /Themeing
  • Пользовательские элементы управления
  • Как рабочие потоки обновляют пользовательский интерфейс?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Различные типы триггеров

старший

  • Пример прикрепленного поведения?
  • Что такое PRISM, CAL и CAG?
  • Как рабочие потоки обновляют пользовательский интерфейс?
  • WPF 3D - добавлено a7an
  • Различия между Silverlight 2 и WPF
  • MVVM/MVP - добавлено a7an
  • Настройка производительности WPF
  • Пиксельные шейдеры
  • Назначение Freezables

Любые другие вопросы "trick" , чтобы спросить?

Ожидаете ли вы, что ваш разработчик WPF должен знать blend?

Ответ 1

Я удивлен, что никто не упомянул о базовых знаниях XAML. Зная, что такое XAML, и возможность выполнять базовое редактирование с использованием XAML, а не графического инструмента. Разработчики среднего уровня должны иметь возможность сбивать формы/графические прототипы с помощью инструмента, такого как XAMLPad.

Ответ 2

Лично я бы спустил их перед стандартной машиной для сборки разработчиков и попросил их выполнить некоторую задачу. Нет вопросов, просто посмотрите, как выглядит их код через пару часов (или больше, если задача больше).

У меня была нулевая частота отказа при принятии решения о найме на основе результатов реального теста в реальном времени.

Задача не должна быть слишком сложной. В прошлом я использовал простое сообщение дневного приложения с сообщениями, хранящимися в базе данных или XML файле, и простой пользовательский интерфейс. Убедитесь, что вы попросите их правильно структурировать (поскольку задача достаточно мала, чтобы все это можно было сделать в одном классе, если они чувствовали себя вялыми).

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

Ответ 3

Я бы поставил привязки и конвертеры на начальном уровне, так как именно так вы проводите много времени в WPF.

Ответ 4

Довольно хороший список на мой взгляд.
Однако я не стал бы задавать сложные вопросы по собеседованию. Интервью дает достаточно стресса, трюк может смутить даже высококвалифицированного человека.

Ответ 5

Лично я бы поставил "Как рабочие потоки обновляют пользовательский интерфейс" прямо под начальным уровнем. Средний уровень, если вам действительно нужно. Если программист начального уровня может понять разницу между логическим деревом и визуальным деревом, они должны понимать, как обновлять пользовательский интерфейс из фонового потока.

В моей организации мы делаем много проектов WPF без Blend. Мне особенно не нравится Blend, поэтому я немного предвзятый, но навыки Blend должны быть приятными, я думаю.

Ответ 6

Разработчик WPF должен иметь четкое представление о том, чтобы отделить XAML от кода, и иметь возможность подробно обсуждать, где должна быть нарисована эта строка.

Возможность настраивать модель на языке по своему выбору, а затем использовать XAML для отображения представлений этой модели посредством привязки данных, шаблонов данных, шаблонов управления, стилей, триггеров, преобразователей значений и UserControls - довольно простая задача для программиста среднего уровня. (Хотя небольшая свобода действий должна быть предоставлена, если вы попросите кого-нибудь создать что-то вроде шаблона управления "от сердца".)

Действительно, в WPF много чего, и если бы не форумы MSDN и подробные книги по этому вопросу, это была бы задача "просто поднять". По этой причине я бы оценил настойчивость и способность учиться у других как верхнее требование для любого уровня.

Для программиста WPF начального уровня я бы не ожидал каких-либо знаний WPF как такового, но я бы потребовал знания объектно-ориентированных принципов, разделения пользовательского интерфейса от бизнес-логики и комфорта с аналогичной моделью событий. Опыт разработки элементов пользовательского интерфейса в стиле, подобном WPF (с контейнерами DockPanel и т.д.), Является плюсом.

Edit: Кроме того, что сказал Колин Макей.

Ответ 7

Уровень входа

  • Изменение свойства изменения (INotifyPropertyИзменить и ObservableCollection)
  • ResourceDictionary
  • элементы управления UserControl

Средний уровень

  • Смесь/сидр
  • анимация и раскадровка
  • Развертывание ClickOnce

старший

  • WPF 3D
  • Различия между Silverlight 2 и WPF
  • MVVM/MVP
  • Настройка производительности WPF
  • Пиксельные шейдеры

Ответ 8

Как насчет программирования/графического интерфейса GUI в целом и знаний cs? Если это для полноценных рабочих мест, это не имеет значения ИМХО, если парень должен потратить первые несколько месяцев на обучение WPF, если он (или она) имеет сильный фон.

Ответ 9

  • Какова связь между потоками и диспетчерами?
  • В чем цель Freezables?
  • В чем разница между свойствами и свойствами зависимостей? Зачем использовать тот или иной?

Ответ 10

  • Преобразователи (простые и мульти).
  • Interoperability.

Я бы предпочел, чтобы разработчик знал Blend. Он/она мог легко общаться с дизайнером, а также делать некоторые базовые дизайнерские вещи быстрее, чем просто писать в xaml.

Список интересен, возможно, ссылки на темы помогут.

Приветствия

Ответ 11

Еще одна принципиальная вещь - это разница между стратегиями маршрутизации пузырьков и туннелей.

Ответ 12

Середина или, может быть, старший: WinForms и WPF InterOp.

Ответ 13

Середина или, может быть, старший

  • Обшивка /Themeing
  • Пользовательские элементы управления

Ответ 14

Начальный уровень

  • Знания в дизайне UX
  • Знание в декларативном привязке для бизнес-объектов
  • Использование команд

Старший

  • Оптимизация ресурсов и настройка производительности
  • Модульность и масштабируемость
  • Асинхронная модель программирования

Ответ 15

Я думаю, что жизненный цикл приложения WPF - от создания до времени исполнения должен быть включен в уровень уровня Beginner. Не зная этого, его трудно поверить, это настоящий WPF-разработчик.

Ответ 16

Я бы расширил развертывание ClickOnce с помощью развертывания WPF в целом, так как хорошо знать ограничения и особенности каждой модели (ClickOnce, XBAP, только браузер). Размещение на среднем уровне кажется справедливым, хотя.

Ответ 17

  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Различные типы триггеров
  • Как сделать анимацию через StoryBoards

Ответ 18

Стили

обеспечивают механизм для вас применить тему в приложении и переопределить эту тему в тех конкретных случаях, где вы хотите. Стили определяются как ресурсы; на самом деле, они определены в том же разделе вашего файла XAML в какие ресурсы определены.

Ответ 20

Зная об модульном тестировании и о том, как он влияет на использование WPF, это базовый навык, который я бы поставил на уровне входа. Люди могут узнать подробности, но если они не думали об основах разработки программного обеспечения, тогда у вас есть проблема.