面试实录
UML类关系
UML中涉及依赖、关联、聚合、组合和泛化这五种关系,耦合度依次递增。
依赖
依赖关系使用虚线加箭头表示:
学生依赖电脑
关联
关联关系用实线加箭头表示:
学生跟老师是关联的
聚合
聚合关系用实线加空心菱形表示:
聚合表示集合与个体之间的关联关系,班级与学生之间存在聚合关系。
组合(复合,Composition)
复合关系用实线加实心菱形表示:
复合表示个体与组成部分之间的关联关系。
泛化
泛化指类与类之间的继承关系和类与接口之间的实现关系。
继承关系用直线加空心三角形表示:
实现关系使用虚线和空心三角形表示:
软件开发过程中什么时候发现违背了开闭原则
用抽象构建框架,用实现扩展细节。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节,我们用从抽象派生的实现类来进行扩展,当软件需要发生变化时,我们只需要根据需求重新派生一个实现类来扩展就可以了。当然前提是我们的抽象要合理,要对需求的变更有前瞻性和预见性才行。
WPF冒泡事件和隧道事件
冒泡事件是WPF路由事件中最为常见,它表示事件从源元素扩散(传播)到可视树,直到它被处理或到达根元素。这样您就可以针对源元素的上方层级对象处理事件。例如,您可向嵌入的 Grid 元素附加一个 Button.Click 处理程序,而不是直接将其附加到按钮本身。气泡事件有指示其操作的名称(例如,MouseDown)。
隧道事件采用另一种方式,从根元素开始,向下遍历元素树,直到被处理或到达事件的源元素。这样上游元素就可以在事件到达源元素之前先行截取并进行处理。根据命名惯例,隧道事件带有前缀 Preview(例如 PreviewMouseDown)。
StaticResource 和 DynamicResource的key能否重复
StaticResource中的key是没法重复的,DynamicResource中的key是可以重复的。
其它
出了一个很简单的算法题,从一个int数组中取出所有不重复的数。
拿一个callstack的截图问问题出在哪里。
我首先定位到出错的地方,但是不是很明白为什么出错,查看callstack 的能力仍需提高。
面试总结
WPF基础不踏实,软件工程方面几乎不了解。
面试通过几率50%左右。
面试官评价:英语不错,技术尚可,算法一般,软件工程方面严重欠缺。
面试难度:中等偏下,但是自己水平真的是差啊!!!!
##Update:面试通过,薪资还算满意。希望能够通过以后规范的流程进一步提升自己的代码水平和各方面的能力!