程序员面试被要求手写代码,手写代码真的行的通吗?
我有个程序员朋友,在深圳工作。他曾经帮公司面试过一些工程师,也要求现场手写代码。有一次,在一个招聘会上,公司有个职位是嵌入式软件工程师,有一些看着还不错的应届生投了简历,为了做一轮刷选,我那朋友就让他们现场写一段代码,实现流水灯功能。
如果是做过单片机相关的开发和调试,一定会写得出来,因为这是单片机入门的第一个基础实验。而我那朋友,考查的并不是他们书写的语法或格式,而是他们解决问题的思路,只要代码中体现了左移或者右移的算法,就可以通过。
结果有些出乎意料,只有少数几个应届生写得出来,所以就只允许他们进一步去公司面试。
你看,用不着大张旗鼓的给面试题,只需要手写个简单的代码,就刷下了一部分人。
所以,你的问题中,程序员面试被要求手写代码,真的行的通吗?
其实,这不仅行得通,而且还是大部分公司面试程序员时常用的一个方法。理由如下:
一、面试官考查的并不是你的语法,而是你的思路
就像我的朋友一样,让求职者手写代码,真不是刁难他们,而是为了甄别更优秀的求职者。在这种情况下,面试官往往会忽略手写代码的语法等错误,只要思路、所用的关键函数正确,基本就算是通过了。
而一行代码都写不出的人,肯定是没有“手感”,这种手感,指的是经常调试软件培养的那种思维保持能力,一旦你没有接触过相关知识点,那么你肯定无从下手。
有人会问,那上机测试来考查不行么?
这也可以,但一旦上机测试,就不会是这么简单的题目了,而且往往花费更多的时间;再说,上机测试,就会提出更高的要求,比如说不能有语法错误,要实现正确结果等,就不是面试官想要考查的重点了;最后,上机测试可以“作弊”,这种作弊,指的是他可以多测试几次来验证,然后反向推导出正确的步骤,这明显违背了面试官的初衷。
所以,手写代码是最快、最好的方式之一。
二、手写代码,最能体现一个人的能力
如果一个求职者能当场写出代码,并得到正确的结果,那么,他对代码、算法的临场应变能力还是很强的,在平时工作中,效率也是有保障的。
很多人对程序员有误区,认为他们写代码的时候,就应该像影视剧中的黑客一样,噼里啪啦敲一阵键盘,显示屏不断的滚动刷新黑底白字的英文,就能迅速得到想要的结果。
现实是,很多程序员写代码时,需要通过百度搜索等手段查阅很多资料,有些代码甚至是复制粘贴得来的,调试看起来远没有那么酷。
在这种情况下,一个人能在电脑上写出代码,并不一定能手写出来;反之,能手写出思路、步骤、关键算法等部分的程序员,在电脑上写代码也一定如鱼得水。
所以,手写代码,更能体现一个人在没有外界或电脑的帮助下,自己获取结果的能力。而这个能力,是面试官更看重的。
三、如果被要求现场手写代码,该如何应对?
如果面试官要求你手写代码,该如何应对呢?可以参考以下方法:
1)写清实现思路、主要函数及关键节点
就像上面说的一样,面试官考查的并不是结果,而是你实现方法的思路,所以不要纠结于结果,而是把重点放在实现过程,把过程厘清,更能体现自己的能力。
2)写清算法步骤
一段代码的灵魂,本质上就是它的算法。如果你的算法得当,哪怕你写错语法,都没有关系。但是如果你的算法不合理,即使你字写得再好、语法再没错误,也入不了面试官的法眼。
3)多比较几种实现方法的优劣
有时候,面试官想考查你是否会多种方法来解决同一个问题。在这种情况下,你可以尝试写下几种不同的实现方法,然后给出他们之间的优劣,这更能赢得面试官的青睐。
总之,手写代码不像很多人想像中的那么复杂,相反,它反而能简化面试流程,节省大家的时间。作为求职者,你需要在意的,也不是它的结果和语法,而是实现过程和方法,只要把握住以上说的几点,基本上都能通过。
这就是我的看法和建议,希望对你有帮助。
欢迎关注@焱公子,十年500强,专注写职场,每天与你分享职场干货与成长心得。
谢谢邀请!
程序员在面试过程中被要求通过手写代码来完成一个逻辑的实现是比较常见的做法,不同级别的程序员会面临不同的要求,比如研发级程序员通常要面临算法的设计和实现过程,而应用级程序员则需要面临功能模块的实现。为了减轻面试者的面试压力,在手写代码的过程中是可以写“伪代码”的,尤其是关于算法设计和实现的过程,主要考察的是面试者的设计能力和设计思路。
通常来说,在面试程序员的过程中,有两种情况可能会面临手写代码的考察,一种是面试初级程序员开发岗位,另一种是面试研发级程序员岗位。面试其他岗位的程序员,通常会把关注的重点放在项目经验和知识结构上,考察手写代码的情况并不常见,意义也并不大。
面试初级程序员时,通过手写代码的考察,能够直观的呈现出面试者对于编程语言的熟练程度,同时也能通过代码结构考察面试者对于代码的管理能力和是否有一个良好的编程习惯。通常情况下,面试中对于初级程序员的手写代码要求并不会很复杂,通常只是完成一个小功能的实现,比如根据已知数据结构完成业务逻辑数据的管理等等。
面试研发级程序员时,通过手写代码能够考察出程序员是否掌握专业的设计能力,最常见的就是通过算法的设计和实现来解决某个具体的问题,比如最常见的分类问题等。比如面试大数据分析方向的研发级程序员时,通常会给出基于机器学习方面的题目。比较常见的做法是给出一个数据分析场景,然后面试者完成算法的设计(选择)和实现过程,从而考察面试者的研发能力。
对于程序员来说,通过手写代码的过程能比较直观的呈现出自己的动手能力和对编程语言及算法的熟练程度,是一个全面呈现个人能力的好机会。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网方面的问题,也可以咨询我,谢谢!
谢谢邀请,
在软件行业混了十几年,参加过很多技术面试,作为面试官也面试了很多面试者,正常的来讲技术类的面试主要分为三种,笔试,面试,上机写代码。现在就这几种面试的方式根据从业的经验做一些总结。
笔试
笔试主要针对应届生,当然一些规模大的企业面试的流程比较繁琐,一般第一关都是先让做笔试,笔试的题目一般比较简单,大部分针对刚毕业的学生看看基本的理论能够了解多少,这种笔试的模式倒是难倒了很多人,很多程序员因为做一个专业方向做的时间比较长了,很多相关的编程知识已经忘记的差不多了,所以见到这种笔试直接放弃,也不能这部分人不能从事软件开发,起码不能作为优秀程序员的标准对待,所以在平时编程过程中要注重基本功的复习,毕竟基础理论知识是一个程序员的必备基本功。
曾经参加过一个面试,有一个一块去的老程序员,看到还有笔试直接放弃,选择直接走人了,然后面试接待人员问为啥不去答题,这位直接回答到,年龄大了对这些基础已经忘的差不多了,所以选择不做了,说完就离开了面试公司。在现实中很多程序员离开百度就不会自己写代码了,大部分的时间从网上搜上一段代码修改成自己能用的代码模块,离开了网络很多人就不会写代码了。
面试
很多软件公司基本上直接不用笔试,很多人觉得直接聊上几句话就能识别出一个人能力,答案是肯定的,面试主要从两个聊入手,一个编程基础细节,一个是项目经验细节,因为编程细节太多,所以基本上几个细节下来一个人的水平能力如何就能非常清晰的识别出来,所以有些公司干脆笔试都不用了,起码一半的公司直接通过面试就能搞定。
很多刚入行的程序员会背诵一些常见的面试理论和面试题目,这种应付笔试还是有点用,但在面试天马行空的问题中,这种准备几乎就是徒劳的。偶然碰上几个问题,但大部分来讲需要有真材实料。
手写代码也是面试中发生的,有的时候问到一个问题的时候,为了表达更加准确,直接用代码在纸上写出来,这种情况在面试中也是很常见的事情。
上机写代码
谷歌招聘技术人员都会直接采用这种模式,这种方式直接就能看出代码的直接编写能力,可以非常直观的看到代码质量以及编写代码的一些习惯,这种方式在国内很多技术公司也在采用,主要这种方式在实际操作过程中,相比前两种操作难度更大一些。虽然只看代码能力有点偏,但可以结合面试这样就能从总体上考察出一个人的综合能力,能够获取更加客观的评价。
在行业内也发生这种事情,发现公司有上机写代码的测试,直接选择放弃,这也是一类的程序员的典型,代码都不是发自内心的写的,大多都是从网上直接摘录修改的,真要直接在电脑上敲代码什么思路也没有,典型的基本功不过硬的表现。
作为一个面试人员,只要去面试就要遵守面试公司的规则,即使真的写不出来,也没有必要当面拒绝,发现自己的缺点后续努力去修补,坦然面对自己的不足,不是什么丢人的事情。
希望能帮到你。
回答这个问题之前,我先讲讲自己学习编程的经历:
02年刚上大学,那时候因为家庭条件的原因无法拥有一台电脑,所以上大学之后才有机会学习和使用电脑;那时候还叫“微机房”,我们计算机专业有专门的“上机课”。
大一的时候就有C语言课程,刚接触编程的我对其很感兴趣,每天下课去机房敲代码?别闹了,那时候上机一小时好几块钱呢,而且机房的机器简直是“一机难求”(很多同学打游戏和上网),所以那时候我都是先在本子上把代码写下来,等有机会上机的时候,再一个字母一个字母地敲到电脑里面,运行调试。
等成功了之后,把代码保存到软盘上(那时候一张软盘五块钱,可以存1.44M的东西)。
说到面试的时候手写代码,我认为是行得通的;我们现在面试的时候,也是要求手写代码的;但是手写代码到什么程度,我觉得这个是可以商榷的。
手写出来的代码必须很精确,精确到输入到电脑里面,不需要调试就可以正确运行?我觉得完全没有这个必要。
能大概把功能实现,写出解决问题的思路,我觉得就可以了;要是能写出来整个程序分几个方法,讲清楚每个方法的功能,如何调用组合就更好了;如果能用恰到好处的用到一些设计模式,那更棒棒哒。
有时候,只要是有方案和思路,就算是写伪代码也是没有问题的。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
面试中要求手写代码是完全行得通的,尤其是对那些没有任何工作经验,无法用实际项目证明自己编程能力的人群,采取看代码能力行不行,直接拉出来溜溜。
比如,应届毕业生,非常有必要在面试中设置笔试,考察编码能力,手写或者上机都可以,不同测试环境,灵活选择。
以往,在招聘软件开发毕业生的时候,会安排专业笔试,包括考察代码,目的有两个。其一过滤掉明显不行的,态度和能力都有;其二展现出严谨的考核流程,对程序员不进行编码是非常不严谨的,判断会太主观和武断,不够科学。
近年来,去校园做招聘软件开发的毕业生,很多大厂不做笔试,同学们是非常质疑,觉得不够重视技术。没有怎么面试,就直接录用的,毕业生也不敢去,担心太随意了,含金量不高。
针对代码的问题,华为公司也改革了面试流程,目的还是科学选人,提高企业的口碑和影响力,代表的是行业标杆,有示范左右。
关注@HR那些事儿 供职互联网大厂,用HR视角,为你职场答疑解惑。
手写代码不可取,如果是机试还行
做过编程的人都知道,好的代码都不是一蹴而就的,我们写代码都是边写边改,会持续优化
另外手写代码,谁能记住那么多函数方法呢
手写代码的时候,数据库sql语句我一般都要先写from后面的东西,写完再写前面的select列名。
因为子表sql写完了,才能知道其中列名,才能写select
如果面试官,我希望通过多种手段包括考试来考核,但是如果我是面试者,手写代码就意味着我不会来这家公司,就算我写了,也只是对应聘的尊重而已。
手写代码是验证代码硬实力的手段之一,但是也体现了公司的文化是很封闭的。而我工作的时候是需要网络的,需要工具的,需要调试的,我还需要一个开放的工作环境。你可以说大牛只需要记事本,但是现在用牛耕地的真的不多,再厉害的老牛也比不上机械化的效率,没必要为了体现自己力气大而放弃效率,编程还有很多方面需要做,需求分析、项目整体规划、架构设计等等。
总的来说,我认为面试涉及代码一块的部分可以用“伪代码”说一说就好,能讲好思路和技术点就可以了。
各位好,我是小码农薛尧。
一般企业面试的话,手写代码一般不会写业务逻辑,一般的都会是写一些算法,一些算法他是考虑你个人技术基础是否扎实,所以这个我觉得很合理,但是他如果写的是业务中的某一个功能,我觉得那个是为难你,这个我觉得不提倡。
一般有些人面试的话是问一些手写的代码,基本上它是以算法为基础,基本上问一些排序排序的实现,某个排序冒泡呀,还是快速排序之类的。或者写一些设计模式,按照自己的想法写一些设计模式,这样我觉得是考察一个基本程序员的基础是否扎实,是否了解一些编程基础。
这是自己的个人理解,但是现实中遇到手写代码的次数还是很多的,但是没有具体的业务逻辑,是某一种算法,或者是设计模式。
现场手写应届毕业生肯定很多写不出来了:第一、现场环境及调试环境都可能不适合第二、应届毕业生学习的理论和实践结合的很少,除非在校的时候有老师带着做了些项目第三、大学出来其实大部分都需要后期打磨的,就是有人带或者不断的处理BUG,不断的解决问题才得到提升。试问面试官,贵司现存的程序员,如果回到刚毕业那会,又有几人能写出来。