面试公司:携程
面试岗位:Java后端
一面
1.介绍下项目,热点数据用 Redis 的什么数据结构存储?zset。你这个负载均衡算法中的加权轮训算法怎么实现的?Rpc 项目中客户端调用服务的整个过程?怎么使用 Netty 进行通讯的?
2.SpringBoot 常用注解?SpringBootApllication由哪些注解组成?由三个注解组成,其中有一个开启自动配置的注解。
3.说一下volatile?volatile有内存可见性和有序性,底层通过 lock 前缀的一个空指令实现。
4.sleep和wait的区别?一个释放锁,一个不会,wait 可以无限阻塞,sleep 不能。
5.了解哪些设计模式?写一个双重检测的单例模式,为什么要加 synchronized?因为要考虑线程安全,加在类方法和普通方法有什么区别?
6.了解注解吗?自己的项目使用到了自定义注解。注解怎么实现的?通过反射实现。反射中获取 class 对象的三种方式?通过 object 类的 getClass 方法,类的 class 属性,class 类的 forName 方法。
7.了解哪些排序算法,写一个快排吧。
二面
1.详细讲解你的项目,细节与难点。项目中使用的序列器,protobuf 为什么快?
2.Java 的 io 模型?bio,nio,aio。其中 nio 使用操作系统的 io 多路复用。io 多路复用的实现有哪些?select,poll,epoll。
3.写一个多线程的题,线程 1 打印 a,线程 2 打印 b,线程 3 打印 c,要求顺序打印出 abcabcabc。
4.反问,对自己有什么建议,按校招已经到达标准,由于时间问题没法再深入了解项目,所以也没有什么建议。
HR面
1.自我介绍
2.为什么不读研究生了
3.工作地点有要求吗
4.薪资要求
5.有过实习吗
6.你这个项目的难点是什么
7.比较看中公司的哪些方面
8.有其他 offer 吗,哪些公司还在流程中
9.过四六级吗?多少分?等下发个英语测评有时间去做下,会根据测评结果安排后续的进程
反问,公司对应届生的培训机制,多长时间出结果。



