滴滴c++

滴滴-基础架构部-c++研发工程师(北京)
20210725:

1、自我介绍

2、项目询问:

  • 大概架构
  • 为什么要分成两个网关层作用是什么
  • 多路复用技术主要是用在两层网关之间,网关之间多线程和多路复用是怎么用的
  • epoll如何跟多线程相结合,创建多个epoll绑定到线程上
  • tcp连接如何获取
  • 每个网关每个线程都有一个epoll,具体哪个线程获取连接状态
  • 比如会首先创建一个fd,写一个网络程序的流程是什么,socket具体怎么用,有监听绑定fd
  • 在监听绑定之前fd是怎么处理的,有专门一个线程负责监听,如何将fd分发给其他线程
  • 对线程有负载均衡的处理:循环遍历线程、通过hash取模确定线程
  • 线程之间如何交互,监听线程和处理的线程如何交互
  • 两个线程之间的通信方式有哪些,进程之间的通信方式有哪些
  • 多路复用的技术有哪些
  • select、poll和epoll的性能哪个一般更高?
  • 在什么情况下select、poll的效率更高
  • epoll的两种模式,项目使用的是哪种
  • 为什么使用水平触发,为什么会出现消息丢失
  • 如何解决ET的特性,(我说在包后面有个结束标志)
  • ET模式,有3000条数据,结束标志在最后,但一次只能读1000的数据,后面就不会再次触发了,这种情况怎么解决。即读操作阻塞,配合多路复用,读操作一般如何处理,(可以使用非阻塞的I/O方式,在读取没有数据的时候,会返回一个标识,告诉已经读完了)
  • 负载均衡策略有哪些,怎么用的,为什么采用这样的hash取模方式
  • 循环的连接策略,存在的问题:比如会更多分布到前面的服务器上面,而到达不了后面的

3、c++11:

  • 智能指针介绍
  • unique_ptr可以赋值吗
  • move操作的作用
  • 为什么不直接拷贝,有很多类有拷贝构造函数,既可以拷贝又可以移动,为什么要多一个这样的move操作

4、并发方面的编程题:给出3个线程,每个线程能输出0,1,2,怎么输出序列0102101(提到信号量实现)

  • 并发api更了解哪种(linux和c++标准库)
  • linux中常用的并发方法,面试官提示说有条件变量?、

5、算法题:二叉树的最长交叉序列

全部评论
请问下大佬,线程之间如何交互,监听线程和处理的线程如何交互?这个问题如何解答的,菜鸡连问题都没搞明白
点赞 回复 分享
发布于 2021-07-29 16:36

相关推荐

点赞 评论 收藏
分享
勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 12:19
要开奖了,期待ing
投递拼多多集团-PDD等公司10个岗位 > 拼多多求职进展汇总
点赞 评论 收藏
分享
评论
1
3
分享
牛客网
牛客企业服务