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

182

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

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

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

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

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

Старшая

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

Любые другие вопросы с подвохом ?

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

rudigrobler
источник
13
Я не согласен с «сильным фоном .NET 2.0». На самом деле WPF делает много вещей, отличных от .NET 2.0, а знание меньшего на самом деле позволяет быстрее освоить WPF ...
Arcturus
28
Как насчет некоторых ссылок, указывающих на каждую из этих тем!
Биной ​​Антони
16
Я думаю, что это довольно высокая планка для «начального уровня». Могу поспорить, что если должность будет описана как «начальный уровень», вы не получите много (любых) людей, которые могут соответствовать вашему стандарту. Конечно, это полезно знать, но не то, что большинство людей назвали бы «начальным уровнем».
Беска
1
Я бы не назвал «назначение freezables» чем-то старшим - и если вы собираетесь поговорить о многопоточности на среднем уровне, это то, к чему относятся freezables. MVVM / MVP также не особенно сложен и не таинственен.
Имон Нербонн
4
Я думаю, что эти списки следует разделить на две части: одну для графического / пользовательского интерфейса и одну для технического дизайна. Дизайнер пользовательского интерфейса, вероятно, должен знать, как использовать сочетание выражений, но ему не нужно много знать о технических деталях поддержки, таких как кодирование за настраиваемым пользовательским элементом управления. Программист должен знать, как создать проектируемый элемент управления, но не должен использовать смесь выражений (конструктора xaml в VS должно быть достаточно, пока конструктор пользовательского интерфейса не сможет сделать его красивым).
Брайан Рейхл

Ответы:

41

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

Марк Хит
источник
34

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

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

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

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

Колин Маккей
источник
4
Я полностью согласен, заставлять людей делать вещи, а не просто говорить об этом. @Colin, после твоей помощи по правописанию (вопросы по приложению самодиагностики) мне просто пришлось отправить тебя в 4-х разрядное царство .... Кстати, там есть тип: doen вместо done. :)
Раульссон
аааа, опечатка, я имел в виду, смешно :)
Раульссон
Я частично согласен с вами, но время затрачивает на процесс, даже устный вопросник занимает больше времени. Конечно, этот путь приводит к выбору подходящего кандидата.
Моханавель
1
Итак, с какой частью вы не согласны?
Колин Маккей
1
Я также думаю, что нереалистично предполагать, что «каждый разработчик WPF должен знать» вышеуказанные вопросы. Они больше похожи на общие темы для разговоров; не жесткие предпосылки.
Имон Нербонн
23

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

Роберт Джеппезен
источник
19

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

Ака
источник
9
Я согласен ... смысл интервью в том, чтобы оценить ... не сбить с толку парня.
cplotts
Я не согласен с этим, ИМО программист должен справляться с трудными вещами, намного хуже, чем интервью. Так что сложный вопрос - это хорошо, чтобы увидеть, как программист решает проблему в стрессовой ситуации. Простое «я не знаю» проходит долгий путь.
Артур Карвалью
15

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

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

обкрадывать
источник
9

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

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

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

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

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

мин
источник
8

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

Nils
источник
7

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

  • Уведомление об изменении свойства (INotifyPropertyChange и ObservableCollection)
  • ResourceDictionary
  • элементы управления UserControl

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

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

Старшая

  • WPF 3D
  • Различия между Silverlight 2 и WPF
  • MVVM / MVP
  • Настройка производительности WPF
  • Пиксельные шейдеры
Алан Ле
источник
7
  • Какова связь между потоками и диспетчерами?
  • Какова цель Freezables?
  • В чем разница между свойствами и свойствами зависимости? Зачем использовать тот или иной?
rcabr
источник
5
  • Конвертеры (простые и мульти).
  • Interoperability.

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

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

ура

Артур Карвалью
источник
4

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

Карло
источник
3

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

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

Старшая

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

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

Nidonocu
источник
2

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

  • Обшивка / Themeing
  • Пользовательские элементы управления
cplotts
источник
2
  • DataTemplate против HierarchicalDataTemplate
  • ItemsControl против ItemsPresenter против ContentControl против ContentPresenter
  • Различные типы триггеров
  • Как сделать анимацию через StoryBoards
kenwarner
источник
1

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

Кришна
источник
Я понятия не имею, что вы имеете в виду здесь.
cplotts
Я думаю, что он имеет в виду это: msdn.microsoft.com/en-us/library/ms754221.aspx
HappyNomad
1

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

Рубен Штейнс
источник
1

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

Ashwini
источник
1

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

Ян Рингроз
источник