面试问题:WPF开发者
每个WPF开发人员应该知道什么?
入门级
- 强大的.NET 2.0背景和愿意学习!
- 解释依赖属性?
- 什么是风格?
- 什么是模板?
- 捆绑
- 基类之间的区别:Visual,UIElement,FrameworkElement,Control
- 视觉vs逻辑树?
- 属性更改通知(INotifyPropertyChange和ObservableCollection)
- ResourceDictionary – 由a7an添加
- UserControls – 由a7an添加
- 泡沫和隧道路线策略之间的区别 – 由Carlo添加
- 为什么微软又推出另一种标记语言?
- XAML
中级
- 路由事件和命令
- 转换器 – 由Artur Carvalho添加
- 说明WPF的2遍布局引擎?
- 如何实施面板?
- 互操作性(WPF / WinForms)
- 混合 / 苹果酒 – 由a7an添加
- animation和故事板
- ClickOnce部署
- 剥皮/更换主题皮肤
- 自定义控件
- 工作线程如何更新UI?
- DataTemplate vs HierarchicalDataTemplate
- ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
- 不同types的触发器
前辈
- 附加行为的例子?
- 什么是PRISM,CAL&CAG?
- 工作线程如何更新UI?
- WPF 3D – 由a7an添加
- Silverlight 2和WPF的区别
- MVVM / MVP – 由a7an添加
- WPF性能调优
- 像素着色器
- Freezables的目的
任何其他“诡计”的问题要问?
你期望你的WPF开发者知道混合?
我很惊讶没有人提到XAML的基本知识。 了解XAML是什么,以及使用XAML而不是graphicsdevise工具进行一些基本编辑的能力。 中级开发人员应该可以使用像XAMLPad这样的工具来打开表单/graphics原型。
就我个人而言,我会把它们放在一个标准的开发人员构build机器前面,并要求他们完成一些任务。 没有任何问题,只需几个小时后看看他们的代码是什么样的(或者如果任务更长的话更多)。
根据实际的实际编程testing的结果,我做了一个招聘决策的失败率为零。
这个任务不需要太困难。 过去,我使用了一个简单的日常应用程序消息,消息被保存在数据库或XML文件以及简单的用户界面中。 确保你要求他们把它组织好(因为任务是足够小的,如果他们觉得这样做可以在一个class级完成)。
在上面的问题中,我会说你不知道他们是否真的好。 一个潜在的谨慎可能实际上只是阅读这些,创造听起来不错的jar装答案。 这一切都表明候选人可以谈话,但是工作本身的重点在于他们是否可以走路。
我把绑定和转换器在入门级,因为这是你花了很多时间在WPF。
在我看来,这是非常好的列表。
不过,我不会在面试中提出棘手的问题。 面试本身就给人足够的压力,诡计的问题甚至可以让高技能的人迷惑。
就个人而言,我会把“工作线程如何更新UI”放在入门级。 中级,如果你真的需要的话。 如果入门级程序员可以理解逻辑树和可视化树之间的区别,他们应该了解如何从后台线程更新UI。
在我的组织中,我们做了很多没有Blend的WPF开发。 我不是特别喜欢Blend,所以我有点偏见,但我认为Blend技能应该是一个很好的。
WPF开发人员应该牢牢把握XAML与代码隐藏的区别,并且能够详细讨论将要绘制的线段。
通过数据绑定,数据模板,控件模板,样式,触发器,值转换器和UserControls,能够使用她select的语言设置模型,然后使用XAML显示该模型的视图,级程序员。 (如果要求某人从心里创造一个类似控制模板的东西,应该给予less量的余地。)
实际上,WPF 有很多 ,如果不是MSDN论坛和关于这个主题的深入的书籍,那么“只是把它捡起来”的任务就完成了。 出于这个原因,我会坚持不懈,把自己的学习能力作为任何一个层次的最高要求。
对于入门级的WPF程序员来说,我不会期望任何WPF本身的知识,但是我会要求知道面向对象的原则,UI与业务逻辑的分离以及类似事件模型的舒适性。 以类似于WPF的风格(使用DockPanel容器等)布局UI元素是一个优点。
编辑:另外,科林麦凯说。
入门级
- 属性更改注释(INotifyPropertyChange和ObservableCollection)
- 资源字典
- 用户控件
中级
- 混合/苹果酒
- animation和故事板
- ClickOnce部署
前辈
- WPF 3D
- Silverlight 2和WPF的区别
- MVVM / MVP
- WPF性能调优
- 像素着色器
一般的GUI编程/graphics体验和cs知识如何? 如果是全职工作,那么恕我直言,如果他(或她)有一个强大的背景,那么这个人必须花一些时间学习WPF。
- 线程和调度程序之间的关系是什么?
- 什么是Freezables的目的?
- 属性和依赖属性之间有什么区别? 为什么使用这个或另一个?
- 转换器(简单和多)。
- 互操作性。
我想我会更喜欢一个会知道Blend的开发者 。 他/她可以很轻松地与devise师进行交stream,也可以比使用xaml写作更快速地完成一些基本的devise工作。
该列表很有趣,也许链接到主题将有所帮助。
干杯
另一个真正基本的东西就是泡沫和隧道路由策略的区别。
中或高级:WinForms和WPF InterOp。
中间或者也许是高级
- 剥皮/更换主题皮肤
- 自定义控件
入门级
- UXdevise知识
- 关于业务对象的声明性绑定知识
- 命令用法
前辈
- 资源优化和性能调整
- 模块化和可扩展性
- asynchronous编程模型
我认为WPF应用程序的生命周期 – 从创build到运行时应该包含在初学者级别的问题中。 如果不知道它,很难相信它是一个真正的WPF开发者。
我一般会用WPF部署扩展ClickOnce部署,因为知道每个模型(ClickOnce,XBAP,仅限于浏览器)的局限性和特性是很好的。 把它放在中等水平似乎是公平的。
- DataTemplate vs HierarchicalDataTemplate
- ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
- 不同types的触发器
- 如何通过StoryBoards做animation
样式为您提供了一种机制,可以跨应用程序应用主题,并在需要的特定实例中覆盖该主题。 样式被定义为资源; 实际上,它们是在定义资源的XAML文件的同一部分中定义的。
放入数据模板select器: http ://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector MVVM根据值换出模板的帮助很大。
了解unit testing及其对WPF使用方式的影响是我在入门级上的基本技能。 人们可以学习细节,但如果他们没有想到软件devise的基础知识,那么你就有一个问题。