腾讯 秋招正式批 qq 客户端 一面

我只投过天美暑假实习和微信实习补录,但莫名其妙有个qq客户端的秋招,不过岗位和我填微信补录的时候一致,莫不是我填错了

总共面了2个小时十几分钟,我的项目是webserver + mit6.s081,整个过程是项目拷打 + 八股 + 手写LRU。

1. 自我介绍
2. 介绍一下mit6.s081的模块组成
2.1 介绍一下你在内存管理方面的工作
2.1.1 你认为操作系统内存管理要有哪些模块
2.1.2 哪些部分是xv6原有的,哪些是你实现的
2.1.2.1 mit6.s081课程的形式是怎么样的
2.1.2.2 是你们学校要求学习的吗?
2.1.3 操作系统是怎么分配内存的
2.1.4 频繁的分配内存是低效的,有什么高效的方法吗?
2.1.5 你有读过linux的源码吗?(*)
2.2 说一下你是怎么降低锁争用的(Buffer cache实验)
将缓存分成八份,形成八把锁(8个CPU)
2.2.1 那你有扩大每份缓存的大小吗?
2.2.2 你有测量过性能提升数据吗?(*)
2.3 说一下你在进程管理部分的工作
2.4 说一下中断
2.4.1 你知道中断向量吗?
2.4.2 在linux上中断向量是怎么回事?(*)
3 如果有多个任务,如何使用thread处理?
3.1 多个线程访问同一个任务队列,需要考虑什么问题?
3.2 加锁之后性能降低,在此基础上如何提高性能?(*)
3.3 如果只有一个线程,多个任务,一个任务生产者,如何提高该线程的性能?(*)
4. 介绍一下webserver那个项目
4.1 说一下服务器的运行流程
4.2 reactor是什么?
4.3 异步日志咋做的?
4.3.1 如果断电了,日志会丢失吗?
只实现了关闭服务器时不丢失,关闭电脑不丢失未实现(感觉这是webserver的一个很好的可以扩展的点)
4.3.2 你有了解过相关机制吗?(*)
本想说mysql的相关机制的,但太久没复习了,支支吾吾了半天没说出来
4.4 如何衡量webserver的性能?
4.4.1 如何优化来提升qps(*)
4.5 有实际上线运行过吗?

#腾讯#

全部评论
大佬,能看看你6.s081是怎么写进简历的吗
3 回复 分享
发布于 2024-01-13 23:07 安徽
怎么感觉全是操作系统的
1 回复 分享
发布于 2023-08-21 18:07 陕西
腾子问的好深啊
1 回复 分享
发布于 2023-08-20 08:43 上海
同个岗位 比你早开始几天…
1 回复 分享
发布于 2023-08-19 09:06 北京
m
点赞 回复 分享
发布于 2024-03-14 16:34 广东
1. “2.1.5 你有读过linux的源码吗?”这个该怎么回答,说看了会不会问的很深,说没看会不会不太好 2. “3.3 如果只有一个线程,多个任务,一个任务生产者,如何提高该线程的性能?”这个要回答呢,感觉是生产者消费者问题,我实现上用的是环形缓冲区(好像MySQL还是Redis底层也有用到)
点赞 回复 分享
发布于 2023-09-04 22:38 广东
两个小时也太吓人了吧
点赞 回复 分享
发布于 2023-09-01 19:18 北京
兄弟部门选的是都喜欢吗?我想面鹅厂都没得被捞,我选的csig
点赞 回复 分享
发布于 2023-08-30 17:25 上海
老哥过了吗
点赞 回复 分享
发布于 2023-08-24 16:20 广东
要不要考虑一下4399,HC拉满,tf1mn,直入笔试环节。
点赞 回复 分享
发布于 2023-08-22 09:28 广东
这么多问题的吗
点赞 回复 分享
发布于 2023-08-19 17:11 陕西

相关推荐

拖更太久了,主要是从4月份开始工作到陆陆续续开始上手工作,全身心投入工作中了,最近闲下来又可以写一写文章,并且以我工作和学习的经历希望让大家增强对Linux驱动的理解。特别是我后台经常会有同学私聊我,问我一些Linux线路呀或者学完xv6应该学什么呀,我要走Linux驱动方向需不需要看Linux网络编程呀等等问题,我们今天一一解答。1. 学完xv6之后,我想走嵌入式Linux方向还需要怎么提升呢?针对这个问题,我想说嵌入式Linux需要哪些技术点。首先针对驱动,驱动其实分为很多方向,简单的有iic驱动,spi驱动,复杂的有camera驱动,显示屏驱动,音频驱动,nvme驱动还有最近流行的npu驱动,GPU驱动等等。这些驱动的共性都是要掌握设备树,sysfs文件系统,虚拟内存管理,设备总线驱动框架等等。不同的驱动还要细化,比如你想走camera,可能你要对v4l2,mipi协议这些要进一步了解,如果你想走ai芯片驱动,那最好对smmu,dma-buf,异步队列排序,多线程优化,drm框架,ping-pong存储,高性能计算有一定了解。如果是非驱动岗位,偏向CPU启动安全等方向,可能还需要掌握ARM的架构,包括最新的v8,v9架构等等。所以针对你掌握的不同驱动,你需要加强不同方向的知识。2. Linux驱动学完后期应该学什么,我看完韦东山驱动大全还需要看Linux系统编程,Linux网络编程吗。首先,驱动跟应用是不分家的,在真实操作驱动的过程中,会时刻跟应用打交道,但此刻的应用还是停留在Linux内核层面的应用。实际工作中的应用方向则会偏向安卓,比如一些中间件的实现,安卓api的调用等等,常见于手机厂系统开发岗位。而Linux系统编程更多强调于我们上层怎么用malloc,mmap分配内存,如何多进程多线程跑多个服务,怎么多线程和访问同一个变量,如何写出免锁队列。因为只要复杂的一些驱动,你可能就不单是负责最基础的driver那一层了,跟寄存器打交道的是bsp方向,驱动方向考虑更多的还是底层代码的高效性,稳定性等等。比如nvme驱动,如何对具有优先级的bio进行快速响应,并分配给SSD,可能就需要哈希存储或者平衡二叉树来做优化。包括我们说的npu驱动,如何提升cpu与npu的通信,CPU的算子如何快速部署到npu上,并最短时间把结果反馈给CPU,大量算子不同优先级如何分配线程运行,还要兼顾低功耗来进行休眠等等,其实都离不开我们Linux系统编程的很多知识。而针对Linux网络编程,这个要不要掌握真就因人而异了,这个最初是走c++的一帮人,因为要搞个webserver项目走互联网,所以在那之前会先学Linux网络编程,对于嵌入式Linux方向,大部分方向是不用去深入掌握的,除非你去路由器公司做网络驱动,那就另当别论了。3. 方向这么多,我应该选择什么方向作为我的主攻方向呢。不管你做了xv6,还是看了驱动大全,你可能都会疑惑自己会什么,只能脑子有点驱动概念有点操作系统概念,但是没有深入理解某个方向,有点浅尝辄止。所以我的建议是至少得熟悉某个子方向,你可以是熟悉camera驱动,调一调摄像头,改一改底层代码提升帧率。也可以走ai嵌入式方向,部署一下YOLOv5,然后拉通CPU到npu的函数跳转。不管走什么方向,不能只停留在上层调api,要深入到底层代码逻辑,这才能在秋招中脱颖而出。而且真正工作上,驱动与驱动,驱动与应用是不分家的。最简单的一个例子,我们想要获得高帧率的图像显示,中间经历的驱动包括了camera获取图像,npu或GPU对每帧图像实现图像锐化等ai算法,显示屏驱动稳定显示。但凡某个驱动出了叉子,在显示屏驱动那一块就会出现显示卡顿的情况或者丢帧。所以常常就是你不能只对你的方向有所理解,其他方向也要有所建树。最后同样的,如果想继续看后续请点击关注,最后你的鲜花和点赞将是我更新的极大动力。
通信/硬件秋招总结
点赞 评论 收藏
分享
评论
15
134
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务