这篇会从宏观面出发简单聊聊如何准备 Java 面试。
以下介绍的内容都在这个专栏中有提到。
01 了解投递简历的黄金时间
面试之前,你肯定是先要搞清楚春招和秋招的具体时间的。
正所谓金三银四,金九银十,错过了这个时间,很多公司都没有 HC 了。
秋招一般 7 月份就开始了,大概一直持续到 9 月底。
春招一般 3 月份就开始了,大概一直持续到 4 月底。
很多公司(尤其大厂)到了 9 月中旬(秋招)/3 月中旬(春招),很可能就会没有 HC 了。面试的话一般都是至少是 3 轮起步,一些大厂比如阿里、字节可能会有 5 轮面试。面试失败话的不要紧,某一面表现差的话也不要紧,调整好心态。又不是单一选择对吧?你能投这么多企业呢! 调整心态。 今年面试的话,因为疫情原因,有些公司还是可能会还是集中在线上进行面试。然后,还是因为疫情的影响,可能会比往年更难找工作(对大厂影响较小)。
02 如何获取秋招信息?
1.目标企业的官网/公众号 :最及时最权威的获取秋招信息的途径。
2.牛客网 : 每年秋招/春招,都会有大批量的公司会到牛客网发布招聘信息,并且还会有大量的公司员工来到这里发内推的帖子。
3.超级简历
超级简历目前整合了各大企业的校园招聘入口,地址:https://www.wondercv.com/jobs/。
如果你是校招的话,点击“校招网申”就可以直接跳转到各大企业的校园招聘入口的整合页面了。
4.认识的朋友
如果你有认识的朋友在目标企业工作的话,你也可以找他们了解秋招信息,并且可以让他们帮你内推。
5.宣讲会现场
Guide 当时也参加了几场宣讲会。不过,我是在荆州上学,那边没什么比较好的学校,一般没有公司去开宣讲会。所以,我当时是直接跑到武汉来了,参加了武汉理工大学以及华中科技大学的几场宣讲会。总体感觉还是很不错的!
6.其他
校园就业信息网、学校论坛、班级 or 年级 QQ 群、各大招聘网站比如拉勾…
03 多花点时间完善简历
一定一定一定要重视简历啊!朋友们!
至少要花 2~3 天时间来专门完善自己的简历。
最近看了很多份简历,满意的很少,我简单拿出一份来说分析一下(欢迎在评论区补充)。
1.个人介绍没太多实用的信息。
技术博客、Github 以及在校获奖经历的话,能写就尽量写在这里。 你可以参考下面 👇 的模板进行修改:
2.项目经历过于简单,完全没有质量可言
每一个项目经历真的就一两句话可以描述了么?还是自己不想写?还是说不是自己做的,不敢多写。
如果有项目的话,技术面试第一步,面试官一般都是让你自己介绍一下你的项目。你可以从下面几个方向来考虑:
- 对项目整体设计的一个感受(面试官可能会让你画系统的架构图)
- 在这个项目中你负责了什么、做了什么、担任了什么角色
- 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用
- 你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的又或者说你在这个项目用了什么技术实现了什么功能比如:优化了数据库的设计减少了冗余字段、用 redis 做缓存提高了访问速度、使用消息队列削峰和降流、进行了服务拆分并集成了 dubbo 和 nacos 等等。
3.计算机二级这个证书对于计算机专业完全不用写了,没有含金量的。
4.技能介绍问题太大。
- 技术名词最好规范大小写比较好,比如 java->Java ,spring boot -> Spring Boot 。这个虽然有些面试官不会介意,但是很多面试官都会在意这个细节的。
- 技能介绍太杂,没有亮点。不需要全才,某个领域做得好就行了!
- 对 Java 后台开发的部分技能比如 Spring Boot 的熟悉度仅仅为了解,无法满足企业的要求。
04 提前准备技术面试
面试之前一定要提前准备一下常见的面试题:
- 自己面试中可能涉及哪些知识点、那些知识点是重点。
- 面试中哪些问题会被经常问到、面试中自己改如何回答。(强烈不推荐死记硬背,第一:通过背这种方式你能记住多少?能记住多久?第二:背题的方式的学习很难坚持下去!)
这块内容只会介绍面试大概会涉及到哪方面的知识点,具体这些知识点涵盖哪些问题,会在后面的文章中介绍到。
计算机基础 :
- 算法
- 数据结构
- 计算机网络
- 操作系统
Java :
- Java 基础
- Java 集合
- Java 并发
数据库 :
- MySQL
- Redis
常用框架 :
- Spring
- SpringBoot
- MyBatis
- Netty
- Zookeeper
- Dubbo
分布式 :
- CAP 理论 和 BASE 理论、Paxos 算法和 Raft 算法
- RPC
- 分布式事务
- 分布式 ID
高并发 :
- 消息队列
- 读写分离&分库分表
- 负载均衡
高可用 :
- 限流
- 降级
- 熔断
05 提前准备自我介绍
自我介绍一般是你和面试官的第一次面对面正式交流,换位思考一下,假如你是面试官的话,你想听到被你面试的人如何介绍自己呢?一定不是客套地说说自己喜欢编程、平时花了很多时间来学习、自己的兴趣爱好是打球吧?
我觉得一个好的自我介绍应该包含这几点要素:
- 用简单的话说清楚自己主要的技术栈于擅长的领域;
- 把重点放在自己在行的地方以及自己的优势之处;
- 重点突出自己的能力比如自己的定位的 bug 的能力特别厉害;
从社招和校招两个角度来举例子吧!我下面的两个例子仅供参考,自我介绍并不需要死记硬背,记住要说的要点,面试的时候根据公司的情况临场发挥也是没问题的。另外,网上一般建议的是准备好两份自我介绍:一份对 hr 说的,主要讲能突出自己的经历,会的编程技术一语带过;另一份对技术面试官说的,主要讲自己会的技术细节和项目经验。
社招:
面试官,您好!我叫独秀儿。我目前有 1 年半的工作经验,熟练使用 Spring、MyBatis 等框架、了解 Java 底层原理比如 JVM 调优并且有着丰富的分布式开发经验。离开上一家公司是因为我想在技术上得到更多的锻炼。在上一个公司我参与了一个分布式电子交易系统的开发,负责搭建了整个项目的基础架构并且通过分库分表解决了原始数据库以及一些相关表过于庞大的问题,目前这个网站最高支持 10 万人同时访问。工作之余,我利用自己的业余时间写了一个简单的 RPC 框架,这个框架用到了 Netty 进行网络通信, 目前我已经将这个项目开源,在 Github 上收获了 2k 的 Star! 说到业余爱好的话,我比较喜欢通过博客整理分享自己所学知识,现在已经是多个博客平台的认证作者。 生活中我是一个比较积极乐观的人,一般会通过运动打球的方式来放松。我一直都非常想加入贵公司,我觉得贵公司的文化和技术氛围我都非常喜欢,期待能与你共事!
校招:
面试官,您好!我叫秀儿。大学时间我主要利用课外时间学习了 Java 以及 Spring、MyBatis 等框架 。在校期间参与过一个考试系统的开发,这个系统的主要用了 Spring、MyBatis 和 shiro 这三种框架。我在其中主要担任后端开发,主要负责了权限管理功能模块的搭建。另外,我在大学的时候参加过一次软件编程大赛,我和我的团队做的在线订餐系统成功获得了第二名的成绩。我还利用自己的业余时间写了一个简单的 RPC 框架,这个框架用到了 Netty 进行网络通信, 目前我已经将这个项目开源,在 Github 上收获了 2k 的 Star! 说到业余爱好的话,我比较喜欢通过博客整理分享自己所学知识,现在已经是多个博客平台的认证作者。 生活中我是一个比较积极乐观的人,一般会通过运动打球的方式来放松。我一直都非常想加入贵公司,我觉得贵公司的文化和技术氛围我都非常喜欢,期待能与你共事!
06 面试之后复盘很重要
如果失败,不要灰心;如果通过,切勿狂喜。面试和工作实际上是两回事,可能很多面试未通过的人,工作能力比你强的多,反之亦然。我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!