面试问题:WPF开发人员

时间:2008-09-12 11:36:58

标签: .net wpf

每个WPF开发人员应该知道什么?

参赛级别

  • 强大的.NET 2.0背景&愿意学习!
  • 解释依赖属性?
  • 什么是风格?
  • 什么是模板?
  • 结合
  • 基类之间的差异:Visual,UIElement,FrameworkElement,Control
  • Visual vs Logical tree?
  • 属性更改通知(INotifyPropertyChange和ObservableCollection)
  • ResourceDictionary - 由a7an添加
  • UserControls - 由a7an添加
  • 气泡和隧道路由策略之间的区别 - 由Carlo添加
  • 为什么Microsoft引入了另一种标记语言?
  • XAML

中层

  • 路由事件&命令
  • 转换器 - 由Artur Carvalho添加
  • 解释WPF的2遍布局引擎?
  • 如何实施面板?
  • 互操作性(WPF / WinForms)
  • Blend / Cider - 由a7an
  • 添加
  • 动画和故事板
  • ClickOnce Deployment
  • 剥皮/更换主题皮肤
  • 自定义控件
  • 工作线程如何更新UI?
  • DataTemplate与HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • 不同类型的触发器

高级

  • 附加行为的例子?
  • 什么是PRISM,CAL& CAG?
  • 工作线程如何更新UI?
  • WPF 3D - 由a7an添加
  • Silverlight 2与WPF之间的差异
  • MVVM / MVP - 由a7an添加
  • WPF性能调整
  • Pixel Shaders
  • Freezables的目的

要问的其他“技巧”问题?

您希望您的WPF开发人员知道混合吗?

20 个答案:

答案 0 :(得分:40)

我很惊讶没人提到XAML的基本知识。了解XAML是什么,以及使用XAML而不是图形设计工具进行基本编辑的能力。中级开发人员应该能够使用像XAMLPad这样的工具来打造表单/图形原型。

答案 1 :(得分:33)

就我个人而言,我会让他们坐在标准的开发者构建机器前,让他们完成一些任务。没问题,只需看几个小时后他们的代码是什么样的(或者如果任务更长的话就更多)。

根据实际现实生活规划测试的结果,我在招聘决策时的失败率为零。

任务不一定太难。我过去使用过日期应用程序的简单消息,消息保存在数据库或XML文件和简单的用户界面中。确保你要求他们好好地构建它(因为任务足够小,如果它们感到倾斜,它们都可以在一个班级完成)。

在上面的问题中,我会说你无法确定它们是否真的有任何好处。一个潜在的候选人实际上只是阅读这些并创造听起来很棒的罐头答案。所有这些表明,候选人可以说话,但工作本身的重要性在于他们是否可以走路。

答案 2 :(得分:23)

我将绑定和转换器放在入门级,因为这是你在WPF上花费大量时间的方式。

答案 3 :(得分:19)

在我看来,这是一个非常好的清单 但是我不会在面试时询问棘手的问题。面试给自己足够的压力,技巧问题甚至会让高技能人员感到困惑。

答案 4 :(得分:15)

就个人而言,我会在入门级下放置'​​工作线程如何更新UI'。中级,如果你真的需要。如果入门级程序员可以理解逻辑树和可视树之间的区别,他们应该了解如何从后台线程更新UI。

在我的组织中,我们在没有Blend的情况下进行了大量的WPF开发。我不是特别喜欢Blend,所以我有点偏颇,但我认为Blend技能应该是一个很好的选择。

答案 5 :(得分:9)

WPF开发人员应该牢牢把握XAML与代码隐藏的分离,并能够详细讨论该行的绘制位置。

能够以她选择的语言设置模型,然后使用XAML通过数据绑定,数据模板,控件模板,样式,触发器,值转换器和UserControls在该模型上显示视图是一项相当基本的任务对于中级程序员。 (虽然如果要求某人“从心里创建类似控制模板的东西”,应该给予少量余地。)

实际上,WPF中有很多,如果它不适用于MSDN论坛和有关该主题的深入书籍,那么“选择它就是完全的任务” “起来。出于这个原因,我会将坚持不懈和从别人那里学习的能力作为任何级别的最高要求。

对于入门级WPF程序员,我不希望任何WPF本身的知识,但我需要知识面向对象的原则,UI与业务逻辑的分离,以及与类似事件模型的舒适性。以类似于WPF(使用DockPanel容器等)的样式布置UI元素的经验是一个优点。

编辑:此外,科林麦凯说的话。

答案 6 :(得分:8)

一般的GUI编程/图形体验和cs知识怎么样?如果是全职工作,恕我直言,如果他(或她)有强大的背景,如果这个家伙必须花一些时间学习WPF,那就没关系了。

答案 7 :(得分:7)

参赛级别

  • 财产变更通知 (INotifyPropertyChange和 的ObservableCollection)
  • ResourceDictionary
  • 用户控件

中级

  • 共混物/苹果酒
  • 动画和故事板
  • ClickOnce部署

<强>高级

  • WPF 3D
  • Silverlight 2之间的差异 和WPF
  • MVVM / MVP
  • WPF性能调整
  • Pixel Shaders

答案 8 :(得分:7)

  • 线程和Dispatchers之间有什么关系?
  • Freezables的目的是什么?
  • 属性和依赖属性之间有什么区别?为什么要使用其中一种?

答案 9 :(得分:5)

  • 转换器(简单和多个)。
  • 互操作性。

我想我更喜欢知道 Blend 的开发者。他/她可以与设计师轻松交流,也可以比在xaml中写作更快地完成一些基本的设计师工作。

列表很有意思,也许这些主题的链接会有所帮助。

干杯

答案 10 :(得分:4)

另一个非常基本的事情是泡沫和隧道路由策略之间的区别。

答案 11 :(得分:3)

入门级

  • UX设计知识
  • 了解业务对象的声明性绑定
  • 命令用法

高级

  • 资源优化&amp;性能调整
  • 模块化&amp;可扩展性
  • 异步编程模型

答案 12 :(得分:2)

中期或高级

  • 剥皮/更换主题皮肤
  • 自定义控件

答案 13 :(得分:2)

  • DataTemplate与HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • 不同类型的触发器
  • 如何通过StoryBoards做动画

答案 14 :(得分:2)

中级或高级:WinForms和WPF InterOp。

答案 15 :(得分:1)

我通常会使用WPF部署扩展ClickOnce部署,因为了解每个模型的限制和特性(ClickOnce,XBAP,仅限浏览器)是很好的。把它放在中等水平似乎是公平的。

答案 16 :(得分:1)

我认为WPF应用程序的生命周期 - 从创建到运行时应该包含在初级问题中。在不知情的情况下,很难相信一个人是真正的WPF开发者。

答案 17 :(得分:1)

样式为您提供了一种机制 在应用程序中应用主题,并在您希望的那些特定实例中覆盖该主题。 样式定义为资源;实际上,它们是在XAML文件的同一部分中定义的 哪些资源是定义的。

答案 18 :(得分:1)

放入数据模板选择器:http://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector帮助MVVM根据值交换模板。

答案 19 :(得分:1)

了解单元测试及其对如何使用WPF的影响是我在入门级别上的一项基本技能。人们可以了解细节,但如果他们没有考虑软件设计的基础知识那么你就会遇到问题。