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

2019-08-14 21:43:51 +08:00
 gowk

今年 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(); }
        //    }

        //}
        
9499 次点击
所在节点    程序员
62 条回复
useben
2019-08-14 21:48:31 +08:00
照这样写,适合去按代码行数评绩效的。。。
947211232
2019-08-14 21:49:15 +08:00
我,我,我 php 的
3gs
2019-08-14 22:02:45 +08:00
这哥们可能网上随便找了一段
https://www.cnblogs.com/bookobe/p/11229021.html
一毛一样。。
Iamnotfish
2019-08-14 22:03:51 +08:00
可能是 CTRL C 程序员吧
gowk
2019-08-14 22:11:01 +08:00
@3gs 我去去去……我真佛了
947211232
2019-08-14 22:17:01 +08:00
会不会是本人?园龄 3 年 9 个月的
xiangyuecn
2019-08-14 22:35:26 +08:00
自己的写成这个样子的( Email DKIM 签名和验证):
https://github.com/xiangyuecn/DKIM-Smtp-csharp/blob/master/EMail_DKIM.cs

最后自己都看不懂。。。您看我这个代码,成吗 😎
gowk
2019-08-14 23:12:21 +08:00
@xiangyuecn 我看成😂
dongdongdong
2019-08-14 23:18:10 +08:00
还行
zbyyx
2019-08-14 23:25:17 +08:00
你要求一般就从 985 刚毕业的,课程里面教过.net 随便找点啦。
你要会修航母的却拉去修自行车,稍微有点脑子的都会跑路。
Humorce
2019-08-14 23:47:58 +08:00
有个帖子 dotNET 没工开
rbe
2019-08-14 23:51:12 +08:00
天呐,Thread.Sleep(1000); 认真的吗,不是段子吗?
1OF7G
2019-08-15 00:02:27 +08:00
@rbe 这个是个 Mock 吧,只是在做题而已?
rbe
2019-08-15 00:15:51 +08:00
@1OF7G #13 噢不好意思,没有仔细看那篇文章,原来是 mock 业务,sorry
lbfeng
2019-08-15 00:19:00 +08:00
正常操作不是你出个小 project,让面试的人 24 小时内完成吗?
fvckDaybyte2
2019-08-15 00:47:34 +08:00
就算笔试也有人拿手机作弊的,何况自由发挥……
my3157
2019-08-15 02:17:11 +08:00
做过几年 .NET , 当初那帮做 .NET 的现在基本上都转了, 转 JAVA 的, 转前端的, 还继续坚守的寥寥无几, 14-15 年那会, .NET 确实不好过, 这两年看到过很多招 .NET 的, 要求不高但是工资给的还不低, 也有朋友让帮忙推荐, 正如楼主所说, 现在招一个好的 .NET 真心不容易, 不光是钱的问题, 人太少了
tamlok
2019-08-15 08:08:35 +08:00
电话面试,电脑上白板写代码,大家都能马上看到。除了算法题,还可以叫他写一个类什么的,简单模拟一下业务场景。
tamlok
2019-08-15 08:11:19 +08:00
时间紧的话,也可以你写好框架,然后叫他填充,然后就可以考察他的逻辑代码能力和代码风格了。
switch100
2019-08-15 08:12:38 +08:00
驻场。。这是重点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/591950

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX