Bootstrap

快手java开发面试经验大全

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

撕 单链表两两反转

之前发过一次一面面经,这次和二面的一起发了

  1. 自我介绍
  2. 二话不说,先写一个LRU,吭哧吭哧写了二十多分钟,之后面试官给提了一些优化意见。
  3. TreeSet 和 HashSet 是怎么比较元素是否相等的?
  4. Integer 和 Long 的 hashCode() 方法实现有什么区别?
  5. ConcurrentHashMap 原理,1.7 和 1.8 区别。
  6. 线程池有哪些参数,执行流程是怎样的?有哪些常用 BlockingQueue,区别是什么?拒绝策略有哪些?shutdown() 和 shutdownNow() 有什么区别?
  7. synchronized 和 ReentrantLock 区别?ReentrantLock 实现原理,AQS 原理,CountdownLatch 和 Semophore 的作用?
  8. ThreadLocal 原理,线程池中使用 ThreadLocal 会有什么问题,为什么?软引用和弱引用有什么区别?
  9. 单例模式有哪些实现方式?双重检查锁怎么实现,为什么用 volatile,序列化破坏单例了解吗,怎么避免?
  10. 聚簇索引和非聚簇索引区别,sql 语句执行有哪些步骤?
  11. 事务隔离级别有哪些?可重复读怎么解决幻读?binlog 有什么作用?
  12. MySQL 存储时间有哪些数据结构?有什么区别?
  13. Redis 想要提交多条命令,但是只有一次 Round-Trip 怎么实现?pipeline 了解吗?持久化方式有哪些,区别是啥?AOF 重写介绍一下,fork 子进程有什么影响?

竟然没有反问环节,有点慌…

二面 55min

  1. 自我介绍。
  2. final 关键字的用法。
  3. 在哪些情况下,变量虽然没有使用 final 显式修饰,但还是被编译器提示不可修改?
  4. 谈谈你对 SpringBoot 的理解,主要解决了哪些问题,集成了那些第三方框架?支持哪些数据源?
  5. 说一下进程和线程的区别?Java 里的进程和线程是怎么体现的?
  6. 基础知识先聊到这里,下面来写个代码:有一张桌子,桌子上有一摞一摞的盘子,每摞盘子的数量是已知的,数量是无序且不等的,现在需要你去挪盘子,通过尽量少的挪动次数,使每个位置上的盘子数量趋于平均,需要你打印出每一次挪动盘子的动作,比如从位置 a 挪到位置 b (a和b是数组的下标),那就打印 a->b。输入是一个无序数组,输出是每一次挪动盘子的过程。这道题写了挺久,加上跟面试官讨论的时间都半个多小时了。
  7. 代码先写到这里,我们在聊些别的问题,关于 Java 并发编程,你都了解哪些方面?
  8. Java 最经典的 synchronized 关键字,你了解它的用法吗?
  9. 同步代码块中怎么释放锁?Object.wait() 的底层原理是什么?或者说 wait() 和 notify() 的机制在底层是怎么实现的?
  10. JUC 包下常用的锁有哪些?ReentrantLock 中有个 Condition ,你了解吗,一般怎么使用?
  11. 你在实际项目中有没有用过 MySQL 的一些高级功能,比如事务之类的,使用场景是什么?
    使用场景这个记得不太清楚了,答得磕磕巴巴,然后面试官说你没实际用过的话就不用说了…
  12. 你简单介绍一下 MySQL 的隔离级别吧。
;