.net 面试题:WPF开发者
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/58739/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Interview questions: WPF Developer
提问by rudigrobler
What should every WPF developer know?
每个 WPF 开发人员都应该知道什么?
Entry Level
入门级
- Strong .NET 2.0 Background & willing to learn!
- Explain dependency properties?
- What's a style?
- What's a template?
- Binding
- Differences between base classes: Visual, UIElement, FrameworkElement, Control
- Visual vs Logical tree?
- Property Change Notification (INotifyPropertyChange and ObservableCollection)
- ResourceDictionary - Added by a7an
- UserControls - Added by a7an
- difference between bubble and tunnel routing strategies - added by Carlo
- Why did Microsoft introduce yet another markup language?
- XAML
- 强大的 .NET 2.0 背景并愿意学习!
- 解释依赖属性?
- 什么是风格?
- 什么是模板?
- 捆绑
- 基类之间的差异:Visual、UIElement、FrameworkElement、Control
- 视觉树与逻辑树?
- 属性更改通知(INotifyPropertyChange 和 ObservableCollection)
- ResourceDictionary - 由 a7an 添加
- UserControls - 由 a7an 添加
- 气泡和隧道路由策略之间的区别 - 由 Carlo 添加
- 为什么微软要引入另一种标记语言?
- XAML
Mid-level
中级
- Routed Events & Commands
- Converters - Added by Artur Carvalho
- Explain WPF's 2-pass layout engine?
- How to implement a panel?
- Interoperability (WPF/WinForms)
- Blend/Cider- Added by a7an
- Animations and Storyboarding
- ClickOnce Deployment
- Skinning/Themeing
- Custom Controls
- How can worker threads update the UI?
- DataTemplate vs HierarchicalDataTemplate
- ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
- Different types of Triggers
- 路由事件和命令
- 转换器 - 由 Artur Carvalho 添加
- 解释 WPF 的 2-pass 布局引擎?
- 如何实现面板?
- 互操作性(WPF/WinForms)
- 混合/苹果酒- 由 a7an 添加
- 动画和故事板
- ClickOnce 部署
- 蒙皮/主题
- 自定义控件
- 工作线程如何更新 UI?
- DataTemplate 与 HierarchicalDataTemplate
- ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
- 不同类型的触发器
Senior
高级的
- Example of attached behavior?
- What is PRISM,CAL & CAG?
- How can worker threads update the UI?
- WPF 3D - Added by a7an
- Differences between Silverlight 2 and WPF
- MVVM/MVP - Added by a7an
- WPF Performance tuning
- Pixel Shaders
- Purpose of Freezables
- 附加行为的例子?
- 什么是棱镜、校准和 CAG?
- 工作线程如何更新 UI?
- WPF 3D - 由 a7an 添加
- Silverlight 2 和 WPF 之间的差异
- MVVM/MVP - 由 a7an 添加
- WPF 性能调优
- 像素着色器
- Freezables 的目的
Any other "trick"questions to ask?
还有其他“技巧”问题要问吗?
Do you expect your WPF developer to know blend?
您希望您的 WPF 开发人员了解混合吗?
回答by Mark Heath
I'm surprised no one has mentioned basic knowledge of XAML yet. Knowing what XAML is, and the ability to do some basic editing using XAML rather than a graphical design tool. Mid-level developers should be able to knock up form / graphic prototypes using a tool like XAMLPad.
我很惊讶还没有人提到 XAML 的基本知识。了解 XAML 是什么,以及使用 XAML 而不是图形设计工具进行一些基本编辑的能力。中级开发人员应该能够使用像 XAMLPad 这样的工具来构建表单/图形原型。
回答by Colin Mackay
Personally I would sit them down in front of a standard developer build machine and ask them to complete some task. No questions, just see what their code is like after a couple of hours (or more if the task is longer).
就我个人而言,我会让他们坐在标准的开发人员构建机器前,让他们完成一些任务。没问题,只需在几个小时后查看他们的代码(如果任务更长,则更多)。
I have had a zero failure rate on making a hiring descision based on the results of an actual real life programming test.
我根据实际的现实生活编程测试的结果做出招聘决定的失败率为零。
The task doesn't have to be too difficult. I've used a simple message of the day application in the past with the messages being held in a database or XML file and a simple user interface. Ensure you ask them to structure it well (as the task is sufficiently small that it could all be done in one class if they felt inclinded).
任务不必太难。过去,我使用了一个简单的每日消息应用程序,其中的消息保存在数据库或 XML 文件中,以及一个简单的用户界面。确保您要求他们将其组织好(因为任务足够小,如果他们愿意,可以在一个班级中完成)。
Of the questions above I'd say you cannot get a good idea of whether they are really any good or not. A potential candicate could actually just read these and create canned answers that sound great. All this shows is that the candidate can talk-the-talk, but what matters in the job itself is if they can walk-the-walk.
在上述问题中,我会说您无法很好地了解它们是否真的有任何好处。一个潜在的候选人实际上可以只阅读这些内容并创建听起来很棒的预设答案。所有这一切都表明,应聘者可以随心所欲,但工作本身重要的是他们是否可以随心所欲。
回答by Robert Jeppesen
I'd put binding and converters at entry level, since that is how you spend a lot of time in WPF.
我将绑定和转换器放在入门级,因为这是您在 WPF 中花费大量时间的方式。
回答by aku
Pretty good list in my opinion.
However I wouldn't ask trickyquestions on interview. Interview gives enough stress itself, trick question can confuse even highly skilled person.
在我看来相当不错的清单。
但是我不会在面试中问棘手的问题。面试本身就给了足够的压力,技巧问题甚至可以让技术高超的人感到困惑。
回答by Rob
Personally, I'd put 'How can worker threads update the UI' right under entry-level. Mid-level, if you really need to. If an entry-level programmer can understand the difference between the logical tree and the visual tree, they should understand how to update the UI from a background thread.
就个人而言,我会将“工作线程如何更新 UI”放在入门级之下。中级,如果你真的需要。如果入门级程序员能够理解逻辑树和可视化树之间的区别,那么他们应该了解如何从后台线程更新 UI。
At my organization, we do a lot of WPF development without Blend. I don't particularly like Blend, so I'm a bit biased, but Blend skills should be a nice-to-have, I think.
在我的组织中,我们在没有 Blend 的情况下进行了很多 WPF 开发。我不是特别喜欢 Blend,所以我有点偏见,但我认为 Blend 技能应该是一个不错的选择。
回答by exclsr
A WPF developer should have a firm grasp of separating the XAML from the code-behind, and be able to discuss at length where that line is to be drawn.
WPF 开发人员应该牢牢掌握将 XAML 与代码隐藏分开的能力,并能够详细讨论要绘制该线的位置。
Being able to set up a model in the language of her choice, and then using XAML to display views on that model through data binding, data templates, control templates, styles, triggers, value converters and UserControls is a fairly basic task for the mid-level programmer. (Though a small amount of leeway should be granted if asking someone to create something like a control template "from heart.")
能够以她选择的语言设置模型,然后使用 XAML 通过数据绑定、数据模板、控件模板、样式、触发器、值转换器和 UserControl 来显示该模型上的视图,这对于中级来说是一项相当基本的任务。级程序员。(虽然如果要求某人“从心”创建类似控制模板的东西,应该给予少量的回旋余地。)
Really, there is a lotin WPF, and if it weren't for the MSDN forums and in-depth books on the subject, it'd be quite the task to "just pick it up." For that reason, I would rate perseverance and the ability to learn from others as a top requirement for any level.
确实,WPF 中有很多内容,如果没有 MSDN 论坛和有关该主题的深入书籍,“只是拿起它”将是一项艰巨的任务。出于这个原因,我认为毅力和向他人学习的能力是任何级别的最高要求。
For an entry-level WPF programmer, I wouldn't expect any knowledge of WPF per se, but I would demand knowledge of object-oriented principles, separation of UI from business logic, and comfort with a similar event model. Experience laying out UI elements in a style similar to WPF (with DockPanel containers, etc.) is a plus.
对于入门级 WPF 程序员,我不期望 WPF 本身具备任何知识,但我会要求了解面向对象的原则、UI 与业务逻辑的分离以及熟悉类似事件模型的知识。以类似于 WPF 的样式(使用 DockPanel 容器等)布置 UI 元素的经验是加分项。
Edit: Also, what Colin Mackay said.
编辑:另外,Colin Mackay 所说的。
回答by Nils
What about GUI programming/graphics experience in general and cs knowledge? If it's for a full time jobs, it does not matter IMHO if the guy has to spend the first few months some time with learning WPF, if he (or she) has a strong background.
一般的 GUI 编程/图形经验和 cs 知识怎么样?如果是全职工作,恕我直言,如果这个人必须在前几个月花一些时间学习 WPF,如果他(或她)有很强的背景,这并不重要。
回答by rcabr
- What is the relationship between threads and Dispatchers?
- What is the purpose of Freezables?
- What is the difference between properties and Dependency Properties? Why use one or another?
- 线程和 Dispatcher 之间是什么关系?
- Freezables 的目的是什么?
- 属性和依赖属性有什么区别?为什么要使用一种或另一种?
回答by Alan Le
Entry Level
入门级
- Property Change NOtification (INotifyPropertyChange and ObservableCollection)
- ResourceDictionary
- UserControls
- 属性更改通知(INotifyPropertyChange 和 ObservableCollection)
- 资源字典
- 用户控件
Mid Level
中级
- Blend/Cider
- animations and storyboarding
- ClickOnce Deployment
- 混合/苹果酒
- 动画和故事板
- ClickOnce 部署
Senior
高级的
- WPF 3D
- Differences between Silverlight 2 and WPF
- MVVM/MVP
- WPF Performance tuning
- Pixel Shaders
- WPF 3D
- Silverlight 2 和 WPF 之间的差异
- MVVM/MVP
- WPF 性能调优
- 像素着色器
回答by Artur Carvalho
- Converters(simple and multi).
- Interoperability.
- 转换器(简单和多)。
- 互操作性。
I think I would prefer a dev that would know Blend. He/She could communicate easily with the designer and also do some basic designer stuff faster than just writing in xaml.
我想我更喜欢知道Blend的开发人员。他/她可以轻松地与设计师沟通,并且还可以比仅用 xaml 编写更快地完成一些基本的设计师工作。
The list is interesting, maybe links to the topics would help.
该列表很有趣,也许指向这些主题的链接会有所帮助。
Cheers
干杯

