1.自我介绍
2.java集合、hashmap详细介绍、关键参数、线程安全的集合、队列和栈、用两个栈实现队列算法
3.jvm结构
4.多线程锁:synchronized、reentrantlock、countdownlatch、锁升级
5.mysql隔离级别
6.线程池有哪些、核心参数、线程池运行机制
7.threadlocal
8.写线程安全单例模式,volatile原理、
9.写单词拆分问题
10.反问
好像叫基础平台部门。java岗。
总体来说,快手的一二面会根据难度循序渐进,并且会出一两个由易到难的算法题。一面偏向基础,二面偏向项目去问。
一面:
- synchronized用法
- public、protect、default、private
- static修饰 作用域
- java基础类型
- 忘了。。
算法题:
- 合并链表
- 字符串合并相邻的相同字符
二面:
- 实习经历
- 项目
- 以下为RabbitMQ问题:
- RabbitMQ基础概念
- 架构
- 有哪些机制保证消息传输正确性
- 事物下,假设最后一个commit操作丢失了,此时怎么办
算法题:
- 归并排序
- 牛客:集合的所有子集
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
撕 单链表两两反转
之前发过一次一面面经,这次和二面的一起发了
- 自我介绍
- 二话不说,先写一个LRU,吭哧吭哧写了二十多分钟,之后面试官给提了一些优化意见。
- TreeSet 和 HashSet 是怎么比较元素是否相等的?
- Integer 和 Long 的 hashCode() 方法实现有什么区别?
- ConcurrentHashMap 原理,1.7 和 1.8 区别。
- 线程池有哪些参数,执行流程是怎样的?有哪些常用 BlockingQueue,区别是什么?拒绝策略有哪些?shutdown() 和 shutdownNow() 有什么区别?
- synchronized 和 ReentrantLock 区别?ReentrantLock 实现原理,AQS 原理,CountdownLatch 和 Semophore 的作用?
- ThreadLocal 原理,线程池中使用 ThreadLocal 会有什么问题,为什么?软引用和弱引用有什么区别?
- 单例模式有哪些实现方式?双重检查锁怎么实现,为什么用 volatile,序列化破坏单例了解吗,怎么避免?
- 聚簇索引和非聚簇索引区别,sql 语句执行有哪些步骤?
- 事务隔离级别有哪些?可重复读怎么解决幻读?binlog 有什么作用?
- MySQL 存储时间有哪些数据结构?有什么区别?
- Redis 想要提交多条命令,但是只有一次 Round-Trip 怎么实现?pipeline 了解吗?持久化方式有哪些,区别是啥?AOF 重写介绍一下,fork 子进程有什么影响?
竟然没有反问环节,有点慌…
二面 55min
- 自我介绍。
- final 关键字的用法。
- 在哪些情况下,变量虽然没有使用 final 显式修饰,但还是被编译器提示不可修改?
- 谈谈你对 SpringBoot 的理解,主要解决了哪些问题,集成了那些第三方框架?支持哪些数据源?
- 说一下进程和线程的区别?Java 里的进程和线程是怎么体现的?
- 基础知识先聊到这里,下面来写个代码:有一张桌子,桌子上有一摞一摞的盘子,每摞盘子的数量是已知的,数量是无序且不等的,现在需要你去挪盘子,通过尽量少的挪动次数,使每个位置上的盘子数量趋于平均,需要你打印出每一次挪动盘子的动作,比如从位置 a 挪到位置 b (a和b是数组的下标),那就打印 a->b。输入是一个无序数组,输出是每一次挪动盘子的过程。这道题写了挺久,加上跟面试官讨论的时间都半个多小时了。
- 代码先写到这里,我们在聊些别的问题,关于 Java 并发编程,你都了解哪些方面?
- Java 最经典的 synchronized 关键字,你了解它的用法吗?
- 同步代码块中怎么释放锁?Object.wait() 的底层原理是什么?或者说 wait() 和 notify() 的机制在底层是怎么实现的?
- JUC 包下常用的锁有哪些?ReentrantLock 中有个 Condition ,你了解吗,一般怎么使用?
- 你在实际项目中有没有用过 MySQL 的一些高级功能,比如事务之类的,使用场景是什么?
使用场景这个记得不太清楚了,答得磕磕巴巴,然后面试官说你没实际用过的话就不用说了… - 你简单介绍一下 MySQL 的隔离级别吧。