裸辞程序猿面试一个月经验分享。。。

536 阅读10分钟

时隔将近一个月写下这篇文章,来与jym分享我一些浅薄的面试经验。

我此时是怀着“沉重”的心情写下这篇文章。何谓“沉重”,为何“沉重”,请听我娓娓道来。

要想讲得东西很多,为了尽可能的调理清晰,我想从4大方面来逐一阐述。

  1. 当下的面试环境

  2. 聊聊外包

  3. 一些有趣的面试题

  4. 一些非常重要的面试技巧

当下的面试环境

image.png

我面试的时间处在一个比较尴尬的时间点,既是大环境的互联网的寒冬,又是大环境的金九银十。所以里面到底有没有发生什么化学反应,我其实真的也不清楚,只能以亲身经历来为大家做讲解了。

我的情况

我的基本信息

java开发3年,投递的简历在苏锡常。

面试难的问题

我并没有遇到什么面试难的问题。很多网友都说自己投递了很多简历,很久才获得一个面试机会。在我身上完全没有发生,我的面试除了周六周日,偶尔的周一,基本都排满了,一天至少2面,有时甚至是3面4面。

简单的分析:排除两个大环境的原因。那就是开发年限投递简历地点了。这也是我为什么要介绍自己基本信息的原因。

  1. 最重要的自然是开发的年限,3年时间说长不长说短不短,进去直接能干活,又不是什么管理岗,自然是最吃香的时候,很多公司都缺这种能有经验能直接干活的程序猿。

  2. 其次就是工作地点。苏锡常虽然比不上一线的北上广深杭,但也勉强能挤入二线,算是个好去处。

  3. 其他的一些简历是否精致,又或是自己是否认真在找工作的主观因素反而感觉并没有那么重要了。当然该弄好点的还是要做,找工作态度也要积极。

我的面试情况

差不多24天的面试时间,除去周六周日也就18天左右,再去除掉一些周一甚至是周五也就勉强半个月

我并没有面试互联网大厂中厂,原因是我本人极度厌恶背八股文,尤其是原理级别的东西,我自己用不到的我最多做个大致的了解,在脑中标记索引,方便以后用到的时候学习。但是讲到底还是自己不行,这些其实也都是借口,就是自己懒不喜欢背,也不喜欢刷题刷算法。如果有一天要冲击大厂,这些也都是少不了的。

我大大小小的面试经历了大概40场以上,面了20家以上公司,斩获offer9份。

注:这些面试都是我自己想要面的,其实因为排期原因我甚至推掉了好多。还有一些薪资不满意的,外包的我都是直接pass(面试后期)。offer多也是因为前期我可能要的薪资比较少。如果继续以我之前的薪资谈offer的话可能还会更多(不是吹牛,手动狗头)。

所有的面试基本上都是2-3面(技术+业务),问题也都是简历上的,还有就是面试官认为3年开发需要掌握的一些基本东西。这些就是仁者见仁,智者见智了。

总结

3年的开发在当下环境可以说是非常吃香的,当然3年也是程序猿的一个分水岭。

找工作很好找,但是找好工作很难找。

大环境可能对于我的影响并没有想象的那么多,面试依然很多,面试的情况包括结果都是比较好的,都在自己的预期之内。

聊聊外包

image.png

外包是什么,程序猿都懂。大的外包品牌商如:中软国际、软通动力等大家也都是心知肚明,这里也不再多做赘述。

外包真的不好么

其实不然,好的外包团队依然有很多。遇上了对的人,对的团队,对的项目,那样的外包依然是个好去处。问题就是你怎么知道?是的,你不能把前途赌在这极低的概率之上,光凭面试的几十分钟了解是远远不够的,所以我的建议也是外包能不去就不去

事情都有正反面之分,外包的团队你可以不去,但是外包的面试我觉得你不能放过!在你没有任何面试的时候往往找上你的,给你面试机会的都是外包公司。

我有60%以上的面试都是面的外包公司,有的面试可能只是走个过场学不到什么东西,但总有一些面试你能有大的成长,在这方面我是要非常感谢外包公司的。毕竟面试是门技术,也是需要锻炼的。

一些有趣的面试题

关于技术和业务的面试题我就不多做分享了,意义也不大。

在这里我想分享一个我觉得蛮有意思的面试题:电梯设计问题

面试问题

面试官大致的原话是:java是面向对象的设计语言,电梯是我们天天用到的工具,给你2分钟的时间你能不能根据面向对象的思想来设计一段电梯的逻辑代码。

我的思考

我当时思考了2分钟,我的思考流程大致是这样的:

  1. 对象是谁?应该有哪些必须的属性,他在代码中的角色是什么?

  2. 电梯上下的逻辑其实都知道,但是应该怎么去写代码?

简单来说就是设计问题+逻辑问题

当时我的脑子里面说实话很乱,一直纠结于逻辑问题。但是我一想就这么点时间还搞什么逻辑,别人考察你的应该还是设计问题。所以我就释怀了。

我的粗糙回答

image.png

我当时的回答是:我把电梯设计成一个对象,它拥有的属性大致是运行状态(运行中、停止)线程可见(volitle关键词)、最大层数、最小层数、当前运行方向(上下)、点亮电梯层数的集合(copyOnWriteList<Button> Button属性就是当前层数和上下的状态)。然后电梯的角色其实就是一个全局变量,有两个方法来操作这个变量,一个方法就是用户按按钮的方法,会往list中加入数据修改电梯的运行状态(记住加锁或者同步代码块),还有一个方法就是电梯的运行方法,循环中判断电梯的状态,执行电梯上下运行的相关逻辑,至于逻辑大致怎样我又和他吹了一会,这里就不多做赘述了。因为讲得真的不怎么样,但是设计方面我觉得还可以了。jym如果有什么好的设计可以评论区一起探讨一下。

为什么问这个问题

image.png

面完这个问题,我当时就问了面试官为什么会出这个问题,他说是想看看候选者的设计能力以及临场应对能力,他希望候选者有一定的设计能力而不是单纯的写代码。

一些非常重要的面试技巧

合理规划自己的面试时间

image.png

一周虽然说有7天,但是真实的面试时间可以说只有4-5天。黄金时间段其实就是周二周三周四。如果面试机会多的话,如何合理的安排面试时间就显得非常重要。具体如何还是要视个人的情况而定。

面试的一些通常流程

  1. 简单的自我介绍

  2. 工作经历介绍

  3. 结合最近的项目问相关技术,也就是技术+项目面,可能会有1-3面

  4. hr面谈谈薪资,离职原因等问题

  5. 发offer

好好准备自己的自我介绍以及项目相关问题,对于3年的开发来说,简单的八股文基本很少面了,面试官大都是按照简历去问你相关的项目,通过项目再去问技术,如果做过其实不需要太过担心,好好理清思路。简单的八股文该背就背。好好美化一下自己的离职原因。因为不是面大厂,所以一般不需要搞什么算法或者太难的八股文。

面试的态度

很多人面试的时候还是会非常紧张,放不开,有些能够回答的好的问题反而会发生失误。我的建议首先就是摆正心态,面试官和你可能差的并不多甚至不如你,没有必要紧张,都是互相考验,互相选择的过程而已,先在心态战胜自己。如果实在不行的话,那我的建议就是疯狂面试,疯狂锻炼。面试本来就是需要不断学习和锻炼的,几轮或者几十轮下来你必然不会再有之前紧张与不安。当然也不要为之前的面试而患得患失,过去了就过去,好好复盘准备接下来的面试。当然你也可以选择一些外包或者不满意薪资的面试练手,待时机成熟再去投心仪的公司。

面试做好录音

这其实就不用多说了,录音就是单纯的为自己做更好的复盘而已。有些问题面试官问得很有水平,可能自己都没有思考过,或者面试官会问一些非常有意思的场景题亦或者是设计题,这些都是值得反复回味的。面试的过程也就是你准备面试的过程。

面试结束后你应该问什么问题

面试结束后,面试官问你有什么想问的时候,这也是非常关键的一环。如果只是第一面的话可能自己只会问一些常见的问题:如现在团队的项目是什么?技术栈是什么?但是如果可以的话我觉得能问多少就问多少,千万别不好意思,例如团队成员架构,前端、后端、运维、测试、架构师、项目经理、产品经理有多少人?团队成员资质如何,3-5年开发有几个,5年以上的资深开发有几个,实习开发有几个?我进团队之后担任的角色是什么,如果自己有职业规划的话,是否能够满足自己的职业规划发展等等,其实都是必须要深入了解的。如果一面面试官无法回答,那就等到二面再去问,但是切记一定要问!

我就是因为没有好好对这些问题提问导致我自己面临offer两难选择的境地。甚至还要和他们的人事沟通能不能抽时间补面一场,让我深入了解一下团队成员状况等。这其实是非常不妥的,但是事到如今可能也没有办法了,这也是我此时心情为何如此“沉重”的原因。

非常感谢能看到这里的jym,如果你们有什么其他见解和经验也希望你们能够留言,共同探讨!

同时也预祝现在辞职中的程序猿们都找到一份自己满意的工作。

image.png