首先自我介绍一下,本人17年毕业,在此之前,待过两家公司,第一家是创业型公司,公司的技术水平有限,第二家公司虽然是世界五百强,但并非互联网公司;出于自己的职业生涯考虑,非常渴望去到一家互联网大厂去镀金,所以在这金三银四之际,努力备战了一个多月,面试了许多公司,其中包括字节、阿里、网易这种大厂,也包括YY、BIGO、老虎集团等这些公司,最终选择了菜鸟网络的offer;当然面试这个过程并非十分顺利,也经历过一些打击,但我每一次面试都会去总结复盘,所以每一次都会有所收获,每一次都会有所成长;分享是一件很有意义的事情,我觉得在这个阶段也有很多跟我一样,想去一些更好的互联网公司的同学,但苦于没有太多的面试经验总结,甚至不知道3-5年的工程师面试会考一些什么内容,只能网上去找一些零零碎碎的面经,效果并不会很好,所以我也决心花时间把自己面试过程中遇到的一些知识点记录下来,分享给有需要的同学们;当然很多知识点可能都是自己认知上的一次总结,可能不能足够完美,更希望的是我的分享能够带给同学们更多的思考,更多的探讨,我觉得这才是分享的意义所在。
言归正传,下面将从项目、Java基础、Java框架、计算机网络、操作系统、Mysql数据库、Redis缓存、消息中间件以及算法等几个方面进行总结。
项目
面试的时候,项目可以说是必问的一项知识点,往往也是面试官进行面试切入的环节;通过项目这个环节,面试官既想考察面试者对参与过项目的归纳以及总结,从中了解面试者技术水平,也考察面试者是否对技术的深度以及广度有进行扩展;往往更多的时候,面试官会通过项目过程中涉及到的知识点进行提问,所以同学们在准备项目的时候,一定要做好充分准备,把项目中涉及到的知识点都要有把握讲的出来,并深入了解其实现原理,尤其是面试大厂的时候,面试官往往都会考察原理,这里主要分享一下,如何去讲好项目这个环节。
从面试官的角度出发,往往都喜欢让面试者讲讲工作过程中做过的自认为好的项目、在这个项目中负责的内容、有没有遇到过什么难点或者亮点以及是如何解决遇到的问题,所以同学们在准备项目的时候,选择自己擅长的项目来讲,哪怕不是自己负责的,但是自己能够理解透彻的项目;很多时候讲透彻项目是基本,而亮点或者难点往往是加分项,也往往是面试官想继续深入的一些点,所以这个环节一定要思考清楚难点是什么,是如何解决的,或者亮点是什么,解决了什么问题;这里提出几点注意事项。
- 选择项目的时候,可能更多的同学觉得并没有参与过什么高大上或者说拿的出手的项目,然后就选择了一些自己不了解的项目来讲,这种最后的结果就是被面试官虐的体无完肤的;其实我个人觉得,工作过程中并不是每个人都有机会参与一些高大上的项目,相比于此,我更倾向于去选择自己擅长的项目,并把这个项目中你认为是亮点的东西讲清楚,然后在此基础上进行扩展,会让面试官觉得你这个人比较靠谱。
- 切记,自己不擅长的千万不要多讲,尤其是大厂的面试官,往往你讲出来的时候,面试官就会深入了地去问一些问题,倘若这个环节你没能答好,很多时候你就挂了。
这里我贴个模板出来吧,供同学们参考:
那我讲讲XXX项目吧,因为我是这个项目的负责人,经历了项目从0到1的这么一个过程;首先我简单介绍一下项目,balalalala,项目所用到的技术主要有springboot、mysql、rabbitmq等等;我在这个项目里负责了需求评审、技术选型、数据库设计以及代码review等工作;总结这个项目,其实项目并不难,但我觉得以下几个功能点是我觉得比较有意思的或者说在项目过程中,遇到了一些问题让我比较印象深刻,也从中学习到了一些东西;
功能点1:比如说用某项技术实现了某个功能点,然后通过验证、分享,最终得到了领导的认可,打包成一个组件,在团队间推广起来,达到了组件复用以及内聚的效果
功能点2: JVM调优之类的,比如说项目上线的时候,总是发现服务的cpu负载特别高或者经常宕机之类的,你是如何去定位并解决这些问题的。
好了,项目大体就讲这么多,总之记住一个原则,自己不能深入的去讲的知识点一定不要多讲;下一篇主要讲讲面试过程中考察到的Java基础知识点。