Questions d'entretien: développeur WPF [fermé]

182

Que doit savoir chaque développeur WPF?

Niveau d'entrée

  • Forte expérience .NET 2.0 et désir d'apprendre!
  • Expliquer les propriétés de dépendance?
  • Qu'est-ce qu'un style?
  • Qu'est-ce qu'un modèle?
  • Contraignant
  • Différences entre les classes de base: Visual, UIElement, FrameworkElement, Control
  • Arbre visuel vs logique?
  • Notification de changement de propriété (INotifyPropertyChange et ObservableCollection)
  • ResourceDictionary - Ajouté par a7an
  • UserControls - Ajouté par a7an
  • différence entre les stratégies de routage de bulle et de tunnel - ajouté par Carlo
  • Pourquoi Microsoft a-t-il introduit un autre langage de balisage?
  • XAML

Niveau moyen

  • Événements et commandes acheminés
  • Convertisseurs - Ajouté par Artur Carvalho
  • Expliquer le moteur de mise en page en 2 passes de WPF?
  • Comment mettre en place un panel?
  • Interopérabilité (WPF / WinForms)
  • Blend / Cider - Ajouté par a7an
  • Animations et storyboard
  • Déploiement ClickOnce
  • Skinning / Thème
  • Contrôles personnalisés
  • Comment les threads de travail peuvent-ils mettre à jour l'interface utilisateur?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Différents types de déclencheurs

Sénior

  • Exemple de comportement attaché?
  • Qu'est-ce que PRISM, CAL & CAG?
  • Comment les threads de travail peuvent-ils mettre à jour l'interface utilisateur?
  • WPF 3D - Ajouté par a7an
  • Différences entre Silverlight 2 et WPF
  • MVVM / MVP - Ajouté par a7an
  • Réglage des performances WPF
  • Pixel Shaders
  • But des surgelés

D'autres questions «pièges» à poser?

Vous attendez-vous à ce que votre développeur WPF connaisse le mélange?

rudigrobler
la source
13
Je ne suis pas d'accord sur le "Strong .NET 2.0 Background". En fait, WPF fait beaucoup de choses différentes de .NET 2.0, et en savoir moins vous permet de maîtriser WPF plus rapidement ...
Arcturus
28
Que diriez-vous de quelques liens pointant vers chacun de ces sujets aussi!
Binoj Antony
16
Je pense que c'est une barre assez haute pour "entrée de gamme". Je parierais que si le poste est décrit comme un "niveau d'entrée", vous n'obtiendrez pas beaucoup de personnes (aucune) qui peuvent répondre à votre norme. Bonnes choses à savoir, certes, mais pas ce que la plupart des gens appelleraient «l'entrée de gamme».
Beska
1
Je n'appellerais pas "but of freezables" quelque chose de senior - et si vous parlez de threading au niveau intermédiaire, c'est là que les freezables appartiennent. MVVM / MVP n'est pas non plus particulièrement complexe ni obscur.
Eamon Nerbonne
4
Je pense que ces listes devraient être divisées en deux, une pour la conception graphique / UI et une pour la conception technique. Le concepteur d'interface utilisateur devrait probablement savoir comment utiliser le mélange d'expression, mais n'a pas besoin d'en savoir beaucoup sur les détails techniques de support, comme le codage derrière un contrôle utilisateur personnalisable. Le programmeur doit savoir comment créer un contrôle personnalisable mais n'a pas besoin d'utiliser l'expression blend (le concepteur xaml dans VS doit être suffisant jusqu'à ce que le concepteur d'interface utilisateur puisse le rendre joli).
Brian Reichle

Réponses:

41

Je suis surpris que personne n'ait encore mentionné les connaissances de base de XAML. Savoir ce qu'est XAML et la possibilité d'effectuer des modifications de base en utilisant XAML plutôt qu'un outil de conception graphique. Les développeurs de niveau intermédiaire devraient être capables de créer des prototypes de formulaires / graphiques à l'aide d'un outil tel que XAMLPad.

Mark Heath
la source
34

Personnellement, je les asseoir devant une machine de construction de développeur standard et leur demander de terminer une tâche. Pas de questions, voyez à quoi ressemble leur code après quelques heures (ou plus si la tâche est plus longue).

J'ai eu un taux d'échec nul lors d'une décision d'embauche basée sur les résultats d'un test de programmation réel.

La tâche ne doit pas être trop difficile. J'ai utilisé une application simple de message du jour dans le passé avec les messages conservés dans une base de données ou un fichier XML et une interface utilisateur simple. Assurez-vous de leur demander de bien la structurer (car la tâche est suffisamment petite pour que tout puisse être fait dans une classe s'ils se sentent enclins).

Parmi les questions ci-dessus, je dirais que vous ne pouvez pas avoir une bonne idée de si elles sont vraiment bonnes ou non. Un candidat potentiel pourrait simplement les lire et créer des réponses en conserve qui sonnent bien. Tout cela montre que le candidat peut parler, mais ce qui compte dans le travail lui-même, c'est de savoir s'il peut marcher.

Colin Mackay
la source
4
Je suis tout à fait d'accord, faire faire des choses aux gens, pas seulement en parler. @Colin, après votre aide sur l'orthographe (les questions de l'application d'autodiagnostic), je devais juste vous voter pour le royaume des 4 chiffres .... Au fait, il y a un type là: doen au lieu de done. :)
raoulsson
argh, typo, je voulais dire, drôle :)
raoulsson
Je suis partiellement d'accord avec vous, mais son processus prend du temps, même l'interrogateur oral prend plus de temps. Bien sûr, cette voie conduit à choisir le bon candidat.
Mohanavel
1
Alors, sur quelle partie êtes-vous en désaccord?
Colin Mackay
1
Je pense également qu'il n'est pas réaliste de supposer que "chaque développeur WPF devrait connaître" les questions ci-dessus. Ils ressemblent plus à des points de discussion généraux; pas des conditions préalables difficiles.
Eamon Nerbonne le
23

Je mettrais la liaison et les convertisseurs au niveau d'entrée, car c'est ainsi que vous passez beaucoup de temps dans WPF.

Robert Jeppesen
la source
19

Très bonne liste à mon avis.
Cependant, je ne poserais pas de questions délicates lors de l'entretien. L'entrevue donne suffisamment de stress en soi, une question piège peut confondre même une personne hautement qualifiée.

aku
la source
9
Je suis d'accord ... le but d'une entrevue est d'évaluer ... de ne pas faire trébucher le type.
cplotts
Je ne suis pas d'accord avec celui-ci, l'OMI, un programmeur doit gérer des choses difficiles, bien pire que des interviews. Une question délicate est donc bonne pour voir comment le programmeur résout un problème sous stress. Un simple «je ne sais pas» va très loin.
Artur Carvalho
15

Personnellement, je mettrais `` Comment les threads de travail peuvent-ils mettre à jour l'interface utilisateur? '' Juste sous l'entrée de gamme. Niveau intermédiaire, si vous en avez vraiment besoin. Si un programmeur d'entrée de gamme peut comprendre la différence entre l'arborescence logique et l'arborescence visuelle, il doit comprendre comment mettre à jour l'interface utilisateur à partir d'un thread d'arrière-plan.

Dans mon organisation, nous faisons beaucoup de développement WPF sans Blend. Je n'aime pas particulièrement Blend, donc je suis un peu biaisé, mais les compétences de Blend devraient être chouettes, je pense.

Rob
la source
9

Un développeur WPF doit avoir une solide compréhension de la séparation du XAML du code-behind et être en mesure de discuter longuement de l'endroit où cette ligne doit être dessinée.

Être capable de configurer un modèle dans la langue de son choix, puis d'utiliser XAML pour afficher des vues sur ce modèle via la liaison de données, les modèles de données, les modèles de contrôle, les styles, les déclencheurs, les convertisseurs de valeur et les UserControls est une tâche assez basique pour le milieu programmeur de niveau. (Bien qu'une petite marge de manœuvre devrait être accordée si vous demandez à quelqu'un de créer quelque chose comme un modèle de contrôle "de cœur".)

Vraiment, il y en a beaucoup dans WPF, et s'il n'y avait pas les forums MSDN et les livres approfondis sur le sujet, ce serait tout à fait la tâche de "simplement le ramasser". Pour cette raison, je qualifierais la persévérance et la capacité d'apprendre des autres comme une exigence primordiale pour tous les niveaux.

Pour un programmeur WPF d'entrée de gamme, je ne m'attendrais pas à une connaissance de WPF en soi, mais j'exigerais une connaissance des principes orientés objet, la séparation de l'interface utilisateur de la logique métier et du confort avec un modèle d'événement similaire. Une expérience de la disposition d'éléments d'interface utilisateur dans un style similaire à WPF (avec des conteneurs DockPanel, etc.) est un plus.

Edit: Aussi, ce que Colin Mackay a dit.

exclsr
la source
8

Qu'en est-il de la programmation GUI / expérience graphique en général et des connaissances cs? Si c'est pour un emploi à temps plein, peu importe à mon humble avis si le gars doit passer les premiers mois à apprendre WPF, s'il (ou elle) a une solide expérience.

Nils
la source
7

Niveau d'entrée

  • NOtification de changement de propriété (INotifyPropertyChange et ObservableCollection)
  • ResourceDictionary
  • UserControls

Niveau moyen

  • Mélange / Cidre
  • animations et storyboard
  • Déploiement ClickOnce

Sénior

  • WPF 3D
  • Différences entre Silverlight 2 et WPF
  • MVVM / MVP
  • Réglage des performances WPF
  • Pixel Shaders
Alan Le
la source
7
  • Quelle est la relation entre les threads et les répartiteurs?
  • Quel est le but de Freezables?
  • Quelle est la différence entre les propriétés et les propriétés de dépendance? Pourquoi utiliser l'un ou l'autre?
rcabr
la source
5
  • Convertisseurs (simples et multiples).
  • Interopérabilité.

Je pense que je préférerais un développeur qui connaîtrait Blend . Il / Elle pouvait communiquer facilement avec le concepteur et faire des tâches de conception de base plus rapidement que simplement écrire en xaml.

La liste est intéressante, peut-être que des liens vers les sujets seraient utiles.

À votre santé

Artur Carvalho
la source
4

Une autre chose vraiment fondamentale serait la différence entre les stratégies de routage de bulles et de tunnel.

Carlo
la source
3

Niveau d'entrée

  • Connaissance en conception UX
  • Connaissance de la liaison déclarative pour les objets métier
  • Utilisation de la commande

Sénior

  • Optimisation des ressources et réglage des performances
  • Modularité et évolutivité
  • Modèle de programmation asynchronisé
Gourou
la source
2

Moyen ou peut-être Senior: WinForms et WPF InterOp.

Nidonocu
la source
2

Moyen ou peut-être Senior

  • Skinning / Thème
  • Contrôles personnalisés
cplotts
la source
2
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Différents types de déclencheurs
  • Comment faire des animations via StoryBoards
Kenwarner
la source
1

Je pense que le cycle de vie de l'application WPF - de la création à l'exécution doit être inclus dans le niveau de questions Débutant. Sans le savoir, il est difficile de croire que l'on est un vrai développeur WPF.

Krishna
la source
Je n'ai aucune idée de ce que tu veux dire ici.
cplotts
Je pense qu'il veut dire ceci: msdn.microsoft.com/en-us/library/ms754221.aspx
HappyNomad
1

J'étendrais le déploiement de ClickOnce avec le déploiement de WPF en général, car il est bon de connaître les limites et les particularités de chaque modèle (ClickOnce, XBAP, navigateur uniquement). Le placer au niveau intermédiaire semble cependant juste.

Ruben Steins
la source
1

Les styles vous permettent d'appliquer un thème dans une application et de remplacer ce thème dans les instances spécifiques où vous le souhaitez. Les styles sont définis comme des ressources; en fait, ils sont définis dans la même section de votre fichier XAML dans laquelle les ressources sont définies.

Ashwini
la source
1

Connaître les tests unitaires et leur effet sur la façon dont vous utilisez WPF est une compétence de base que je mettrais au niveau d'entrée. Les gens peuvent apprendre les détails, mais s'ils n'ont pas réfléchi aux bases de la conception de logiciels, vous avez un problème.

Ian Ringrose
la source