快手Java实习生一二面面经
笔试
总体来说难度比美团低很多,前三道题都不算很难,只有最后一题大概是leetcode的hard难度(当时写了个模拟流程AC40%粗滚)
面试忘了录音了,说下我能记住的
一面,大概30分钟
自我介绍
说说Spring AOP
说说Java的GC机制,讲讲G1
类加载过程,双亲委派模型的优缺点
讲讲hashmap
kafka了解么,说说你对他的理解
说说聚集索引和非聚集索引,mysql的4种事务隔离级别,InnoDB在Repeatable_Read下为什么不会幻读,索引为什么用B+树,B+树和B树的区别
你认为写代码过程中最重要的是什么
设计一个秒杀系统
开放题:井盖为什么是圆的(我一直以为这是个段子,结果真问了)
算法题:对一个不递减数组进行一次旋转操作的结果,查找数组中的数
就是对类似于[4,5,6,1,2,3]这样的数组,进行查找(二分)
二面,大概50分钟
自我介绍,又聊了一会儿项目
说说Spring IoC机制,以及实现原理
讲讲你熟悉的Java设计模式,知道装饰者模式吗,IoC机制符合了Java设计模式的什么原则
多个线程同时对volatile类型的变量进行i++操作,可以保证结果吗,为什么不能,说说volatile的原理,那我们在什么时候使用volatile是正确的,刚才的场景怎么保证结果(synchronized),说说sync的原理,它和ReentrantLock有什么不同
讲讲AtomicInteger的实现原理,Atomic开头的类经常会有一个方法叫lazySet,讲讲它的作用
讲讲java中的集合类,Comparable接口和Comparator接口
说说线程池的工作流程,4种拒绝策略,4种队列,其中一个线程挂掉了会怎么样
算法题:表达式求值,“10+8*3-3*2-5”(双端队列)