一、背景
马上就快到校招的时间了。
网上有很多分享面经的地方,也有一些博文分享作者的面试经历,尤其是大公司的面试经历。
大多数是分享具体的问题,而没有系统的总结出方法论。导致大家只不过是在刷题!仅此而已!
当然刷题没错,面试常见的问题就那么多,而且这些也是未来工作需要掌握的基础。
但是我们更应该掌握怎么准备校招,找到哪些是重点,了解面试面哪些能力。
由于本人是Java工程师(前网易Java开发工程师),推荐的资料部分可能推荐的Java居多,但是通用能力是可以参考的。
注:社招也可以适当参考本文,只不过社招的要求高一些,但是部分面试能力是通用的。
二、诡异的感受
有些同学面试的时候会觉得啥都答上来的,问的问题很简单啊,咋最后没过呢??
这种情况很大概率是稍微难一点的问题就答不上来,答上来的不全面,没深度,不想问了敷衍一下罢了。
比如问你http的请求方法是啥,你很happy的回答,有GET POST两种,xxxx。绝大多数人都可以回答上来,你的优势在哪里?
可以看这里 https://www.runoob.com/http/http-methods.html
如果你不仅可以回答GET POST,其他的都可以回答出来,甚至提到HTTP1.1新增的是哪些是不是更有优势呢?(不过小心他问你,1.1有的其他特性,需要准备下)
比如问你HTTP响应码有哪些,你脱口而出200,400,500,然后感觉自己好牛的样子,很开心,问到了自己会的问题,so easy!!
其实正确姿势可能是这样,参见https://www.runoob.com/http/http-status-codes.html
回答出2,3,4,5开头的分别啥含义,常见的有哪些,甚至还可以分析哪些场景下会出现这些情况。
比如问你线程池的优点,so easy! 准备到了! 然后问你ExecutorService 是主要的实现类,其中常用的有哪些?
so easy,面试官真好,都是会的,然后巴拉巴拉:
Executors.newSingleThreadPool(),newFixedThreadPool(),newcachedTheadPool(),newScheduledThreadPool()。
都是干啥的,特点是啥回答完了,好开心的说。
当然这样没啥问题,但是同学你没有超出期待,你和其他同学比,你的优势在哪里??
都回答了这么多了还想怎样??难道这样还不行?
对你可以做的更多,更好,what????
如果你看过《阿里巴巴Java开发手册》,请注意这一段:
【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样
的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 说明:Executors 返回的线程池对象的弊端如下:
1)FixedThreadPool 和 SingleThreadPool:
允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM。
2)CachedThreadPool 和 ScheduledThreadPool:
允许的创建线程数量为 Integer.MAX_VALUE,可能会创建大量的线程,从而导致 OOM。
参见《阿里巴巴Java开发手册》
具体原因可以看源码或者看《码出高效》相关章节。
你能够说出特征,然后提示说不建议使用,并说出原因,你已经甩绝大多数人好几条街了,很可能脱颖而出。
当然还有很多,就不一一列举了。
三、技巧篇
干货!干货!以下章节或许一些人看过不以未然,不当回事,但是认真体会或许面试会多很多机会。
机会留给有准备的人,同样文章也留给用心的人!
3.1 会的要超出面试官的预期
正如前面锁举例的一样,会的问题尽量不仅回答的不遗漏,而且尽量超出面试官的预期,尽量和绝大多数人多一点亮点。
3.2 不会的尽量说思路
为什么呢,聪明,举一反三的能力,也是很多公司尤其是大公司考察的一项,甚至是加分项。
个别的你没学过,但是很多原理都是通的。
可以说“我没学过这个xxx,但是如果让我做的话xxxx”,“我没学过这个,但是看它和xxx比较相似,应该是xxxx/可以xxx”
举个例子,比如面试问你“spring-boot-starter的机制的原理是啥?,就是功能封装到Jar包里,引入进去就可以自动配置@Bean。”
你真的没接触过,但是你了解过SPI机制,里了解过Spring的@Configuration和@Bean注解的含义。
那么你可以说“我没学过这一块,但是之前了解过SPI机制和Spring的@Configuration,应该是类似SPI的机制,比如jar包里应该有某个配置的文件,让spring能够识别,应该有类似@Configuration这种类注入需要的Bean,xxxx”
那么或许加分就不少。
3.3 其他
3.3.1 学习的时候串联各种知识,找出共性,面试的时候可以发挥
3.3.2 可以主动扯到更深的层次
3.3.3 面试官问的模糊的问题要和他确认
3.3.4 准备的时候不要只看面经,很多面试官会问点“偏的”让你没有准备好而露馅。
比如HashMap都不问你扩容啥的,就问你“modCount”是干啥的,蒙了吧??不过如果你会看2.2的建议就可以扯到ArrayList里的modCount,其实都是类似的。
四、面试工具篇
4.1 云笔记来整理面试题
可以用有道云笔记,也可以用印象笔记。
最好电脑和手机可以同步的,平时方便看,及时去面试了,个别不熟悉的知识点,算法,面试的路上也可以看。
这点超级推荐
4.2 思维导图
可以用思维导图整梳理一下自己已经会的,不熟悉的知识点。
4.3 必备网站
4.3.1 不用说,首推牛客网(能否发个网址?No,有一个网站叫百度,这都不会别准备了,放弃吧!
重点是里面的校招日历,里面大公司的面经,里面《剑指Offer》等的练习题。
4.3.2 LeetCode
因为仅仅会剑指Offer可能还不够,多刷刷其他的题,
4.3.3 几个超赞github面试题
https://github.com/Snailclimb/JavaGuide
https://github.com/doocs/advanced-java
https://github.com/javagrowing/JGrowing
4.3.4 各大企业校招官网
具体什么岗位,要求啥写的很清楚。
五、简历篇
个人推荐最好是彩色,但是不要花哨
重点突出,写完让同学看看,让工作的学长看看
最好是一页,如果是两页,第二页写到一半以上
不要出现任何低级错误
不要随便出现“精通”字样,写的一定要熟练
写的东西就有可能被问到,和求职的职位无关的少写
如果没把握也可以简历发给我帮参考一下,如果想找我内推也可以简历发给我 liuwangyangjob@163.com
六、其他操作
谦逊有礼
多看点智力题,有些公司问智力题,不会相对显得不够聪明
尽量一题多解并给出最佳方案
如果在剑指offer上见到原题,不要面露喜色,要故作思考状,然后作答等等
七、面试考察什么?
7.1 沟通理解能力
能否简单的几句话把一件事情描述清楚;主动沟通能举一反三;能快速理解问题
7.2.计算机基础扎实
数据结构(线性表、树等)能理解到位;算法(常见的查找算法、排序算法)能了解常用的算法复杂度。
7.3.实战经验,动手能力强
对数据库的运用,索引的作用(原理和结构加分);对MQ、搜索引擎、hive等有概念(有实际使用经验加分);熟悉开发的流程,有开发的经验
以下几个可能是加分项:
开源社区源码贡献
获得过全国性专业比赛奖项
职业发展或技术上有短期和长期的规划
对技术之外的领域有一定认知,比如对产品、商业
画图能力
掌握其它语言或者其它技术能力
八、Java开发图书推荐
必备的是常考的,个别书是看好了就可以秒杀面试官的,就可以拉同伴好几条街的。
剑指offer(必备!!!)
阿里巴巴Java开发手册(必备)
码出高效 (必备!!!)
深入理解Java虚拟机:JVM高级特性与最佳实践(必备!!!!!!!)
Java并发编程的艺术(必备)
Java多线程编程核心技术(必备)
MySQL45讲(极客时间,必备!!!!)
Redis深度历险 核心原理与应用实践(必备!!!!)
阿里技术之瞳(必备)
数据结构实用教程(Java语言描述)(推荐)
大型网站技术架构:核心原理与案例分析(必备)
图解多线程设计模式(推荐)
深入剖析Tomcat (推荐)
Effective Java(推荐)
设计模式 刘伟(推荐)
分布式服务架构 原理、设计与实践(推荐)
dubbo官方文档(推荐)
这里是我个人认为这里是面试时比较重要的几本,但是绝对不仅限于此,Java的好书有很多,但是最少必备的一定要看好。
还有其他的欢迎补充。
其中部分书籍也可以在我的店铺购买: https://j.youzan.com/-MSbVi
另外复习找不到重点???
可以参考我上面推荐的书,也可以去招聘岗位上看描述,去牛客网上看面经!!!!
九、答疑
9.1 为了超出期待是不是简历里要写的不太行?
有点诡辩哈。这就像相亲为了见面让对方认为超出期待,照片给一个丑的。
那么结局很可能是连见面的机会都没有!
这里的超出期待是指,超出同层次的其他人,超出面试官对校招生的期待等等。
9.2 回答太多是不是会让面试官讨厌?要不要主动回答的多?
为了避免被面试官讨厌,可以回答全面但是要言简意赅!
回答全面完全不等于废话连篇!
另外咱可以诱导面试官。
比如上面举例的线程池问题,你回答完以后,可以来个不过“《阿里巴巴Java开发手册》不建议用Executors创建线程池”。
面试官如果不想问,就此打住,正常的面试官会抓住这个机会问下去看看你是否真正知道为什么。
那么机会来了。
另外面试尤其一面电话面,发现面试官情绪不对抓紧打住,想想是不是哪些说的太离谱?是不是废话太多?
9.3 面试靠运气?
的确面试有运气成分。就像高考也有平时学习一般的最后成为黑马。
但是大多数都是凭实力。
没太大实力的才凭运气,就像你四级做了很多套真题都是及格线上,真正去考试估计过不过要看运气了。
尤其是非211的学生,能够进大企业的几乎每个都是实打实的能力。
当然自己准备的确实不错,但是对方就是不要,也未必是运气问题,很多企业根本不招那么多人。
这就像考研复试,都得1:1.5,面试可能1:10甚至1:100+,淘汰率很高。
不在于你表现的好不好,而是你比其他人强多少!!
9.4 校招要求低的问题
校招相对于社招,项目经验要求低,排错的能力要求的高级特性,分布式的技术等相对要求低。
很多学生在学校里可能就做了点SSM的项目。认为这些就够了!不这些远不够。
最起码Redis常见的数据结构,持久化机制等;
MySQL的各种引擎的区别,索引的结构等;
等等,都要说的很清楚。
如果你想去大企业,专业基础必须扎实,算法能力最好强一些,公司的核心技术站尽量多了解,如果没机会做过类似项目,起码本地搭建一个了解一下。
这样你才有更多机会。另外一点大企业容错率很低!!!
这种要求低是相对而言的,校招是否能够去更好的企业取决于你大学的积累,以及准备的是否充分,是否懂得一些面试技巧等。
这点和考研很类似,很多学生学校好考研有天然优势,大学拿过国家级奖项,高级别论文,这些是硬实力,已经拉开了很多人。
所以大家的起点就不一样。
反而越是学校一般的学生,越倾向于认为“反正校招要求低,没必要xxxx,没必要yyyy”,就显得有些可笑。
当然不是每个人都有追求,也不是每个人都能进名企(当然不排除有些人不屑,认为小企业更适合自己)。
9.5 其他问题
可能还有其他疑问,可以评论留言,也可以扫描左侧的码,加我微信或者知识星球和我交流,我有空会一一解答(一般白天上班可能不能及时回复,晚上一般都在线)。
希望大家理性客观的思考问题,多站在面试者的角度(现在工作身边好多面试官,经常面试校招社招的学生),公司的角度想想他们想要什么样的人(大企业宁愿多花钱也不想要达不到要求的)。
十、感悟
校招大家要提早准备,不要临时抱佛脚,这不是期末考试!
其实当你简历拿到手,结局多半已经注定了。
是否是211,是否有国家级专业奖项,是否有拿的出手的项目,是否专业排名top10,是否在知名开源项目贡献过代码,对去大企业起很大作用。
另外专业基础不扎实,最容易被PASS掉,越是大公司对专业基础的错误容忍度越低。
总之校招要早点准备,重点突出,复习有章法,效果会更好一些。
另外校招虽然存在竞争,也有合作,可以和同学分享一下经验,或许都可以去更好的公司。这是全国的竞争而仅仅是你们两个人。
个人建议如果有机会,校招尽量去大企业,未来换工作有更多的资本。
我们准备校招的时候分享经验,都有很大提高,最终结果都不错,同一个导师4个学生,一个进入了阿里巴巴,一个进入了网易,两个进入了华为。
另外想说语句,机会留个有准备的人。
以上仅代表个人观点,如果认为有值得借鉴的地方可以参考,如果不认可按照自己的想法来就好了,见仁见智。
希望本文对大家有帮助,希望可以帮助更多人少走弯路,如果觉得有收获,欢迎关注我的博客,欢迎分享给身边的同学。
————————————————
版权声明:本文为CSDN博主「明明如月学长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/w605283073/article/details/90815472