下面要给大家分享的是一个快手的一面和二面的Java面经,其中包含了具体的面试流程、面试题以及部分面试题答案。
笔试:
总的来说,难度还是要比美团低一些,前面的三道题都并不是很难,只有最后一道题大概是leetcode的hard难度,当时写了一个模拟流程AC40%粗滚。
面试的时候,大致的记住了以下这些。
一面(一面的时间大概花费了30分钟左右)
先做自我介绍
之后就是正式进入面试题部分:
1、说一下Spring AOP
2、说一下Java的GC机制,讲一下讲G1
3、类加载过程包括什么?双亲委派模型的优缺点是什么?
加载过程:加载、验证、准备、解析、初始化、使用、卸载
优点:可以避免类的重复加载,另外也避免了java的核心API被篡改
4、讲一下hashmap
HashMap在Java开发中使用的非常频繁,可以说仅次于String,可以和ArrayList并驾齐驱.....。
5、了解kafka吗?讲一下kafka
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它能够处理消费者在网站中的所有动作流数据......。
6、说说聚集索引和非聚集索引,mysql的4种事务隔离级别,InnoDB在Repeatable_Read下为什么不会幻读,索引为什么用B+树,B+树和B树的区别
聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,非聚集索引是一种索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同.......。
7、写代码的过程当中,你认为最重要的是什么?
8、设计一个秒杀系统
其他:
开放题:井盖为什么是圆的?
算法题:对一个不递减数组进行一次旋转操作的结果,查找数组中的数,就是对类似于[4,5,6,1,2,3]这样的数组,进行查找(二分)
以上就是整个一面的流程和部分面试题了,下面一起来看看二面的面试流程和面试题吧。
二面(二面的时间大概花费了50分钟左右)
首先进行自我介绍,之后谈论了一下项目。
面试题:
1、Spring IoC机制是什么?实现原理
2、讲一下你熟悉的Java设计模式
3、装饰者模式了解吗?
4、IoC机制符合了Java设计模式的什么原则
5、多个线程同时对volatile类型的变量进行i++操作,可以保证结果吗?为什么不可以,说一下volatile的原理
6、我们在什么时候使用volatile是正确的,刚才的场景怎么保证结果(synchronized),说说sync的原理,它和ReentrantLock有什么不同?
7、说一下AtomicInteger的实现原理,Atomic开头的类经常会有一个方法叫lazySet,讲讲它的作用
8、讲一下java中的集合类,Comparable接口和Comparator接口
9、讲一下线程池的工作流程,4种拒绝策略,4种队列,其中一个线程挂掉了会怎么样
其他:
算法题:表达式求值,“10+8*3-3*2-5”(双端队列)
以上就是二面的流程和面试题了。
更多快手Java面试题请继续关注本站了解。