微信公众号原文链接,排版更舒适
作为二本上岸大厂的后端应届生,深知没人带一路摸索的艰辛,想把自己的心路历程与经验心得收获分享给大家。后期大厂面试系列持续更新中…
一、校招经历
本人是来自一个二本院校,也可以说是以前的三本院校的22应届毕业生,直至9月初,崭获vivo、美团、讯飞、网易、绿盟等offer,还有一些中厂到了终面拒啦,后面也许还会冲击阿里(我是做Java开发,美团与阿里相比是最适合我的大厂)。
想必大家和我起初的想法一致,认为进入一线互联网大厂BAT TMD 对于一个三无选手来说是几乎不可能的事(没比赛、没项目、没学历)。没错,刚进大学时的我从未敢奢望进入大厂,想的是毕业能找一个1w出头的工作就很优秀啦。
但是,随着眼界的开阔,知识面的增加,同时身边也有学历差进入一线大厂的案例,便心想:别人能进,为啥我不行。由于和那些985 211名校相比,二本学院相比非常劣势,没有及时有效的消息,没有资源,直到大三上末我连什么是春招什么是秋招都不知道,也不了解大厂面试需要考算法,更不了解牛客,力扣等求职法宝。
虽然前面一直在学习,但是一直学的都是“拧螺丝”,后来发现大厂面试全是“造火箭”。我的秋招之路是从2021年2月开始,1月知道了有春招实习,进大厂要考算法,2月开始看面经整理笔记复习刷题,3、4、5月陆续投简历找实习。
实习战况:
新华智云:一面挂(算法没写出来)
京东健康:四面挂(RPC不了解)
阿里供应链:一面挂(KPI)
阿里菜鸟:二面挂(不明白)
阿里蚂蚁金服:老KPI
京东集团:HR挂
腾讯二战:无OC挂
…
现在想来,实习真的太菜,可能是太多顾虑,后来没办法,去实习僧投了一些中小厂,后来感谢海康威视给了我实习机会,让我有了一定实习经历,期间不断学习,反思实习的不足,查漏补缺,随后随着vivo提前批开启吹响了秋招的号角,由于之前实习先头的大厂,好多都没经验没准备就上,导致损失惨重。
之后秋招我改变策略,先投中小,陆陆续续投了绿盟,北森,讯飞等,然后由于前期的积累,这三个公司一路过关斩将,除了北森与面试官不和其他都拿到了offer,这下气焰高涨,伴随着不断面试,期间也夹杂面了百度,美团,奇安信,网易,米哈游等,除了百度三面挂与北森二面挂(面试不和),其他都过,不是拿了offer就是拒了面试。
然后就没投了,休息哈后续再投。大致我的秋招经历就是这样啦,也许会去美团,或则再看网易,也许后面再去冲击阿里,不过不想表达的是只要方法对,战略做好,二本也能进大厂,我身边也有许多转升本的朋友,几乎人均大厂(阿里sp、腾讯wxg、字节、百度等)。
当时没人给我指明路线,导致走了很多弯路,于是我想把我的心得与收获分享给大家,帮助大家直击大厂,咱非大厂不进好吧!
二、如何冲击大厂
干货满满,作为过路人,深知没人指明一路摸索的艰辛,想把自己的心路历程与经验心得收获分享给大家。
需要的知识点:算法+项目+计算机网络+OS+数据结构+设计模式+Java基础
算法与数据结构
怎样做:算法与数据结构先学下理论概念,学完之后就刷题。
1、相关资料:
理论概念我当初学的是极客时间的《数据结构与算法之美》专栏,讲的很不错。(这一块看你自己,看书或者看视频都行)。
2、刷题顺序
https://github.com/greyireland/algorithm-pattern
刷题网站:力扣(https://leetcode-cn.com/problem-list/2cktkvj/)、牛客【top200+剑指ffer】
注:如果要面试某个大厂,就在这个链接下找对应的题目看看(https://codetop.cc/#/home)
计算机基础
计算机基础校招中只会问:操作系统、计算机网络、数据结构与算法(前面已经讲过了)
- 《MySQL 实战45讲》
- 《Redis核心技术与实战》
- 推荐学习极客时间一些课程很nice,若有需要也可后台联系我发你。
设计模式
http://c.biancheng.net/design_pattern/
Java基础
这里以 Java 为例
JavaSE、Java 并发、JVM、SSM、SpringBoot。
相关书籍:《深入理解Java虚拟机》、《Java并发编程的艺术》、《Java核心技术》
项目
实习过的项目最好,没有就在GitHub上找个,然后看懂它,可以适当变幻场景+增删功能(换汤不换药)
个人经验:目前商城秒杀烂大街存在,推荐《牛客论坛项目》、《RPC项目》、《博客类项目》,这种可以简单模拟高并发缓存之类的,找到适合自己的项目,再针对相应的技术的百度,分析其逻辑,研究对应技术原理,准备好可能问的问题再做相应研究回答,准备好一套说辞。项目没必要做的高大上,业务逻辑说明白即可。
三、常见的面试题
Java基础面试题
1、谈谈面向对象的理解
2、面向对象与面向过程区别
3、JDK与JRE区别
4、值传递与引用传递
5、==与equals()区别
6、为什么重写 equals 时必须重写 hashCode ⽅法
7、深拷贝与浅拷贝
8、Student s = new Student();在内存中做了哪些事情
9、重载和重写(Override)的区别
10、多态理解
11、String为何不可变不可变好处
12、String有几种编码格式?
13、String,StringBuffer和StringBuilder之间的区别是什么?
14、关于String的理解
15、8种基本数据类型与占内存大小
16、float 与 double/short与int
17、Java集合机制与使用场景
18、set与list区别?
19、ArrayList扩容机制
20、ArrayList 与 Vector 区别呢?为什么要⽤Arraylist取代Vector呢
21、ArrayList和LinkedList的区别
22、HashMap 和 Hashtable 的区别
23、HashSet怎样检查重复
24、HashMap与HashSet区别
25、HashMap jdk8与jdk7区别
26、HashMap 的⻓度为什么是2的幂次⽅
27、为什么要把key的哈希码右移16位呢
28、HashMap如何确定元素放在哪个位置呢
29、hashmap的put方法流程
30、HashMap并发线程安全问题?
31、hashmap扩容流程?
32、TreeMap
33、反射原理
34、object的方法有哪些?notify和notifyAll的区别?
35、Java中接口和抽象类的区别?
36、既然有了字节流,为什么还要有字符流
37、throw与throws区别
38、红黑树特性?时间复杂度?
39、JDK与cjlib动态代理
40、异常体系
41、包装类型和基本类型的区别是什么
42、BIO,NIO,AIO 有什么区别
43、谈谈常量池的理解·
44、动态链接与静态链接
45、Java8新特性
1、Lambda 表达式
2、默认方法
3、方法引用
4、Stream API
5、Date Time API
6、Optional 类
Java并发编程
1、多线程理解
2、Java实现同步方式
3、线程的6种状态
4、开启多线程方式
5、几个常用方法(线程同步线程调度相关)
6、Java内存模型(JMM)
7、as-if-serial
8、happens-before
9、synchronized使用范围
10、synchronized底层实现原理
11、对象头、Mark Word、monitor构造
12、synchronized锁升级
13、synchronized与lcok区别
14、synchronized与volatile区别
15、volatile
16、final
17、CAS
18、AQS?
19、ConcurrentHashMap
20、ThreadLocal
21、CopyOnWriteArrayList
22、ReentrantReadWriteLock
23、线程池
24、线程池参数设置原则
25、JUC包下有哪些类
26、JUC同步工具类
MYSQL系列
1、 三大范式?
2、Innodb与MyIsam的区别?
3、自增主键理解?
4、为什么自增主键不连续
5、Innodb为什么推介用自增ID
索引
6、什么是索引
7、索引类型(+覆盖索引+回表+索引下推+联合索引)
8、索引底层数据结构?
9、B树与B+树区别?为何用B+树?
10、索引设计原则(查询快,占用空间少)
11、索引失效场景?
12、如何创建索引
13、非聚簇索引一定会回表查询吗
14、联合索引的建立规则
15、最左匹配原则
16、前缀索引
17、百万级数据如何删除
18、普通索引和唯一索引怎样选
事务&隔离机制&日志&MVCC&锁
19、mysql的架构(一条sql查询语句执行过程)
20、两阶段提交(一条更新语句怎么执行?)
21、mysql的事务原理
21、ACID实现原理
22、幻读问题详解
23、MVCC原理
24、日志机制分析
25、Explain分析
25、脏页?怎样刷新脏页?
26、MYSQL调优篇
- 26.1、一条sql执行很慢的原因?
- 26.2、sql优化(定位低效率sql,慢查询怎样处理)
27、主从同步
28、高可用架构
JVM系列
1、运行时数据区域
2、对象的创建五种方式
3、对象创建过程
4、对象的访问定位
5、对象内存分配
6、对象并发安全问题
7、对象内存布局
8、OOM异常
9、内存泄漏与内存溢出
垃圾收集器内存分配策略
10、判断对象是否是垃圾
11、GC Roots
12、四种引用状态(强软弱虚)
13、方法区的回收
14、垃圾收集算法
15、垃圾收集器
16、G1与CMS区别
类加载机制
17、类加载过程
18、类加载器
19、类加载方式
20、双亲委派模型
21、GC
22、内存分配与回收策略
23、分代垃圾收集器是怎样工作的
24、Full GC触发条件
25、为什么有垃圾收集还会有内存泄漏问题?
26、堆与栈的区别?
27、逃逸分析
28、JVM参数
29、内存持续上升,我该如何处理
30、JVM性能调优与故障处理
31、基本故障处理工具
32、可视化故障处理工具
Redis系列
数据结构
1、Redis7大数据保存形式(数据结构)
2、Redis键值全局组织结构
线程模型
3、线程模型
4、为啥被称为单线程
5、Redis快的原因
6、Redis6.0为什么引入多线程?
持久化策略
7、AOF日志
8、RDB快照
9、缓存穿透/击穿/雪崩
9.1、缓存穿透
9.2、缓存击穿
9.3、缓存雪崩
10、缓存过期淘汰策略
11、内存淘汰策略
12、异步队列
13、延时队列
14、分布式锁
15、缓存一致性问题
其他面试题
15、MySQL ⾥有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?
16、假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
17、为什么选用Redis
18、主从模式(读写分离)
19、主从同步
20、哨兵模式 | 主库挂了怎么办?
计算机网络
1、 网络模型 (说说OSI七层模型,TCP/IP四层模型、五层模型、各层协议以及作用)
2、 http与https的区别?
3、 对称加密算法与非对称加密算法?
4、 http请求与响应报文格式?
5 、http常见状态码以及请求头?
6、 长连接与短链接?
7 、cookie与session?
8、 redis session共享?
9、 禁止cookie怎么办?
10、httpOnly ?
11、http1.1新特新(比较http1.0)?
12、http1.1与http2.0?
13、http常见字段 ?
15、HTTP方法有哪些?哪些是幂等的?Resultful风格方法有哪些?
14、Get与Post区别?
15、https连接过程?
16、ARP作用?
17、DDos攻击?
18、TCP与UDP区别及场景?(首部格式、大小、场景)
19、UDP怎样实现可靠传输?
20、打开一个网址用到的协议?
21、DNS解析过程?
22、拥塞控制?
23、流量控制?
24、浏览器输入URL到页面渲染中间过程?
25、TCP三次握手?
26、如何在Linux查看TCP状态?
27、为什么三次握手?
28、TCP四次挥手?
29、为什么四次挥手?
30、为什么要等2MSL(最长报文连接)才彻底释放连接?为什么要Time_wait状态?
31、Time_wait过多有什么危害?
32、Time_wait状态过多的优化?
33、TCP怎样保证可靠传输的?
34、DNS使用什么协议?
35、半连接队列与全连接队列?
36、SYN攻击?
37、tcp的粘包问题怎么解决?粘包产生的原因?
38、Time_wait什么时候·产生?为何产生?怎样避免?
操作系统
1、什么是操作系统
2、系统调用
用户态切换到内核态的几种方式
3、进程和线程的区别
4、线程切换开销为啥比进程小
4、协程
5、进程5种状态
6、虚拟内存
7、孤儿进程与僵尸进程
8、进程间通信与线程间通信
9、堆栈区别
10、什么情况下Java程序会产生死锁?如何定位、恢复?
11、内存管理机制
12、分页机制与分段机制异同
13、select、poll、epoll
14、进程调度算法
15、页面置换算法
16、IO模型
17、select、poll、epoll
18、Linux常用命令
分布式基础
1、谈谈分布式与微服务理解
1、何为分布式 | 集群 | 负载均衡
2、为何要分布式
3、CAP理论
4、分布式一致性(Paxos 算法和 Raft 算法)
5、分布式事务
2pc
补偿事务(TCC)
本地消息表
MQ事务消息
6、分布式ID
7、RPC原理
8、一致性Hash算法原理
9、dubbo架构与核心角色
10、zookeeper理解
高并发
10、消息队列概述
11、如何保证消息不被重复消费/保证幂等性?
12、RabbitMQ架构设计
13、交换机类型
高可用
14、限流
15、降级
16、熔断
17、集群
微服务
18、Spring Cloud 就是微服务系统架构的一站式解决方案
19、Eureka(AP)
20、网关Zuul
21、Ribbon
22、Open Feign
23、Hystrix之熔断和降级
24、高性能高可用架构设计方案
- 1、性能优化
- 2、高可用
- 3、伸缩性
- 4、可扩展
还有linux、排序算法、设计模式、基本框架等面试题,后续都会在公众号一一分享解析,这些都是实习秋招总结的经典,不像其他帖子到处copy,纯自己有效整理的笔记。
在斩获多个大厂offer的路上总结的点点滴滴。可以毫不夸张的说,你掌握这些知识,中小offer随便拿,大概率能大厂,不过还得看自己领悟与融会贯通。
关注我公众号“小龙coding”,我们一起探讨,帮助修改简历,回答疑问,项目分析,只为帮助迷茫的你高效斩获心仪offer!
后续会陆续更新大厂面经面试题与解析,大厂内推直达部门主管,也有交流群大家一起探讨共同进步。加油噢!
记得点个赞、点在看、转发。