【已oc】滴滴 地图事业部 后端开发 日常实习 1/2面面经
总体流程
- 2022.7.12 投递简历(让朋友给推的,可能是组内直招)
- 2022.7.15 11:00 一面
- 2022.7.19 17:00 二面
- 2022.7.20 10:00 oc
一面(35min)
由于面试官看过我的简历和github,所以跟走过场一样
也很感谢面试官认可我
自我介绍
八股/项目(20min)
- 介绍webserver
- epoll和poll的区别
- OSI 7层模型
- tcp和udp的区别
- tcp三次握手、四次挥手
算法题(15min)
在IDE自己写,需要跑
- 自己实现一个栈
- 用数组实现的
- 用栈实现队列,用自己之前实现的(两个)栈(LeetCode 232)
反问
- 部门在做的业务/工作
- 地图架构,主要跟导航的业务对接
- 技术栈
- redis、滴滴自己的fusion和mq
二面(60min)
自我介绍
面试官觉得我的自我介绍太多(长)了
八股/项目(25min)
面试官对着简历的每一个字细抠(尤其是专业技能那块),反正很可怕,第一次遇到这种面试
真的是人生中最尴尬的一场面试
- 你熟悉STL、智能指针是吧?为啥要用智能指针?
- 八股文
- 智能指针的原理?
- 八股文
- 你熟悉快速排序和归并排序是吧?这两者的共同点?
- 都用了分治思想
- 快速排序的时间复杂度?
- 先说了结论,但是面试官需要分析过程
- 然后简要分析了
- 关于内存管理,都知道哪些内容?
- 什么是虚拟内存(说完了这个,面试官觉得我说的太少了,麻)
- 为什么要用虚拟内存
- 虚拟地址映射到物理地址的流程
- 设计模式:除了单例模式、工厂模式,还了解什么设计模式?
- 代理模式
- 主要是这两个
- 什么时候用单例模式?
- 在整个程序中,这个类只需要这一个对象
- 什么场景用到单例模式?
- 举了自己的项目,异步日志系统、数据库连接池
- 为什么数据库连接池就得是单例呢?(麻了,不会)
- redis:知道什么数据结构?
- 说了最常见的这5种
- zset底层是什么数据结构?
- 数据量少了用压缩列表,数据量多了用跳表
- 为什么用跳表,不用别的数据结构?
- 不清楚,就说了跳表跟搜索树的不同,和链表的不同,然后好像提到了可能是跳表更方便范围查询
- 面试官问,那就是应用场景的不同了?
- 我说大概是的
- RPC自定义协议的设计?为什么要用?
- 之前被问过,所以回答上了
- RPC请求怎么发的?
- 通过socket
- webserver的代码量?
- 用cloc测的是3k行左右
- webserver的登录和注册功能,为什么要实现它?
- 是单纯想自己实现
算法题(10min)
在自己的IDE写,需要运行
手撕快排,其实写的很快,但是犯了个低级错误,所以拖到了10min
开放题(25min)
有一个服务,要调用一个日志服务,这两个服务都在本机。这个服务同时要调用很多次日志服务,也就是这会带来很大的性能瓶颈。应该怎么去优化?
- 我首先说了socket的优化,但是面试官说这个可以忽略
- 然后我想不到,面试官就说其实就是可以把这些日志聚合起来,只发一次,这样就可以减少发的次数了
- 然后说了下缓冲区的设计,需要加锁
- 然后面试官说加锁不行,严重影响性能,把并行的操作变成串行的了
- 我说那就用原子操作,面试官也说,这也就是另一种加锁的了,是否有更小粒度加锁的方案?
- 然后我想不到,面试官就说,可以把缓冲区分成多个桶,这是个分治的思想
- 然后我说根据要写入的区间,来确定各个线程在哪里写入
- 最后面试官说没有我想的这么复杂,就是要用字符串哈希,去索引哈希表(真没想到)
- 问了同学,这是海量数据处理的常见套路,凉
反问
- 如果有幸拿到offer,需要提前学习什么内容
- golang,其他也没啥了,基础的话你也都具备了
- 一般会让实习生做什么?会让刚来的实习生干啥?
总结
挺凉的,如果没有最后一道题其实也还好,这一面之后应该是没了吧
第一次被这样面试,大写的尴尬,写上简历的内容一定要好好复习,至少得烂熟才行
(其实感觉比之前字节面的凉很多,居然oc了,也是离谱,并且面试官说,面了这么多人当中,说我基础很好。只能说明面试是一门玄学)
#滴滴##日常实习##后端开发##C/C++#