Perguntas da entrevista: Desenvolvedor WPF [fechado]

182

O que todo desenvolvedor de WPF deve saber?

Nível de entrada

  • Forte .NET 2.0 Background e disposto a aprender!
  • Explicar propriedades de dependência?
  • O que é um estilo?
  • O que é um modelo?
  • Obrigatório
  • Diferenças entre classes base: Visual, UIElement, FrameworkElement, Control
  • Árvore Visual vs Lógica?
  • Notificação de alteração de propriedade (INotifyPropertyChange e ObservableCollection)
  • ResourceDictionary - Adicionado por a7an
  • UserControls - Adicionado por a7an
  • diferença entre estratégias de roteamento de bolhas e túneis - adicionada por Carlo
  • Por que a Microsoft introduziu outra linguagem de marcação?
  • XAML

Nível médio

  • Eventos e comandos roteados
  • Conversores - Adicionado por Artur Carvalho
  • Explique o mecanismo de layout de 2 passagens do WPF?
  • Como implementar um painel?
  • Interoperabilidade (WPF / WinForms)
  • Blend / Cider - Adicionado por a7an
  • Animações e Storyboarding
  • Implantação ClickOnce
  • Skinning / Themeing
  • Controles personalizados
  • Como os threads de trabalho podem atualizar a interface do usuário?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Diferentes tipos de gatilhos

Senior

  • Exemplo de comportamento em anexo?
  • O que é PRISM, CAL & CAG?
  • Como os threads de trabalho podem atualizar a interface do usuário?
  • WPF 3D - Adicionado por a7an
  • Diferenças entre o Silverlight 2 e o WPF
  • MVVM / MVP - Adicionado por a7an
  • Ajuste de desempenho do WPF
  • Pixel Shaders
  • Objetivo dos Freezables

Alguma outra pergunta "enganosa" a ser feita?

Você espera que o desenvolvedor do WPF conheça a mistura?

rudigrobler
fonte
13
Eu discordo sobre o "Strong fundo .NET 2.0" .. Na verdade WPF faz um monte de coisas diferentes do .NET 2.0, e sabendo menos, na verdade, permite dominar WPF mais rápido ...
Arcturus
28
Que tal alguns links apontando para cada um desses tópicos também!
23710 Binoj Antony
16
Eu acho que essa é uma barra bastante alta para "nível de entrada". Eu apostaria que, se o cargo for descrito como "nível básico", você não terá muitas pessoas que possam atender ao seu padrão. Coisas boas a saber, certamente, mas não o que a maioria das pessoas chamaria de "nível de entrada".
21329 Beska
1
Eu não chamaria de "objetivo dos freezables" algo mais antigo - e se você quiser falar sobre threading em nível intermediário, é aí que os freezables pertencem. MVVM / MVP também não é particularmente complexo nem misterioso.
Eamon Nerbonne
4
Eu acho que essas listas devem ser divididas em duas, uma para o lado do design gráfico / UI e uma para o lado do design técnico. O designer da interface do usuário provavelmente deve saber como usar a combinação de expressões, mas não precisa saber muito sobre os detalhes técnicos de suporte, como a codificação por trás de um controle de usuário designável. O programador precisa saber como criar um controle projetável, mas não precisa usar a combinação de expressões (o designer xaml no VS deve ser suficiente até que o designer da interface do usuário possa torná-lo bonito).
Brian Reichle

Respostas:

41

Estou surpreso que ninguém tenha mencionado o conhecimento básico de XAML ainda. Saber o que é XAML e a capacidade de fazer algumas edições básicas usando XAML em vez de uma ferramenta de design gráfico. Os desenvolvedores de nível intermediário devem poder exibir protótipos de formulário / gráfico usando uma ferramenta como o XAMLPad.

Mark Heath
fonte
34

Pessoalmente, eu os sentava na frente de uma máquina de compilação de desenvolvedor padrão e solicitava que concluíssem alguma tarefa. Sem perguntas, basta ver como é o código depois de algumas horas (ou mais, se a tarefa for mais longa).

Eu tive uma taxa de falha zero ao tomar uma decisão de contratação com base nos resultados de um teste real de programação da vida real.

A tarefa não precisa ser muito difícil. Eu usei uma aplicação simples de mensagem do dia no passado, com as mensagens mantidas em um banco de dados ou arquivo XML e em uma interface de usuário simples. Certifique-se de pedir-lhes para estruturá-lo bem (como a tarefa é suficientemente pequena para que tudo possa ser realizado em uma classe, caso se sintam inclinados).

Das perguntas acima, eu diria que você não pode ter uma boa idéia se elas são realmente boas ou não. Um candidato em potencial poderia realmente apenas ler estes e criar respostas enlatadas que soam ótimas. Tudo isso mostra que o candidato pode conversar, mas o que importa no trabalho em si é se ele pode caminhar.

Colin Mackay
fonte
4
Eu concordo totalmente, faça as pessoas fazerem coisas, não apenas falando sobre isso. @ Colin, depois de sua ajuda em ortografia (as perguntas sobre aplicativos de auto-diagnóstico), eu apenas tive que fazer um voto positivo para o domínio de 4 dígitos .... A propósito, existe um tipo lá: doen em vez de pronto. :)
raoulsson
argh, erro tipográfico, eu quis dizer, engraçado :)
raoulsson
Eu concordo parcialmente com você, mas seu tempo consome processo, até o questionador oral leva mais tempo. Obviamente, esse caminho leva a escolher o candidato certo.
Mohanavel 13/01
1
Então, com que parte você discorda?
Colin Mackay
1
Também acho irreal assumir que "todo desenvolvedor de WPF deve conhecer" as perguntas acima. Eles são mais como pontos de discussão gerais; pré-requisitos não difíceis.
Eamon Nerbonne
23

Eu colocaria a ligação e os conversores no nível de entrada, pois é assim que você passa muito tempo no WPF.

Robert Jeppesen
fonte
19

Lista muito boa na minha opinião.
No entanto, eu não faria perguntas complicadas na entrevista. Entrevista dá bastante estresse em si, uma questão complicada pode confundir até pessoas altamente qualificadas.

aku
fonte
9
Eu concordo ... o objetivo de uma entrevista é avaliar ... não enganar o sujeito.
Cplotts
Não concordo com este, na IMO um programador deve lidar com coisas difíceis, muito mais piores que as entrevistas. Portanto, é uma boa pergunta para ver como o programador resolve um problema sob estresse. Um simples "não sei" ajuda muito.
Artur Carvalho
15

Pessoalmente, eu colocava 'Como os threads de trabalho podem atualizar a interface do usuário' logo abaixo do nível de entrada. Nível intermediário, se você realmente precisar. Se um programador de nível de entrada puder entender a diferença entre a árvore lógica e a árvore visual, deverá entender como atualizar a interface do usuário a partir de um encadeamento em segundo plano.

Na minha organização, desenvolvemos muito o WPF sem o Blend. Eu não gosto particularmente do Blend, então sou um pouco tendencioso, mas acho que as habilidades do Blend devem ser boas.

Roubar
fonte
9

Um desenvolvedor de WPF deve ter uma idéia firme de separar o XAML do code-behind e ser capaz de discutir detalhadamente onde essa linha deve ser desenhada.

Ser capaz de configurar um modelo no idioma de sua escolha e usar o XAML para exibir visualizações nesse modelo por meio de ligação de dados, modelos de dados, modelos de controle, estilos, gatilhos, conversores de valor e UserControls é uma tarefa bastante básica para os meados de programador (Embora uma pequena quantidade de margem de manobra deva ser concedida se pedir a alguém para criar algo como um modelo de controle "de coração").

Realmente, há muito no WPF e, se não fosse pelos fóruns do MSDN e pelos livros detalhados sobre o assunto, seria uma tarefa bastante "apenas buscá-lo". Por esse motivo, classificaria a perseverança e a capacidade de aprender com os outros como um requisito máximo para qualquer nível.

Para um programador WPF de nível básico, eu não esperaria nenhum conhecimento do WPF por si só, mas exigiria conhecimento de princípios orientados a objetos, separação da interface do usuário da lógica de negócios e conforto com um modelo de evento semelhante. Experiência no layout de elementos da interface do usuário em um estilo semelhante ao WPF (com contêineres do DockPanel etc.) é uma vantagem.

Edit: Além disso, o que Colin Mackay disse.

exclsr
fonte
8

E a experiência de programação / gráficos da GUI em geral e no conhecimento de cs? Se é para um emprego em período integral, não importa o IMHO se o cara tiver que passar os primeiros meses algum tempo aprendendo o WPF, se ele (ou ela) tem uma sólida formação.

Nils
fonte
7

Nível de entrada

  • Alteração de propriedade NOtification (INotifyPropertyChange e ObservableCollection)
  • ResourceDictionary
  • UserControls

Nível médio

  • Mistura / sidra
  • animações e storyboard
  • Implantação ClickOnce

Senior

  • WPF 3D
  • Diferenças entre o Silverlight 2 e o WPF
  • MVVM / MVP
  • Ajuste de desempenho do WPF
  • Pixel Shaders
Alan Le
fonte
7
  • Qual é a relação entre threads e Dispatchers?
  • Qual é o objetivo do Freezables?
  • Qual é a diferença entre propriedades e Propriedades de Dependência? Por que usar um ou outro?
rcabr
fonte
5
  • Conversores (simples e multi).
  • Interoperabilidade.

Eu acho que preferiria um desenvolvedor que conhecesse o Blend . Ele / ela poderia se comunicar facilmente com o designer e também fazer algumas coisas básicas do designer mais rapidamente do que apenas escrever em xaml.

A lista é interessante, talvez links para os tópicos ajudem.

Felicidades

Artur Carvalho
fonte
4

Outra coisa realmente básica seria a diferença entre as estratégias de roteamento de bolha e túnel.

Carlo
fonte
3

Nível de entrada

  • Conhecimento em Design de UX
  • Conhecimento em ligação declarativa para objetos de negócios
  • Uso de comando

Senior

  • Otimização de recursos e ajuste de desempenho
  • Modularidade e escalabilidade
  • Assincronizar modelo de programação
Guru
fonte
2

Mid ou talvez Senior: WinForms e WPF InterOp.

Nidonocu
fonte
2

Médio ou talvez Sênior

  • Skinning / Themeing
  • Controles personalizados
cplotts
fonte
2
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Diferentes tipos de gatilhos
  • Como fazer animações através do StoryBoards
Kenwarner
fonte
1

Acho que o ciclo de vida do aplicativo WPF - da criação ao tempo de execução deve ser incluído no nível Iniciante das perguntas. Sem saber, é difícil acreditar que alguém seja um verdadeiro desenvolvedor do WPF.

Krishna
fonte
Não tenho ideia do que você quer dizer aqui.
Cplotts
Eu acho que ele significa isto: msdn.microsoft.com/en-us/library/ms754221.aspx
HappyNomad
1

Eu estenderia a implantação do ClickOnce com a implantação do WPF em geral, já que é bom conhecer as limitações e peculiaridades de cada modelo (ClickOnce, XBAP, somente navegador). Colocá-lo no nível médio parece justo.

Ruben Steins
fonte
1

Os estilos fornecem um mecanismo para você aplicar um tema em um aplicativo e substituí-lo nas instâncias específicas em que deseja. Estilos são definidos como recursos; de fato, eles são definidos na mesma seção do seu arquivo XAML na qual os recursos são definidos.

Ashwini
fonte
1

Saber sobre o teste de unidade e o efeito que ele tem sobre como você usa o WPF é uma habilidade básica que eu colocaria no nível básico. As pessoas podem aprender os detalhes, mas se não tiverem pensado no básico do design de software, você terá um problema.

Ian Ringrose
fonte