面试问题:WPF开发人员[关闭]


182

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

入门级

  • 强大的.NET 2.0背景知识并愿意学习!
  • 解释依赖项属性?
  • 什么风格
  • 什么是模板?
  • 捆绑
  • 基本类之间的差异:Visual,UIElement,FrameworkElement,Control
  • 视觉还是逻辑树?
  • 属性更改通知(INotifyPropertyChange和ObservableCollection)
  • ResourceDictionary-由a7an添加
  • UserControls-由a7an添加
  • 泡沫和隧道路由策略之间的区别-Carlo添加
  • 微软为什么还要引入另一种标记语言?
  • XAML

中级

  • 路由事件和命令
  • 转换器-由Artur Carvalho添加
  • 解释WPF的2遍布局引擎?
  • 如何实施小组?
  • 互操作性(WPF / WinForms)
  • 混合 / 苹果酒 -由a7an添加
  • 动画和情节提要
  • ClickOnce部署
  • 皮肤/主题
  • 自定义控件
  • 辅助线程如何更新UI?
  • DataTemplate与HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • 不同类型的触发器

资深

  • 附加行为示例?
  • 什么是PRISM,CAL和CAG?
  • 辅助线程如何更新UI?
  • WPF 3D-由a7an添加
  • Silverlight 2和WPF之间的区别
  • MVVM / MVP-由a7an添加
  • WPF性能调整
  • 像素着色器
  • 冻结目的

还有其他“技巧”问题要问吗?

您希望您的WPF开发人员了解混合吗?


13
我不同意“强大的.NET 2.0背景”。实际上,WPF与.NET 2.0有很多不同之处,而实际上了解得很少,则可以使您更快地掌握WPF……
Arcturus

28
还有一些指向每个主题的链接又如何呢!
Binoj Antony

16
我认为这对于“入门级”来说是一个很高的标准。我敢打赌,如果将职位描述为“入门级”,您将不会得到很多(任何)符合您标准的人。当然,要知道好事,但大多数人不称其为“入门级”。
Beska

1
我不会将“ freezable的目的”称为高级术语,如果您要谈论中级线程,那就是freezable所属的领域。MVVM / MVP也不是特别复杂,也不是奥术。
伊蒙

4
我认为应该将这些列表一分为二,一个用于图形/ UI设计方面,一个用于技术设计方面。UI设计人员可能应该知道如何使用表达式混合,但是不需要对支持技术细节(例如可设计用户控件背后的编码)了解太多。程序员需要知道如何创建可设计的控件,而无需使用表达式混合(在UI设计器变得漂亮之前,VS中的xaml设计器就足够了)。
Brian Reichle

Answers:


41

令人惊讶的是,还没有人提到XAML的基本知识。了解XAML是什么,以及使用XAML而不是图形设计工具进行一些基本编辑的能力。中级开发人员应该能够使用XAMLPad之类的工具来制作表格/图形原型。


34

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

根据实际的实际编程测试结果,在进行招聘决定时我的失败率为零。

该任务不必太困难。过去,我使用过一个简单的日常应用程序消息,该消息保存在数据库或XML文件中,并且使用了简单的用户界面。确保您要求他们安排好结构(因为任务足够小,如果他们感到倾斜,可以在一堂课上全部完成)。

在上面的问题中,我想告诉您,您是否对它们是否真的有一个好主意。一个潜在的候选人实际上可以阅读这些内容并创建听起来很不错的答案。所有这些表明,候选人可以说话,但是工作本身重要的是他们可以走路。


4
我完全同意,让人们做事情,而不仅仅是谈论它。@Colin,在您帮助拼写(自我诊断应用程序的问题)之后,我只需要将您提升到4位数字领域....顺便说一句,这里有一种类型:doen而不是完成。:)
raoulsson

啊,错别字,我的意思是,有趣:)
拉乌尔森

我部分同意您的意见,但它会浪费时间,甚至口头提问者也会花费更多时间。当然,这种方式可以选择合适的候选人。
Mohanavel

1
那么,您不同意哪一部分呢?
Colin Mackay

1
我还认为假设“每个WPF开发人员都应该知道”上述问题是不现实的。它们更像是一般性的谈话要点。不难的前提条件。
伊蒙


19

我认为这是一个很好的清单。
但是我不会在面试中提出棘手的问题。面试本身会给人足够的压力,技巧问题甚至会使高技能的人困惑。


9
我同意...面试的重点是评估...不要绊倒那个家伙。
cplotts

我不同意这一点,海事组织(IMO)程序员必须处理棘手的事情,比面试要糟糕得多。因此,一个棘手的问题很好,看看程序员如何解决压力下的问题。一个简单的“我不知道”会走很长一段路。
阿图尔·卡瓦略

15

就个人而言,我将“工作线程如何更新UI”放在入门级下面。中级,如果您确实需要。如果入门级程序员可以理解逻辑树和可视树之间的区别,则他们应该了解如何从后台线程更新UI。

在我的组织中,我们在没有Blend的情况下进行了很多WPF开发。我不是特别喜欢Blend,所以我有点偏见,但是我认为Blend的技能应该很不错。


9

WPF开发人员应该牢牢地将XAML与背后的代码分开,并能够详尽地讨论要在哪里画线。

能够以她选择的语言来建立模型,然后使用XAML通过数据绑定,数据模板,控件模板,样式,触发器,值转换器和UserControls在该模型上显示视图是中间的相当基本的任务级程序员。(但是,如果要求某人“从心开始”创建类似控件模板的内容,则应留有少量回旋余地。)

确实,WPF中有很多内容,如果不是MSDN论坛和有关该主题的深入书籍,那么“仅仅了解它”将是一项艰巨的任务。因此,我将毅力和向他人学习的能力视为任何级别的最高要求。

对于入门级WPF程序员,我并不希望自己具备WPF的任何知识,但是我将需要了解面向对象的原理,UI与业务逻辑的分离以及对类似事件模型的了解。具有以类似于WPF(带有DockPanel容器等)的样式来布局UI元素的经验者优先。

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


8

一般和CS知识的GUI编程/图形经验如何?如果是全职工作,那么恕我直言并不重要,如果这个人(或她)有很强的背景,那么他是否必须花前几个月的时间学习WPF。


7

入门级

  • 属性更改通知(INotifyPropertyChange和ObservableCollection)
  • 资源词典
  • 用户控件

中级

  • 混合/苹果酒
  • 动画和情节提要
  • ClickOnce部署

资深

  • WPF 3D
  • Silverlight 2和WPF之间的区别
  • MVVM / MVP
  • WPF性能调整
  • 像素着色器

7
  • 线程和分派器之间是什么关系?
  • Freezable的目的是什么?
  • 属性和依赖属性之间有什么区别?为什么要使用一个或另一个?

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

我想我更喜欢一个会了解Blend的开发人员。他/她可以轻松地与设计师沟通,并且比仅仅用xaml编写代码更快地完成一些基本的设计师工作。

该列表很有趣,也许到主题的链接会有所帮助。

干杯


4

另一个真正基本的问题是气泡和隧道路由策略之间的区别。


3

入门级

  • UX设计知识
  • 业务对象的声明式绑定方面的知识
  • 命令用法

资深

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



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


1

我一般会用WPF部署来扩展ClickOnce部署,因为很高兴知道每种模型(ClickOnce,XBAP,仅浏览器)的局限性和特殊性。不过,将其放在中级水平似乎很公平。


1

样式为您提供了一种在整个应用程序中应用主题并在您想要的特定实例中覆盖该主题的机制。样式就像资源一样定义。实际上,它们是在XAML文件的定义资源的同一部分中定义的。


1

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


1

了解单元测试及其对您使用WPF的影响是我在入门级上要具备的一项基本技能。人们可以学习细节,但是如果他们没有考虑软件设计的基础,那么您就会遇到麻烦。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.