首页 / 知识

关于.net:面试问题:WPF开发人员

2023-04-15 02:40:00

关于.net:面试问题:WPF开发人员

Interview questions: WPF Developer

每个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开发人员了解混合吗?


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


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

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

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

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


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


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


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

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


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

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

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

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

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


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


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

入门级

  • 财产变更通知
    (INotifyPropertyChange和
    的ObservableCollection)
  • 资源字典
  • 用户控件

中级

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

前辈

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


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

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

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

干杯


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


入门级

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

前辈

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

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

中级或高级

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


中级或高级:WinForms和WPF InterOp。


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


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


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


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


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


开发人员属性模板解释

最新内容

相关内容

猜你喜欢