快手校招Java后台开发一面面经
面试一共55分钟。
- 自我介绍
- 项目的介绍
- ES索引刷新间隔refresh操作怎么实现的(因为项目用到了ES)
- Redis的基本数据结构有哪些?(全部都说了一遍)
- Redis的Zset实现(讲了跳表,然后跳表的实现)
- Redis的原子操作指令
- 死锁了解吗,死锁发生的条件
- 手写一段死锁的代码,两个线程模拟死锁的场景
- 线程池的一些问题(核心参数,优点,使用时需要注意的点)
- Java的Map的实现有哪些,主要讲hashmap的底层实现
- 1.8之后的并发hashmap的实现用的Node节点锁和cas的实现,问CAS的思想在哪些地方也用到了(我说了原子类用到CAS)
- 原子类的CAS到底怎么实现的(说了CAS实际就是传入一个具体的地址和预期值,比较该地址当前的值是否符合预期)
- Kafka生产者如何保证消息的可靠性(答的不好,只讲了重试机制,好像kafka有个参数acks=all,是所有follower都接受到了消息之后,才保证该消息真的是发送了,写入到硬盘中)
- RPC的原理,你怎么理解的(讲了代理模式,还有序列化的方法hessian,protobuf等,以及协议tcp)
- TCP和UDP的差别
- TCP的粘包和拆包问题
- 问了接口幂等性的一些东西
- 事务内容,事务回滚补偿等
- 手撕算法:二叉排序树,给你一个值target,问是否存在两个数的和刚好等于target。需要自己写树的节点还有树构建,跑测试样例。
- 反问
总结:面试官人很好,比较和蔼,体验比较好
#面经##快手##java工程师##校招#