Skip to content

Commit 9afe51d

Browse files
committed
interview
1 parent 93cc798 commit 9afe51d

File tree

12 files changed

+1055
-25
lines changed

12 files changed

+1055
-25
lines changed

README.md

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,25 @@
190190
5. [找出最热门的查询串](https://topjavaer.cn/mass-data/5-find-hot-string.html)
191191
6. [如何找出排名前500的数字](https://topjavaer.cn/mass-data/6-top-500-num.html)
192192

193+
# 大厂面经汇总
194+
195+
- [字节跳动](./interview/1-byte-and-dance.md)
196+
- [腾讯](./interview/2-tencent.md)
197+
- [百度](./interview/3-baidu.md)
198+
- [阿里](./interview/4-ali.md)
199+
- [快手](./interview/5-kuaishou.md)
200+
- [美团](./interview/6-meituan.md)
201+
- [shopee](./interview/7-shopee.md)
202+
- [京东](./interview/8-jingdong.md)
203+
- [华为](./interview/9-huawei.md)
204+
- [网易](./interview/10-netease.md)
205+
206+
# 其他优质文章
207+
208+
[优质文章汇总,持续更新中~](https://topjavaer.cn/advance/excellent-article/)
209+
210+
![](http://img.dabin-coder.cn/image/image-20221030172546796.png)
211+
193212
# 工具
194213

195214
[Git 超详细总结!](工具/git-overview.md)(推荐 :+1:)
@@ -200,31 +219,6 @@
200219

201220
[Maven 基础总结!](tools/maven-overview.md)
202221

203-
# 大厂面试系列
204-
205-
1. [字节跳动一面面经](https://mp.weixin.qq.com/s/RH-SunzjqUTTx8HWaCmCcw)
206-
2. [别再问我Java List八股文了!](https://mp.weixin.qq.com/s/doyy_GYGWoH_YHgyMijStA)
207-
3. [腾讯面试,你真的懂HTTP吗?](https://mp.weixin.qq.com/s/kC7XRBfO7Z5hZcX6Dz2viw)
208-
4. [美团二面面经,最后竟然有惊喜?](https://mp.weixin.qq.com/s/3HvOtTU29HGALqmeeOZNWw)
209-
5. [Java多线程,被面试官难倒了!](https://mp.weixin.qq.com/s/tv8pOLaS6hpwgbKOB9w0Zw)
210-
6. [京东二面,Redis为什么这么快?](https://mp.weixin.qq.com/s/S3vN5T9HpziRd2s5ysLaSg)
211-
7. [MySQL索引,给我整不会了!](https://mp.weixin.qq.com/s/Q5CrDlNInpnckJaBQSrA7w)
212-
8. [别再问我Java虚拟机八股文了!](https://mp.weixin.qq.com/s/npo5-VqQt5sqZiSwPv6LVw)
213-
9. [计算机网络,问傻了!](https://mp.weixin.qq.com/s/WXcMLa_tdxpRLhO4U8LHIQ)
214-
10. [Spring这几道题你会吗?](https://mp.weixin.qq.com/s/DtgYRFfOQxQdtQosCU-6aw)
215-
11. [面向对象编程?](https://mp.weixin.qq.com/s/M8jDnLat61YAbM1-jIhJIA)
216-
12. [Java内功深厚?](https://mp.weixin.qq.com/s/v_kWSHX9GMS_aoqfwUMKsg)
217-
13. [面试初级Java开发,面试官问我MySQL架构?](https://mp.weixin.qq.com/s/JvDZCk4IecmaEYfFsRhpjQ)
218-
14. [手写红黑树?](https://mp.weixin.qq.com/s/yznh_IfMg4hWqU62U-t9GQ)
219-
15. [面完阿里,直接入职!](https://mp.weixin.qq.com/s/49QJ1FzaGTe-_54PT8_8jA)
220-
16. [华为面经](https://mp.weixin.qq.com/s/KmjwoG7pNvAHiX1UNnef6g)
221-
222-
# 其他优质文章
223-
224-
[优质文章汇总,持续更新中~](https://topjavaer.cn/advance/excellent-article/)
225-
226-
![](http://img.dabin-coder.cn/image/image-20221030172546796.png)
227-
228222
# 交流
229223

230224
如果想进**技术、面试交流群**,可以扫描下方二维码加我微信,**备注加群**,我拉你进群,群里有BAT大佬,互相学习~

interview/1-byte-and-dance.md

Lines changed: 316 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,316 @@
1+
# 字节跳动
2+
3+
## 面经1
4+
5+
一面:
6+
7+
1.IM系统用户登录怎么实现的?
8+
9+
2.登录状态是怎么保存的?session是怎么获取的?sessionid是怎么识别的?整个流程是什么样的?有没有考虑分布式session?
10+
11+
3.Redis的数据类型
12+
13+
4.Redis数据类型的底层数据结构
14+
15+
5.三次握手、四次挥手
16+
17+
6.Redis持久化机制
18+
19+
7.MySQL的InnoDB索引数据结构
20+
21+
8.哪些SQL的关键字会让索引失效
22+
23+
9.队列、栈、数组、链表
24+
25+
10.算法题:leetcode 92题
26+
27+
二面:
28+
29+
1.讲讲爬虫的构成
30+
31+
2.爬虫抓到的数据不清洗吗?不去重吗?
32+
33+
3.对爬虫有什么更多的了解吗?
34+
35+
4.Linux进程间通信机制
36+
37+
5.进程和线程的区别
38+
39+
6.线程私有的数据有哪些?(不是Java线程)
40+
41+
7.讲一下堆排序,每次调整的时间复杂度?堆排序是稳定的吗?(一开始说错了,应该是不稳定的,后面面试官问稳定的定义是什么)
42+
43+
8.哈希表的原理,怎么减小哈希表的冲突,怎么保证哈希表的并行读写
44+
45+
9.Kafka用过吗?说说Kafka的原理?怎么保证Kafka的高可用?Kafka怎么保证消息有序?
46+
47+
10.项目里的set实现点赞,zset实现关注,为什么?
48+
49+
11.zset底层实现?说一下跳表?节点的高度是多少?怎么决定节点的高度?
50+
51+
12.https了解吗?
52+
53+
13.中间人攻击知道吗?怎么做https的抓包?https怎么篡改?
54+
55+
14.虚拟地址到物理地址的映射过程
56+
57+
15.算法题:给一个数组,建一颗最小高度的二叉树(递归和非递归)
58+
59+
三面:
60+
61+
1.介绍一下做过的项目,哪些挑战性比较大,比较有难度的
62+
63+
2.IM项目怎么用Netty的,为什么要用Netty,长连接交互是怎样的
64+
65+
3.消息怎么存储,怎么发送,怎么知道消息已读和未读的
66+
67+
4.读了5条消息、又来5条消息,你是怎么去更新的,你的消息是幂等的吗?
68+
69+
5.项目里怎么用ES的,ES怎么支持搜索的
70+
71+
6.技术论坛网站的评论是怎么存储的
72+
73+
7.查询评论是在DB里扫表查询吗?怎么展示所有的评论?性能如何?想要查询更快可以做哪些优化?
74+
75+
8.结合缓存和DB的时候会出现哪些问题?要怎么解决?
76+
77+
9.快排了解吗?介绍一下快排?时间复杂度是多少?为什么会退化成O(n^2)?单链表可以做快排吗?快排最核心的逻辑是什么?写一下单链表快排
78+
79+
## 面经2
80+
81+
一年经验,Java开发
82+
83+
1. 自我介绍;
84+
2. 项目介绍;(延申较浅)
85+
3. 手撕算法:NC95 最长连续子序列
86+
4. 手撕算法:NC91 最长递增子序列
87+
5. 线程和进程的区别?怎么创建线程?有哪些状态?有什么区别?
88+
6. Java1.8了解哪些新特性?重点讲讲HashMap和CurrentHashMap。
89+
7. OSI七层协议和TCP/IP五层协议有什么区别?TCP/UDP在哪一层?对TCP了解多少?
90+
8. 你还有什么要问的吗?
91+
92+
总结:开幕雷击,字节对算法还是挺看重的。
93+
94+
## 面经3
95+
96+
字节电商后端
97+
98+
- 进程和线程区别
99+
- 为什么进程切换开销比线程切换开销大?
100+
- 你知道逻辑地址和物理地址么?
101+
- sql题(表T (id,name,salary,city)用SQL实现找到同时符合城市平均工资大于5000,单人工资大于10000的人的名字)
102+
- wifi属于OSI哪一层
103+
- 三次握手四次挥手相关(细节,以及为什么三次,为什么四次)
104+
- hashmap的底层原理
105+
- 红黑树和二叉搜索树,二叉树之间的区别
106+
- 为什么hashmap不直接用红黑树
107+
108+
算法题
109+
110+
1. 求从一个树的左边的叶子节点到一个树右边的叶子节点的最短路径)
111+
112+
2. 最长回文子串
113+
3. 给定一个数N,求(1-n)所有的可能子序列)比如给个1 返回1 给个2 返回1,2,1 2
114+
115+
## 面经4
116+
117+
1. 自我介绍
118+
2. 项目
119+
3. volatile原理和作用
120+
4. 什么是指令重排序,举个例子
121+
5. AQS原理
122+
6. JVM内存模型
123+
7. 类加载过程
124+
8. 双亲委派机制
125+
9. 介绍代理模式
126+
10. redis数据结构
127+
11. HTTP状态码,header
128+
12. MVCC原理
129+
13. 算法:
130+
131+
- 买股票无限次
132+
- 买股票只买一次
133+
- 买股票有手续费
134+
- 买股票最多买两次
135+
136+
## 面经5
137+
138+
1. 自我介绍
139+
2. 业务部分:
140+
141+
- 2.1 堆和栈的区别
142+
- 2.2 调用一个函数在堆中的过程
143+
- 2.3 密码学 中间人攻击、RSA、DSA密码的差别、加密过程,私钥加密公钥加密,数字签名的过程(跟本人网络空间安全背景有关)
144+
- 2.4 彩虹表、 kerberos、ECC(椭圆曲线加密)
145+
146+
3. 算法题:
147+
148+
4. 一个无序数组,求其topK
149+
150+
5. 时段统计。动态规划。
151+
152+
## 面经6
153+
154+
1. 自我介绍
155+
2. 实习介绍:你在腾讯干了啥
156+
3. 实习项目介绍:这个项目(深挖)
157+
4. 项目为啥立项,你做了什么模块
158+
5. 你的日志模块是怎么设计的,怎么开发的
159+
6. 你的token怎么做的,怎么保证唯一
160+
7. 你开发的业务模块举个例子(给他举了),你是怎么设计数据表的,具体用了哪些中间件
161+
8. mysql中inoodb的索引有哪些种类
162+
9. B+树索引具体是怎么实现的
163+
10. B树与B+树的区别
164+
11. 为什么B+树的中间节点不储存数据?
165+
12. 给一个索引,在有的查询过程中他没有走索引查询,说说你能想到的原因
166+
13. 红黑树了解过么?
167+
14. 用过redis么?(妈耶能别聊数据库了么)
168+
15. 你提到了kafka是吧,来聊一哈
169+
16. 聊一下你对git的理解
170+
17. git rebase与git merge的区别
171+
18. 聊一下你对工作流的理解
172+
173+
手撕算法:
174+
175+
给四个整数,判断是否只通过四则运算加()优先级能否运算出24
176+
177+
## 面经7
178+
179+
一面:
180+
181+
1. 自我介绍
182+
2. JAVA SDK起到的作用
183+
3. 项目
184+
4. 数据流(项目)
185+
5. 排序(介绍下你知道的排序和复杂度)
186+
6. Arrays.sort底层的排序算法(有三种策略)
187+
7. 堆排序基本思路
188+
8. linux,操作系统的开机流程(这题我不会。)
189+
9. 进程和线程的区别
190+
10. 进程切换会发生什么
191+
11. 进程调度算法有哪些
192+
12. TCP、udp区别
193+
13. java锁,关键字区别
194+
14. 公平锁、非公平锁解释一下
195+
196+
二面:
197+
198+
1. 算法题:由前序遍历中序遍历重建子树;
199+
2. 为什么静态类中不能使用非静态类(从类加载过程回答);
200+
3. java类加载过程;
201+
3.1. 加载阶段中,为什么要有自定义的类加载器;
202+
3.2. 双亲委派原则的机制;
203+
4. HashMap数据结构;
204+
4.1. 为什么小于6是链表,大于8变成红黑树;
205+
4.2. HashMap扩容机制;
206+
4.3. HashMap是否线程安全,例子;
207+
4.4. ConcurrentHashMap和HashTable的区别;
208+
4.5. ConcurrentHashMap如何保证高效,为什么是线程安全,为什么比HashTable优秀,分段锁机制;
209+
4.6. CAS能保证线程安全吗(我回答能,面试官说不能。。估计想考ABA问题),volatile关键字能保证线程安全吗;
210+
5. 随机数求根,比如根号二的值。(二分查询)
211+
6. 有n个筐,筐固定,每个筐内有不同数目的苹果,移动苹果,使每个筐苹果平均(移动的代价:1~2算1步,1~3算2步)使步数最小;
212+
213+
三面:
214+
215+
1. 自我介绍
216+
2. 解决什么问题,做了些什么?(项目)
217+
3. 多个接口,有失败怎么办(项目)
218+
4. redis分布式锁怎么实现
219+
5. 时间过期怎么办
220+
6. ArrayList怎么扩容,时间复杂度O(n)?插尾部O(1),平均是多少,答案O(2)需要考虑扩容,小伙伴们可以自己推一下。
221+
7. HashMap底层原理
222+
8. mysql索引什么原理、B+树
223+
9. mysql和redis区别(讲一下各自优缺点)
224+
10. 为什么不用redis存数据?
225+
11. 算法:LRU缓存(),先讲一下再写
226+
227+
## 面经8
228+
229+
抖音电商
230+
231+
1. 自我介绍
232+
2. 讲一下HashMap的put方法
233+
3. 讲一下HashMap的扩容过程
234+
4. 讲一下你自定义协议怎么解决粘包问题的?
235+
5. 算法题:LeetCode 二叉树根节点到子节点的路径和
236+
6. mysql的索引结构
237+
7. 为什么用B+树呢?
238+
8. having的作用
239+
9. 聚簇索引、非聚簇索引
240+
10. 聚簇索引比非聚簇索引的优点
241+
11. mysql的四个隔离级别,应用场景
242+
12. 如何在可重复读隔离级别解决幻读问题
243+
13. dubbo的负载均衡策略
244+
14. java的动态代理
245+
15. Spring哪里用到了动态代理?
246+
16. CGlib动态代理说一下
247+
17. MQ如何保证消息不会丢失
248+
249+
## 面经9
250+
251+
一面
252+
253+
- 怎么理解微服务
254+
- 微服务的缺点
255+
- 微服务之间怎么做负载均衡
256+
- Oauth2基本流程、原理
257+
- 登录模块是怎么做的
258+
- cookie和session的区别
259+
- 购物车为什么用Redis存,是永久存储吗
260+
- 为什么购物车多读多写
261+
- Redis怎样清除过期key,有哪些策略
262+
- lru是怎样的过程
263+
- Redis字典底层怎么实现的
264+
- hashtable是怎样实现的
265+
- ziplist怎样实现的
266+
- 普通的哈希表怎样实现的
267+
- 哈希表怎么扩容
268+
- 使用MQ的好处
269+
- MQ解耦和微服务解耦的区别
270+
- 算法:最长回文子串
271+
- https建立连接的过程(SSL/TLS协商的过程)
272+
- 对称加密和非对称加密的优缺点
273+
- 为什么要区分内核态和用户态
274+
- 什么时候从用户态切换到内核态
275+
- 你编程的情况下,系统调用什么时候会发生
276+
反问:业务,开发语言,表现,对应届生的要求(重点是基础和算法)
277+
面试体验不错,但是项目挖的有点深
278+
279+
2面
280+
281+
- 手写单例模式
282+
- volatile什么作用
283+
- 多线程的几种实现方式
284+
- 四种方式的区别
285+
- 锁用过哪些
286+
- 排它锁什么意思
287+
- 自旋锁什么意思
288+
- CAS相关
289+
- MySQL可以不指定主键建表吗,背后的逻辑是什么
290+
- 聚簇索引和其他索引有什么区别
291+
- 建唯一索引,插入数据时是怎么处理的
292+
- 重复插入会报错,是怎么处理的
293+
- 不同事物隔离级别的实现
294+
- 以前没有实习过吗
295+
- lc40 组合总和II
296+
反问:部门怎样培养新人,刚进来做什么(学基础,语言和中间件,做demo),大概多久做需求(1周到1个月不等,看学习情况),框架和中间件以开源的为主还是以自研的为主(自研的)
297+
298+
3面
299+
300+
- 有在实习吗
301+
- 面试通过后可以实习吗
302+
- 做项目的过程中遇到过什么问题
303+
- 内存泄露具体发生在哪
304+
- 什么情况下会出现多线程访问
305+
- 缓存穿透,怎么解决 (好像一紧张说成缓存击穿了,面试复盘的时候才发现。。。)
306+
- 缓存雪崩,怎么解决
307+
- 缓存与数据库数据一致性
308+
- 超卖问题怎么解决的
309+
- 集群环境下,Redis内存里的数据怎么保证一致
310+
- 算法:给定一个字符数组,和一个字符串,在字符串里找到任意一个完全由字符数组组成的子串,字符顺序无所谓(滑动窗口)
311+
312+
313+
314+
**最后给大家分享一份精心整理的大厂高频面试题PDF,需要的小伙伴可以自行下载:**
315+
316+
[大厂面试手册](http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=2247485445&idx=1&sn=1c6e224b9bb3da457f5ee03894493dbc&chksm=ce98f543f9ef7c55325e3bf336607a370935a6c78dbb68cf86e59f5d68f4c51d175365a189f8#rd)

0 commit comments

Comments
 (0)