快手日常实习一面-9.3

-------9.4更新-------
一面顺利通过,已约二面

------------------
时间:9.3 晚 7:00~8:10

一、自我介绍

二、项目拷打
2.1 看你项目用了Token+分布式session实现登录,session存到哪?存的什么数据?
2.2 知道Redis集群吗?有哪几种?
2.3 在刚才登录场景下,如果Redis是用主从集群,读session是读主还是读从?为什么?
2.4 如果此时Redis主挂掉,那么用户发起登录请求,这个session就写不进Redis集群对吧?那就会给用户返回登陆失败,你觉得这样好吗?举个例子比如微博,不能说用户太多全都登陆失败吧?你认为应该怎么解决?
2.5 你的登录功能包括SpringMVC拦截器校验用户身份和刷新token,那你说说拦截器的处理流程?Filter和Interceptor哪个先执行?它俩分别拦截什么?
2.6 另一个项目是用的jwt,说说jwt吧?jwt把用户信息存到哪?
2.7 Canal解决缓存一致性问题的场景是什么?怎么实现的?
2.8 你用了Canal,假设现在用的是Mysql主从集群,应该读主还是读从?为什么?
2.9 如果写操作太多,Canal监听大量写操作然后删缓存,会有什么问题?
2.10 秒杀的超卖问题你是怎么解决的?
2.11 秒杀的一人一单问题是怎么解决的?分布式锁的粒度是什么?
2.12 用户如果抢到券了,但一直没有下单,这个分布式锁什么时候释放?释放后库存怎么还回去?
2.13 为什么要用Redis进行预校验和预扣减库存?说一下对应的场景吧?这是好几步操作,怎么保证在Redis的原子性?
2.14 你说有事务和Lua脚本两种方式解决原子性,那你说说Redis事务的原理?你说事务底层是一个命令队列,那么如果前边的执行成功后边失败,前边的会不会回滚?
2.15 Lua原子性,同样一半成功,前边的会不会回滚?既然不会回滚,那预检验和预扣减库存如果只成功了一半不就出问题了吗?
2.16 既然事务和Lua都能实现原子操作,为什么用Lua不用事务?或者说Lua比事务的好处是什么?
2.17 Feed流你用推模式,那么如果是一个大v会有什么问题?你说用拉模式,那么如果一个用户关注的博主很多有什么问题?
2.18 Elasticsearch存的什么数据?文章所有字段都存es里吗?
2.19 如果文章很多,像快手可能有几亿篇,存ES有什么问题?
2.20 你知道ES搜索数据、从磁盘加载数据的原理吗?

三、八股
3.1 了解线程吗?了解协程吗?
3.2 多线程可能存在哪些问题?(回答死锁和共享数据安全,引出了后面的手撕)
3.3 你提到对于共享数据安全可以用锁解决,那java有哪些锁?
3.4 读过AQS源码没?
3.5 线程池的7个参数?提交一个任务的执行流程?
3.6 java线程池和tomcat线程池的区别?
3.7 Mysql有哪些锁?

四、手撕
4.1 写一个死锁代码?
4.2 把刚才的synchronized替换成ReentrantLock实现死锁?
4.3 对照着死锁的四个必要条件,针对每个条件怎么修改代码来解决死锁问题?

五、闲聊
5.1 有其他offer吗?
5.2 为什么之前没有实习经历?
5.3 能实习多久?

六、反问
6.1 部门是做什么的?
全部评论
我去,光看看就感觉汗流浃背了
1 回复 分享
发布于 09-05 20:57 福建
2.12怎么答的啊
点赞 回复 分享
发布于 09-06 00:27 北京
中国电子云
校招火热招聘中
官网直投
面的商城-【电商】嘛,我看岗位介绍说是做投放的。
点赞 回复 分享
发布于 09-07 20:04 北京
快手二面怎么样?
点赞 回复 分享
发布于 09-14 13:01 北京

相关推荐

13 74 评论
分享
牛客网
牛客企业服务