美团一面
- 作者
- Name
- 青玉白露
- Github
- @white0dew
- Modified on
- Reading time
- 3 分钟
阅读:.. 评论:..
面试内容
- 讲一下多态
- TCP和UDP的区别为什么是四次挥手
- linux操作命令
- git操作命令
- 现在预算有限,请求很少,如果不用epoll你会用什么线程和进程的区别
- innodb用的什么索引,为什么不用红黑树当索引
- 哪些协议用到了UDP哪些用到了
- TCP
- 为什么访问寄存器的速度比访问内存的速度更快
- 用count(*)用哪个存储引擎
参考回答
「面试官」: 1. 讲一下多态。 『求职者』: 多态是面向对象编程的核心概念之一,主要包括:
- 静态多态:函数重载,编译时确定。
- 动态多态:通过虚函数实现,运行时确定。
- 实现方式:虚函数表和虚指针。
- 作用:提高代码的灵活性和可扩展性。
「面试官」: 2. TCP和UDP的区别,为什么是四次挥手? 『求职者』: TCP和UDP的主要区别:
- TCP:面向连接,可靠传输,有流量控制。
- UDP:无连接,不可靠传输,速度快。
四次挥手原因:
- 全双工通信,每个方向都需要单独关闭。
- 接收方可能还有数据要发送,所以分两次。
「面试官」: 3. 列举一些常用的Linux操作命令。 『求职者』: 常用Linux命令:
- ls:列出文件和目录
- cd:切换目录
- pwd:显示当前路径
- mkdir:创建目录
- rm:删除文件或目录
- cp:复制文件
- mv:移动文件
- grep:文本搜索
- top:系统监控
「面试官」: 4. 列举一些常用的Git操作命令。 『求职者』: 常用Git命令:
- git init:初始化仓库
- git clone:克隆仓库
- git add:添加文件到暂存区
- git commit:提交更改
- git push:推送到远程仓库
- git pull:拉取远程更新
- git branch:分支操作
- git merge:合并分支
- git status:查看状态
「面试官」: 5. 如果不用epoll,你会用什么?线程和进程的区别是什么? 『求职者』: 替代epoll的选择:
- select或poll:适用于连接数较少的情况。
线程和进程的区别:
- 进程:独立的执行单位,有自己的地址空间。
- 线程:轻量级进程,共享所属进程的地址空间。
- 进程间通信复杂,线程间通信简单。
- 进程切换开销大,线程切换开销小。
「面试官」: 6. InnoDB用的什么索引,为什么不用红黑树当索引? 『求职者』: InnoDB使用B+树作为索引:
- B+树非叶子节点只存储键值,叶子节点存储数据。
- 相比红黑树,B+树更适合磁盘存储和范围查询。
- B+树高度低,减少I/O次数。
- 叶子节点相连,有利于区间访问。
「面试官」: 7. 哪些协议用到了UDP,哪些用到了TCP? 『求职者』: 使用UDP的协议:
- DNS(部分)
- DHCP
- SNMP
- RTP(实时传输协议)
使用TCP的协议:
- HTTP/HTTPS
- FTP
- SMTP
- SSH
「面试官」: 8. 为什么访问寄存器的速度比访问内存的速度更快? 『求职者』: 寄存器访问速度快于内存的原因:
- 位置:寄存器在CPU内部,内存在CPU外。
- 容量:寄存器容量小,访问速度快。
- 技术:寄存器使用更先进的存储技术。
- 访问方式:寄存器直接访问,内存需要通过总线。
「面试官」: 9. 使用COUNT()时用哪个存储引擎更好? 『求职者』: 对于COUNT()操作:
- MyISAM更快:保存了表的行数。
- InnoDB需要全表扫描。
- 但InnoDB支持事务,适合写密集场景。
- 选择取决于具体需求和查询模式。
「面试官」: 非常好,谢谢你的回答。 『求职者』: 谢谢您的提问。