我自己的22届春招实习算是告一段落,给自己做个总结,也给大家分享一下金三银四的一些心得。
一、首先介绍一下自己的情况:
- 上海某211渣硕
- 2022年毕业
- 电子信息专硕(两年制),今年研一
- java后端开发(半路出家)
暑期大厂实习offer:
- 阿里巴巴—蚂蚁金服—支付宝技术部—java
- 腾讯—PCG—看点搜索中心—c++
- 字节跳动—电商业务->转到西瓜视频—go
- 美团—美团平台—服务体验部—java
- 携程—国际化旅游业务—java
…
最终选择了去阿里实习,有以下几个原因:
-
超级大厂,java体系成熟,技术沉淀深
-
实习不想花太多的时间花在转语言上,继续升华java
-
阿里转正留用机会大,秋招竞争力大
-
在上海读书,想在上海实习,感受一下坐拥外滩的场景
二、学习经验
首先我总结了一下java面试可能会从哪些方面考察,针对每一块,我不会涉及到一些具体的技术原理,而是去分享一下我自己对他们的看法,也只代表我个人的理解和看法,欢迎各位大佬共鸣或者给我建议!
我会从以下几个方面去分享,每一个小类都会有对应的面试题目汇总,可以在牛客网、github等自己搜索,也可以和我私信!给你分享我的资料!之后也想专门抽空出一期我学习的资料!这里面就不做介绍了!
- 计算机基础:计算机网络、操作系统、数据结构与算法、数据库
- java:语言基础、集合源码、多线程、JVM
- 框架类:开发框架、中间件
- 分布式类:分布式组件、分布式思想
- 项目
2.1 计算机基础
首先,我自己本科是电气工程专业,所以没有学过计算机网络、操作系统和数据库这类的专业课,应该也和大部分同学一样。但是计算机基础,是每个大厂必问的问题,绝对不能忽视。
计算机网络、操作系统
强烈建议:
- 面试之前通过面经学习,面经上都是比较重要的知识点,这部分没有太多的实战技巧,多记多背,还有一点大家容易忽略的一点,要多说!把你知道的知识点用嘴巴说出来,很多同学脑子里有货,说不出来,组织不了语言,也是很致命的一点!
- 在面试的途中,遇到不会的问题即时记录,学习并且消化!你的能力不是说现在70分,面完10家公司还是70分,**在不断面试的过程中,反复积累反复消化!**就像西天取经越来越厉害。
数据结构和算法
强烈建议:
-
刷LeetCode,这个对于找工作来说,太重要了,这里直接讲我刷leetcode的方法,我大概刷了320多道题,一共刷过3个来回。
- 入门:我最开始刷遇到的问题和大家一样,在不了解算法和数据结构的情况下,很难想出这一题的思路,那么很简单,利用答案学习,拿到题目就看答案,对着答案写代码。
- 初级:当我看了一定数量的题目的时候(大概前100题),基本的算法,数据结构都有所了解,接下来就遇到一个问题,那就是拿到题,知道大概的思路,写不出对应的代码,我的建议是,自己先写,不管是api忘记了还是怎么样,先把你想到的东西都写出来,然后看答案,再自己改自己的代码。
- 中级:当你刷的题数上来的时候(大概200题),你已经大概有点算法感觉了,现在你要做的就是回头看,不用去写新的代码,因为信心很重要,再去刷前面的代码,这时候要多写多练。不用看别人刷了多少题,你把一个题刷透彻才有实质性的提高,找工作够用了。
- 高级-地狱:等待各路大神补充
-
笔试:笔试的时候是ACM模式,详情可以参考牛客网,一定要提前去准备(会写输出输出、导包,自定义数据结构)
数据库(深入)
数据库我觉得一定是一个作为我们应届生面试值得深入的地方
除了传统的CRUD之外,我们需要了解一些数据库的底层知识(mysql)
- InnoDB存储引擎架构设计
- 数据库内存区域、磁盘区域:redo log、undo log、buffer pool、
- MVCC、隔离级别、事务控制
- 索引(底层)
- explain执行计划
- …
这个一定是你能够和面试官自信的侃侃而谈的一个重要的点。
2.2 java
语言基础、集合源码、多线程
这三个部分,大家在学习java的这条路线上面都有过学习,我给大家的建议就是,看面经,因为这个考来考去也就是那么多,万变不离其宗。
这里着重说一下,集合类比如说HashMap等一定要自己看源码,自己看源码,网上博客很多,结合博客看源码,印象会更深刻。
JVM(深入)
jvm和mysql应该是我本人作为面试的时候最能谈的两块,也推荐大家去深入了解哈哈哈~也可以私信和我交流
jvm是java大厂都必问的知识点,包括一些其他非java厂也都会看你的知识掌握是否牢固(腾讯、字节都问过我jvm相关问题)
JVM的话无非就是以下几个点,内容不算很多:
- JVM基本工作原理(GC、GC原理、内存区域、核心参数等)
- 各种垃圾回收器和对应的垃圾回收算法
- JVM内存分配思想(不一定有实际生产经验,一定要有想过)
- OOM内存溢出问题分析(不一定有实际生产经验,一定要有想过)
- …
2.3 框架类
开发框架
**需要掌握:**ssm、springboot、Mybatis等
开发框架其实在面试中被问的并不是很多,因为大厂里面基本上都是自己的自研框架,基本上被问到也就是面经上常见那些问题,问题很少。比较容易准备。
中间件
面试中间件的时候,据我了解,可能你简历上面没有写相关的东西,问的不是很多,但是只要你能够深入了解某一个中间件,它的设计思路、架构原理等等,一定是一个加分项。楼主学习中间件的路线大概如下:
- redis:基本使用实战、分布式环境、集群
- dubbo、zookeeper:深入一个rpc框架也是不错的加分项,学有余力的:可以学习netty手写一个简易版dubbo,也是你面试的一个谈资
- mq:rocketMQ、kafka、rabbitMQ,了解性能优势,可以选一个深入~
- netty:网络编程加分项,也能够促进你对计算机网络的理解,可以自己搭建rpc框架
2.4 分布式类
微服务和分布式流行,大厂都会使用到,咱们也有必要去了解学习,面试中或多或少会问到,我把他分为两类,一个是分布式思想,一个是分布式组件
分布式思想:
由于我们大部分没有分布式高并发等实战经验,所以能够学习这方面的思想,是很重要的一点,大部分面试官不会在这一点去为难我们,这个可以去找好的博文去进行学习和阅读!
分布式组件:
我学习的分布式组件主要有:SpringCloud、SpringCloudAlibaba
建议大家可以利用这个去自己搭一个简单的服务提供与消费的网关,加上一些熔断限流等功能。学习如何使用~
2.5 项目
很多同学在为没有项目而苦恼,你也知道可以通过在b站上找一些优质的项目教程,跟着完整的做一遍。但是你要足够熟悉!
接下来我还给大家分享一个小经验,仔细想想我们项目是为了什么,就是为了面试能说,能够展示我们会什么就行了呀,所以我觉得大家不一定可以做一个完整的项目,可以找某一个模块去深入。这里给大家推荐几个小模块,针对某个模块去深入了解,在这一个模块跟面试官讲半个小时他不香吗?
- 认证授权
- 微服务网关
- redis分布式锁
- …
相信你也能够有不错的收益!
三、面试经验
首先我给大家介绍一下据我了解各大厂的笔试、面试平台以及一些面试流程~
3.1 大厂面试流程
阿里(3+1)
流程:内推直接进部门、投进池子等捞、面试流程会到每一个具体面试官那边,面试官和你沟通面试时间(我因为面试官休假流程卡了15天!!!)
笔试:牛客网笔试(ACM模式)、阿里自研平台(记事本形式)
阿里应该比较注重笔试、一定努力不要得0分,不然会加试
面试:面试官开心就好,电话面试,视频面试面试官自己选,电话面居多,重视hr面
腾讯(2~3+1)
流程:内推基本上用处不大,投具体的事业群,否则进池子里等捞,挂了继续会池子里等捞
笔试:实习生好像不用笔试(虽然会发笔试连接,但是我没做,一样oc)
面试:腾讯自研平台、腾讯会议
字节(3+1)
流程:内推或者官网投递,会有面试记录,好像审批会看以前面试记录
笔试:牛客网笔试
面试:牛客网面试(每一次面试都要撕算法)
美团(2+1)
流程:内推进部门或者进池子等捞
笔试:牛客网笔试
面试:牛客网面试
其他大厂公司我没有面试经验!~…欢迎各位补充和纠正。
3.2 面试过程
技术面
-
请自我介绍
自我介绍环节言简意赅,表现的大方得体,哪怕面试官给你摆个臭脸,你也要笑着对他(如果你想拿offer的话)
-
项目轰炸
项目轰炸的话,一般是针对你会的东西去问你,简历上或者自我介绍的东西去进行询问,多准备一点自己遇到的问题,以及怎么解决的,然后学习到了哪些经验什么的。
-
面经八股文轰炸(可深入)
其实我们准备面试,更多的时间也就花在这里了,这是考察你的专业技能的时候,努力不会白费。
-
反问
在这里我不说太多怎么去反问的话题,我给大家分享一个我反问一个问题给阿里面试官,他回答的一段话:
我问的是:您好请问我可以提前去学习,准备些什么技能呢~?
面试官回答:我们不看中你是不是会特别多的东西,我们校招过来更重要看中你的学习能力,如果我们要招一个什么都会的人,我们直接社招就行了。(虽然真假参半,但是有一定的道理)
3.3 信心
一定要多面试,面得多成长也快
个人觉得有一个这样的定律:
你的能力决定的不是面试成功的是与否,而是面试的成功率,能力越高,成功率越大,能力相对较低,只是成功率低,并不是没有机会,面试也看眼缘和你整个人的气质,相信自己。
多面试,不要放弃。
在关键点下力,关键技能,关键时机,在关键的时机对关键技能下力,取得意想不到的效果!
希望秋招能够再接再厉!拿到自己满意的结果!