快手java后端一面凉经,发出来攒攒人品
流程:
8.7 简历
8.8 一面
8.10 问了HR,收获 **“待定” ** 评价。hr:需要横向对比,对比完会成为通过(= _ =!但愿如此吧)
总共58分钟,面试官人很好,没歧视我这个材料转码的人(555)
- 自我介绍+开场闲聊
- 秒杀项目+rpc框架实现
- 项目提问,rpc框架如何实现
- 秒杀项目什么场景下用到了redis,用到了哪些数据结构,怎么用的(答得不好)
- sychronized关键字及其使用场景、与lock、reenterentlock的区别(从java object对象中的markword的字段出发,然后扯远了,没有提到volatile以及并发和线程池;最后说其他锁的区别也是在胡言乱语,直说了sync是隐式锁,lock是显示锁,sync配合wait使用,lock需要手动加解锁)
- 浏览器键入url到返回页面,中间经历了哪些过程,越详细越好(先是查电脑ip缓存,没有就通过dns找,找到了就通过网络链路进行传播,建立tcp连接,三次握手,如果是https,就是三次握手加tls的四次握手,tls这里没说清楚,应该先说对称加密与非对称加密的,直接说了四次握手的过程,含含糊糊的,没表示清楚,之后再把服务端的springmvc说了一遍,从dispatchserverlet到handler到modelandview都说了一遍,(中间的链路层部分没有讲),面试官直呼下功夫了,然后探讨https进行加密之后的通信用的是私钥还是公钥:都不是,是加密之后的会话密钥(master secret)
- mysql的隔离性是怎么保证的(先讲了事务的级别,再说了隔离级别由锁进行保证的,(复盘的时候才发现没说锁的分类),就mysql的默认隔离级别RR进行分析,分析可能出现的问题(不可重复读和幻读),解释了如何通过不同生成readreview的时机来解决不可重复读问题,最后幻读问题通过mvcc+next-key lock进行解决,最后提到了在高并发的情况下,事务A先当前读,在插入,事务B当前读在插入,next-key lock会导致死锁的问题,死锁破环掉四大必要条件即可解除死锁,面试官到这说了一句还能这样,我平时都没碰到过。。。XD)
- 笔试题(20min)如下 (不怎么会做,完全就不是leetcode,或者是sql,或者是多线程交替打印abc,123)
- 反问:
1. 应届生什么水平才能达到进入大厂?
回答:没什么要求,你只要过了简历筛选的都是很优秀的人(T_T 感动ing),部门里也有很多材料的转码的
2. 什么时候出结果?
回答:两三天出结果
- 互道再见
- 笔试题
Implement a simple CSV string parser. Requirements: 一个CSV字符串包含多行,每行代表一行 每行中的元素以逗号分隔, 双引号字符串被视为单个元素,即使它们包含换行符或逗号。 要转义双引号字符串中的双引号,应将其表示为 '\"'(反斜杠后跟双引号)。 CSV Example: Name,Age,Address John Doe,30,"123 Main Street, Apartment 4B" Alice Smith,25,Kwai Plaza Mary Johnson,35,"456 Elm Avenue, Suite 10C" Example: csvStr="Name,Age,Address\nJohn Doe,30,\"123 Main Street, Apartment 4B\"\nAlice Smith,25,Kwai Plaza\nMary Johnson,35,\"456 Elm Avenue, Suite 10C\"" output=[ ["Name","Age","Address"], ["John Doe","30","123 Main Street, Apartment 4B"], ["Alice Smith","25","Kwai Plaza"], ["Mary Johnson","35","456 Elm Avenue, Suite 10C"] ]
题目描述: 相对时间与绝对时间的格式转换 第一部分: times 是一个由 long 类型的时间戳组成的数组, [[t0,t1], [t2,t3], [t4,t5], ..., [t(n-1), tn]] , 数组中的时间戳是升序的: t0<=t1<=t2<=... target 是一个 long 类型的时间戳 写一段程序, 返回 target 在 times 中的相对时间, 注意要跳过 times 中的时间间隙; 返回格式为 HH:mm:ss:zzz 示例: times = [[1690370263154,1690370264154], [1690370312286,1690371233716], [1690373334968,1690373376373], [1690373440821,1690373557514]] target = 1690371083888 返回: 00:12:52:602 第二部分: relativeTime 是上面得到的相对时间字符串, 格式为 HH:mm:ss:zzz 结合原始数据 times, 返回它的绝对时间戳 target 示例: times = [[1690370263154,1690370264154], [1690370312286,1690371233716], [1690373334968,1690373376373], [1690373440821,1690373557514]] relativeTime = 00:12:52:602 返回: 1690371083888 提示: t0 <= target <= tn t0 到 tn 的时间跨度不会超过 24 小时#晒一晒我的offer##我的失利项目复盘##如何判断面试是否凉了##快手信息集散地##23届找工作求助阵地#