快手面试经历

24.1.11 一面 -48min

面试官:自我介绍 我: ...

面试官:能说一个项目吗?说一下其中印象深的地方? 我: (挑的mit那个)

面试官:能说一下Raft协议吗? 我: ...

面试官:Raft协议超时选举应该挺重要的吧,能描述一下吗? 我: ...

面试官:超时选举会出现脑裂情况吗 我: ...(原因,解决办法)

面试官:我看你用了RPC进行调用其他服务器,你能说一下为什么用RPC而不用其他技术吗?你RPC底层用的什么协议? 我: (当时没答上来,其实是mit自己编写的RPC代码。可以说gRPC)

面试官:没事没事,我对你的项目也不太了解,就问一下为什么用RPC。我看你这日志快速恢复是怎么一回事? 我: ...(解释道一半被打断了)

面试官:那日志对比的时候索引和任期是什么?(上个回答里面简单说了一下Raft节点和心跳携带的日志比较流程,但是面试官好像没太听明白,就暂时打断我,然后问的这个问题) 我: ...(日志组成,日志是怎么对比的。)

面试官:那问一下基础部分吧,我看你写了熟悉集合,能介绍一个你熟悉的吗?(当时很犹豫咋说)或者说一下你对这几个的了解。 我: ...(ArrayList、LinkedList、HashMap)

面试官:HashMap链表过长会怎么样? 我: ...(为什么树化,树化的条件)

面试官:看你写着会并发编程,就介绍一下ThreadLocal吧 我: ...(原理)

面试官:一般创建线程的方法有哪些? 我: new Thread()参数实现Runnable接口、线程池(其实还有一个是继承Thread类,然后new)

面试官:能说一下MySQL事务吗? 我: ...(概念)

面试官:MySQL隔离级别?是用什么解决的? 我: ...(四个级别;MVCC)

面试官:InnoDB默认是用可重复读,那发生幻读怎么办? 我: ...(忘了可重复读不能解决幻读哪种情况了)

面试官:嗯,其实我是想问一下MySQL的锁? 我: ...(锁这块也没太准备,就说了行锁和间隙锁)

面试官:Redis缓存穿透...,我看你项目中也说你解决了这部分,能说一下吗? 我: ...(概念,什么地方用到了)

面试官:那用ReentrantLock在分布式有什么问题吗?(但是面试官自己想了一下,说只要集群不大其实也没什么问题,最后也没问) 我: (这其实还是得用分布式锁)

面试官:能说一下Spring的IoC和AOP吗? 我: ...(两个的概念,为什么用AOP)

面试官:HTTP和HTTPS能说一下吗? 我: ...(都是应用层协议,HTTPS是HTTP加了一个TLS协议,HTTP的三个风险)

面试官:对称加密和非对称加密能说一下吗? 我: ...(分别是什么,在什么时候用哪一个以及原因)

面试官:说一下类加载器有哪些? 我: ...(把扩展类加载器名字给忘了,再说了双亲委派机制)

面试官:做一个题,合并两个有序数组,合并后也是有序的 我: ...(双指针秒了,但是他给的用例数组看起来像数字,还写了一会数字拆分为数组,最后发现提上说是数组。给的题还要写输入,当时不会写,就说了一下我想用力扣风格写,面试官同意了。最后写完解释了一下,也没测试,反正思路对着)

这个面试官是真的随和,完全跟聊天一样,也频繁给反馈,面完也明确说了给我过了。

有些地方一直准备看,但老是给自己理由拖着不看,像KV数据库的RPC部分、缓存击穿用的锁、类加载器。

算法那块和力扣风格完全不同,当时挺尴尬的,不过题还是比较简单

=======================

反问的时候,面试官明确说了给我过了。我也以为稳了,就把手上的两个offer全部拒了,直接梭哈快手。但是那天是周四,周五hr开会去了,没给我答复。都到15号才说我都过了。(快手双休,周末不是工作日)

=======================

24.1.26 入职,面试官变成我mentor了

24.1.16 二面 -48min

面试官:"邮评"负责哪部分? 我: ...

面试官:订单是直接生成插入数据库?购物车和订单是怎么配合的? 我: ...(第一个问题应该是想叫我回答使用消息队列进行消峰处理,但是当时没想到)

面试官:SpringBoot使用ThreadLocal存储变量是怎么弄得? 我: ...(ThreadLocal原理,SpringBoot单线程处理同意请求,ThreadLocal在项目怎么用的)

面试官:CompeleteFuture和线程池完成并发是怎么回事? 我: ...(订单模块需要其他模块,商品和库存模块关系需要可编排,只使用Future引发的回调地狱问题)

面试官:Java中的锁知道哪些?了解分布式锁吗? 我: ...(synchronized、ReentrantLock;Redisson的原理,看门狗机制,可重入原理)

面试官:OOM知道什么?是怎么排查的? 我: ...

面试官:数据库知道什么?了解过其他非关系型数据库吗? 我: ...

面试官:知道消息队列吗? 我: 不太了解

算法:给两个字符串,类似于ip地址那种,但是每部分可以有前缀0,比较两个字符串那个大。

(当时没想到String的split方法切割'.'时还要用转移符号变为"\ \ ."才能用。然后用跳过较长字符串前缀来模拟的,可读性差得很。但是他说直接变为数字比较,仔细想了一下,每一次乘10再加新的数字,效率并没有我的跳过字符串高,但可读性确实提高,其实也可以用(num<<4)-(num<<2)-(num<<1)来快速计算数字的10倍,效率和可读性都兼顾了,可惜当时没想到)

感觉做了mit那个项目之后,过分依赖那个项目了。因为大部分面试官不知道其中细节,就看自己怎么说的天花乱坠。之前的面试官也都是对这个项目感兴趣,就在没看过业务项目了。这个面试官直接问业务项目,确实被打的措手不及。

24.1.17 hr面 -30min

因为hr问得太多了,部分内容没有会议起来。

面试官:自我介绍并简单介绍一下这两个项目?

"邮评"项目组多少人?各自分工?

基于什么目的上线的?上线后都有哪些人在什么情况下使用?

项目有什么难点?(WebSocket依赖注入问题,群聊数据库优化)

项目上线时考虑过哪些方面的问题?

这两个项目都有什么收获?(分析日志,解决问题;团队协作)

Java和go喜欢用哪一个?为什么?(平时喜欢Java,也说了一下go的channel进行多线程通信比Java好用) 我: ...

再就是普通hr面会问的问题。

也算是快手最后一面了,当时二面自我感觉太差了,没想到hr面,心里很紧张。hr说话也很有艺术,看我紧张,就说咱两也聊过几次,也算是网友了,这种半开玩笑的拉近感情,瞬间感觉没那么紧张,确实也值得学习一下。

======================

周三面完,说下周才给结果。然后周一晚上hr说offer没问题了,说了一下待遇,然后说再去推一下流程。(我认识去快手的都是晚上给结果的)。周二发了offer

相关推荐
AI进化营-智能译站3 小时前
ROS2 C++开发系列17-多线程驱动多传感器|chrono高精度计时实现机器人同步控制
java·c++·ai·机器人
天若有情6736 小时前
程序员原创|借鉴JS事件冒泡,根治电脑文件混乱的“冒泡整理法”
开发语言·javascript·windows·ecmascript·电脑·办公·日常
qq_589568106 小时前
springbootweb案例,出现访问 http://localhost:8080/list 一直处于浏览器运转阶段
java·网络协议·http·list·springboot
JAVA面经实录9177 小时前
计算机基础(完整版·超详细可背诵)
java·linux·数据结构·算法
特种加菲猫7 小时前
继承,一场跨越时空的对话
开发语言·c++
AC赳赳老秦7 小时前
知识产权辅助:用 OpenClaw 批量生成专利交底书 / 软著申请材料,自动校验格式与内容合规性
java·人工智能·python·算法·elasticsearch·deepseek·openclaw
FYKJ_20108 小时前
springboot校园兼职平台--附源码02041
java·javascript·spring boot·python·eclipse·django·php
玩转单片机与嵌入式8 小时前
玩转边缘AI(TInyML):需要掌握的C++知识汇总!
开发语言·c++·人工智能
茉莉玫瑰花茶8 小时前
Qt 信号与槽 [ 1 ]
开发语言·数据库·qt