1.自我介绍
2.java集合、hashmap详细介绍、关键参数、线程安全的集合、队列和栈、用两个栈实现队列算法
3.jvm结构
4.多线程锁:synchronized、reentrantlock、countdownlatch、锁升级
5.mysql隔离级别
6.线程池有哪些、核心参数、线程池运行机制
7.threadlocal
8.写线程安全单例模式,volatile原理、
9.写单词拆分问题
10.反问
好像叫基础平台部门。java岗。
总体来说,快手的一二面会根据难度循序渐进,并且会出一两个由易到难的算法题。一面偏向基础,二面偏向项目去问。
一面:
算法题:
二面:
算法题:
1 自我介绍,不问项目直接开怼java
2 java八大数据类型是啥,各自占多少单位,float 能表示0.25吗 int 的数据范围是多少
3 java list接口拿啥实现的,arraylist和linkedlist 删除一个元素的时间复杂各是多少
4 hashmap的put的时候啥过程,扩容的时候啥样,怎么判断元素是低位还是高位
5 java里面线程怎么通信的,锁,说说synchronize的锁升级过程,说到monitor
6 知道有哪些排序算法,平均时间复杂度是多少
7 redis的zset怎么实现的,那么跳跃表的原理是啥,zscore用过吗,时间复杂度是多少
8 输入url发生了什么,ip找mac地址是啥协议
9 用的web容器是啥,url请求咋传到tomcat然后再咋到controller的
10 这个requestmapping 的map啥时候初始化的
11 写代码:单链表的归并排序
12 单例模式懒汉
13 单例模式饿汉
14 单例模式双重锁检查 volatile有啥作用(防止指令重排序)
15 内部类的单例模式写法
16 智力题:两人抛硬币,我先抛,谁先扔出来正面,谁赢,问我赢得概率是多少
1.自我介绍
2.项目介绍
3.如何判断一个用户是否在线?
4.怎么做的权限检验?(其他人对你消息进行抓包)
5.有没有学过token?
6.netty怎么实现的聊天?
7.连接管理怎么实现的?怎么判断这个用户断开?
8.考虑过怎么给这个项目植入漂浮广告吗?
9.连接断开是客户端断开还是服务端?
10.为什么选择netty,为什么不直接使用TCP?那个的性能更加好?
11.简述AQS
12.volatile与synchronized的区别?
13.synchronized与Lock的区别?
14.如何对一个代码块选择合适的同步机制?
15.有没有学习过服务降级?
16.spring的链路过程?
17.spring的AOP
18.简述代理模式?
19.动态代理和静态代理?
20.mysql的MVCC是什么?
21.数据库的隔离级别都有那些(MySQL是那个)?
22.怎么解决幻读?
23.MySQL的索引都有那些?
24.B树与B+树的区别?
24.范围查找选择那个数据结构比较好?
25.redis的数据结构都有那些?
26.堆排序?
二叉树的层序遍历
快手java一面
1.自我介绍
2.聊项目
3.java基本数据类型,long几位, 能存储什么范围的数据 ,float怎么存储小数的
4.String是基本数据类型吗 底层怎么实现的 (final修饰的char数组)
5.volatile关键字底层,如何实现可见行和有序性,为什么不能保证原子性
6.synchronized关键字底层,静态方法锁的是什么,非静态方法锁的是什么,静态代码块锁的是什么
7.hashmap put元素的原理,1.8以后的优化有什么,为什么长度超过8变成红黑树
8.数据库得事务隔离级别,innodb的默认隔离级别
9.innodb有哪些索引,聚簇索引与非聚簇索引区别,覆盖索引怎么实现
10.联合索引的失效情况,给了个例子
11.mvcc机制的原理
12.数据库乐观锁和悲观锁
13.b+树与b树,为什么用b+树
14.redis五种基本数据类型,sortedset底层是怎么实现的
15.缓存穿透,缓存击穿,缓存雪崩,分别怎么解决
16.一个排序二叉树,一个target值,寻找二叉树中的比target值小的最大值
17.上一题不会,换成大数相加了(我这个垃圾)
18.概率题:两个人抛硬币,抛到正面赢,先抛的人赢的概率(2/3)
19.cpu占用100%,如何排查问题(考Linux命令吗?)
快手一面
数据库update过程
怎么解决幻读
treemap和linkedhashmap
wait和sleep方法区别
线程池相关(工作队列、核心线程最大新任务什么状态、线程存在哪(没听懂
synchronized原理
volatile
撕 单链表两两反转
之前发过一次一面面经,这次和二面的一起发了
竟然没有反问环节,有点慌…
二面 55min