实习面试攻略 -- 一个月从开发零基础到找实习

   写在前面:首先必须说明的是博主绝非大佬,正如标题所见博主真的就是一个研发小白。本文主要是想分享一下博主这一个月来的面试经验,其目的还是为了“面试”,为不是旨在分享学习经验。所以本文可能会有一些急于求成的做法,如果是为了系统学习,实在不建议不值得参考。另外博主水平所限,文章难免有错误之处,还请各位大佬不吝指出。

  时间回到2020年的3月1号早上,蒟蒻博主终于翻开了买了好久的《Java核心技术卷I》,在此之前他对Java的了解仅仅是用Java向屏幕正确的输出“Hello World!”。此时可怜的博主还不知道他将要在2个星期之后投递出第一份简历开启他的春招找实习之旅,尽管此时他对软件开发还是零基础。经过一个多月的努力,博主还是从零基础开发学习达到一个初学者级别的开发能力,并且拿到了一些offer。于是有了这篇博文,想给像之前博主一样迷茫的同学分享一些经验,另外也是证明临时抱佛脚也是能够拿到offer。

  像我一样实力实在堪忧的话,不出意外在面试期间应该会经常碰壁,加上近年来经济下行加上2020年的疫情,大公司缩招中小公司不招,找实习/工作确实会难上许多。但是一定要  :稳住心态+多投多面+不断总结学习,相信最后一定会有机会的。

  以下经验仅限于后台开发岗位:

   简单地,面试官在面试中看重的是什么,其实无非就三部分:实习经历 + 基础 + 项目 + 竞赛/论文。

  先说基础,校招相对于社招会更看重基础,因为其实在开发经验丰富的面试官看来,我们写的哪些项目就像是玩具。而且学生的话在学校学的开始基础知识嘛,面试官会认为基础学好了学开发知识也不会太难。根据我目前为止面试多家家互联网企业的面试经验,尽管每家企业侧重点有所不同,但是  操作系统,计算机网络,数据库,语言基础(Java/C++) 是永远的神。这些知识如果之前有学好的话哪怕是忘了也可以很快地捡回来,这部分知识最好的话是看经典书籍,如果实在时间不够了也有办法就是看面经重点突击高频问题,但是也一定要稍微深入的理解而不是背了面经的答案就可以了。  另外一部分基础的话就是数据结构和算法基础,除非是电话面试否则必有手撕代码环节,并且这个环节应该是最不能出错的,计网数据库的问题你还能有几个回答不上,手撕代码有撕不出来的话基本就凉凉了。比较难受的是算法和数据结构比较难速成,如果平时有好好刷Leetcode算法题的话(ACMer当我没说),应该是没有问题的。如果实在没时间了也只能是先刷面经高频题然后祈祷面试官不会出到你没刷过的。。。

  然后是项目,尽管上面说了在面试官看来你写的项目就是玩具。但是项目还是一定要有的,因为面试官会从你的项目去考察你的技术栈,以及提出一些项目场景去考察你的思考方法和设计能力。投研发岗总不能真的什么研发都没干过吧,如果实在没有就把课程设计美化包装一下然后写上去,但是也要注意不要吹水吹得太过了。其实对于项目经历还有一个歪方法,就是你完全看懂了一个项目但是没有时间写了其实你胆子够大也可以写上去(比如说如果你比较熟悉SSM框架,其实可以说你有一个商场项目),但是博主想说明一点:这个办法确实投机取巧了,各位读者见仁见智使用,我也接受大家对博主提出这个方法的批评。不管怎样,千万千万要注意的是面试官有可能会对你写在简历上的项目刨根问底地问,如果不是自己写的或者不是自己能够独立实现地,很有可能翻车。所以一定一定要对写在简历上地项目地技术栈熟悉。

  最后是竞赛/论文,这个的话可能ACMer或者研究生才会有。没有的话倒也不用太纠结。

  然后是经常上一些面经分享平台,比如牛客网。多看面经还是很有好处的,大公司问来问去高频题就是哪些,然后中小公司的话你甚至能找到跟你真正面试时一模一样的面经!!所以多看面经还是很有好处的,你甚至可以把一些比较全面的面经当作是你真正面试时的问题去训练,然后消除真正面试时候的紧张感。

  还有一点值得注意的是心态问题,我们应当怎样去看待一场面试?首先面试是一场考核,面试官的任务就是考核你对这个岗位的技能掌握程度,那么这时候你面试的技巧就很重要了,你应该适当地引导面试官到你熟悉的知识点上而不是让面试官来随机发问!!换言之,尽量让你去主导这场面试而不是让面试官去主导,这会让面试成功几率大大提高!比如说,说到一个知识点的时候你可以主动说:我对这个知识点的这方面比较熟悉,一般这时候面试官会反问你:那你说一下,那不就成了!!当然被问到不会的问题,一定先要大大方方说不会/不了解,然后你可以说:我对这个知识不太了解,但是遇到这个问题时候我会这样解决/这个知识我不太了解,但是相关的这方面知识我比较了解。  等等这方面的说话技巧自己多多思考。   其次你可以把面试看成是一次与前辈的技术探讨,事实上我的经验来看大部分面试官都是比较和气比较好人的(注意大部分),所以你大可不必紧张,闻道有先后,毕竟是前辈在技术探讨上肯定比你懂得多,那你就抱着学习的心态去面试。其实,面试也得确实一种找到自己缺点的方式。

  下面是分享一些资料,有我觉得写得很不错的面经,有写得不错的高频知识点博客。

  独一档的两个面试指南

    JavaGuide:https://snailclimb.gitee.io/javaguide/#/

    CS-NOTE:https://cyc2018.github.io/CS-Notes/#/

  写得很好的面试攻略

    https://www.nowcoder.com/discuss/344311  (这个老哥写得是真的好,注意下面还分享了他的答案资料,你甚至可以直接背他的答案)但是只背这个老哥的答案还是不够的,因为问题还是不够全面,而且只背答案的话其实你并没有真正理解,所以还需要我下面推荐的一些博文。

    https://blog.csdn.net/binbigdata/article/details/87649823  (另一篇高频知识点)

    https://www.cnblogs.com/Java3y/p/9221792.html (知识点和一些优质面经)

     

  推荐知识点博文

    http://www.023wg.com/message/message/cd_feature_cover.html (各种协议报文格式)
    https://www.cnblogs.com/zgq0/p/8780893.html (进程间通信)
    https://blog.csdn.net/jgm20475/article/details/81297819(死锁)
    https://blog.csdn.net/qq_36260974/article/details/84404369 (银行家算法)
    https://blog.csdn.net/nima1994/article/details/65657250 (死锁资源分配图)
    https://blog.csdn.net/qq_36795474/article/details/81189156(操作系统连续分配内存)
    https://blog.csdn.net/fuzhongmin05/article/details/58061584 (分页和分段内存管理)
    https://blog.csdn.net/qzcsu/article/details/72861891 (三次握手四次挥手)
    https://blog.csdn.net/wypersist/article/details/80114709(大数据处理题)
    https://blog.csdn.net/m0_37730732/article/details/82263609 (Http报文格式)
    https://blog.csdn.net/qq_34777600/article/details/81513401 (数据库)
    https://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html (Get和Post)
    https://www.cnblogs.com/su-chu-zhi-151/p/11875641.html (转发和重定向)
    https://blog.csdn.net/chen13333336677/article/details/100939030 (cookie和session)
    https://www.jianshu.com/p/a8aa3a332bb9(协程)
    https://blog.csdn.net/qq_35701633/article/details/97398354?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task (进程/线程切换)
    http://blog.sina.com.cn/s/blog_631d3a630101mhup.html (置换算法)
    https://segmentfault.com/a/1190000016694292 (快速失败和安全失败)
    https://www.cnblogs.com/heluan/p/8620312.html (Http1.0 1.1 2.0)
    https://www.cnblogs.com/heqiyoujing/p/9560356.html (SpringMVC工作过程)
    https://blog.csdn.net/Eunice_fan1207/article/details/81387417?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1 (僵尸和孤儿进程)
    https://www.cnblogs.com/seanloveslife/p/11941736.html(Ping和traceroute原理)

    https://www.cnblogs.com/sparkdev/p/11200395.html (Linux文件系统)
    https://blog.csdn.net/l18848956739/article/details/93859531(Linux命令)

    https://blog.csdn.net/stupid56862/article/details/90785420(Linux软硬链接)
    https://www.ibm.com/developerworks/cn/java/j-lo-jdk8newfeature/ (Java8新特性)
    https://blog.csdn.net/qq_41701956/article/details/84861232?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task (sheep wait yield)
    https://www.cnblogs.com/zhoujinyi/p/3435982.html (Next key Lock)
    https://blog.csdn.net/qq_15092079/article/details/81672920 (数据库主从复制)
    https://www.cnblogs.com/flying607/p/6518805.html (Java String)
    https://www.cnblogs.com/airen123/p/9001454.html https://www.cnblogs.com/caijh/p/7744604.html (Spring/SpringMVC常用注解)
    https://blog.csdn.net/qq_21231413/article/details/88171590 (ICMP)

    https://blog.csdn.net/ever_peng/article/details/80008638 (ARP)

    https://blog.csdn.net/sinat_35261315/article/details/79392116 (Nagle算法)

    https://blog.csdn.net/passionkk/article/details/100538418  https://blog.csdn.net/shenwansangz/article/details/46839801   (MTU以及数据包长度)
    https://www.imooc.com/article/details/id/31277 (InnoDB)
    http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html https://www.cnblogs.com/Java3y/p/10075578.html(Mysql Explain语句)
    https://www.cnblogs.com/kiplove/p/6745335.html (经典同步问题)
    https://blog.csdn.net/qq_27607965/article/details/82355797 (磁盘调度算法)
    https://www.cnblogs.com/katachi/p/10787563.html (分页和分段)
    https://blog.csdn.net/zwj_jyzl/article/details/78639754 https://zhuanlan.zhihu.com/p/48700592 (网络完整过程)
    https://www.jianshu.com/p/2818a8b75aed (XSS攻击)
    https://blog.csdn.net/jiushimanya/article/details/82684525 (Socket)
    https://blog.csdn.net/weixin_43766227/article/details/84591135 (Mysql索引使用场景)
    https://blog.csdn.net/weixin_43238110/article/details/94591200 (Redo Undo Binlog日记)
    https://www.runoob.com/http/http-status-codes.html (Http状态码)
    https://segmentfault.com/a/1190000020801458?utm_source=tag-newest https://blog.csdn.net/qq_32523587/article/details/79970471(Http缓存极致和头部压缩)

    https://www.cnblogs.com/cangqiongbingchen/p/4710016.html (Http长短链接原理)
    https://www.cnblogs.com/strawqqhat/p/10602183.html (数据库乐观锁)

    https://blog.csdn.net/qq_40597632/article/details/81777276 (面向对象设计原则)
    https://www.cnblogs.com/shihaiming/p/11692600.html (设计模式)

  读完上面这些文章,应该可以应付面试官(指比较常规的面试官,别具一格的面试官根本猜不透)提问的至少80%的基础问题,那么加上手撕代码顺利完成,然后有一个算看得过去的项目。也许你就能通过这次面试了。当然学无止境,其他的应聘者同样优秀的情况下(感人感觉事实上大部分应聘者都能做到上诉要求)你只好继续努力学习剩下的20%跟别人拉开差距了,这时候就多看面经多思考多面试多总结吧。

  不管怎样停滞不前是不可能有好结果的,你得先走起来,然后跑起来。

  祝好,共勉。

原文地址:https://www.cnblogs.com/clno1/p/12633082.html