一个普通本科生的2021秋招面经
大家好,我是来自一个普通院校的本科生。在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
大家一起快乐学Java 文章被收录于专栏
本人2021届应届本科生毕业于浙江海洋大学,校招拿到BAT等大厂offer,本专栏的目的是分享一些校招面试过程中的一些重要知识点,以及当前比较流行的技术底层原理和一些面试问的较多的知识点的剖析。后续也会分享一些在阿里工作过程中遇到的一些问题,把问题抽象出来给出我的思路,大家可以一起来思考,互相促进,互相学习。