logo

美团一面

作者
Modified on
Reading time
3 分钟阅读:..评论:..

面试内容

  1. 讲一下多态
  2. TCP和UDP的区别为什么是四次挥手
  3. linux操作命令
  4. git操作命令
  5. 现在预算有限,请求很少,如果不用epoll你会用什么线程和进程的区别
  6. innodb用的什么索引,为什么不用红黑树当索引
  7. 哪些协议用到了UDP哪些用到了
  8. TCP
  9. 为什么访问寄存器的速度比访问内存的速度更快
  10. 用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支持事务,适合写密集场景。
  • 选择取决于具体需求和查询模式。

「面试官」: 非常好,谢谢你的回答。 『求职者』: 谢谢您的提问。