又到校招季,来说说面试和实习

来自:大飞码字,作者:大飞码字


又到校招季节,有的同学开始准备秋季的校招面试;也有的同学已经拿到了实习的offer , 在公司里面实习。


这段时间收到不少同学关于面试和实习的问题,后来想想,干脆写篇文章吧,把大家关心的问题写得详细些。



面试



很多应届毕业生来咨询面试的问题,大部分是问面试需要怎么准备的问题。


关于这个问题,其实没有统一的标准答案,不同公司不同岗位可能都不一样,这里我分享些我的经验和心得吧。


一般会重点考察的点:


1. 算法题目 。这里主要看题目有没有做对,代码写的好不好。考察的是编码能力和算法思维。


2. 计算机基础知识。不同岗位会有差异。

通用的:操作系统,网络。

语言方向相关的:数据库,各语言的虚拟机,浏览器机制,Android 系统的一些机制等。


3. 语言相关。例如 C++ , Java, Javascript , 一些语言知识点,一些常用框架等。


4. 项目经验。根据面试者的实际情况,考察项目经验。


5. 思维能力,沟通表达能力等。


以上是一般的考察点。


总的来看,有两个方面。一个是基础能力或者说潜力;一个是实际项目经验。如果两个都没有,就会比较难了。如果只是会背一些概念,那是没什么用的。


大公司或者比较注重长期发展的公司,会更看重基础能力(潜力);人力吃紧的公司会更看重实际的项目经验,因为他们希望能够进来就干活,没有太多的时间和资源去培养新人。


对于应届生而言,要做的就是去审视自己这两部分的能力。如果你两部分都没有,那就会比较难找工作了。如果两部分都很不错,那可以去挑战下大厂的offer。


具体准备的话,要根据时间来定。


如果你目前才大三,有一年多的时间,我觉得你可以根据自己的特长和喜好来准备。


如果喜欢刷题,可以把重心放在刷题上,如果有机会去参加一些 ACM 的比赛,能拿到名次,那最好不过。


如果不喜欢刷题,喜欢折腾各种项目的,多做些项目也是不错。但建议不要一直停留在只会做一个管理系统的水平上。很多同学老跟我抱怨,进了公司,一直在做增删改查的工作,但如果你一直只会增删改查,那也只能做增删改查的工作了。


如果时间不充分,比如只有两个月了,那就只能抱抱佛脚了。去网上找对应公司,对应岗位的面试题库吧,理解也好,背也好,反正好过没有。


另外就是继续刷题, leetcode , 牛客网都可以。刷 leetcode 要尽量刷到中等难度的水平,这个难度的题目要能在半小时内解出来,基本算法部分就不是问题了。


以我的经验,毕业生的题目大部分做的比社招好,可能是因为有更多的时间刷题吧,所以毕业生同学不要来抱怨算法题难做,你们是有优势的。


时间不够,项目经验其实是积累不来的,真的要,也只能整个管理系统充充数了,好过没有。当然有时间的同学,还是要用心做做项目的。



实习



有的同学幸运地拿到了公司的实习 offer ,接下来,我就说说实习的情况。


关于实习的三个问题:


第一,要不要去实习。


不要先问要不要,要先问能不能,当拿到一些公司的实习 offer 后再考虑吧,很多同学 offer 都没有,问这个不是空谈嘛。


另外,实习 offer 不是那么容易拿到的,特别是一些好公司的实习offer ,能拿到估计你也不会来问这个问题了。


第二,关于实习的幻想。


我发现有不少同学对实习有种美好的误解。觉得实习就是去到公司,然后会有专门的老师来教大家,让大家一天天获得进步,感觉这种想法太学生思维了,也太学生惯性了。


可能是因为大家一直在学校,习惯了这种思维方式吧。


但公司跟学校是不同的,公司是盈利机构,是要赚钱的,是要考虑成本收益的,招实习生,很多企业就是为了廉价劳动力;也有一些资本雄厚的公司愿意花钱和时间去培养实习生。


但无论如如,你都不能抱着学生时代的那种心态去实习,想着有人会帮助你,会教你,会一步一步引导你。


在公司,有人愿意帮你,那是情分,是善举,你应该要感激;没有也是正常的,因为这个就是真实的企业。


那你应该怎么办?你要学会自我成长,要学会自己学习。


你要学会观察,学会学习。观察一个公司内部是怎么运作的,观察前辈们是怎么工作的,如果他们没有主动教你,你就要主动请教啊。公司的每个人,内部的各个论坛,每一份资料,老员工日常做的事情,都是值得新人去学习的。


有些公司会比较正规,有正规的培训,正规的导师制度,对这些就要感恩了,不是所有公司都有的。


第三,关于实习的工作没有技术含量。


不要抱怨刚开始工作没技术含量,你真觉得自己很牛B?把核心系统交给你,你真的可以搞定吗?


待你真有能力了,再来抱怨吧。


有同学跟我抱怨,实习的工作没有技术含量,在重复做些低级的事情。我看了他的实习时间,不长,就三个星期,这么短的时间内,我觉得就是会做些低级的事情的。


如果基本系统的流程都不清楚,一来就给你一个大的project , 有可能会把你给压跨的。做砸了,谁都担当不起。


最后给大分享下,我毕业后的第一个任务吧(类似实习任务)。


当时我所参与的是一个大型的老系统,很庞大,涉及的模块特别多。


我接手的第一个任务,就是在系统里面增加一条命令(你可以认为就是增加一条协议吧,不过当时那个系统在这方面设计的不太好)。


我用了近两个星期的时间去看代码,从接入层到应用层,从应用层再到数据层,中间还请教了导师和相关的同事几次,最后只是增加了不到 10 行的代码。


写完那 10 行代码后,我测试了几遍,提交前,我对着代码的 diff 也看了好几遍,后面我的导师给我 review 我写的代码,还给我找出了三个 bug。


以上就是我接到的第一个任务。


后面有三个月左右的时间,都是做这种事情。


在做的过程中,我对系统越来越熟悉,系统的上线流程,灰度,回滚,日志查找,问题定位等都在这过程中慢慢熟悉了起来。


后面我导师给我布置比较难的任务的时候,我已经对整个流程很熟悉了,所以可以很专注于需求本身,而不用再过多顾虑需求之外的东西。


我觉得这个就是低级事情的价值,这是一个循序渐进的过程,几乎人人都会经历。


我带人之后,也会让新人做这些事情。以我观察到的结果,有些同学确实会抱怨,也有些很细心地完成了,然后接手了新的任务,又超预期地完成了。


作为上级,我会比较喜欢第二类同学,而且也愿意给予更多的机会让他尝试。


以上是我的一点经历,有点鸡汤,但也是事实。



结语



以上是关于面试和实习的一些经验分享,希望这点经验和心得能给大家带来一点帮助。


最后,


祝准备参加面试的同学面试成功!


祝已经在实习的同学实习顺利!

推荐↓↓↓
程序员求职面试
上一篇:如何设计技术面试题目?