腾讯 后台开发 光子工作室 一面凉经

之前很少分享面经,因为要不就是实验室项目经历,八股拷打,一些解决问题的思路,没什么参考性。

这次面试腾讯,又再一次深切的感受到大厂的威压(之前两次有过如此感受的是字节的提前批算法一面和快手算法三面),面完之后能明显感知到自己对于简历上所写内容的深入理解还不到位,以及难以在面试的短暂时间里体现出自己的优势。

而且开放性问题不少,发出来看看大家的看法以及对于其中的某些问题有没有好的答案,不吝请各位大佬赐教!

--------------

总计 50min

实习经历

腾讯云计算,实习的两个月主要做了什么?(讲了两个主要完成的需求)

C++

引用和指针的区别?

引用的底层原理是什么?比如只能指向一个变量(一开始没想到,之后意识到了是const pointer)

在编译器的哪个阶段实现的?(?)

C++11里的特性,说一说?(列举了常用的那几个)

你知道 Lambda 使用时需要注意哪些问题吗?(我自己说了捕获和返回值,但这种开放性问题真的不好答,尤其是没具体的深究过)

了解协程吗?(只说了知道腾讯开源的libco,但是具体没了解过,面试官说可以了解一下,C本身也有协程)

网络编程

epoll 和 select 的区别?(红黑树和数组)

能不能再具体一些?epoll 和 select 是如何处理事件的?

(这块儿也是好久没看了,看得多点,写的太少,就只有个印象)

计网

对 tcp 和 udp 了解的深吗?(这问题我该怎么答?)

举例,如何用 udp 实现可靠传输?(除了序列号,超时重传,拥塞、流量控制等机制,我说了还有 QUIC)

为什么要有 QUIC?(这时候应该说 TCP 本身的缺陷,建立连接延迟、队头阻塞、连接迁移等问题,我举了连接迁移的实现机制,但是之后也没继续问了)

项目

webserver 定时器是如何实现的?如果要用 STL 里的某个数据结构,应该选哪个?存放的数据又是什么?

(此时我透露了这个项目的部分是我参考开源项目的实现做的,而且确实好久没看了)

日志库是如何实现的?(参考的muduo)有没有什么优势?

线程池是如何实现的?(std::future + 可变参模版)为什么要用线程池?一个16核的机器,分配16个线程,任务结束后等待另一个任务的派发,不用线程池不也是一样的吗?(我感觉这个问题我没有理解)

缓存池是如何实现的?(LRU)。有没有突出的地方?(没有。。。)

简历中有pytorch?是用来做什么的?(聊了聊有关简历上没有的另一个实验室毕设项目,深度强化学习的全景视频传输优化)

能不能聊聊深度学习和强化学习的不同?

强化学习中有个概念叫 MPD,能不能说一下?马尔可夫决策过程

框架是自己写的还是有参考?深度学习用的pytorch,项目框架是自己搭的,有借鉴传统视频的处理框架。

主要用了哪些 python 库?(听到这个问题我真懵了,除了 numpy,我就没记得其他库,除非实践中遇到问题找到了能解决这个问题的库,否则我觉得很难回答上来)

反问?

主要技术栈?C++ 和 Lua,不过 python 和 Go 也有。

如何看待 C++ 这门语言?(因为最近陷入了一种自我怀疑中,是否不该选 C++,以及我到底发挥了 C++ 的哪些特性?Go 和 Rust 在逐渐蚕食 C++ 后段服务器的应用范围,而Java相对来说确实更好找工作)面试官说即使是 C++ 开发,进来也不一定能写,而之所以这么招,是因为如果一个人对 C++ 特熟,那么转别的语言相对来说就会轻松很多。

面试官介绍了一些部门业务,这也是为什么之前问了问强化学习的问题。面试官举例,和平精英里的 AI,应用强化学习使之行为更自然。

#面试经验#
全部评论
关于引用的两个问题,我粗略查了一下,编译时就是当做一个常量的指针处理的,汇编阶段完成这一步的
1 回复 分享
发布于 2023-08-30 19:21 陕西
点赞 回复 分享
发布于 2023-08-30 17:55 北京
“引用的底层原理是什么?”这个我认为是不太对的,b站上有关于这个的讨论,并不仅仅是const pointer 这么简单
点赞 回复 分享
发布于 2023-08-30 18:41 山东
感觉像是同一个面试官
点赞 回复 分享
发布于 2023-08-30 20:05 陕西
招联金融2024届秋招启动啦,欢迎点击头像详细了解🌹
点赞 回复 分享
发布于 2023-08-30 23:37 广东
兄弟啥学历啊
点赞 回复 分享
发布于 2023-08-30 23:46 江苏
C++20有coroutine协程,但是概念和Go的协程区别比较大。不知道面试官是不是想问那个
点赞 回复 分享
发布于 2023-09-14 03:22 美国

相关推荐

03-05 15:15
已编辑
中国人民大学 Java
发面经,涨好运一面 2.251h30min,无算法,基本上是全程八股1.go slice实现原理,追问扩容数组拷贝很耗时,有了解怎么做的优化吗2.redis缓存雪崩,缓存击穿,缓存穿透3.缓存击穿提到了分布式锁方案,问分布式锁如何实现。追问分布式锁抢锁失败应该做什么4.缓存穿透提到了布隆过滤器,问布隆过滤器的原理,追问写操作时写布隆过滤器和写redis数据缓存的一致性如何保障5.kafka如何保证消息的可靠性,追问消费者幂等性如何实现。幂等性提到了唯一id的方案,追问唯一id在哪里生成6.内存只有512M,进程分配1G内存可以实现吗。追问如何关闭换页机制,追问oom kill时杀哪些进程7.问tcp可靠性如何保证8.tcp场景,发送端发seq=11,12,13,接收端只收到11,13,接收端回复什么信息。追问超时重传,快速重传。追问tcp滑动窗口的概念,滑动窗口的初始大小通过什么参数调整9.发http请求的过程,追问tls握手过程,追问一个会话如何记录用户的状态信息(token),追问为什么用了https还需要session,token这些东西10.线程池优化相关,为什么线程多了性能反而受到影响,追问linux线程调度的实现,追问线程调度优先级如何设置11.聊实习的时候顺便基于当时的场景问了一个时序问题,A,B两个机器向C发请求,A比B先发,怎么保证到C的请求的时序和A,B发请求的时序是同一个(这个问题聊了一会,当时没意识到没办法实现),追问为什么没办法实现。追问如果A,B在一个进程里,能实现吗,如何实现二面 3.3约面的时候说要面1h30min,结果最后只面了30min1.简单聊了一下两个项目的架构,一两个关于项目的问题,但不深2.问我熟不熟悉微服务sidecar架构3.一些个人bg方面的问题4.等边三角形三个顶点上三只蚂蚁,每只等概率往两边走,问蚂蚁不相撞的概率是多少5.一道口述的算法题,平面上一堆点,找出所有最小围住的区域的集合。一开始以为是力扣那种恶心人的平面几何数学题,后面沟通让我用图论的方式做,又聊了一下思路,说不用写代码了,也不知道他是觉得算法能力强还是弱6.反问出结果时间,说要横向对比感觉二面啥都没问,面完就有种要挂掉的预感,果然今天早上看挂了。#面经##腾讯#
点赞 评论 收藏
分享
1.16一面1. 做题   1. 并行请求网站   2. 查找二数之和   2. golang:GMP  defer执行顺序  并行的实现方式(互斥锁、channel)   3. 项目:Prometheus二开  4. 实习:集群架构+体量  监控方案中的难点thanos持久化5. OSI6. http 方法   7. HTTP 1.1  HTTP 2 的TCP队头阻塞原因,HTTP3优化策略 QUIC   - HTTP 1.0 默认短连接,HTTP 1.1默认长连接,长连接可以处理多个请求,但必须按照顺序处理请求、按顺序返回响应。因此如果在队列中,一个请求由于网络等问题耗时过长,便会阻塞后面的请求。   - HTTP 2 对1.1的优化在于,采用二进制分帧,同时支持多路复用,即在一个TCP连接上处理多个流的传输,但如果某个stream数据丢包,需要等待重传,造成阻塞。   - QUIC 基于UDP;每个流单独传输;内置加密TLS1.3,减少握手延迟     8. https(ssl -> tls)   TLS支持 前向保密性,保护历史通信,应对密钥泄露的情况   加密原理:   - 使用 DHE (迪菲赫尔曼加密)生成一次性的会话密钥;   - 后续升级为 ECDHE(椭圆曲线迪菲赫尔曼加密),使用椭圆曲线算法,优化性能     9. 输入域名后涉及到的协议  10. DNS 查询使用的协议 UDP TCP   UDP和TCP都用到   - 辅助DNS服务器每隔一段时间向主DNS服务器做区传送的时候,使用TCP   - 域名解析的时候追求速度,使用UDP11. 可观测性了解吗12. docker网络模式有哪些13. k8s组件作用  14. 操作系统Linux发行版15. Linux的内核态和用户态    问的挺基础的,答得不好
查看16道真题和解析
点赞 评论 收藏
分享
评论
19
125
分享

创作者周榜

更多
牛客网
牛客企业服务