Interviewfragen: WPF Developer [geschlossen]

182

Was sollte jeder WPF-Entwickler wissen?

Einstiegslevel

  • Starker .NET 2.0 Hintergrund & lernbereit!
  • Abhängigkeitseigenschaften erklären?
  • Was ist ein Stil?
  • Was ist eine Vorlage?
  • Bindung
  • Unterschiede zwischen Basisklassen: Visual, UIElement, FrameworkElement, Control
  • Visueller vs logischer Baum?
  • Benachrichtigung über Eigenschaftsänderungen (INotifyPropertyChange und ObservableCollection)
  • ResourceDictionary - Hinzugefügt von a7an
  • UserControls - Hinzugefügt von a7an
  • Unterschied zwischen Bubble- und Tunnel-Routing-Strategien - hinzugefügt von Carlo
  • Warum hat Microsoft eine weitere Auszeichnungssprache eingeführt?
  • XAML

Mittlere Ebene

  • Weitergeleitete Ereignisse und Befehle
  • Konverter - Hinzugefügt von Artur Carvalho
  • Erklären Sie die 2-Pass-Layout-Engine von WPF?
  • Wie implementiere ich ein Panel?
  • Interoperabilität (WPF / WinForms)
  • Mischung / Cider - Hinzugefügt von a7an
  • Animationen und Storyboarding
  • ClickOnce-Bereitstellung
  • Häuten / Thematisieren
  • Benutzerdefinierte Steuerelemente
  • Wie können Worker-Threads die Benutzeroberfläche aktualisieren?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Verschiedene Arten von Triggern

Senior

  • Beispiel für angehängtes Verhalten?
  • Was ist PRISM, CAL & CAG?
  • Wie können Worker-Threads die Benutzeroberfläche aktualisieren?
  • WPF 3D - Hinzugefügt von a7an
  • Unterschiede zwischen Silverlight 2 und WPF
  • MVVM / MVP - Hinzugefügt von a7an
  • WPF-Leistungsoptimierung
  • Pixel Shader
  • Zweck von Freezables

Haben Sie noch andere "Trick" -Fragen?

Erwarten Sie von Ihrem WPF-Entwickler, dass er Blend kennt?

Rudigrobler
quelle
13
Ich bin mit dem "starken .NET 2.0-Hintergrund" nicht einverstanden. Tatsächlich macht WPF viele Dinge anders als .NET 2.0, und wenn Sie weniger wissen, können Sie WPF schneller beherrschen ...
Arcturus
28
Wie wäre es mit einigen Links, die auch auf jedes dieser Themen verweisen?
Binoj Antony
16
Ich denke, dies ist eine ziemlich hohe Messlatte für "Einsteiger". Ich würde wetten, dass wenn die Jobposition als "Einstiegsniveau" beschrieben wird, Sie nicht viele (irgendwelche) Leute bekommen, die Ihren Standard erfüllen können. Sicherlich gute Dinge zu wissen, aber nicht das, was die meisten Leute als "Einstiegsniveau" bezeichnen würden.
Beska
1
Ich würde "Zweck von Freezables" nicht als etwas Älteres bezeichnen - und wenn Sie über das Einfädeln auf mittlerer Ebene sprechen, dann gehören Freezables dazu. MVVM / MVP ist auch weder besonders komplex noch arkan.
Eamon Nerbonne
4
Ich denke, diese Listen sollten zweigeteilt werden, eine für die Grafik- / UI-Design-Seite und eine für die technische Design-Seite. Der UI-Designer sollte wahrscheinlich wissen, wie man eine Ausdrucksmischung verwendet, muss jedoch nicht viel über die technischen Details des Hintergrunds wie die Codierung hinter einem gestaltbaren Benutzersteuerelement wissen. Der Programmierer muss wissen, wie ein gestaltbares Steuerelement erstellt wird, muss jedoch keine Ausdrucksmischung verwenden (der xaml-Designer in VS sollte ausreichen, bis der UI-Designer es hübsch machen kann).
Brian Reichle

Antworten:

41

Ich bin überrascht, dass noch niemand Grundkenntnisse in XAML erwähnt hat. Wissen, was XAML ist, und die Möglichkeit, einige grundlegende Bearbeitungen mit XAML anstelle eines grafischen Entwurfswerkzeugs durchzuführen. Entwickler auf mittlerer Ebene sollten in der Lage sein, Formular- / Grafikprototypen mit einem Tool wie XAMLPad zu erstellen.

Mark Heath
quelle
34

Persönlich würde ich sie vor eine Standard-Entwickler-Build-Maschine setzen und sie bitten, eine Aufgabe zu erledigen. Keine Fragen, sehen Sie einfach, wie ihr Code nach ein paar Stunden aussieht (oder mehr, wenn die Aufgabe länger ist).

Ich hatte eine Fehlerquote von Null bei der Entscheidung über die Einstellung, basierend auf den Ergebnissen eines tatsächlichen Programmiertests im wirklichen Leben.

Die Aufgabe muss nicht zu schwierig sein. Ich habe in der Vergangenheit eine einfache Nachricht der Tagesanwendung verwendet, wobei die Nachrichten in einer Datenbank oder XML-Datei und einer einfachen Benutzeroberfläche gespeichert waren. Stellen Sie sicher, dass Sie sie bitten, es gut zu strukturieren (da die Aufgabe so klein ist, dass alles in einer Klasse erledigt werden kann, wenn sie sich geneigt fühlen).

Von den obigen Fragen würde ich sagen, dass Sie keine gute Vorstellung davon bekommen können, ob sie wirklich gut sind oder nicht. Ein potenzieller Kandidat könnte diese einfach lesen und Antworten in Dosen erstellen, die großartig klingen. All dies zeigt, dass der Kandidat sprechen kann, aber was im Job selbst wichtig ist, ist, ob er laufen kann.

Colin Mackay
quelle
4
Ich stimme vollkommen zu, Leute dazu zu bringen, Dinge zu tun, nicht nur darüber zu reden. @Colin, nach deiner Hilfe bei der Rechtschreibung (die Fragen zur Selbstdiagnose-App) musste ich dich nur in den 4-stelligen Bereich hochstufen ... Übrigens gibt es dort einen Typ: doen statt done. :)
Raoulsson
Argh, Tippfehler, ich meinte, lustig :)
Raoulsson
Ich stimme Ihnen teilweise zu, aber sein zeitaufwändiger Prozess, selbst mündliche Fragesteller nehmen sich mehr Zeit. Dieser Weg führt natürlich zur Auswahl des richtigen Kandidaten.
Mohanavel
1
Also, mit welchem ​​Teil sind Sie nicht einverstanden?
Colin Mackay
1
Ich denke auch, dass es unrealistisch ist anzunehmen, dass "jeder WPF-Entwickler die obigen Fragen kennen sollte". Sie sind eher allgemeine Gesprächsthemen; keine harten Voraussetzungen.
Eamon Nerbonne
23

Ich würde Bindungen und Konverter auf Einstiegsebene setzen, da Sie so viel Zeit in WPF verbringen.

Robert Jeppesen
quelle
19

Ziemlich gute Liste meiner Meinung nach.
Allerdings würde ich beim Interview keine kniffligen Fragen stellen. Das Interview gibt selbst genug Stress, Trickfragen können selbst hochqualifizierte Personen verwirren.

aku
quelle
9
Ich stimme zu ... der Sinn eines Interviews ist es zu beurteilen ... den Kerl nicht zu stolpern.
Plots
Ich bin damit nicht einverstanden, IMO, ein Programmierer muss mit harten Dingen umgehen, viel schlimmer als Interviews. Eine knifflige Frage ist also gut zu sehen, wie der Programmierer ein Problem unter Stress löst. Ein einfaches "Ich weiß nicht" reicht weit.
Artur Carvalho
15

Persönlich würde ich "Wie können Worker-Threads die Benutzeroberfläche aktualisieren" direkt unter dem Einstiegsniveau platzieren. Mittelstufe, wenn Sie es wirklich brauchen. Wenn ein Programmierer der Einstiegsklasse den Unterschied zwischen dem logischen und dem visuellen Baum verstehen kann, sollte er verstehen, wie die Benutzeroberfläche über einen Hintergrundthread aktualisiert wird.

In meiner Organisation entwickeln wir viel WPF ohne Blend. Ich mag Blend nicht besonders, deshalb bin ich ein bisschen voreingenommen, aber Blend-Fähigkeiten sollten eine nette Sache sein, denke ich.

rauben
quelle
9

Ein WPF-Entwickler sollte ein sicheres Verständnis dafür haben, die XAML vom Code-Behind zu trennen, und in der Lage sein, ausführlich zu diskutieren, wo diese Linie gezogen werden soll.

Die Möglichkeit, ein Modell in der Sprache ihrer Wahl einzurichten und dann mithilfe von XAML Ansichten zu diesem Modell über Datenbindung, Datenvorlagen, Steuerungsvorlagen, Stile, Trigger, Wertekonverter und UserControls anzuzeigen, ist eine ziemlich grundlegende Aufgabe für die Mitte -Stufenprogrammierer. (Obwohl ein kleiner Spielraum eingeräumt werden sollte, wenn jemand gebeten wird, so etwas wie eine Kontrollvorlage "aus dem Herzen" zu erstellen.)

Wirklich, es gibt viel in WPF, und wenn es nicht die MSDN-Foren und ausführlichen Bücher zu diesem Thema gäbe, wäre es eine ziemliche Aufgabe, "es einfach aufzugreifen". Aus diesem Grund würde ich Ausdauer und die Fähigkeit, von anderen zu lernen, als oberste Voraussetzung für jedes Level bewerten.

Für einen WPF-Programmierer der Einstiegsklasse würde ich keine Kenntnisse über WPF an sich erwarten, aber ich würde Kenntnisse über objektorientierte Prinzipien, Trennung der Benutzeroberfläche von der Geschäftslogik und Komfort mit einem ähnlichen Ereignismodell verlangen. Erfahrung im Layout von UI-Elementen in einem ähnlichen Stil wie WPF (mit DockPanel-Containern usw.) ist von Vorteil.

Edit: Auch was Colin Mackay gesagt hat.

ohne
quelle
8

Was ist mit GUI-Programmierung / Grafikerfahrung im Allgemeinen und CS-Kenntnissen? Wenn es sich um einen Vollzeitjob handelt, spielt es meiner Meinung nach keine Rolle, ob der Typ die ersten Monate mit dem Erlernen von WPF verbringen muss, wenn er (oder sie) einen starken Hintergrund hat.

Nils
quelle
7

Einstiegslevel

  • Eigenschaftsänderung NOtification (INotifyPropertyChange und ObservableCollection)
  • ResourceDictionary
  • UserControls

Mittlere Ebene

  • Mischung / Apfelwein
  • Animationen und Storyboarding
  • ClickOnce-Bereitstellung

Senior

  • WPF 3D
  • Unterschiede zwischen Silverlight 2 und WPF
  • MVVM / MVP
  • WPF-Leistungsoptimierung
  • Pixel Shader
Alan Le
quelle
7
  • Welche Beziehung besteht zwischen Threads und Dispatchern?
  • Was ist der Zweck von Freezables?
  • Was ist der Unterschied zwischen Eigenschaften und Abhängigkeitseigenschaften? Warum den einen oder anderen benutzen?
rcabr
quelle
5
  • Konverter (einfach und mehrfach).
  • Interoperabilität.

Ich denke, ich würde einen Entwickler bevorzugen, der Blend kennt . Er / Sie konnte leicht mit dem Designer kommunizieren und einige grundlegende Designer-Dinge schneller erledigen als nur in xaml zu schreiben.

Die Liste ist interessant, vielleicht würden Links zu den Themen helfen.

Prost

Artur Carvalho
quelle
4

Eine andere wirklich grundlegende Sache wäre der Unterschied zwischen Blasen- und Tunnel-Routing-Strategien.

Carlo
quelle
3

Einstiegslevel

  • Kenntnisse in UX Design
  • Kenntnisse in deklarativer Bindung für Geschäftsobjekte
  • Befehlsverwendung

Senior

  • Ressourcenoptimierung und Leistungsoptimierung
  • Modularität und Skalierbarkeit
  • Programmiermodell asynchronisieren
Guru
quelle
2

Mitte oder vielleicht Senior: WinForms und WPF InterOp.

Nidonocu
quelle
2

Mitte oder vielleicht Senior

  • Häuten / Thematisieren
  • Benutzerdefinierte Steuerelemente
cplotts
quelle
2
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Verschiedene Arten von Triggern
  • So erstellen Sie Animationen über StoryBoards
Kenwarner
quelle
1

Ich denke, der Lebenszyklus der WPF-Anwendung - von der Erstellung bis zur Laufzeit - sollte in die Anfängerstufe der Fragen aufgenommen werden. Ohne es zu wissen, ist es schwer zu glauben, dass man ein echter WPF-Entwickler ist.

krishna
quelle
Ich habe keine Ahnung, was du hier meinst.
Plots
Ich denke, er meint das: msdn.microsoft.com/en-us/library/ms754221.aspx
HappyNomad
1

Ich würde die ClickOnce-Bereitstellung im Allgemeinen um die WPF-Bereitstellung erweitern, da es gut ist, die Einschränkungen und Besonderheiten jedes Modells zu kennen (nur ClickOnce, XBAP, Browser). Es scheint jedoch fair, es auf mittlerem Niveau zu platzieren.

Ruben Steins
quelle
1

Stile bieten einen Mechanismus, mit dem Sie ein Thema auf eine Anwendung anwenden und dieses Thema in den spezifischen Fällen überschreiben können, in denen Sie möchten. Stile werden wie Ressourcen definiert. Tatsächlich werden sie in demselben Abschnitt Ihrer XAML-Datei definiert, in dem Ressourcen definiert sind.

Ashwini
quelle
1

Das Wissen über Unit-Tests und deren Auswirkungen auf die Verwendung von WPF ist eine grundlegende Fähigkeit, die ich auf Einstiegsebene anwenden würde. Die Leute können die Details lernen, aber wenn sie nicht über die Grundlagen des Software-Designs nachgedacht haben, haben Sie ein Problem.

Ian Ringrose
quelle