zoukankan      html  css  js  c++  java
  • 也谈谈技术面试

    今天看到首页有几篇面试相关的文章。面试是我最近想的很多的问题,有所思,有所得,从小部门面试的角度谈谈所思所得吧。

    面试就是在短时间内对应聘者的经验、能力、潜力进行评估。我一般比较关注这些方面:(1)品格;(2)经验;(3)解决问题的能力;(4)技术特长;(5)潜力。面试时间一般为1小时,笔试+机试+面谈。

    下面结合偶常用的一份C++/C#程序员面试题谈谈体会。

    面试题一般分为34部分。第一部分是自我评估,第二部分是上机编程,第三部分是领域相关的东东,第四部分是考查能力与潜力的选做题。

    1)自我评估

    自我评估一般有三道题:

    a)请估计你的编码量,在合适的选项上画上√。(机器生成的代码不算)

    b)你使用过什么源代码管理工具?(只使用过一、两次的不算,可多选)

    c)你习惯使用什么样的开发工具/IDE?(可多选)

    主要考查个人经验和品质。如果这一部分胡填瞎吹,在后面会露馅。这里面还能看出一个人解决问题的能力。有一个哥们折腾了半天,问:这个√我在“插入”(word)怎么找不到啊!(偶想:不会copy嘛!)。这种哥们,显然解决问题的能力不强,可以直接拒之。可能会冤枉他,但冤枉的概率很低。

    一般来说,偶觉得需要评估拟采用语言及其相关语言的编码量,比如招聘c#程序员,偶一般评估其java, c#, sql, vb.net的编码量。有时候这哥们不会c#javasql很熟其实也不错。

    IDE和源代码管理工具评估大概能评价一个人的技术风格。比如,用dreamweaver的侧重于页面,用visual studio的侧重于后台,linux下用vi, emacs, cvs的具有一定的黑客特质,用kdevelop, eclipse/cdt的侧重于实用主义。

    2)机试

    一般来说,就一个hello world题。主要考察基本的OO设计及编码风格。下面是原题:

    C#版:

    a)写一个类Message,该类具备以下成员:

    ·一个名为message,储存消息文本;

    ·一个方法Show(),打印消息文本;

    ·一个构造函数,根据传递的字符串,初始化消息文本。

    ·其它你认为需要的东西

    b)调用Message的实例,打印“hello world”。。

    C++版:

    a)写一个C++Message,该类具备以下成员:

    ·一个名为message,类型为string(或char*)的私有变量,储存消息文本;

    ·一个方法show(),打印消息文本;

    ·一个构造函数,根据传递的字符串,初始化消息文本。

    b)写一个程序,通过调用Message的实例,打印“hello world”。编写make文件;make;运行程序。

    大家写出来的结果真是五花八门,精彩之极。能在1小时内写出实现功能的C++应聘者不到50%C#的高一些。在10分钟内写出,并且写的让人看的很舒服的,大概只有20%,没有一年的编码经验是写不出很漂亮的代码的。

    以前常用一个较难的题:界面上有一条线段,鼠标在线段的附近点击,写一个算法,判断是否会选中线段。发现效果不好,一般人在一小时内搞不定。

    3)领域相关

    这个和应聘的职位相关。如果招聘网络程序员,偶会让他讲讲几种IO的区别,抓几个包分析分析。如果招聘Asp.Net Web程序员,偶会让他讲讲DataTable, DataSet, DataAdapter的角色与功能。如果他说不会,用NHibernate什么的,那就让他谈谈这方面的体会。这种题目相对开放。主要考查他有没有相关领域的开发经验以及经验的深浅。到这里,不出大差错的话,差不多就可以录用了。当然,如果应聘者较多,就需要比较选择题的成绩了。

    4)选做题

    选做题是非常开放的题目。基本上分模式、算法、库的考查。

    C#版的如下:

    (a) 谈谈你对facade模式的理解与心得

    (b) 谈谈你对.net framework的理解与使用心得

    (c) 想产生一个数列:T(n) = T(n-1),n,T(n-1)T(0) = 1

    比如T(3)1,2,1,3,1,2,1

    T(4)1,2,1,3,1,2,1,4,1,2,1,3,1,2,1

    不用递归有什么效率高的算法吗?

    C++版的如下:

    (a) 谈谈你对facade模式的理解与心得

    (b) 谈谈你对C++ 程序内存管理的理解与心得

    (c) 谈谈你对C++ 标准库的理解与使用心得

    (d) 想产生一个数列:T(n) = T(n-1),n,T(n-1)T(0) = 1

    比如T(3)1,2,1,3,1,2,1

    T(4)1,2,1,3,1,2,1,4,1,2,1,3,1,2,1

    这些问题很开放。有些人上来能谈的有条有理,这个人大概在这些方面进行过思考过。如果一上来不知道怎么谈,可以诱导他,慢慢的谈出他在这方面的经验、心得和体会。比如谈.net framework,可以问问常用的类,谈谈framework的结构,你觉得什么地方好用,什么地方不好用,怎么选择、试用、使用、扩展第三方库?

    对于“精通”。一般来说,在简历中写精通的人90%都是吹牛,直接拒掉冤枉的概率只有10%。就算一个人是真正的精通,那也不是企业最需要的人。企业最需要的是能解决问题,有思路的技术人员,其次才是精通某项技术的技术人员。《.NET方向高级开发人员面试时应该事先考虑的问题》中的题目,一半偶不会用来面试人,一些可能放在选做题里面,一些可能放在领域相关题里面(假设我要招聘这方面的开发人员),一些是用来考察一个人的品质是否诚实,权重不会很大。当然,偶招聘的一般是一般开发人员,不是高级开发人员。:P 不过,对于高级开发人员,偶一般也不会面试这些,偏架构的一般会从《企业应用架构模式》,《without ejb》中选题,还有就是开发过程。偏技术的可以给他一个问题让他解决,或者给他一段IL汇编代码,让他看,或者在可上网的条件下问他一个现实中可能出现的非常刁的问题。


    面试(技术面试)别人是一个很恼人的问题。不知大家有什么心得体会?
    版权所有,欢迎转载
  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第50章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第49章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第48章 读书笔记(待更新)
    Spring Boot 中使用 Quartz 实现任务调度
    实战 FastDFS Java 客户端上传文件
    分布式文件系统之 FastDFS
    Java 持久层框架之 MyBatis
    C语言实现贪吃蛇
    [转载]分享三篇非常好的学习心得
    selenium加载cookie报错问题:selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
  • 原文地址:https://www.cnblogs.com/xiaotie/p/364831.html
Copyright © 2011-2022 走看看