Preguntas de la entrevista: Desarrollador WPF [cerrado]

182

¿Qué debe saber todo desarrollador de WPF?

Nivel Básico

  • ¡Fondo sólido de .NET 2.0 y dispuesto a aprender!
  • ¿Explicar las propiedades de dependencia?
  • ¿Qué es un estilo?
  • ¿Qué es una plantilla?
  • Unión
  • Diferencias entre clases base: Visual, UIElement, FrameworkElement, Control
  • ¿Árbol visual vs lógico?
  • Notificación de cambio de propiedad (INotifyPropertyChange y ObservableCollection)
  • ResourceDictionary - Agregado por a7an
  • UserControls - Agregado por a7an
  • diferencia entre las estrategias de enrutamiento de burbujas y túneles - agregada por Carlo
  • ¿Por qué Microsoft introdujo otro lenguaje de marcado?
  • XAML

Nivel medio

  • Eventos enrutados y comandos
  • Convertidores - Agregados por Artur Carvalho
  • ¿Explicar el motor de diseño de 2 pasos de WPF?
  • ¿Cómo implementar un panel?
  • Interoperabilidad (WPF / WinForms)
  • Mezcla / Sidra - Agregado por a7an
  • Animaciones y Storyboarding
  • Implementación ClickOnce
  • Skinning / Themeing
  • Controles personalizados
  • ¿Cómo pueden los hilos de trabajo actualizar la interfaz de usuario?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Diferentes tipos de disparadores

Mayor

  • Ejemplo de comportamiento adjunto?
  • ¿Qué es PRISM, CAL & CAG?
  • ¿Cómo pueden los hilos de trabajo actualizar la interfaz de usuario?
  • WPF 3D - Agregado por a7an
  • Diferencias entre Silverlight 2 y WPF
  • MVVM / MVP - Agregado por a7an
  • Ajuste de rendimiento de WPF
  • Sombreadores de píxeles
  • Propósito de Freezables

¿Alguna otra pregunta de "truco" para hacer?

¿Esperas que tu desarrollador de WPF sepa mezclar?

rudigrobler
fuente
13
No estoy de acuerdo con el "Fondo fuerte de .NET 2.0". En realidad, WPF hace muchas cosas diferentes a .NET 2.0, y saber menos en realidad te permite dominar WPF más rápido ...
Arcturus
28
¿Qué tal algunos enlaces que apuntan a cada uno de estos temas también?
Binoj Antony
16
Creo que esta es una barra bastante alta para el "nivel de entrada". Apuesto a que si el puesto de trabajo se describe como "nivel de entrada", no obtendrá muchas (ninguna) gente que pueda cumplir con su estándar. Es bueno saber, ciertamente, pero no lo que la mayoría de la gente llamaría "nivel de entrada".
Beska
1
No llamaría "propósito de los congelables" algo de alto nivel, y si vas a hablar de enhebrar a nivel medio, ahí es donde pertenecen los congelables. MVVM / MVP tampoco es particularmente complejo ni arcano.
Eamon Nerbonne
44
Creo que estas listas deberían dividirse en dos, una para el lado del diseño gráfico / UI y otra para el lado del diseño técnico. El diseñador de la interfaz de usuario probablemente debería saber cómo usar la combinación de expresiones, pero no necesita saber mucho sobre los detalles técnicos de respaldo, como la codificación detrás de un control de usuario designado. El programador necesita saber cómo crear un control designable, pero no necesita usar la combinación de expresiones (el diseñador xaml en VS debería ser suficiente hasta que el diseñador de la interfaz de usuario pueda hacerlo bonito).
Brian Reichle

Respuestas:

41

Me sorprende que nadie haya mencionado los conocimientos básicos de XAML todavía. Saber qué es XAML y la capacidad de hacer una edición básica usando XAML en lugar de una herramienta de diseño gráfico. Los desarrolladores de nivel medio deberían poder crear prototipos de formularios / gráficos utilizando una herramienta como XAMLPad.

Mark Heath
fuente
34

Personalmente, los sentaría frente a una máquina de compilación de desarrollador estándar y les pediría que completaran alguna tarea. Sin preguntas, solo vea cómo es su código después de un par de horas (o más si la tarea es más larga).

He tenido una tasa de falla cero al tomar una decisión de contratación basada en los resultados de una prueba de programación de la vida real.

La tarea no tiene que ser demasiado difícil. He usado un mensaje simple de la aplicación del día en el pasado con los mensajes retenidos en una base de datos o archivo XML y una interfaz de usuario simple. Asegúrese de pedirles que lo estructuren bien (ya que la tarea es lo suficientemente pequeña como para que todo se pueda hacer en una clase si se sienten inclinados).

De las preguntas anteriores, diría que no puede hacerse una buena idea de si realmente son buenas o no. Un posible candidato en realidad podría simplemente leerlos y crear respuestas enlatadas que suenen muy bien. Todo esto demuestra que el candidato puede hablar y hablar, pero lo que importa en el trabajo en sí mismo es si puede caminar.

Colin Mackay
fuente
44
Estoy totalmente de acuerdo, hacer que la gente haga cosas, no solo hablar de eso. @Colin, después de tu ayuda con la ortografía (las preguntas de la aplicación de autodiagnóstico) solo tuve que votarte al reino de los 4 dígitos ... Por cierto, hay un tipo: doen en lugar de hecho. :)
raoulsson el
argh, error tipográfico, que quería decir, divertido :)
raoulsson
Estoy parcialmente de acuerdo con usted, pero su proceso consume tiempo, incluso el interrogador oral toma más tiempo. Por supuesto, este camino lleva a elegir al candidato adecuado.
Mohanavel
1
Entonces, ¿con qué parte no estás de acuerdo?
Colin Mackay
1
También creo que no es realista suponer que "todos los desarrolladores de WPF deberían saber" las preguntas anteriores. Son más como puntos de conversación generales; No requisitos previos difíciles.
Eamon Nerbonne
23

Pondría encuadernación y convertidores a nivel de entrada, ya que así es como pasas mucho tiempo en WPF.

Robert Jeppesen
fuente
19

Bastante buena lista en mi opinión.
Sin embargo, no haría preguntas difíciles en la entrevista. La entrevista genera suficiente estrés, la pregunta capciosa puede confundir incluso a personas altamente calificadas.

aku
fuente
9
Estoy de acuerdo ... el punto de una entrevista es evaluar ... no hacer tropezar al sujeto.
Cplotts
No estoy de acuerdo con este, en mi opinión, un programador debe manejar cosas difíciles, mucho peor que las entrevistas. Entonces, una pregunta difícil es buena para ver cómo el programador resuelve un problema bajo estrés. Un simple "No sé" es muy útil.
Artur Carvalho
15

Personalmente, pondría 'Cómo pueden los hilos de trabajo actualizar la interfaz de usuario' justo debajo del nivel de entrada. Nivel medio, si realmente lo necesita. Si un programador de nivel de entrada puede comprender la diferencia entre el árbol lógico y el árbol visual, debe entender cómo actualizar la interfaz de usuario desde un hilo de fondo.

En mi organización, hacemos mucho desarrollo de WPF sin Blend. En particular, no me gusta Blend, así que soy un poco parcial, pero creo que las habilidades de Blend deberían ser agradables.

Robar
fuente
9

Un desarrollador de WPF debe tener una comprensión firme de separar el XAML del código subyacente, y poder debatir extensamente dónde se debe dibujar esa línea.

Poder configurar un modelo en el idioma de su elección y luego usar XAML para mostrar vistas en ese modelo a través de enlaces de datos, plantillas de datos, plantillas de control, estilos, disparadores, convertidores de valores y UserControls es una tarea bastante básica para el medio programador de nivel. (Aunque debe otorgarse un pequeño margen de maniobra si le pide a alguien que cree algo así como una plantilla de control "de corazón").

Realmente, hay mucho en WPF, y si no fuera por los foros de MSDN y los libros en profundidad sobre el tema, sería una tarea "simplemente retomarlo". Por esa razón, calificaría la perseverancia y la capacidad de aprender de los demás como un requisito principal para cualquier nivel.

Para un programador de WPF de nivel de entrada, no esperaría ningún conocimiento de WPF per se, pero exigiría el conocimiento de los principios orientados a objetos, la separación de la interfaz de usuario de la lógica empresarial y la comodidad con un modelo de evento similar. La experiencia de diseñar elementos de la interfaz de usuario en un estilo similar a WPF (con contenedores DockPanel, etc.) es una ventaja.

Editar: También, lo que dijo Colin Mackay.

revs exclsr
fuente
8

¿Qué pasa con la experiencia de programación / gráficos GUI en general y el conocimiento de cs? Si es para trabajos de tiempo completo, no importa en mi humilde opinión si el chico tiene que pasar los primeros meses aprendiendo WPF, si él (o ella) tiene una sólida formación.

Nils
fuente
7

Nivel Básico

  • Notificación de cambio de propiedad (INotifyPropertyChange y ObservableCollection)
  • ResourceDictionary
  • Controles de usuario

Nivel medio

  • Mezcla / Sidra
  • animaciones y storyboard
  • Implementación ClickOnce

Mayor

  • WPF 3D
  • Diferencias entre Silverlight 2 y WPF
  • MVVM / MVP
  • Ajuste de rendimiento de WPF
  • Sombreadores de píxeles
Alan Le
fuente
7
  • ¿Cuál es la relación entre hilos y despachadores?
  • ¿Cuál es el propósito de Freezables?
  • ¿Cuál es la diferencia entre propiedades y propiedades de dependencia? ¿Por qué usar uno u otro?
rcabr
fuente
5
  • Convertidores (simples y múltiples).
  • Interoperabilidad.

Creo que preferiría un desarrollador que conociera a Blend . Él / Ella podría comunicarse fácilmente con el diseñador y también hacer algunas cosas básicas del diseñador más rápido que simplemente escribir en xaml.

La lista es interesante, tal vez los enlaces a los temas ayudarían.

Salud

Artur Carvalho
fuente
4

Otra cosa realmente básica sería la diferencia entre las estrategias de enrutamiento de burbujas y túneles.

Carlo
fuente
3

Nivel Básico

  • Conocimiento en diseño UX
  • Conocimiento en enlace declarativo para objetos comerciales
  • Uso del comando

Mayor

  • Optimización de recursos y ajuste de rendimiento
  • Modularidad y escalabilidad
  • Asincronizar el modelo de programación
Gurú
fuente
2

Mediados o quizás mayores: WinForms y WPF InterOp.

Nidonocu
fuente
2

Mediados o tal vez mayores

  • Skinning / Themeing
  • Controles personalizados
cplotts
fuente
2
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Diferentes tipos de disparadores
  • Cómo hacer animaciones a través de StoryBoards
Kenwarner
fuente
1

Creo que el ciclo de vida de la aplicación WPF, desde la creación hasta el tiempo de ejecución, debe incluirse en el nivel Principiante de preguntas. Sin saberlo, es difícil de creer que uno sea un verdadero desarrollador de WPF.

Krishna
fuente
No tengo idea de lo que quieres decir aquí.
Cplotts
Creo que quiere decir esto: msdn.microsoft.com/en-us/library/ms754221.aspx
HappyNomad
1

Extendería la implementación de ClickOnce con la implementación de WPF en general, ya que es bueno conocer las limitaciones y peculiaridades de cada modelo (ClickOnce, XBAP, solo navegador). Sin embargo, colocarlo a nivel medio parece justo.

Ruben Steins
fuente
1

los estilos proporcionan un mecanismo para que pueda aplicar un tema en una aplicación y anular ese tema en aquellas instancias específicas donde lo desee. Los estilos se definen como recursos; de hecho, se definen dentro de la misma sección de su archivo XAML en el que se definen los recursos.

Ashwini
fuente
1

Saber acerca de las pruebas unitarias y el efecto que tiene sobre cómo usa WPF es una habilidad básica que pondría en el nivel de entrada. Las personas pueden aprender los detalles, pero si no han pensado en los conceptos básicos del diseño de software, entonces tienen un problema.

Ian Ringrose
fuente