面试问题:WPF开发人员

时间:2020-03-05 18:52:08  来源:igfitidea点击:

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

入门级

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

解决方案

回答

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

回答

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

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

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

干杯

回答

入门级

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

中级

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

高级的

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

回答

中级或者高级:WinForms和WPF InterOp。

回答

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

回答

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

回答

我认为WPF应用程序从创建到运行时的生命周期应包含在入门级问题中。不知道它,很难相信一个真正的WPF开发人员。

回答

中级或者高级

  • 皮肤/主题
  • 自定义控件

回答

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

回答

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

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

回答

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

回答

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

回答

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

回答

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

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

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

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

编辑:另外,科林·麦凯(Colin Mackay)说的话。

回答

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

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

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

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

回答

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

回答

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

回答

入门级

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

高级的

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

回答

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