腾讯 搜索广告c++面经分享

简历上的项目1: C++ Web Framework REST API 框架(反复重点问了这个项目)

项目源码 : https://github.com/wfrest/wfrest

项目是基于c++ worklofw(https://github.com/sogou/workflow) 框架之上的拓展插件,所以也问了一些底层workflow相关的问题。

简历上的项目2: 基于协程的c++服务器框架

项目源码 : https://github.com/BurgerGroup/Burger

项目是魔改了经典秋招项目muduo,task都封装为一个协程,自动切换调度,是有栈协程。

问题:

1. 为什么选择workflow作为底层,与libhv,asio的差别。

主要回答了他的任务流的设计,底层的任务调度模式(与muduo的one loop per thread做比较), 如何应用多继承(比较常见的框架都是基于对象,很少简单有这种设计巧妙的多层继承架构),顺便问了一波经典c++继承八股,虚表之类的。

因为workflow是一个纯异步框架,介绍了如何实现异步,比较了和我的另一个协程框架如何做异步的区别。

2. 问了wfrest项目的一些设计。

利用前缀树存储path,介绍了一下如何管理生命周期。

问了http1.1相关的八股,https相关八股。

介绍了如何写http parser。

问了下application/x-www-urlencoded,multipart/form-data相关区别,如何实现解析。

问了一下项目中遇到什么困难,如何解决优化。(主要说了利用calgrind和perf去做性能分析的经历,然后还有一些设计纠结的问题,打压测试结果和其他框架做了对比)

3. 协程项目

问了如何实现协程(主要就是那段汇编切换寄存器,还有hook的原理)

问了O1,O2,O3差别,知道编译器有哪些优化。

问了经典八股协程,线程,进程的区别。

然后说到协程并不能带来性能提升,性能的核心还是epoll,顺便又说了一波epoll八股。

4. 算法

一个归并排序的题,因为项目里总是提到json,让我写了一个函数判断json字符串是否valid

在workflow中有一个简单的json解析器,我写过一个相关的代码解析: https://zhuanlan.zhihu.com/p/493430118

#C/C++##面经##腾讯##项目#
全部评论
看了楼主github的项目,难以想象这居然是校招生的水平,tql!!
5 回复
分享
发布于 2022-07-17 22:20
我只能说两个字 亏贼!
1 回复
分享
发布于 2022-07-27 18:00
滴滴
校招火热招聘中
官网直投
楼主怎么学汇编的啊,学了多少
1 回复
分享
发布于 2022-08-15 10:22
太厉害了
1 回复
分享
发布于 2022-08-15 23:17
楼主是实习吗
点赞 回复
分享
发布于 2022-07-17 21:43
楼主是校招生?
点赞 回复
分享
发布于 2022-07-19 23:35
LZ是不是在群里讨论有栈无栈的那位  哈哈
点赞 回复
分享
发布于 2022-07-24 21:43
好强啊
点赞 回复
分享
发布于 2022-07-26 21:18

相关推荐

22 140 评论
分享
牛客网
牛客企业服务