全程项目拷打,全程大概65分钟左右
项目拷打了大概45分钟左右,好多记不清了,大概把能记住的说一下
总结:项目基本要刨根问底问你怎么做的,基本不是自己做的根本回答不上来,随便一个点都能刨根问底
# 项目
1. 介绍项目
2. 你这个项目和飞书有什么异同点,不会答,就说以前用飞书做过文档,很好用,但是底层的通讯原理肯定也是类似于WebSocket这样的架构,或者是用TCP直接做长连接进行数据通信,面试官点了点头没继续追问,不知道是不满意还是为什么
3. 讲一下rpc调用的基本原理,回答说基本组成有4个部分,客户端服务端以及它们的stub存根,存根封装了底层的网络通信,rpc调用可以直接处理上层的业务,像调用本地方法一样调用远端的方法
4. 讲一下WebSocket协议的内容,说状态什么的,也不太会答,反正最后说原来的项目是用TCP直接做的长连接通信,第二个版本迭代的结果是用WebSocket,具体的还没太了解
5. 说一下为什么rpc快,回答说对brpc了解比较少,但是另外一个项目用的是grpc,grpc是Google开发的一个框架,快体现在内部实现了Http2.0的传输方式,然后说了一下Http2.0的优势和缺点,然后说了使用protobuf比较快,然后面试官追问为什么快,我说内部有实现了一些特殊的编码和解码的方式,然后继续追问怎么实现的,举个例子,不会说
6. 说一下GateServer的基本大体架构,我说http请求为主,也有WebSocket推送资源,把基本调用流程说了一遍,没后续追问
7. 选一个模块进行详细说明,xxxx介绍了一堆
8. 问文件传输模块怎么实现的,简单说了一下,最后补充如果大文件传输可能有问题,可能需要用分片等方法进行优化,现在可以实现文件头像等内容的上传和下载,面试官没继续追问
9. 问了nginx,我说第二个项目我自己加了域名,所以用nginx做了反向代理,追问反向代理和正向代理的区别,也答出来了,又问nginx怎么实现正向代理和反向代理,我说只用过反向代理,点了点头没再追问
10. 你这个项目的日志怎么排查,我说用spdlog可以分级输出,对于特定日志可以tail -n查看最后几行
11. 问项目怎么进行部署,我说直接用Linux的Service服务,systemctl就能进行启动,然后讲用Etcd做注册中心,如果一个挂了也没关系,直接可以用systemctl Service自动重启,后面再上去看为什么挂了就可以,有对应的日志系统就能看
12. Redis当中存的什么?追问如果集群处理怎么办?回答了有类似于raft算法来保证数据一致性,后面又追问负载均衡怎么用,我说我的项目里面主要用的是RR轮转,后面又讲了一致性哈希和哈希槽的原理,继续点头没有追问
13. MySQL表怎么设计,把六张表的原理和用途说了一下,无后续追问
14. 为什么用消息队列?说到了削峰填谷,模拟了一个场景,然后问怎么实现的,我说声明Broker和Channel和product和Consumer,错误判断后就可以使用了,面试官说直接用的封装好的库吗,我说是的
15. 问短信服务和语音识别,我说直接看的百度云和阿里云的demo代码,然后自己封装了一套接口就没了,直接调用那边的服务
16. 问Http传输只能传输json吗?我说我传json多,但是也能传其他的数据,Http2.0也直接优化成二进制进行传输,数据更快
17. 项目都是单点吗?我说是的,后续的优化方向会考虑做集群,包括分库分表这些,点点头没追问
18. 问Zookeeper和Etcd的原理,怎么保证数据一致性的,我说这两个主要满足的是CAP理论里面的CP理论,主要也是保证了数据的强一致,但是牺牲了对应的服务可用性,本来想说Kafka废弃Zookeeper,怕追问Kafka就没说,后续没追问
19. 问为什么用微服务不用单点,我说我另外一个项目最开始就是单点,只实现了一个类似于Lucene的架构,后来服务比较多了以后导致如果有一个模块挂了整个就全挂了,所以就用微服务改造了一下,这个就直接上微服务了,没继续追问
20. 又问ES怎么使用,怎么创建索引,不会答,就说直接学的API,没学操作,后面提了一嘴怎么用,没听清
21. 项目里面用过锁吗?我说没有,然后讲了一下MySQL InnoDB里面的行级锁,举了点例子,怎么防止出现幻读的情况,大概就是说了一下MVCC和行级锁这些,也没追问
项目基本就记得这么多,但是比这个问的还要多,其他的记不清了,有印象就这些
# 算法
22. 无重复字符的最长子串,直接默写,3分钟秒了,问了一下时间复杂度和空间复杂度
# 测试
23. 问了点测试理论,答的好像不太行,后面又追问了一点,问项目怎么测试的,有没有什么印象深刻的地方,没太准备这些,答的不怎么样
24. 后面追问怎么设计朋友圈的设计,除了性能测试以外其他都说出来了,然后说安全测试怎么防止别人删你的朋友圈,我说肯定要验权限,只有比你高的权限才能删你的朋友圈,平级的不能删,点了点头没追问
25. 问我有没有做过性能测试,我说只用过webbench,其他的没用过
# 反问
25. 什么时候出结果,答曰1-3天
26. 面试官问我是大三升大四吗,我说我现在开学是大三,问我为什么这么早出来实习,我说感觉学的还可以,想实际体验一下开发流程,问我能实习多久,我说能一直实习,问学校没课吗?我说学校课少,期末考试回去考一下就可以,点头没追问
后面面试官感觉有事,已经抱着电脑出会议室了,就没再继续问