这是一位应聘腾讯软件开发-应用开发方向(.net方向)的求职者经历的笔试,请看他为大家分享的经验:
一、笔试
数据库(较多)、编译原理(一题)、操作系统(主要)、数据结构(主要)
二、一面
SQL语句::求平均分在60分以上的同学学号和平均分数
两个水桶、一个5L、一个6L,叫你称3L
如何统计全国的便利店的数量?
你在看电视,突然电视机黑了,你怎么办?
你住在荒郊野岭的一个旅店里,三更半夜,你想吃烧烤,你会怎么做?
事务是什么?
范式是什么?
说一下你对面向对象的理解。
类和接口有什么区别?
类和抽象类有什么区别?
系统架构(三层架构的劣势是什么?)
设计模式(五大设计原则、工厂模式)
你看过的专业课外书有哪些?
你的五年规划?
CLR 如何与底层交互?(这是.net底层知识)
Httphandler和 httpmoduler 的区别?这是.net底层知识)
三、二面(时间:9月28号)
你的五年规划?
关于应付团队成员矛盾、项目需求矛盾、团队责任心等问题的提问。
1) 你的队员极力反对你的意见,你怎么办?
2) 当你觉得项目的需求有问题的时候,你会怎么办?
3) MS SQL的视图功能并不强大,你如何处理?
4) 你如何释放工作压力?
(突出点:语言表达能力、思维逻辑、团队沟通、责任心)
经验:
三层架构的劣势:
1. UI层逻辑过于强大。
2. 逻辑层与数据库访问层一般是一一对应的,所以逻辑层会形同虚设。
3. 难以测试,把UI层撤掉,底层无法测试(测试用例全在UI层)
4. 分布式存储各层,容易遭到攻击(获取UI层后,底层所有的信息都将曝露)
工厂模式的本质:
对象的创建,解决new 的问题(依赖注入是其中一个应用)
五大设计原则:
1. 开放封闭原则(OCP原则)
2. 里氏代换(父类引用出现的地方可以用子类对象来代替)
3. 依赖倒转(抽象不依赖于具体,具体依赖于抽象)
4. kiss原则(keep it sample)
5. 不要和陌生人说话(单一职责,模块化)
CLR 如何与底层交互:
CLR 类似于java 的虚拟机,是应用程序 与操作系统 之间 的一个中间件,在CLR 中有 CTS JIT CLS CIL CLI 等,运行时,CLR 通过加载程序集到内存中,生成类,创建对象,调用方法,生成代码,通过JIT 编译成为CLR 的中间代码,然后CLR把中间代码转换成为可执行的机器代码。
.net frameword 通过 CLR 拥有跨语言的特点 (因为有CLS 通用语言规范)可以让各种支持的语言(例如C++ 、C# 、 J# 等)进行相互通信、调用等,这与java虚拟机可以跨平台的特点有所不同(.net frameword 跨语言,不过目前可以通过在 .net frameword 下多加一层 中间层 (mono) 可以实现跨平台的操作,即.net 编写的程序 可以发布在linux 上,而不仅仅是windows上)
Httphandler和 httpmoduler 的区别
http 请求的通常为静态页面 或者动态页面 ,在asp.net 中 ,当客户端的请求到达的时候,需要通过一个管道(好像有18个管道)来进行处理,httpmoduler 就是用来获取请求消息,过滤请求消息用的,一般静态的页面都会都httpmoduler 来处理,而Httphandler(好像是第8个或者第11个管道)是真正处理请求的地方。在IIS中,如果客户端请求是动态页面的话(JSP、ASP、 ASPX等)则需要ISAPI 对应的处理程序(一般为DLL )来处理,而这个处理过程就是由Httphandler 中的processrequest 函数来进行处理 的,处理完毕以后,将生成相应的html页面返回。
你的队员极力反对你的意见,你怎么办?
1. 比较自己和队友的意见如何,优劣的比较。
2. 各自实现出来(可以只是原型、核心部分),比较优劣。
3. 队员投票。
4. 请求上级,上级一般比我们经验丰富。
当你觉得项目的需求有问题的时候,你会怎么办?
1. 自己思考需求是否要进行改动。
2. 队员之间讨论。
3. 请求上级
团队和项目问题时:
项目要说清楚,框架,系统特点要突出。
团队问题主要考你的责任心,独立思考的能力,团队协作能力。
回答方法:先从自身入手,自己要先思考,再到队员讨论,投票,最后到上级。
视图的优缺点是什么?
优点 :
(1)视图能简化用户的操作
(2)视图机制可以使用户以不同的方式查询同一数据 (一个基本表可对应多个视图)
(3)视图对数据库重构提供了一定程度的逻辑独立性 (视图与应用对应,变换灵活)
(4)视图可以对机密的数据提供安全保护 (可以做到混淆视听的效果)
缺点:
1、性能:如果视图连接复杂,查询起来需要花费时间。
2、更新限制:视图是只读的,更新时需要更新原表,数据更新对用户来说很麻烦。