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汇编代码,让他看,或者在可上网的条件下问他一个现实中可能出现的非常刁的问题。


    面试(技术面试)别人是一个很恼人的问题。不知大家有什么心得体会?
    版权所有,欢迎转载
  • 相关阅读:
    分享我设计的iOS项目目录结构
    swift语言之多线程操作和操作队列(下)———坚持51天吃掉大象(写技术文章)
    swift语言之多线程操作和操作队列(上)———坚持51天吃掉大象
    获取UIColor中的RGB值(本人亲测多个获取RGB值的方法,这个最有效)
    swift语言开发的一个游戏------熊猫跑酷(KongfuPanda)
    ios上传应用后,审核流程完成前(reveiw)修改了程序内容,如何上传替换
    上架app 到app store 的出现: “The IPA is invalid. It does not inlude a Payload directory.”错误处理
    ios 8+ (xcode 6.0 +)应用程序Ad Hoc 发布前多设备测试流程详解
    Swift 实现iOS Animation动画教程
    新浪微博项目---首页技术点三.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现)
  • 原文地址:https://www.cnblogs.com/xiaotie/p/364831.html
Copyright © 2011-2022 走看看