高德地图 一面
真真切切拷打:75min
- 自我介绍 3min
- 实习一 10min
- 讲讲socket通信过程(客户端需要bind吗?答不需要,忘了。。)
- 讲讲为什么用select不用epoll?epoll比select好在哪?(答数据结构不同:红黑树加双向链表vs数组;答内核态用户态切换开销不一样)
- 为什么二者内核态用户态切换开销不一样?(答不知道)
- 讲讲et和lt(答lt没读完会一直提示,et读写变化时才会提示)et需要一次性把数据读完,要是缓冲区不够怎么办,一定每次都要读完吗?
- 什么情况下用lt?什么情况下用et?现在的项目常用的是et还是lt?
- 实习二 10min
- 你们整个服务的时延是多少?耗多少cpu?耗多少memory?
- 如果你们的服务整个垮掉了,如何保持服务的可用性?服务上线更新过程中,更新前和更新后的中间临界状态是对外提供服务的吗?如果不是会发生什么?
- 你们的输入是如何从上游获得的,数据库还是消息队列?
- 如果你们服务正在执行任务时崩掉了,怎么恢复保证被中断的任务继续执行?(答保存输入或中间值到存储/日志,恢复后重跑一遍)
- 抽帧是怎么实现的?如果一个视频没有抽帧怎么办?(只能答到调rpc这一步。。)
- 项目一 10min
- websocket和socket的关系和区别?websocket是七层中的哪一层?(答应用层,不知道对不对),为什么不用socket而用websocket?
- websocket和http的关系和区别?(答websocket能双向传输信息)又问http不能双向传输信息没?为什么你搭建的服务器不用http?
- 八股 20min
- c++的多态底层怎么实现的(答虚函数,问底层,答虚指针)
- 从浏览器输入一个url到渲染的整个过程,越详细越好:
- DNS解析(缓存,递归,迭代)DNS是哪个层的?(答应用层)它是基于传输层的哪个协议?(答UDP)
- NAT转发(内网转公网)
- TCP三次握手
- 建立HTTP链接(这里忘记是怎么建立的了)
- TLS握手
- 传输信息(.html/.js/.css)
- 进程间通信方式
- 管道(问管道用在什么地方?答linux命令。问有名管道用在什么地方?没想出来,答消息传输)
- 共享内存/文件映射内存mmap(问共享内存和mmap有啥区别,不太清楚,答mmap有块专属内存区域)
- 信号,信号量,套接字,rpc。。。(这些都没太讲具体)
- mysql为什么要用b+数作索引
- 答一减少磁盘切换开销,二方便范围查询
- 算法题 20min
- 给10M内存,找出10亿个整数的中位数,说不记得文件操作的接口了。。(面试官说写伪代码就行)
- 没想出来。。说外部排序,但这样做不到全部排序,因为内存还是不够,后面面试官提示按数字区间分块,还是没想出来。。。
全程激情拷打,很充实
#软件开发2024笔面经#