快手Java开发面经(2技术面)
8月30号快手一面
大概70min
- 自我介绍
- 你的实习经历挺丰富的,介绍一个你最熟悉的项目吧balabala,讨论了很久项目问题
- Mysql的索引有哪些?答B+🌲和自适应哈希索引
- 说说B+树和B树的区别,优缺点等?
- mysql默认存储引擎?MyISAM、InnoDB、MEMORY的区别
- ACID?
- 事务隔离级别有什么?通过什么来实现的?分别解决了什么问题?
- Redis和mysql区别是什么?有哪些持久化方式?区别呢?
- Redis如何实现集群和高可用?redis分布式锁的加锁解锁详细实现?
- Java中的锁有什么?synchronized与Lock的区别?公平锁和非公平底层怎么实现的?AQS原理详细介绍一下?
- 怎么实现一个线程安全的计数器?用AQS,balabala。。
- 原子类AtomicInteger实现原理是什么?和你设计的计数器优劣比较?CAS怎么实现原子操作的?
- 说一下GC吧,什么时候进行Full GC呢?
- 你了解哪些收集器?CMS和G1。详细谈谈G1的优点
- 算法题,对一个链表进行归并排序,链表可能有环
9月6号二面
大概60min
- 老套路,自我介绍,你对快手的了解,和抖音的区别,聊项目
- 项目中用到dubbo?那你说说什么是rpc框架?和http调用的区别是什么?
- dubbo的生产者如何发布服务,注册服务,消费者如何调用服务?
- dubbo的集群容错机制?提到了Directory、Router、Loadbalance等类。
- dubbo负载均衡的策略有哪些?一致性哈希详细聊一下?
- dubbo如果一个服务宕机会发生什么?如果注册中心挂掉了,系统还能正常运行吗?
- Redis有哪些数据结构?底层的编码有哪些?有序链表采用了哪些不同的编码?
- Kafka怎么保证数据可靠性?讲了生产者端发送消息到broker持久化,分区和副本机制,消费者消费消息的at-least-once和at-most-once?怎么实现Exactly-Once?
- 线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少?
- ScheduledThreadPoolExecutor中的使用的是什么队列?内部如何实现任务排序的?
- 谈一谈ArrayList?如何添加元素的?删除元素后会自动缩小空间吗?
- 已经有一个查询好友的接口,设计一个微信朋友圈,可以实现发表朋友圈,添加评论,查看评论等功能。主要是设计数据结构
- 算法题,不调用库函数,求double的开方?刚开始说用遍历,后来提示以后改用二分,面试官想要的解答应该是用牛顿迭代法。
- 算法题,将String转成double,不能调用库函数,且输入的String可能非法,需要考虑各种异常输入情况?