浅谈C# .Net技术面试 , 正在找工作的人一定要看看

1、引子

  最近一直在负责.net(B/S方向)技术面试相关的工作,前前后后面试了不少人,但是通过率较低,大概只有20%左右;有颇多感慨。

  最近也一直比较困惑,原因究竟是什么?

  是我们要求太高,应聘者本身的问题,还是是面试的内容本身的问题?

  2、我们的岗位要求

  这是之前项目组整理的一个简单的岗位(.Net中高级职位)要求,贴一下:

必须技能:

  • 有2~3年实际的项目经验(特别说明:工作经验不一定要进入实际的公司才能积累的)
  • 思路比较清晰,有较强的独立解决问题的能力
  • 熟悉b/s开发的各项基本知识(如css、javascript、html、asp.net),不要求全会,但至少能看懂别人写的东西,另外各项里面必须有一项较为突出;
  • 对.net框架比较熟悉,熟悉多层模型,编码能力较强,编码规范,打字速度不能太慢(特别说明:这应该属于最最基本的技能,但是很让人不解的是面试过程中有不少的应聘者竟然尖着个手指头在那儿慢慢敲字!!!)
  •  数据库知识比较扎实

优先考虑:

  •  对web报表比较熟悉者
  •  有过多种数据库开发经验,能够罗列出各种数据库之间的一些细微差别
  •  有过一些c/s开发经验者
  •  前端开发经验比较丰富者(如实际负责过ExtJS、JQuery、Dojo、YUI、AjaxPro相关工作的)

  3、使用的面试问题

  面试过程中针对上面的岗位要求主要会涉及到以下几项内容

  1)给10分钟左右的时间,做一个详细的自我介绍

  2)C#、Asp.Net、前端、数据库等基础知识

  一般会问到以下一些问题

  • a) 下面三句代码有没有错,以inboxing或者unboxing为例,解释一下内存是怎么变化的
  • int i=10; 
    object obj = i; 
    int j = obj;
  • b) 编码题目, 如限定时间编码求菲波拉契数列第n项的值,求函数f(n)=1/1!+1/2!+1/3!+...+1/n!的值,求两个二维矩阵相乘的值等等;
  • c) 谈谈对委托、事件的理解等等;
  • d) 为什么asp.net控件能够保持住状态;asp.net button的客户端事件是如何映射成服务器端事件的;详细谈一下asp.net的管道模型;
  • e) 下面css中“一段文字”最终在浏览器中显示什么颜色;如果用js原生脚本改变class为“xyz”该如何写,将“一段文字”替换成“其它文字”如何写等;
  • .abc{color:red;}
    #abc{color:blue;}
    <div id="abc" class="abc">一段文字</div>
  • f)谈谈ajax原理的了解程度以及目前业界流行的ajax框架的熟悉程度;
  • g) 表结构:
  • 成绩表(Grade),包含字段:GradeID(Int,自增), SNO(int, 学号), CNO(int, 课程号), Score(float,分数)

  查询每门课程的平均(最高/最低)分及课程号;

  查询每门课程第1名的学生的学号;

  查询每门课程中超过平均分的所有学生的学号等等。

  3) 设计方面的能力

  • a) 给出一些具体的应用场景,如多数据库支持、工资计算方式多样的情况,如何来设计;
  • b) 谈谈对设计的理解;
  • c) 偶尔还会让画画设计类型,写写代码实现常见设计模式(如单例模式等)

  4) 解决问题的能力/学习习惯/个人特长等等

  主要涉及到以下一些问题

  • 让应聘者自己挑一个自己以往做过的他认为具有代表性的项目,详细聊一下,主要聊一下他/她在这个项目中的职责,这个项目曾经遇到过哪些问题,如何解决的,他/她在解决这些问题的过程中起到了什么作用等等。
  • 给应聘者一个他目前不会的问题,让其解决一下;
  • 课外时间都在干什么,常上的技术网站是什么,最近看的基本书(电子书当然也算)的名字还记得吗;
  • 聊聊自己最擅长的方面;

  4、我期望得到的答案

  当然上面这些问题不可能一次全部都问到,时间上也不允许,但是四部分的内容我会根据实际情况都会问到一些;时间一般在1个小时左右。

  下面谈谈从项目组以及我个人角度出发希望得到的答案,希望能够给大家带来些许启示:

  1) 首先是自我介绍部分

  这部分的内容我本人之前被面试的时候也很是郁闷,认为:“我的简历都有了,你自己不会看吗,还让我再多说一遍,真实吃饱了撑的!”;这种想法真的是非常错误的,原因有以下几点:

  •  简历是hr筛选的,技术面试官一般都比较忙,虽然hr可能会提前将简历发送给技术面试官,但是面试官一般都比较忙,面试之前未必会仔细看简历;所以通过自我介绍可以让面试官更好的了解你;
  •  自我介绍可以看出你的语言组织能力、逻辑思维能力;
  •  自我介绍可以引导面试官往应聘者自己熟悉方向上去发问,争取面试的主动权。

  所以我所期望从应聘者的自我介绍中得到以下一些信息:

  •  有组织、有条理的进行自我介绍;
  •  自我介绍的内容包括简单介绍教育背景、工作经历、项目经历、自我评价(优缺点、特长【说明:重要,亮点,如果应聘者自己提到了的话我一般会接着这个话题继续聊下去】),个人的短/中/长期职业规划。

  2) 基础方面

  这部分的内容不一定要求全部精通,但是至少应该知其然,最好也能知其所以然,比如css的优先级,这里我举两个简单的例子:

  a) 编码题目,这个我一般都会让应聘者写一段代码,编码是开发人员最基本的功底;针对编码问题,我期望看到以下的结果:

  • 编码之前先写思路,比如,第一步怎么怎么做,第二步怎么怎么做,体现出良好的思维习惯及逻辑思维能力,这样即使最终没有写出来也没有太大的关系;
  • 良好的编码习惯(如命名规范、注释,在应聘者开始写之前我也会),这里我多说几句,常常听到有人说良好的命名就是最好的注释,强掉少些注释啥的;我面试过程中有一个原则,通篇代码没有一句注释的我直接不聊了;

  b) 引用类型/值类型,装箱/拆箱问题。这个问题也比较典型,可能有人会说,这些东西又不会在工作中用到,问这种问题有什么意义! 我要说的是,不是没用到,只是你没注意到而已。其它不多说了,我期望应聘者能把下面这张图画出来。

  总之一句话就是,我希望应聘者能够对原理性的东西多了解一些。

  3) 设计方面

  设计知识其实也是作为高级开发职位必须具备的知识。

  我期望应聘者能够对设计模式有比较深入的认识,通过我给出的经典场景能够立刻联想到应该使用的设计模式。

  4) 解决问题的能力/学习习惯/个人特长等等

  a) 解决问题的能力一直是我个人也好,还是项目组也好,比较看重的,给一个不会的问题(写一个Windows服务小工具来搜集服务器的CPU、内存等信息),我期望得到的答案包含以下信息:

  •   首先要制定一个计划(包含可能需要用到的资源、可能遇到的困难及解决思路,这个问题需要分几个步骤去做,制定大致的时间进度计划等等);
  •   按照规划好的步骤去做这些事情,遇到困难通过最快的方式/方法去解决,并及时修正计划;
  •   解决完以后及时总结、汇报等等。

  b) 期望应聘者有良好的学习习惯,对新技术、新知识持续不断的学习;

  c) 在知识面上既要有一定的广度,同时也有自己的专长。

  5、总结与建议

  1) 总结

  通过这段时间的面试,发现面试者主要有以下几点不能完全让我满意:

  • 思路不够清晰,主要表现在:自我介绍的时候没有条理,比较乱;解决问题的能力有所欠缺;
  • 比较浮躁,基础不扎实。 动不动就写精通XXX,对基础的问题(如装箱、拆箱)稍微聊得深入一点就清楚了;
  • 不诚实:经常在简历或者自我介绍中提到:做过项目经理、技术经理,但是问到项目经理、技术经理的职责啥的却说不清楚;
  • 知识面比较窄,学习习惯不够好;
  • 职业目标不够清晰;

  2) 建议

  结合自己的一些真实感受,这里给出几点简单的建议吧:

      • 给自己制定一个短/中/长期的职业目标,并为此不懈努力;
      • 夯实基础,项目中用到的知识当然要学习,基础原理性的东西更要掌握;
      • 多总结,把知识沉淀下来;
      • 诚实;
      • 培养良好的编码习惯;

http://www.cnblogs.com/qingqingzijinc/p/3970639.html

时间: 2024-10-25 17:32:08

浅谈C# .Net技术面试 , 正在找工作的人一定要看看的相关文章

浅谈C# .Net技术面试

1.引子 最近一直在负责.net(B/S方向)技术面试相关的工作,前前后后面试了不少人,但是通过率较低,大概只有20%左右:有颇多感慨. 最近也一直比较困惑,原因究竟是什么? 是我们要求太高,应聘者本身的问题,还是是面试的内容本身的问题? 2.我们的岗位要求 这是之前项目组整理的一个简单的岗位(.Net中高级职位)要求,贴一下: 必须技能: 有2~3年实际的项目经验(特别说明:工作经验不一定要进入实际的公司才能积累的) 思路比较清晰,有较强的独立解决问题的能力 熟悉b/s开发的各项基本知识(如c

浅谈Android保护技术__代码混淆

浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字.比如改写成单个字母,或是简短的无意义字母组合,甚至改写成"__"这样的符号,使得阅读的人无法根据名字猜测其用途.对于支持反射的语言,代码混淆有可能与反射发生冲突.代码混淆并不能真正阻止反向工程,只能增大其难度.因此,对于对安全性要求很高的场合,仅仅

浅谈PHP缓存技术之一

近来做了一阵子程序性能的优化工作,有个比较有意思的想法,想提出来和大家交流一下. Cache是"以空间换时间"策略的典型应用模式,是提高系统性能的一种重要方法.缓存的使用在大访问量的情况下能够极大的减少对数据库操作的次 数,明显降低系统负荷提高系统性能.相比页面的缓存,结果集是一种"原始数据"不包含格式信息,数据量相对较小,而且可以再进行格式化,所以显得相当灵 活.由于php是"一边编译一边执行"的脚本语言,某种程度上也提供了一种相当方便的结果集

浅谈大数据技术

忽如一夜春风来,无人不谈大数据.大数据就像前两年的云计算一样,是一个时下被炒得很火的概念.那么什么是大数据,大数据是如何定义的,大数据处理技术有哪些,大数据能给我们带来什么益处?虽然我不知道现在这些概念是如何被炒作的,但是作为一名互联网行业的从业者,作为一个大数据技术的实践者,根据自己的理解和经验发表一点浅显的认识,理解肯定有不到位之处请大家批评指正. 无论是大数据技术还是云计算技术,其实这些技术都不是突然冒出来的,而是随着互联网技术的发展,人们把现有的技术加以整合,总结,概括出来并冠一个新名字

搞懂分布式技术21:浅谈分布式消息技术 Kafka

搞懂分布式技术21:浅谈分布式消息技术 Kafka 浅谈分布式消息技术 Kafka 本文主要介绍了这几部分内容: 1基本介绍和架构概览 2kafka事务传输的特点 3kafka的消息存储格式:topic和parition 4副本(replication)策略:主从broker部署和partition备份,以及选主机制 5kafka消息分组,通过comsumergroup实现主体订阅 6push和pull的区别,顺序写入和消息读取,零拷贝机制 Kafka的基本介绍 Kafka是最初由Linkedi

浅谈分布式消息技术 Kafka

http://www.linkedkeeper.com/1016.html Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志.访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目. 主要应用场景是:日志收集系统和消息系统. Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化

浅谈分布式消息技术 Kafka(转)

一只神秘的程序猿. Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志.访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目. 主要应用场景是:日志收集系统和消息系统. Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能.

猎头,希望您能更理解找工作的人

这些日子找工作,接触到了很多很多猎头,曾经看过一篇文章说,猎头喜欢和什么样的人打交道,不喜欢和什么样的人打交道,而我恰好是猎头喜欢的那种类型,因此,平均每天都会有一个新的猎头找到我. 猎头这个职业,其实表面上看是一种服务行业,但实际上我认为它是一种具有"马太效应"的人脉关系网.所谓供需关系,有需求就会有供给,前些天看过一篇报道,说现在IT市场上每年的人才需求量在30万,而每年从各大互联网行业流动出来的也就只有10余万,那毫无疑问,这流动出来的IT人才将会有不少的选择机会,因此猎头这个行

浅谈负载均衡技术

Tomcat处理静态页面的并发是每秒2000左右,处理动态页面的并发是每秒800左右. Internet的快速增长使多媒体网络服务器,特别是Web服务器,面对的访问者数量快速增加,网络服务器需要具备提供大量并发访问服务的能力.例如Yahoo每天会收到数百万次的访问请求,因此对于提供大负载Web服务的服务器来讲,CPU.I/O处理能力很快会成为瓶颈.  简单的提高硬件性能并不能真正解决这个问题,因为单台服务器的性能总是有限的. 一般来讲,一台PC服务器所能提供的并发访问处理能力大约为1000个,更