上海某软件公司电话面试分享
前段时间在猎聘网上面投了几家公司的简历,结果没过多久就有一家公司叫我准备电话面试了,其中一家就是XX软件公司的面试了。今天下午从3点讲到4点。说句实话,今天长沙这边是下雨天,有点冷,为了找一个方便的地方去说话,我自己在楼道里面开辟了一个小的空间。也算是席地而坐吧。另外今天的面试真是让人印象深刻,最深刻的地方还是我自己坐在楼道里,真是感觉有种北风吹的感觉,冻死我了。风吹着我都有1个小时啊!为了应付这次的面试,我甚至从网上找了一套C#面试题,然后打印出来,结果尼玛居然没打印目录,这套题目有20多页,我想,奶奶的,居然没 目录,叫我怎么去找答案啊。。。。。其实最后跟大家说说结果,据我自己的理解,他一道提都没抽到(我说的是我打印出来的那些面试题),实在是太苦逼了,中午在现在的公司都没睡觉啊,就为了准备这次的面试。
闲话不多说,开始进入正题,首先第一,他让我做一个自我介绍。尼玛又是自我介绍(前几次面试了几家外企:HP,花旗银行都是用英文做自我介绍)。于是我就说了一些自己的情况,比如我的名字是杨XX,在长沙工作,从事.NET开发2年,个人爱好是编程写代码。然后自我介绍完成以后,就开始切入正题了,他问我是不是用MVC做项目做得比较多,我说是的,他于是叫我简述一下MVC。我的想法是从2个点去切入,一个是原生态的MVC框架写法,另一个是用我们公司的框架实现MVC。我先说的是用我们公司的框架实现的MVC,我们公司的框架的MVC其实主要就是MODEL ,Controller,Service 层为一个工程项目,然后Service层里又有接口,我们采用的方式就是使用调用接口的方式(在控制层里),使用依赖注入来直接实现对接口层的调用(当然实际调用的是SERVICE层的具体方法).
前台我们主要采用JQUERY的方法,去设计一个HTML页面和一个JS页面,2个页面的名字是相同的。只要在controller里的actionresult里面用公司的this.GetView方法去返回对应的HTML页面,就会返回相对应的JS页面。原生态的我就说,是通过routeTable 找到这个actionresult的路由映射,然后再通过return this.view方法 返回相对应的VIEW层里的东西,置于MVC的工作原理,我回答的是,先找到路由,然后通过控制层找到对应的actionresult然后再通过想对应的ACTIONRESULT返回对应的VIEW视图层,至于模型层的作用起到的是一个中间过渡的作用,PS:其实我答得不好,但是我真的不知道怎么回答比较好。
这个问题问完了,然后又问了一些问题。
- HttpHandler和httpModule 的区别,我没回答上来。
- 然后就是在aspx页面中system.web.ui.page 是一个HttpModule吗?
- 一个类里面,有一个private的变量,一个静态的变量,一个构造函数,问实例化执行顺序。这个问题我答得很烂,我说的是静态变量是属于类的,先执行静态变量,然后构造函数后执行,最后是普通变量。面试官呵呵了一下,说了句,那么构造函数里允许成员变量初始化吗,我答可以,他说,是不是需要调整下顺序呢?我又回答道:先是静态变量,再是普通变量,然后是构造函数,他又呵呵了一下,说叫我回去看看书再说。
- 他问说我既然懂EF,问了下我LINQ方面的知识(说实在的,掌握得不好)。他说:first和firstOrDefault有什么区别。我答道:first就是第一个元素,而FirstOrdefault的话,可能有多个元素。他问了2者会抛出什么异常,我说,如果是用firstOrDefault的话,可能序列中会包含多个元素。。。。所以会抛出异常,用first不会抛出异常,你懂的,又被叫去看书了。
- SQL题目:union 和union all的区别。其实这个问题我蒙了,因为平时只用过UNION在公司里面,所以我就回答:UNION需要的是一个并集,然后的话前面的列数必须和后面的相同,并且列名一样。
- left join 和inner join 的区别在哪?我思索了一下,皱了皱眉头,因为公司里面一般都是用left join ,置于INNER join,我确实不懂区别在哪里,然后我就跟他说实话了,我说我不太懂inner join,我只说了left join ,我拿了一个cross join 就是用逗号分隔,然后再where条件里面写的方式来做对比。我说,既然是这样的话,那肯定是把2张表的不同元素做了映射才得到的结果,那么既然是left join 的话,也是类似的,只不过如果是左边join 右边的,如果是这样的话,那么假设左边有100条记录,右边有20条记录,那样的话,得到的就是100条记录,因为查询*是把2张表的列都查询出来,所以的话,如果碰到不相等的话,就把列的值显示为NULL,所以会出现很多空值。
- 然后他又问道:如果我用a left join b on a.x=b.x 和把on 里面的a.X=b.x移动到WHERE里面去,这2种方式有什么不同,结果会不会一样,我思索了一下,我觉得where 是针对于全局的,就是假设你有N张表比如a left join b left join c left join d 那样的话where只有一个,所以针对的是全局的,如果是写在on 里面,只针对于a left join b 这2张表的结果,他然后叫我回去看看书。。。。
- 自定义函数问我用过没有,我说我写过一个通过子集求所有的上级父级的函数,他问,自定义函数有哪些返回类型。我说我只写过字符串类型的,其他的没接触过,反正里面就是可以套各种各样的逻辑吧。
- 然后问我用过什么系统函数,我居然把exec sp_name 给搭档去了,他说那是系统的存储过程。。。。
- 然后他问了我怎么优化查询速度方面,我说了写存储过程啊,触发器啊,视图啊,等等,他说不是,他说是从SQL代码方面进行优化, == 我说我很少做。
然后关于那个工作经验方面的话,他问了我自己做的最有成就感的一个项目是什么,我说虽然我是来应聘.NET的,但是我做得最优成就感的是一个JAVA项目,我负责的是动态生成报表这块,动态生成表头和表当中的内容。我重点跟他介绍了下日报的生成,就是每天都会有不同的数据,他问我如果时间跨度长的话,会不会执行效率方面很慢,我说怎么会不慢呢,又没有对SQL 进行优化,他说,那客户没有要求吗 ?我说,因为以前的系统更慢,客户只要求能用就行了(PS:这样的回答太屎了、。。。。。)
他说我对KOOBOO CMS有了解,叫我简述下KOOBOO CMS 的优缺点。概括如下:具体的我就不全说了,数据库可以通用,站群管理功能强大,可以支持多种数据的等。
缺点是:不易于维护和二次开发,因为牵一发而动全身,简单点说,就是指不太好改动。最后问我有什么打算,我随便说了下,最后就是SEE YOU ....挂鸟(99.9999999%的几率,回答这么烂,不挂才怪)。。。。
最后总结一下,祝福自己能慢慢提高,以后能回答多点问题。突然觉得程序员们的语言表达能力都不怎么样啊 = =,当然自己也是菜鸟,需要继续努力!
也打算去上海了,走出去了,就不要回头!加油!
![](https://pic.cnblogs.com/avatar/567748/20200111202800.png)
出处:http://www.cnblogs.com/kmsfan
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
欢迎大家加入KMSFan之家,以及访问我的优酷空间!