社招Golang 滴滴 中台开发 一面(jd是2~3年, 本人不到1年工作经验)
《面试题目》
- #golang##golang1、自我介绍
- 手写协程池(边写还要边问协程池原理[笑哭]),之前没看过怎么写的协程池,类比java的线程池写了一个,没想到面试官看完说可以
- 下面开始八股盛宴
- 进程、线程、协程的区别
- 为什么协程切换开销小(我个人理解的,说的是协程是在用户空间,切换不用陷入内核空间)
- 可不可以无限制开协程,为什么?会导致什么后果?
- I/O多路复用模型有哪些(select、poll、epoll),并分别介绍(推荐大家看黑马redis那里对I/O多路复用的讲解,非常顶)
- mysql的事务隔离级别、分别解决三大读的哪些问题
- 什么是幻读以及如何解决幻读
- 聚簇索引和非聚簇索引的区别
- select *为什么不推荐使用
- 接口耗时长,如何排查并解决?引起接口耗时长的原因有哪些?
- http和https的区别,https的流程
- https在建立tls连接的时候,是非对称还是对称加密?在传输数据的时候,是非对称还是对称加密?
- tcp和udp的区别
- http2.0 http3.0介绍(整理的资料里有,有小伙伴想要的可以私信我,校招就用这个来着,都覆盖了,就没背这个,没想到会问,好在面试官没为难)
- 虚拟内存是什么?虚拟内存和物理内存如何映射?
没有问项目 18. 整体一面下来,滴滴面试应该有题库,我也是用了两天时间找了一下滴滴面经,基本都覆盖了,八股都比较基础,大家如果时间赶,可以主看redis(推荐黑马)和mysql(推荐黑马)以及计网和操作系统,并非广子 19. 面完两个小时以后通知一面过了,后续约二面(在告知我一面通过前,hr先问了目前手头的offer以及期望的薪资,这个问题还是建议大家谨慎回答,如果你此时真的一个offer没有,我建议你编几个offer,例如某团、某手这些同档次的厂的offer,证明自己的实力已经被其他厂认可,同时对于期望薪资,我建议大家先保守说,反正也不是正式的谈薪,稳住hr;hr还问我会等滴滴的流程么,你都拿了几个offer了,你一定要回答会,还要很诚恳的讲一下,我多么多么喜欢贵公司,宁愿其他offer毁约,哈哈哈,反正先稳住,问完这些以后,hr才跟我说,你的一面过了,二面后续会约时间,我感觉如果她觉得你不是诚心来,就是尝试的心态,应该也不会给你推流程了,参考去年校招面pdd,三面+hr面+oc谈薪全聊完了,当时其实已经签约某音了,但是还是想拿pdd offer,因为当时面评比较好,那边要给开一个ssp,所以oc了以后又加了一次hr面,当时我感觉的不太积极,结果面完,直接来邮件说很遗憾,巴拉巴拉,所以尽量别玩脱,hr都很精的)
《参考解析》
-
计算机网络:TCP(传输控制协议)是面向连接、可靠的传输协议,提供流量控制和拥塞控制;UDP(用户数据报协议)是无连接、不可靠但速度更快的协议。TCP通过三次握手建立连接(SYN→SYN+ACK→ACK),四次挥手断开(FIN→ACK→FIN→ACK)。
-
MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。
-
Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。
-
JVM与GC:JVM内存模型:堆(对象分配,GC管理)、方法区(类信息、常量池)、虚拟机栈(栈帧/局部变量/操作数栈)、本地方法栈、程序计数器。GC算法:标记-清除(内存碎片)、标记-整理(无碎片,但移动对象)、复制(新生代)。G1按Region划分堆,预测停顿时间。