Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ea6985e

Browse files
committed
快手面经整理
1 parent a3d788a commit ea6985e

File tree

8 files changed

+624
-74
lines changed

8 files changed

+624
-74
lines changed

‎docs/README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ heroText: 程序员大彬
77
tagline: 优质的编程学习网站
88
actions:
99
- text: 开始阅读
10-
link: /java/java-basic.md
10+
link: /java/java-basic.html
1111
type: primary
1212
- text: 学习圈子💡
13-
link: /zsxq/introduce.md
13+
link: /zsxq/introduce.html
1414
type: primary
1515
features:
1616
- title: 经典计算机书籍

‎docs/campus-recruit/interview/5-kuaishou.md‎

Lines changed: 304 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,309 @@
11
# 快手
22

3-
## 一面
4-
5-
1. 简单介绍项目
6-
2. 知道哪些数据结构以及他们的特点
7-
3. 链表增删快,那如何提高其查询效率,有没有什么想法?
8-
4. B+树了解吗?B+树如何范围查询?B+树退化的极端情况是什么?
9-
5. 跳表了解吗?
10-
6. 大顶堆、小顶堆了解吗?
11-
7. 实现长地址请求到服务端,然后服务端重定向短地址给客户端,如何实现长短地址的互相映射?
12-
8. 那我现在有10份数据,有1000个线程来争抢,你要怎么处理?
13-
9. 分布式是什么?为什么要分布式?分布式又会有哪些问题?分布式系统是如何实现事物的?
14-
10. Redis集群了解吗?如何处理宕机的情况?Redis的同步策略?
15-
11. LRU算法了解吗?你会如何实现它?这个算法可以应用在哪些场景下?
16-
12. TCP为什么是三次握手?两次行不行?多次行不行?
17-
13. TCP的安全性是如何实现的?两台服务器之间可以同时建立多条TCP链接吗?怎么实现的?
18-
14. 客服端输入一个网址后,是如何拿到客服想要的数据的,是怎样在网络中传输的?
19-
15. cookie和session
20-
16. java有哪些锁?共享锁是什么?CAS?乐观锁和悲观锁?synchronied的底层原理?锁升级?死锁怎么形成的?如何破解死锁?
21-
22-
## 二面
23-
24-
25-
1. Java容器:List,Set,Map
26-
2. Map的遍历方式
27-
3. HashMap扩容为什么是扩为两倍?
28-
4. Java线程同步机制(信号量,闭锁,栅栏)
29-
5. 对volatile的理解:常用于状态标记
30-
6. 八种基本数据类型的大小以及他们的封装类(顺带了解自动拆箱与装箱)
31-
7. 线程阻塞几种情况?如何自己实现阻塞队列?
32-
8. Java垃圾回收。可达性分析->引用级别->二次标记(finalize方法)->垃圾收集 算法(4个)->回收策略(3个)->垃圾收集器(GMS、G1)。
33-
9. java内存模型
34-
10. TCP/IP的理解
35-
11. 进程和线程的区别
36-
12. http状态码含义
37-
13. ThreadLocal(线程本地变量),如何实现一个本地缓存
38-
14. JVM内存区哪里会出现溢出?
39-
15. 双亲委派模型的理解,怎样将两个全路径相同的类加载到内存中?
40-
16. CMS收集器和G1收集器
41-
17. TCP流量控制和拥塞控制
42-
18. 服务器处理一个http请求的过程
43-
19. 例举几个Mysql优化手段
44-
20. 数据库死锁定义,怎样避免死锁
45-
21. spring的aop是什么?如何实现的
46-
22. 面向对象的设计原则
47-
23. 策略模式的实现
48-
24. 操作系统的内存管理的页面淘汰 算法 ,介绍下LRU(最近最少使用算法 )
49-
25. B+树的特点与优势
50-
51-
## 三面
52-
53-
- 自我介绍,说简历里没有的东西
54-
- 说几个你最近在看的技术(MySQL,多线程)
55-
- 口述了一个统计数据的场景题
56-
- 如果这个统计数据场景不用MySQL,而是用Java来实现,怎么做
57-
- 如果数据量过大,内存放不下呢
58-
- 用面向对象的思想解决上面提出的问题,创建出父类,子类,方法,说一下思路
59-
- 下一个场景,口述了一个登录场景,同学用线程池做登录校验,会有什么问题
60-
- 如何解决这些问题
61-
- 你给出的方案弊端在哪里,还有哪些方案
62-
63-
## 四面
64-
65-
- 谈谈类加载机制。
66-
- hashmap和concurenthashmap
67-
- 16g机器,让你分配jvm内存怎么分配。
68-
- 机器慢了怎么排查。
69-
- 谈谈consul和zookeeper,还有服务发现机制。
70-
- 详细说明raft协议。
71-
- 谈谈consul和zookeeper区别。
72-
- 服务注册的时候发现没有注册成功会是什么原因。
73-
- 讲讲你认为的rpc和service mesh之间的关系。
3+
## 面经1-一面
4+
5+
> **开始先是手撕算法两道**
6+
7+
1. 自我介绍
8+
2. 两道手撕
9+
1. 将字符串转化为整数 (这里当时出现溢出值问题,进行了思考解决,写了两种方式)
10+
2. synchronize , 可以使用的几种形式,代码写出
11+
12+
> **操作系统 和 数据结构**
13+
14+
1. hash解决冲突 ( 开放定址法、链地址法、再哈希法、建立公共溢出区 )
15+
2. 上述四种方式详细的过程、思路
16+
3. 链地址法和再哈希法之间的关联和区别
17+
4. 两者分别适用场景
18+
5. 两者底层的数据结构,关联和区别
19+
6. 链表和数组的底层结构设计、关联、区别、应用场景
20+
21+
> **常用算法**
22+
23+
1. 常用的排序算法 ( 冒泡、堆、快速、桶、选择、插入 )
24+
2. 堆排序和选择排序使用场景上有什么区别
25+
3. 选择排序和堆排序对于资源的利用 ( 选择排序适合数据量少的情况、堆排序适合数据量多的情况,资源利用率、设计思路 )
26+
4. 常用的查找结构都有什么? ( 二分查找法、插值法、hash查找、分块查找、树表查找 )
27+
28+
> **数据结构**
29+
30+
1. b树和b+树和红黑树的设计思路、结构区别、使用区别
31+
2. 队列和栈有什么区别
32+
3. 他们的使用场景 ( 栈:数据匹配、数据反转;队列:任务队列、共享打印机 )
33+
34+
> **Jvm**
35+
36+
1. jvm内存模型
37+
2. jvm垃圾回收算法
38+
3. jvm垃圾回收器
39+
4. cms、g1的设计思路、关联和区别、垃圾回收阶段的不同
40+
5. 让你设计系统中进行选择其中一个回收器,你的想法是什么
41+
42+
> **使用框架、底层原理**
43+
44+
1. 在你的开发中最常使用的框架
45+
2. SpringBoot常用注解
46+
3. RestController和Controller有什么区别
47+
4. 你在完成项目的过程中是怎么处理异常的 (全局异常梳理)
48+
5. 全局拦截器的设计、项目中实现 (注解、类)
49+
6. Aop的了解、怎么使用
50+
7. Aop底层实现( JDK、CGLib、动态代理实现 )
51+
8. asm是什么 (字节码增强器)
52+
53+
> **MySql**
54+
55+
1. Mysql事务隔离级别
56+
2. 什么情况下使用读已提交
57+
3. 对于脏读的理解
58+
59+
> **redis**
60+
61+
1. 对于redis的理解
62+
2. redis在项目中进行怎么样的使用
63+
3. redis 为什么读取速度那么块 (io、单线程、内存)
64+
4. 为什么redis单线程会快 (完全基于内存、单线程避免不必要的上下文切换、cpu消耗、加锁问题。。。)
65+
5. 对于很多文件和数据,怎么进行数据的查找、排序,使用什么样的数据结构 (类似于TopK、这个主要是让你进行优化、类似于位图、hash、过滤器之类的)
66+
6. 反问:
67+
1. 对于部门的业务、技术栈
68+
2. 对我的建议、和整个面试的感觉
69+
70+
## 面经1-二面
71+
72+
> **Java基础**
73+
74+
1. 自我介绍
75+
2. 抽象类和接口有什么区别
76+
3. 在使用过程中,接口和抽象类的选择以及使用场景
77+
78+
> **计网、Linux**
79+
80+
1. http 和j https 的区别
81+
2. https 过程中都使用哪些加密的算法 ( 对称加密、非对称加密 )
82+
3. 都怎么使用的,这些j加密算法的理解
83+
4. Linux都是用过哪些常用命令 (cat、less、tail、grep、wc....)
84+
5. 查看系统内存 ( top )
85+
6. 查看系统内存,返回多个指标,怎么查看内存的占用率
86+
7. 怎么将系统内存显示的数据进行排序
87+
88+
> **Java基础加深、线程、锁、数据机构等等**
89+
90+
1. java里面的类加载器的设计
91+
2. 类加载器的类之间的可见性 (委托机制、单一性、可见性)
92+
3. 如果父级对子级进行调用,会出现什么异常
93+
4. 线程都有哪些状态
94+
5. blocking和waiting有什么区别吗
95+
6. 如果是sleep(1000) 会让线程进入什么状态
96+
7. synchronize的使用流程
97+
8. java中的原子类实现原理
98+
9. 对CAS的了解
99+
10. 对CAS底层了解
100+
11. HashMap的底层实现原理
101+
12. HashMap的put流程
102+
13. ConcurrentHashMap的实现原理
103+
104+
> **框架Spring,代理**
105+
106+
1. Spring的Aop的底层实现
107+
2. 动态代理的了解 ( 见上面文章 )
108+
3. 静态代理和动态代理的区别
109+
4. 对动态代理性能的了解
110+
5. 浅拷贝和深拷贝的区别
111+
6. 手撕 : topK问题 ( 堆、优先队列、快排、冒泡 )
112+
7. 大顶堆小顶堆的设计思路
113+
114+
> **收尾的小问题**
115+
116+
1. 在实习中最有成就感的项目
117+
2. 对抖音和快手的看法
118+
3. 反问
119+
1. 业务的具体方向
120+
2. 对我的整体感觉和建议
121+
122+
## 面经1-三面
123+
124+
1. 自我介绍
125+
2. 介绍一个你最得意的项目
126+
3. 介绍一下你的实习经历
127+
4. 实习项目中介绍一个你印象最深的需求
128+
5. 这个需求的设计、使用的框架详细介绍
129+
6. 这个项目的上线效果怎么样的
130+
7. 上线需要的什么问题
131+
8. 你在实习公司的转正情况
132+
9. 还有其他的offer吗
133+
10. 你对快手怎么看的
134+
11. 面试官主动介绍部门
135+
12. 反问
136+
1. 部门的业务、地点 ( 因为之前面试的组hc没了,转到隔壁组,重新问的业务方面 )
137+
2. 对我整体面试看法 ( 说的是看我之前面试,聊的挺详细的,面评也不错,等hr )
138+
139+
## 面经1-HR面试
140+
141+
1. 面试官先自我介绍了
142+
2. 最近2-3年,挑一个最有代表性的一件事
143+
3. 你为什么觉得这件事最有代表性呢
144+
4. 在你的整体实习的话,给自己打分你会打几分 、10分制 ( 我打的8分 )
145+
5. 你都做了那些事情,让你打的8分
146+
6. 那你觉得从那些手段方法提升剩下的2分呢
147+
7. 你完成实习之后,有哪些收获呢
148+
8. 考虑提前实习吗
149+
9. 毕业之后的未来规划
150+
10. 之后的定居城市怎么想的
151+
11. 还有什么进行的面试流程吗
152+
12. 你心中对这些公司的排序 ( 地点、技术、前景 )
153+
13. 反问
154+
1. 什么时候出结果
155+
2. 对我的整体感觉
156+
157+
## 面经2-一面
158+
159+
1、聊项目
160+
161+
2、线程的几种状态
162+
163+
3、线程池的状态
164+
165+
4、线程池的运行过程
166+
167+
5、如何合理地配置线程池
168+
169+
6、怎么实现阻塞队列
170+
171+
7、怎么监控线程池的运行状态,答的用一些线程监控的工具,面试官说指代码层面上,只争对线程池,没答上
172+
173+
线程池执行类ThreadPoolExecutor给了相关的API来监控某一个线程池的执行状态,能实时获取线程池当前活动线程数、正在排队线程数、已执行线程数、总线程数等。
174+
175+
```java
176+
ThreadPoolExecutor tpe = ((ThreadPoolExecutor) es);
177+
while (true) {
178+
System.out.println();
179+
180+
int queueSize = tpe.getQueue().size();
181+
System.out.println("当前排队线程数:" + queueSize);
182+
183+
int activeCount = tpe.getActiveCount();
184+
System.out.println("当前活动线程数:" + activeCount);
185+
186+
long completedTaskCount = tpe.getCompletedTaskCount();
187+
System.out.println("执行完成线程数:" + completedTaskCount);
188+
189+
long taskCount = tpe.getTaskCount();
190+
System.out.println("总线程数:" + taskCount);
191+
192+
Thread.sleep(3000);
193+
}
194+
```
195+
196+
8、java中有几种锁
197+
198+
9、锁升级的过程(自旋的缺点,CAS有什么不足)
199+
200+
10、对象头的结构
201+
202+
11、synchronized和ReentrantLock区别
203+
204+
12、ReentrantLock是怎么实现的,讲到AQS,顺便说了AQS
205+
206+
13、还有哪些基于AQS的同步工具
207+
208+
14、volatile作用
209+
210+
15、volatile怎么保证可见性和防止指令重排序
211+
212+
16、mysql的隔离级别
213+
214+
17、事务acid
215+
216+
18、mysql如何保证acid
217+
218+
19、redo log和undo log区别
219+
220+
20、redo log和undo log是如何生成的(这块细节忘了,只说了先写内存,然后再刷盘)
221+
222+
21、介绍几种消息队列
223+
224+
22、说说rabittmq架构(说了分为虚拟机、交换机和队列,然后说了下消息的传递过程,面试官否认了,说这只是应用层面)
225+
226+
23、jvm的内存模型
227+
228+
24、对象什么情况会进去老年代
229+
230+
25、spring ioc aop
231+
232+
26、注解底层怎么实现的(动态代理)
233+
234+
27、注解失效有哪些原因(自己还经历过@Transaction失效的bug的,当时没答上来,被自己气死)
235+
236+
28、bean的加载过程
237+
238+
算法:有序数组生成平衡二叉树,当时已满60分钟,面试官给了5分钟的时间限制,看我思考了一会,问我有没有思路,我说暂时还没,然后就换了一道题
239+
240+
## 面经2-二面
241+
242+
1、聊项目
243+
244+
2、mysql默认隔离级别
245+
246+
3、如何实现可重复读
247+
248+
4、如何解决幻读
249+
250+
5、间隙锁和nextkey锁
251+
252+
6、mysql锁是锁的什么(索引)
253+
254+
7、mysql的索引结构,有什么优点
255+
256+
8、怎么实现读写分离
257+
258+
9、主从复制是怎么实现同步的,答传bin log文件,后续数据更新怎么同步,答mysq不了解,但我知道redis主从复制后续是通过一个复制缓存区来记录新增的命令,通过发送这些命令实现同步
259+
260+
10、说说redis架构(单线程,io多路复用)
261+
262+
11、redis的底层数据结构知道吗(只知道用到了跳表,然后说了下跳表)
263+
264+
12、缓存穿透和缓存雪崩,解决方法
265+
266+
13、缓存和数据库怎么保证一致性
267+
268+
14、说说threadlocal怎么实现的
269+
270+
15、threadlocalmap中key为啥要用弱引用,key被gc后value怎么办
271+
272+
16、说说四种引用
273+
274+
17、spring事务传播机制
275+
276+
18、spring如何解决循环依赖
277+
278+
19、说说tcp协议
279+
280+
20、tcp如何保证不会接受重复的报文
281+
282+
21、tcp如何保证有序
283+
284+
算法:lc124. 二叉树中的最大路径和
285+
286+
部门:商业化技术部
287+
288+
## 面经2-三面
289+
290+
1. 自我介绍
291+
3. Redis 是单线程还是多线程?为什么快?
292+
4. IO多路复用和非阻塞IO? IO多路复用提升了什么性能? IO多路复用提升了CPU哪方面的指标
293+
5. 线程池使用过吗?线程池的运行原理?
294+
6. IO密集型和CPU密集型的区别
295+
7. IO密集型的线程数配置过多会对CPU有什么影响?
296+
8. Zookeeper 的原理
297+
9. 为什么使用Zookeeper
298+
10. Zookeeper为什么要主从,选举机制
299+
11. MySQL的主从是什么原理
300+
12. TCP为什么是可靠的
301+
13. 能提前实习吗?
302+
14. 未来三到五年的规划?
303+
15. 算法题 lc简单题
304+
17. 能来提前实习吗?
305+
306+
反问:对应届生的要求。
74307

75308

76309

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /