秋招心得
今年秋招较以往是要难了一些,但也不是那种遥不可及的地步。对于准备充分的人来说总是offer不断。我接触Java也不到1年,但是只要好好的准备,两个月完全够应付大部分的公司了。希望看到这篇文章的同学能稳住心态,踏实刷题。坚持几个月定能收获自己满意的offer。
我先说说我的秋招战绩吧,目前已经通过的技术面试的有:中兴、vivo、字节跳动、猿辅导、小红书、***部第三研究所、shopee(虾皮)、科大讯飞、浦发银行(上海总行)、美团、微软(三面完),腾讯。基本上除了网易、百度、商汤、旷世等公司没有投递或者尝试之外,大部分互联网公司都去面试了。
鉴于今年秋招开始的特别早,行业大环境也不太明朗,我强烈建议5月底,6月初就应该开始准备复习了。因为导师项目原因我没有去外面的公司实习,也就没有在体验过实习面试,但我从我的经历来看,准备秋招2个月足够了。
先说说学习路线吧,今年和往年面试要求已经大不相同了,越来越多的公司慢慢的接受了字节的面试流程,提升面试难度,也为了筛选更优秀的候选者。因为我主要面的岗位是后端开发,主要语言是Java(我真正学习Java不到3个月),所以我建议需要通过看基础书籍去掌握一门常用语言,Java这边我推荐的书籍有:
Java语言:深入理解Java虚拟机、Java并发编程的艺术、Java多线程编程核心技术、Dubbo框架源码(面阿里必备,我就是没去看。阿里凉凉),Effective Java(这个不是必备,里面有些看不太懂)。
数据库:多去看索引底层原理、索引的使用、数据库主从复制、读写分离、数据库事务以及隔离级别、数据库优化策略等。
缓存:Redis设计与实现,以及了解怎么保证缓存一致性,缓存使用场景等。
中间件:消息队列等常见知识点
分布式架构:大型网站技术架构(推荐入门看)
分布式一致性:Zookeeper分布式过程协同技术详解,Raft和paxos算法。
算法:剑指offer,leetcode刷中等难度的题目。
以上内容和书籍我觉得掌握的差不多了大部分公司面试应该OK了。
简历:
个人基本信息完整,学历背景写清楚。照片可放可不放,要是放的话,一定放证件照(我就是因为随便放了一张生活照被小米不给面试机会的)。简历最好一页纸就行,其中实习或者是项目经验可以多写几个,尤其是最后一个项目一定要写的很清楚,必须做到上面写的技术要点都要了然于心。HR筛选简历一般就看你的学历背景、项目经验多不多,有没有大厂实习经历等。而面试官就只看你的项目描述了。(建议如果没有大厂实习经验的,最好自己手动实现一个分布式框架的项目)。也可以把你会的技术一一罗列出来,切记不要写精通(除非你真的是大神)。一般写熟练都可以了。
面试流程:
1、 自我介绍:
自我介绍不宜时间太长,说实话除了国企和银行,互联网公司的面试官一般不太感兴趣你的特长和兴趣。所以简单的介绍一下自己的学历背景,经常使用的语言以及最近参与的项目和实习经历等。(这样可以为后面面试官问你项目细节以及语言基础做铺垫,引导到你自己擅长的地方。而不是面试官问你不熟悉的业务和项目)。
2、 项目介绍:
介绍项目一定要做到自圆其说,从业务到框架以及详细的技术一定要事先准备好。以防面试官深入的去了解细节,而你只是说个大概。(一般大厂都不太会非常的在意细节,只要能自圆其说就行了。小公司一般会问具体实习细节等。一定要根据公司侧重点进行准备。像字节、猿辅导等比较大的公司都比较侧重算法和基础知识。)
3、 基础知识:
基础知识务必做到全面而深入,光是了解远远不够,现在越来越重视对底层原理以及源码的阅读和理解了。后端开发一般要掌握的基础知识有:一门擅长的语言的底层实现和特点、数据库的底层原理和应用、操作系统、数据结构、计算机网络等。一般互联网公司都是第一面的时候问基础知识特别多,也非常细。如果初面的时候基础知识答的非常好,一般后面的面试就不太会问你基础了。第一面很重要,他可能会影响到后面面试官对你的态度和整体面试表现。如果不仅仅想只拿个白菜offer,一定要把基础知识打的牢靠一些。到了后期有些面试官可能觉得一些常问的基础知识已经问了太多遍了,就会以手动实现的方式考察你对基础知识的理解(比如Java中List怎么删除重复元素,多线程交替打印奇偶数,生产者消费者模型,LRU缓存数据结构,前缀树的实现、String不可变,单例模式以及计算机网络子网划分等题目)。切记常见的一些题目一定要自己多手动实现。
4、 系统设计:
系统设计题目一般不是必须出现的题目,这类题目一般考察你对于分布式中高并发情况下的应用和理解。有可能是以设计数据库表(考察你在高并发情况下对于表字段的设计。)衍生出你对缓存以及消息队列的使用场景,怎么样保证缓存一致性、消息的消费顺序性等问题。这类题目一般都为陷阱题,如果你没有高并发项目实战而是按照平时课程中学过的数据库知识很有可能就会掉入陷阱。(推荐大家常去看看关于缓存一致性,消息队列的常见问题,面试中套路特别多。只要你准备充分,这些题就显得很轻松)。建议可以去网上找个秒杀项目自己手动跟着实现一下。
5、 算法:
算法一般是能决定你这一轮面试通不通过的重要标准,而且算法题一般都是面试流程中最后一环,目前大部分互联网公司都把算法作为评价面试者能力的重要参考依据。(连以往面试最玄学的华为都开始改革,每一轮都需要考算法题了)。算法不仅仅看实现功能,代码的时间复杂度、空间复杂度都特别重要,一定在做题目的时候问清楚面试官的要求。可以先说自己的思路,在面试官确定思路没问题的时候就可以实现代码了。一定要注意代码的鲁棒性,边界值、命名规范等细节。个人觉得字节的面试应该是最标准的面试流程。如果很多萌新没有非常明确的目标建议按照字节的面试要求和流程进行准备。算法能力我建议通过刷leetcode 200-300题完全足够了(当然前提是大部分都是中等难度的题目)。再补充剑指offer上面的题目,那么算法就已经不是问题了。有些外企(比如微软)几乎不看你的项目,只有算法题。所以如果你的算法功底不行,那你可以去试试一些小公司和银行、研究所等企业了。
6、 提问环节:
一般面试结束前面试官都会礼貌的让面试者提问,这个提问环节也特别重要,回答不好会影响面试官对你的影响和评价。我一般是根据自己的表现情况去向面试官提问,如果自己面试表现比较好。在觉得自己比较稳的情况下可以问问面试官后面的流程情况(如果是最后一面,可以虚心的问问以后从事这个岗位需要学习什么东西,该做哪些准备),如果有些面试官没有耐心急着想走也没必要走过场了(我提前批面字节表现还不错,就是因为最后自作聪明抓着面试官问算法题更好的解法而凉凉)。如果实在没有什么好问的那就问问公司的技术栈以及面试的部门具体业务等问题。(这样可以显示出你对于这个岗位还是很感兴趣的,面试官会觉得你很想来他们公司)。也可以虚心的请教面试官一些建议,就算面试不成功,也可以知道自己哪些方面还有待提高。不至于只是失败而没有收获。当然也可以问问面试官自己从事这份工作的感受和公司氛围。交谈中务必保持低调和对于前辈应有的尊重。切记不要跪舔。(跪舔会让人觉得你实力不行,对于自己的能力还是要保持一定的自信。这样对后期谈论薪资待遇也是有很大的帮助)。
不同类型的企业比较:
Bat等大厂:大厂的背景还是非常有用的,但是一般工作模式都是996,去大厂也要提前做好成为一个螺丝钉的准备。阿里的面试特别重视技术,一般都是电话面试,问的很深很细,大部分都是Java语言,喜欢深入的去问一下框架源码(dubbo源码)和Java调优实战,虚拟机等基础。腾讯就比较喜欢深入的去问一些计算机网络、操作系统很深入的知识。和目前其他大型互联网公司有点不同(字节、拼多多、猿辅导等都采用视频,重视写算法)。
研究所:研究所一般看中学历背景,技术面试问的很浅,有些甚至不太问技术。然后会问成绩、高考分数、本科排名等。据我所知有很多跨专业的师兄师姐去研究所比较多。研究所比较稳定,收入较互联网公司低不少,现在大部分研究所已经不提供编制了,还是合同工。
银行和国企:国企和银行的面试流程和侧重点和研究所类似,比较适合喜欢稳定的人,很多女生喜欢去银行等类型的公司。不加班,福利好等优势。大部分银行比较看重成绩排名以及四六级成绩。
外企:我面试过的外企有shopee和微软,工作氛围好,薪资福利很不错。Shopee面试流程和字节,猿辅导差不多。微软很看重算法应用(果然是算法好到哪都不怕)。
总结:
今年的秋招来的很快,结束的也很快。但是只要准备充分,定能收获自己满意的成果。不存在完美的Offer,。不同的人有不同的追求,不要盲目的去攀比薪资待遇,或者一味的追求大厂光环。每个人都有每个人向往的生活。不是所有人都适合996的工作制度。所以找准最适合自己就好。有加班就有回报和光环。稳定就不一定钱多和技术栈先进。希望大家都offer多多,可以多找找不同的企业。然后选择一个最适合自己的工作。
结束语:
以上都是我在多场面试中自己的心得和教训,也许不适合大神们无解的能力。但是希望可以帮到像我一样曾经迷茫的学弟学妹们。如果有学弟学妹想要关于Java的一些面试资料或者想更加深入了解笔试,面试的细节。欢迎大家前来探讨。
#Shopee##字节跳动##猿辅导##微软##校招##Java工程师##面经#