快手Java实习面经
3月中旬投了很多简历,可是没有一个公司找我面(简历太菜了吧···),还好快手把我捞起来了(orz)。5月5号下午两面,今天等到hr电话沟通入职的事项。
快手面试很基础,但是考察的也挺细致,下面是面经,分模块记的
一面(55分钟)
Java基础
- ==和equals区别
- static修饰的成员变量运行时机
- 内部类和静态内部类区别
- 为什么要重写equals方法
- HashMap底层数据结构,以及put方法和resize方法
- 说一下ConcurrentHashMap底层数据结构,以及如何保证线程安全的
- 说一下序列化,网络传输使用什么序列化
- 说一下泛型底层实现原理—类型擦除
并发
- 说一下JUC包下的同步工具
- synchronized修饰方法和代码块区别
- volatile如何怎么保证有序性和可见性
- 说一下线程池,以及线程池的几个核心参数,如果提交一个cpu密集型的任务怎么选取线程池
- 用volatile+synchronized写一个单例模式,用双重校验锁方法,说出两个if判断语句的作用
- 线程的几种状态,并指出在哪种状态下可以中断,中断原理
JVM
- 说一下几种引用方式,并说出其作用,以及垃圾回收时机
- 一个static成员变量如何进行内存分配及赋值
算法题
找到一个链表的倒数第k个节点
中间等待了15分钟~~~~
二面(50分钟)
0. 自我介绍
1. 项目介绍
2. 说几种创建对象的方式
3. 静态代理和动态代理的区别
4. 反射的作用及机制
5. 说一下spring中IOC和AOP,还问了这个两个的英文全称是啥(差点没说出来)
6. 项目中如何用到IOC思想的
7. http和https的区别
8. http如何在一个TCP连接上进行多次请求响应的
9. 手写一个生产者消费者模式,用的ReentrantLock,为什么判断当前count是否满足生产或者消费时用while
10. i++是不是一个原子操作,说几种方法java如何保证对整型变量写操作线程安全的方法
11. ReentrantLock加锁操作后,在catch中捕获的是什么异常,为什么会发生这用异常
12. 有什么问题要问他的,我问了两个,一个是对自己日后学习的建议,第二个是部门发展前景