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

一、引子javascript

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

  最近也一直比较困惑,缘由到底是什么?html

  是咱们要求过高,应聘者自己的问题,仍是是面试的内容自己的问题?前端

  二、咱们的岗位要求java

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

    必须技能:面试

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

   优先考虑:ajax

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

  三、使用的面试问题数据库

  面试过程当中针对上面的岗位要求主要会涉及到如下几项内容设计模式

  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) 解决问题的能力/学习习惯/我的特长等等

  主要涉及到如下一些问题

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

  四、我指望获得的答案

  固然上面这些问题不可能一次所有都问到,时间上也不容许,可是四部分的内容我会根据实际状况都会问到一些;时间通常在1个小时左右。

  下面谈谈从项目组以及我我的角度出发但愿获得的答案,但愿可以给你们带来些许启示:

  1) 首先是自我介绍部分

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

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

  因此我所指望从应聘者的自我介绍中获得如下一些信息:

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

  2) 基础方面

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

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

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

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

    

  总之一句话就是,我但愿应聘者可以对原理性的东西多了解一些。

  3) 设计方面

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

  我指望应聘者可以对设计模式有比较深刻的认识,经过我给出的经典场景可以马上联想到应该使用的设计模式。

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

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

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

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

  c) 在知识面上既要有必定的广度,同时也有本身的专长。

  五、总结与建议

  1) 总结

  经过这段时间的面试,发现面试者主要有如下几点不能彻底让我满意:

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

  2) 建议

  结合本身的一些真实感觉,这里给出几点简单的建议吧:

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