大家好,我是来自一个普通院校的本科生。在2020年经历了完整的春招和秋招的过程,在这个最艰难的2020年,也是侥幸拿到几个offer,非常感谢牛客这个平台的很多内推机会以及其他牛友的面经帮助。我的秋招差不多也要结束了,总结一下我这一年的历程,给明年毕业的同学和没有上岸的同学一点学习上面的帮助吧。
首先是春招,我认为春招是很重要的。如果春招能找到一家大厂的实习,对秋招是很有帮助的,这一点我深有体会。我在春招期间花了几个月时间复习了一下我的java,操作系统,计算机网络,数据库,数据结构和算法。最后通过了阿里巴巴的面试,拿到了实习offer。然后我在秋招过程中无论投递什么公司,基本都有面试机会,由此可见春招的重要性。建议在明年春招前几个月,2022届的同学可以准备起来了,如果是java方向的同学,建议开始深度挖掘java语言的特效和各种API的底层实现,也可以扩展一下开源框架的源码理解,这是一个很大的加分项,如果基础扎实又会分布式,春招基本就没问题了。
春招的面经
这是我在2020年面试春招的经历,有需要的可以自取
接下来是最最最重要的秋招了,相比于秋招,企业的规模和岗位更多,机会更多,竞争对手也更多。那要如何在这么多竞争对手中脱颖而出,要怎么做呢?个人愚见,我觉得企业筛选简历的标准按重要程度排名是 学历 + 实习 + 竞赛 + 项目,那如果有一个好学历(985/211),那没实习只要有点竞赛和项目都会有面试机会。但如果学历不好也没实习,那挂的概率就很大了,所以这就体现了春招的重要性。只要春招玩的好,秋招基本就稳了。建议普通学校的学生在春招找一份实习,秋招靠着这份实习当敲门砖获得更多的面试机会。
放一下我的秋招进度
这是我在2020年面试秋招的时间线,有需要可以自取
总结一下我认为秋招的一些高频面试考点!!!重要!!!!!
为了不和我的春招面经帖重复,我把和春招不一样的面试内容写在下面
一.Java语言
1.HashMap底层原理(源码必看!!!必看!!!必看!!!)扩展:jdk1.7和1.8有什么改进?为什么长度大于8转换成红黑树?这个8怎么来的?
2.ArrayList底层原理,ArrayList和Vector的区别,LinkedList和ArrayList的区别
3.String,StringBuffer,StringBuilder的区别 扩展:String不可变有什么好处?
4.迭代器是做什么的?迭代器的fail-fast机制了解吗?主要为了解决什么问题?
8.ConcurrentHashMap的底层数据结构(要掌握put,get的全过程,如果能对rehash有深入的理解就更好了)扩展:为什么1.8放弃了分段锁,分段锁的优缺点以及1.8的改进
9.synchronized和lock分别在什么情况下使用,使用的理由?扩展:synchronized锁升级过程
10.java中各种锁的实现和使用场景
11.面向对象的七个基本原则,能说出分别的目的吗?扩展:结合Spring框架谈面向对象设计的原则
12.java中的一些类的设计是如何体现设计模式的
13.什么是CAS算法?CAS底层做了什么?CAS可能产生什么问题?
14.知道AQS框架吗?说一下AQS的底层原理吧(重点掌握AQS对于线程排队的过程和存储线程的数据结构)
15.如果一个线程要在其他几个线程运行完之后运行,有什么办法?(CountDownLatch或Phaser,重点掌握底层数据结构)
16.多线程在运行过程中抛出异常怎么捕获?(Future或回调函数)
17.如果想把两个线程的结果拿到进行下一步操作怎么做(可以采用CompletableFuture,1.8的新API,可以看下如何使用)
18.年轻代出现OOM怎么处理?老年代出现OOM怎么处理?方法区出现OOM怎么处理?本地方法栈出现OOM怎么处理?(反向思考,如何让这些分区OOM)扩展:线上OOM怎么排查问题
19.ThreadLocal可以解决什么问题?具体的应用场景?(可以用ThreadLocal存储当前线程的数据库连接,分布式链路追踪中可以存放当前线程对应的链路信息)
20.ReenTrantLock中的condition有什么作用?condition的await和signal和Object的wait和notify有什么区别?
21.volatile主要解决了什么问题?(总线嗅探,高速缓存一致性协议,防止指令冲排序)扩展:指令重排序带来的问题
22.类的加载过程?如何保证我的类被指定的类加载器加载?相同的类被不同的类加载器加载了,这两个类相同吗?
23.jvm的内存模型和各种垃圾回收算法和垃圾回收器(重点掌握CMS和G1垃圾收集器)
24.jvm内存模型 扩展:各个jdk版本的内存模型有什么变化
25.jvm的类加载机制,反射的原理以及反射的应用 扩展:如何提升反射的性能
26.java的四种引用类型?jvm如何判断这个对象可回收?finalize方法的作用?
二.计算机网络
1.三次握手和四次挥手的过程?每次发送的包的内容,客户端和服务端的状态?
2.ICMP协议的应用?(ping命令和traceRoute等)
3.TCP如何保证可靠性?(校验和,分片,超时重传,ARQ协议,滑动窗口等等)
4.如何实现UDP的可靠传输?(考虑在应用层实现,可以了解下http3.0协议)
5.https的请求过程?(如何建立ssl)
6.一次RPC调用的整个链路?(考虑三次握手负载均衡等)
7.http + restful 和 RPC的区别?各自适用的场景?
8.DNS协议用到了什么传输层协议?(一台新电脑如何获取到有效的网关地址)
9.在浏览器中输入一个url,敲下回车之后发生的事情(考虑DNS解析,负载均衡,建立连接等等)
10.服务端出现大量timewait是什么原因导致的?(具体的解决方案)
11.http的报文结构?TCP的?IP的?
12.http协议的发展历程(1.0,1.1,2.0,3.0)
三.操作系统
1.虚拟内存解决了什么问题?(分页,分段,段页的区别)
2.进程间通信的七种方式(实现原理,具体应用场景)
3.死锁产生的必要条件?如何解决死锁的问题?
4.linux的各种IO模型?(重点掌握epoll,底层结构红黑树 + 链表,能够说出为什么在管理数百万连接的过程效率还好,以及ET模式和LT模式)
5.可以学习一下shell编程
6.内核态和用户态的区别以及转换?(什么情况会转化:中断,各种中断进行分类)
7.linux底层的零拷贝技术(经历4次 -》3次 -》2次拷贝的优化历程)
8.操作系统大内核和微内核之间的区别以及各自的好处?
9.僵尸进程和孤儿进程产生的原因以及解决方式?
10.操作系统的各自调度方式
四.数据库
1.数据库的四个特性?四个隔离机制?
2.数据库索引数据结构?各种索引失效的情况?最左匹配原则
3.MySQL主从复制的原理?
4.MySQL的如何保证事务
5.MVCC底层实现
6.MySQL和Redis的区别(各自使用的场景以及原因)
7.Innodb和MyISAM的区别
8.redis的数据结构?
9.redis为什么快?(io模型 + 基于内存 + 线程模型)
10.一条sql语句的查询流程
五.Spring以及分布式中间件的知识
1.Spring和Springboot的区别
2.IOC和AOP的理解
3.AOP的底层实现
4.Spring中事务传播的各种情况
5.Spring如何解决循环依赖
6.SpringCloud的各种组建
7.Spring启动流程
8.SpringBoot的SPI机制是如何实现的
9.Springboot启动流程
10.SpringMVC的工作流程
11.负载均衡如何实现(考虑非网关的方式实现)
12.服务注册中心的工作流程
分享给大家比较全的资料,我感觉传来传去的大家应该都有了,没有的可以学习下:链接:https://pan.baidu.com/s/1Zy258J9iN2EyeGDlVqwCIA 密码:gq1s
全部评论
(82) 回帖