V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gowk
V2EX  ›  程序员

作为面试官,可以要求候选人发代码给我吗

  •  
  •   gowk ·
    qinjinling · 2019-08-14 21:43:51 +08:00 · 9763 次点击
    这是一个创建于 1963 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今年 5 月份,领导接了一个.NET 项目,在原有老项目基础上进行二次开发,公司开发基本上都是用 Java,就我一个除了 Java,.NET 也比较熟悉,领导就安排我招几个人去客户那边驻场开发。

    以前都是被面,现在突然让我去面试别人,有点不适应。五一放假那几天我基本都是在打电话进行面试,之所以用电话的形式进行技术面试,也是无奈之举,一来公司不在北京,不方便进行现场面试,二是当时急需开发人员到位,用电话面试比较方便快捷。但电话面试也有很多弊端,不能全方位考察候选人。

    现在.NET 人才比较短缺,整体质量也不是很高,我打了无数个电话,符合要求的寥寥无几,令我非常失望,其实我这边的要求并不高,甚至可以说只要基本编程素养够,工作认真负责就行了。

    招进来的人,有好几个只待了 1 天就走人了。有两个人虽然一直干到现在,但表现并不是让人特别满意,领导打算把这两个人换掉,现在又让我负责招聘。我吸取了上次的教训,在电话面试外,又加了一个环节,就是让候选人用邮件把自己写过的觉得满意的代码片段发给我,具体说就是发 C#写的类,我只是想知道候选人基本的写类的能力,基本的面向对象思想。并不要求什么高大上的算法数据结构的代码,只是基本的编程功底,封装能力。

    可今天一个人(三年工作经验)发给我的代码让我苦笑不得,他加了我微信,发给我后,微信上问我:“您看我这个代码,成吗”,一时间我思绪万千,不知道说什么。

    即便我要的不是像这种(拿 C 举例子): https://github.com/gozfree/gear-lib/blob/master/gear-lib/libqueue/libqueue.c

    虽然我知道这样的代码干净、清晰、优雅,是我欣赏的代码,但平时普通的程序员只能写写业务代码,并不会接触到上面链接里面这样的代码,但起码的业务类你肯定写过吧。

    最后我不得不感慨,好的.NET 开发太难找了!

    邮件收到的代码完完整整如下(我不明白为什么每行都有注释):

    
    //不加锁的方法
            //public static void GetCOupon(person person)
            //{
            //    Console.WriteLine($"date:{DateTime.Now},name:{person.name},前来领取优惠券");
            //    if (person.isgetcoupon)
            //    {
            //        //假装业务处理
            //        Thread.Sleep(1000);
            //        Console.WriteLine($"date:{DateTime.Now},name:{person.name},已经领取,不可以重复领取");
            //    }
            //    else {
            //        Thread.Sleep(1000);
            //        person.isgetcoupon = true;
            //        Console.WriteLine($"date:{DateTime.Now},name:{person.name},领取成功");
            //    }
            //}
            //private static readonly object lockobj = new object();
            ////加 lock 锁的方法
            //public static void lockGetCOupon(person person)
            //{
              
            //    lock (lockobj)
            //    {  Console.WriteLine($"date:{DateTime.Now},name:{person.name},前来领取优惠券");
            //        if (person.isgetcoupon)
            //        {
            //            //假装业务处理
            //            Thread.Sleep(1000);
            //            Console.WriteLine($"date:{DateTime.Now},name:{person.name},已经领取,不可以重复领取");
            //        }
            //        else
            //        {
            //            Thread.Sleep(1000);
            //            person.isgetcoupon = true;
            //            Console.WriteLine($"date:{DateTime.Now},name:{person.name},领取成功");
                 
                     
            //        }
            //    }
            //}
            ////加 mutex 锁
            //public static void mutexgetoupon(person perss){
            //    Console.WriteLine($"date:{DateTime.Now},name:{perss.name},前来领取优惠券");
            //    using (var mutex=new Mutex(false,perss.id.ToString()))
            //    {
            //        try
            //        {
            //          if(mutex.WaitOne(-1,false))
            //            {
            //                if(perss.isgetcoupon)
            //                {
    
            //                    Thread.Sleep(1000);
            //                    Console.WriteLine($"date:{DateTime.Now},name:{perss.name},已经领取,不可以重复领取");
            // }
            //                else
            //                {
    
            //                    //假装业务处理
            //                    Thread.Sleep(1000);
            //                    //领取
            //                    perss.isgetcoupon = true;
            //                    Console.WriteLine("date:{0:yyyy-MM-dd HH:mm:ss},name:{1},领取成功", DateTime.Now, perss.name);
            //                }
            //            }
            //        }
            //        catch (Exception)
            //        {
    
            //            throw;
            //        }
            //        finally { mutex.ReleaseMutex(); }
            //    }
    
            //}
            
    
    62 条回复    2019-10-10 16:30:21 +08:00
    useben
        1
    useben  
       2019-08-14 21:48:31 +08:00
    照这样写,适合去按代码行数评绩效的。。。
    947211232
        2
    947211232  
       2019-08-14 21:49:15 +08:00
    我,我,我 php 的
    3gs
        3
    3gs  
       2019-08-14 22:02:45 +08:00   ❤️ 14
    这哥们可能网上随便找了一段
    https://www.cnblogs.com/bookobe/p/11229021.html
    一毛一样。。
    Iamnotfish
        4
    Iamnotfish  
       2019-08-14 22:03:51 +08:00
    可能是 CTRL C 程序员吧
    gowk
        5
    gowk  
    OP
       2019-08-14 22:11:01 +08:00 via Android
    @3gs 我去去去……我真佛了
    947211232
        6
    947211232  
       2019-08-14 22:17:01 +08:00
    会不会是本人?园龄 3 年 9 个月的
    xiangyuecn
        7
    xiangyuecn  
       2019-08-14 22:35:26 +08:00
    自己的写成这个样子的( Email DKIM 签名和验证):
    https://github.com/xiangyuecn/DKIM-Smtp-csharp/blob/master/EMail_DKIM.cs

    最后自己都看不懂。。。您看我这个代码,成吗 😎
    gowk
        8
    gowk  
    OP
       2019-08-14 23:12:21 +08:00 via Android
    @xiangyuecn 我看成😂
    dongdongdong
        9
    dongdongdong  
       2019-08-14 23:18:10 +08:00 via iPhone
    还行
    zbyyx
        10
    zbyyx  
       2019-08-14 23:25:17 +08:00
    你要求一般就从 985 刚毕业的,课程里面教过.net 随便找点啦。
    你要会修航母的却拉去修自行车,稍微有点脑子的都会跑路。
    Humorce
        11
    Humorce  
       2019-08-14 23:47:58 +08:00 via iPhone
    有个帖子 dotNET 没工开
    rbe
        12
    rbe  
       2019-08-14 23:51:12 +08:00
    天呐,Thread.Sleep(1000); 认真的吗,不是段子吗?
    1OF7G
        13
    1OF7G  
       2019-08-15 00:02:27 +08:00
    @rbe 这个是个 Mock 吧,只是在做题而已?
    rbe
        14
    rbe  
       2019-08-15 00:15:51 +08:00
    @1OF7G #13 噢不好意思,没有仔细看那篇文章,原来是 mock 业务,sorry
    lbfeng
        15
    lbfeng  
       2019-08-15 00:19:00 +08:00   ❤️ 2
    正常操作不是你出个小 project,让面试的人 24 小时内完成吗?
    fvckDaybyte2
        16
    fvckDaybyte2  
       2019-08-15 00:47:34 +08:00 via iPhone
    就算笔试也有人拿手机作弊的,何况自由发挥……
    my3157
        17
    my3157  
       2019-08-15 02:17:11 +08:00
    做过几年 .NET , 当初那帮做 .NET 的现在基本上都转了, 转 JAVA 的, 转前端的, 还继续坚守的寥寥无几, 14-15 年那会, .NET 确实不好过, 这两年看到过很多招 .NET 的, 要求不高但是工资给的还不低, 也有朋友让帮忙推荐, 正如楼主所说, 现在招一个好的 .NET 真心不容易, 不光是钱的问题, 人太少了
    tamlok
        18
    tamlok  
       2019-08-15 08:08:35 +08:00 via Android
    电话面试,电脑上白板写代码,大家都能马上看到。除了算法题,还可以叫他写一个类什么的,简单模拟一下业务场景。
    tamlok
        19
    tamlok  
       2019-08-15 08:11:19 +08:00 via Android   ❤️ 1
    时间紧的话,也可以你写好框架,然后叫他填充,然后就可以考察他的逻辑代码能力和代码风格了。
    switch100
        20
    switch100  
       2019-08-15 08:12:38 +08:00 via iPhone
    驻场。。这是重点
    duan602728596
        21
    duan602728596  
       2019-08-15 08:21:34 +08:00 via iPhone
    直接 github 地址给你不就好了
    ragnaroks
        22
    ragnaroks  
       2019-08-15 08:33:06 +08:00
    遇事不决先加锁?
    mosfet
        23
    mosfet  
       2019-08-15 08:44:10 +08:00
    好的.net 早就见机不妙各种转了
    vance
        24
    vance  
       2019-08-15 08:45:02 +08:00
    说实话,发代码的方式没几个人愿意会嫌麻烦,除非招聘公司真的不错
    likaka
        25
    likaka  
       2019-08-15 08:50:19 +08:00   ❤️ 1
    驻场能招到人就不错了,还挑?
    NerverLibis
        26
    NerverLibis  
       2019-08-15 08:50:56 +08:00 via iPhone
    net 培训出来的小年轻 和四十多的老油条比较多
    dothis
        27
    dothis  
       2019-08-15 08:51:27 +08:00   ❤️ 2
    楼上说得对、驻场是关键
    优秀的人选公司、虽然我不够优秀、但是我一听到驻场就..../手动狗头
    gowk
        28
    gowk  
    OP
       2019-08-15 08:52:44 +08:00
    @tamlok 提议不错,感谢!
    gowk
        29
    gowk  
    OP
       2019-08-15 08:54:30 +08:00
    @NerverLibis
    hhh 你说的太对了,深有感触。。
    jimrok
        30
    jimrok  
       2019-08-15 09:17:36 +08:00
    既然换人,那就不能找的比原来的还差,你可以出一个一周内完成的题目,让他们把代码放在 github 上给你看。如果觉得可以,再加微信。
    blackmirror
        31
    blackmirror  
       2019-08-15 09:31:22 +08:00   ❤️ 4
    外包驻点这种肯定没人去,做完这项目不就被开了,这种的项目只能招到这水平的
    tgaqep
        32
    tgaqep  
       2019-08-15 09:50:48 +08:00
    这是没有满足面向对象的东西吧,感觉我这里也是这水平,小公司也很少用到面向对象,设计模式这些,所以,2 年 net 准备转 java 中。
    zsc8917zsc
        33
    zsc8917zsc  
       2019-08-15 10:05:35 +08:00
    没太看出来代码有什么问题- -楼主可否点评一下,学习学习
    yhxx
        34
    yhxx  
       2019-08-15 10:05:51 +08:00
    // 假装业务处理
    // Thread.Sleep(1000);


    这真的不是段子吗
    tamlok
        35
    tamlok  
       2019-08-15 10:16:46 +08:00 via Android   ❤️ 1
    @zsc8917zsc 首先注释比代码还多,过犹不及
    lagoon
        36
    lagoon  
       2019-08-15 10:21:10 +08:00
    "让候选人用邮件把自己写过的觉得满意的代码片段",惭愧,我真的没有。
    pierswu
        37
    pierswu  
       2019-08-15 10:25:19 +08:00
    假装四处看风景
    Thread.Sleep(4000);
    gowk
        38
    gowk  
    OP
       2019-08-15 10:27:15 +08:00   ❤️ 1
    @lagoon
    所以我觉得可能需要换种方式,楼上 V 友的建议真的不错,我可能改用这种方式:
    “还可以叫他写一个类什么的,简单模拟一下业务场景。”
    “也可以你写好框架,然后叫他填充,然后就可以考察他的逻辑代码能力和代码风格了”
    tgaqep
        39
    tgaqep  
       2019-08-15 10:27:25 +08:00
    注释不多吧(//假装业务处理,另外每个方法一行注释),代码不紧凑倒是真的
    l00t
        40
    l00t  
       2019-08-15 10:30:46 +08:00   ❤️ 1
    代码在哪里,全都是注释,没有代码啊……
    kxxoling
        41
    kxxoling  
       2019-08-15 10:33:13 +08:00
    有可能是培训班刚出来的,电话里多问几句项目细节。
    KunMinX
        42
    KunMinX  
       2019-08-15 10:40:12 +08:00
    我要是出去面试的话,就算面试官不要求,我也会逼着面试官先到 GitHub 看我代码。

    代码都看不懂、懒得看、不屑看的,这种不做事、不着调的人,谁敢在这样人身上耽误时间 😂
    leafShimple
        43
    leafShimple  
       2019-08-15 10:46:44 +08:00
    哈哈 我满意的代码片段永远是今天的和明天的那一段,老代码不合理的我看见了就改
    PerpetualHeng
        44
    PerpetualHeng  
       2019-08-15 11:03:03 +08:00
    这代码,从网上下的给你,我估计这家伙 0 开发经验?自学找工作的?
    jinboker
        45
    jinboker  
       2019-08-15 11:19:59 +08:00   ❤️ 1
    @jimrok
    这种除非是对方非常非常想进去,否则花一个星期去写面试题目,万一不要,这一个星期不白瞎了
    但说实话,驻场开发。。。真不觉得有多少人会非常非常想去
    gowk
        46
    gowk  
    OP
       2019-08-15 11:23:35 +08:00
    自学、培训、学历。。都无所谓,只要能写代码就成。就像楼上某些朋友说的,某些类型的项目就只能找到对应水平的开发人员。

    我只是想找个稍微靠谱一点的,不能随便招个人过来吧,起码代码不能写的一塌糊涂吧
    jinboker
        47
    jinboker  
       2019-08-15 11:23:43 +08:00   ❤️ 1
    @zsc8917zsc

    里面有三段代码的逻辑基本上是相同的,文字都一样,一看就是 c v 的,去面试还这么搞真不合适
    raysonlu
        48
    raysonlu  
       2019-08-15 11:35:24 +08:00
    不如让公司换个技术栈?
    switch100
        49
    switch100  
       2019-08-15 12:37:30 +08:00 via iPhone
    到客户现场外派驻场,你不仅要考虑他技术水平,还要避免他产生皇协军,低人一等的感觉。比如固定工位,水电提供,专注技术,不被客户吊来吊去,出了问题不必一个人死扛。

    如果你这些都做不到,估计也只能找到刚毕业的傻白甜了
    switch100
        50
    switch100  
       2019-08-15 12:41:22 +08:00 via iPhone
    就算技术水平符合要求,你这些条件没有办法提供,不管是谁都工作的很难受,迟早要跑路,一两个月得事情而已
    gowk
        51
    gowk  
    OP
       2019-08-15 13:01:53 +08:00
    @switch100 团队里面现在就有一个刚毕业的,各方面表现都可以,值得培养。

    做程序员基本的职业素养有,基本的编程功底有,别的都可以培养。目前虽然招的是外包,但如果表现好,有机会转到我们单位的正式职工(我们单位是国企)

    但现在的问题是候选人质量参差不齐,要一个个筛选的话,耗时耗力,招过来的还不一定真的行

    我现在也在考虑把项目转成 Java 的可能性,这样公司内部的很多资源就可以利用了,我就不用苦逼的招人了
    passerbytiny
        52
    passerbytiny  
       2019-08-15 13:33:19 +08:00
    当开始做笔记的时候,留存的肯定是经过整理的笔记而不是整篇或部分代码,要想发源代码,除非是从做过的旧项目中截取一段,而这些是并不是个人资产。你这发代码的要求,就是难为人的。
    nnnToTnnn
        53
    nnnToTnnn  
       2019-08-15 13:38:46 +08:00
    @gowk 直接一句话就 OK 了,有 github 的地址吗? 基本上就可以看出来他的编码水平
    nnnToTnnn
        54
    nnnToTnnn  
       2019-08-15 13:49:18 +08:00
    @gowk 你特么又在骗萌新,进国企,这些是硬性要求

    1. 至少本科以上(不包含本科学历,除非是当前特别需要人才,可考虑本科)
    2. 211 和 985 重点学校
    3. 外包公司中部分比较优秀的员工(条件可以降低到本科)

    虽然长期合同共也算在国企工作,但是不属于单位里面的。

    区别是将所有的福利待遇转换为钱,全部打给你,比如国庆员工每个月都有餐补等等这些都可以打到工资里面去,社保等等是按照国企员工进行缴纳。


    长期合同工 <> 国企员工 && 外包员工 <> 长期合同工


    外包员工 < 长期合同工 < 国企员工

    就算你们愿意,但是由于 1,2,3 条件不满足,人事定级别也会定的很低,工资会差很多
    nnnToTnnn
        55
    nnnToTnnn  
       2019-08-15 13:50:47 +08:00
    @nnnToTnnn 国企招聘这一块学历卡的非常严格,小标准就是你的个人能力,大的标准就是学历
    yafeilee
        56
    yafeilee  
       2019-08-15 18:29:27 +08:00
    @gowk 我这边有个产品估计能帮到你解决问题,小程序里搜 "技术达人" 加我。
    switch100
        57
    switch100  
       2019-08-15 19:06:23 +08:00 via iPhone
    @gowk 什么优秀就可转正,都是忽悠外包员工的,让他们以为前途光明,却一次次的被使劲忽悠。

    大部分外派的命运,都是工作的时候被客户羞辱,到项目结束就让人家滚蛋了。我提出的那几个基本点,你都不敢承诺,那肯定就很难找人了,更何况是冷门市场的语言

    你说公司是国企,那最多也就是有编制也没编制的问题。可是你又说是外派到客户公司,那这个岗位说到底就是外派岗位,跟编制什么的没关系。

    你不肯给新人承诺固定工位,水电提供,门禁卡自由,那也别指望新人能在你这里待多久。除非钱够,再心累委屈也无悔,否则大部分都是用脚投票
    switch100
        58
    switch100  
       2019-08-15 19:10:25 +08:00 via iPhone   ❤️ 1
    @gowk 我面试过别人,也被别人面试。我知道辨别一个人的水平,大程度取决于面试官的水平。
    如果自己的水平不过关,问的细节没有难度和深度,你跟面试者的沟通就不会在一个频道上,从而让你难以发现优秀人员。
    而这些,完全口头交流就能了解对方,你却要别人花费时间精力做无意义的题目,这是应试教育填满分就可以入职?不要开玩笑了,大家的时间都很宝贵,不要浪费彼此时间
    fxy739371
        59
    fxy739371  
       2019-08-15 19:18:07 +08:00 via iPhone   ❤️ 1
    一个外包装什么装,求我还不去呢
    129ykx733D016U2n
        60
    129ykx733D016U2n  
       2019-08-16 00:22:03 +08:00
    还需要看代码吗?交流一下技术方面的问题,基本上就能了解能不能胜任工作吧
    ice2neet
        61
    ice2neet  
       2019-08-16 09:59:37 +08:00
    驻场外包 还是.net 项目 人本来就没多少 要求多的话 基本上找不到了
    visionEV
        62
    visionEV  
       2019-10-10 16:30:21 +08:00
    java 程序员离狗不远了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2586 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:24 · PVG 15:24 · LAX 23:24 · JFK 02:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.