Питання для інтерв'ю: WPF Developer [закрито]


182

Що повинен знати кожен розробник WPF?

Вступний рівень

  • Сильний .NET 2.0 фон та готові вчитися!
  • Поясніть властивості залежності?
  • Що таке стиль?
  • Що таке шаблон?
  • Пов’язування
  • Відмінності між базовими класами: Visual, UIElement, FrameworkElement, Control
  • Visual vs Logical tree?
  • Повідомлення про зміну властивості (INotifyPropertyChange and ObservableCollection)
  • ResourceDictionary - Додав a7an
  • UserControls - Додав a7an
  • різниця між стратегіями маршрутизації бульбашок і тунелів - додав Карло
  • Чому Microsoft представила ще одну мову розмітки?
  • XAML

Середній рівень

  • Маршрутизовані події та команди
  • Перетворювачі - додав Артур Карвальо
  • Поясніть двигун 2-прохідного макета WPF?
  • Як реалізувати панель?
  • Взаємодія (WPF / WinForms)
  • Суміш / сидр - додав a7an
  • Анімації та розкадровки
  • ClickOnce Deployment
  • Скінінг / тематизація
  • Спеціальні елементи управління
  • Як робочі потоки можуть оновити інтерфейс користувача?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Різні типи тригерів

Старший

  • Приклад прикладної поведінки?
  • Що таке PRISM, CAL & CAG?
  • Як робочі потоки можуть оновити інтерфейс користувача?
  • WPF 3D - додав a7an
  • Відмінності між Silverlight 2 та WPF
  • MVVM / MVP - додав a7an
  • Налаштування продуктивності WPF
  • Піксельні шейдери
  • Призначення фрізабелів

Будь-які інші "хитрощі" запитання?

Чи очікуєте, що ваш розробник WPF знає суміш?


13
Я не погоджуюся з "Сильним фоном .NET 2.0". Насправді WPF робить багато речей, ніж .NET 2.0, а знаючи менше насправді, дозволяє швидше освоювати WPF ...
Арктур

28
Як щодо деяких посилань, що вказують також на кожну з цих тем!
Біной Антоній

16
Я думаю, що це досить висока планка для "початкового рівня". Я б сказав, що якщо посадова посада буде описана як "рівень вступу", ви не отримаєте багато (будь-яких) людей, які можуть відповідати вашим стандартам. Добре знати, звичайно, але не те, що більшість людей називали б "початковий рівень".
Беска

1
Я б не називав "метою заморожування" чимось старшим - і якщо ви збираєтесь поговорити про нарізування на середньому рівні, саме тут належать фрізаблеї. MVVM / MVP також не є особливо складним і не є прихованим.
Еймон Нербонна

4
Я думаю, що ці списки слід розділити на два: один для сторони графічного / інтерфейсу та один для технічного дизайну. Дизайнер користувальницького інтерфейсу, ймовірно, повинен знати, як використовувати суміш виразів, але йому не потрібно багато знати про технічні деталі резервного копіювання, такі як кодування за контрольованим контролем користувача. Програміст повинен знати, як створити контрольований елемент керування, але не потрібно використовувати вираження суміш (конструктор xaml в VS повинен бути достатнім, поки дизайнер інтерфейсу не зможе зробити його гарним).
Брайан Райхле

Відповіді:


41

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


34

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

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

Завдання не повинно бути надто складним. У минулому я використовував просте повідомлення щоденної програми з повідомленнями, що зберігаються у базі даних або XML-файлі та простим інтерфейсом користувача. Переконайтеся, що ви попросите їх добре її структурувати (оскільки завдання є досить малим, щоб все це можна було виконати в одному класі, якби вони відчували себе в'язаними).

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


4
Я повністю згоден, змушую людей робити речі, а не просто говорити про це. @Colin, після вашої допомоги щодо написання правопису (запитання щодо самодіагностики) я просто повинен був подати вас до 4-х розрядних областей .... До речі, там є тип: doen замість зробленого. :)
raoulsson

argh, typo, я мав на увазі смішне :)
raoulsson

Я частково погоджуюся з вами, але процес його споживання часу, навіть запитуючий усно, займає більше часу. Звичайно, цей шлях призводить до вибору потрібного кандидата.
Mohanavel

1
Отже, з якою частиною ви не згодні?
Колін Макей

1
Я також думаю, що нереально вважати, що "кожен розробник WPF повинен знати" вищезазначені питання. Вони більше схожі на загальні точки розмови; не складні передумови.
Еймон Нербонна

23

Я поставив би прив'язку та перетворювачі на початковий рівень, оскільки саме так ви витрачаєте багато часу на WPF.


19

На мою думку досить хороший список.
Однак я б не задавав складних питань на співбесіді. Інтерв'ю дає достатньо напруги, питання хитрості може бентежити навіть висококваліфіковану людину.


9
Я погоджуюся ... суть інтерв'ю полягає в оцінці ... а не в тому, щоб відмовлятись.
cplotts

Я не погоджуюся з цим, програміст IMO повинен обробляти складні речі, набагато гірші, ніж інтерв'ю. Тож складне питання добре бачити, як програміст вирішує проблему в умовах стресу. Просте "я не знаю" проходить довгий шлях.
Артур Карвальо,

15

Особисто я б поставив "Як робочі потоки можуть оновити інтерфейс користувача" під початковим рівнем. Середній рівень, якщо вам справді потрібно. Якщо програміст початкового рівня може зрозуміти різницю між логічним деревом та візуальним деревом, він повинен зрозуміти, як оновити інтерфейс користувача з фонового потоку.

У моїй організації ми робимо багато розробок WPF без Blend. Мені особливо не подобається Blend, тому я трохи упереджений, але, на мою думку, вміння Blend повинні бути приємними.


9

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

Можливість встановити модель на мові, яку вона обрала, а потім використовувати XAML для відображення поглядів на цю модель через прив'язку даних, шаблони даних, шаблони управління, стилі, тригери, перетворювачі значень та UserControls є досить базовим завданням для середини -програміст рівня. (Хоча невелика кількість вільного простору повинна бути надана, якщо попросити когось створити щось на зразок шаблону управління "від серця".)

Дійсно, у WPF дуже багато , і якби не форуми MSDN та глибокі книги з цього питання, було б цілком завдання "просто забрати". З цієї причини я б оцінив наполегливість та можливість вчитися у інших як головну вимогу на будь-якому рівні.

Щодо програміста початкового рівня WPF, я не очікував би будь-яких знань про WPF, але я вимагав би знань про об'єктно-орієнтовані принципи, відокремлення інтерфейсу користувача від ділової логіки та комфорт із подібною моделлю подій. Досвід розміщення елементів інтерфейсу у стилі, схожому на WPF (із контейнерами DockPanel тощо) - плюс.

Edit: Також те, що сказав Колін Макей.


8

А як щодо досвіду програмування / графічного досвіду взагалі та знань cs? Якщо це робота на повний робочий день, не має значення ІМХО, якщо хлопець повинен провести перші кілька місяців з навчанням WPF, якщо у нього (або вона) є сильний досвід.


7

Вступний рівень

  • Сповіщення про зміну властивості (INotifyPropertyChange and ObservableCollection)
  • РесурсD Dictionary
  • UserControls

Середній рівень

  • Суміш / сидр
  • анімації та розкадровки
  • ClickOnce Deployment

Старший

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

7
  • Який взаємозв'язок між потоками та диспетчерами?
  • Яке призначення Freezables?
  • Яка різниця між властивостями та властивостями залежностей? Навіщо використовувати те чи інше?

5
  • Перетворювачі (прості та багаторазові).
  • Взаємодія.

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

Список цікавий, можливо, допоможуть посилання на теми.

Ура


4

Ще одна дійсна основна річ - це різниця між стратегіями маршрутизації бульбашок та тунелів.


3

Вступний рівень

  • Знання з UX Design
  • Знання з декларативного прив'язки для об'єктів бізнесу
  • Використання команд

Старший

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


2

Середній чи, можливо, старший

  • Скінінг / тематизація
  • Спеціальні елементи управління

2
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Різні типи тригерів
  • Як робити анімації за допомогою StoryBoards

1

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


Я поняття не маю, що ви тут маєте на увазі
cplotts

Я думаю, що він це означає: msdn.microsoft.com/en-us/library/ms754221.aspx
HappyNomad

1

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


1

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



1

Знання про тестування одиниць та їх вплив на те, як ви використовуєте WPF - це основний навик, який я б застосував на рівні входу. Люди можуть дізнатися деталі, але якщо вони не замислювалися над основами розробки програмного забезпечення, то у вас є проблема.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.