腾讯一面挂了被捞客户端

投票
客户端是没人去吗,都在捞后端的。
要不要面试,面了不会有啥影响吧?
全部评论

相关推荐

04-20 23:08
河海大学 C++
投完简历,做了测评,AI 面试都还没做。没想到星期一 4 点投完论文,早上十点多组会的时候就给我发腾讯客户端一面。C++ 八股左值和右值区别。突然问这么简单的一下有点懵,然后大概答了一下左值、将亡值、纯右值,然后强调了一下左值的所有权,转移时用 move。TCP 三次握手和四次挥手,简单说了下三次握手和四次挥手流程,提了一下捎带机制和挥手的时候发送剩余数据。智能指针。提了一下 shared_ptr,强调了应该优先用在所有权明确时优先 unique_ptr,顺带提到了 shared_ptr 存在的循环引用问题。追问怎么解决循环引用,回答 weak_ptr 以及shared_ptr 引用某个对象时所有权意味着主从关系,若 A、B 相互引用,造成析构时引用计数无法正确归零。然后解释 weak_ptr 是弱化的所有权,一方面起到观察作用,另一方面是引用控制块由于是智能指针共享的,其中的弱引用计数也起到了 RAII 的作用,可以让引用计数块正确析构。虚表是什么。有 virtual 函数的类就是虚类,类中除了自己定义的成员还有一个虚表指针指向虚表,表里面有虚函数入口地址和 RTTI 信息,RTTI 信息用于 dynamic_cast 的时候判断类型。追问虚类内存布局,举了个例子,对于一个没有成员的类,大小 1 字节(约定是这样),若其中包含了虚函数(特别提了一下成员函数不占用类的空间,全局一份),就会在类成员的基础上加上一个虚表指针,这时候类的大小是 8 字节(64 位),也就是一个指针的大小。还好之前有看过 LLVM 的 IR,对这个比较熟。知道哈希吗,怎么实现。通过一个哈希函数将一个大的集合映射到一个小的集合,实现 K-V 的存储,由于是大集合映射到小集合,所以存在哈希冲突。一般有线性探测、拉链、再次哈希的方案。STL 里哈希表是用的拉链 + 红黑树。追问红黑树。答曰红黑树是 AVL 的改进版本,AVL 要求左右子树高度差最大为 1,红黑树放宽了这个限制。由于怕拷打红黑树的操作,遂补充一句红黑树的插入删除时间太久没接触有点记不清了。进程和线程区别。进程是操作系统资源调度的单位,堆、文件句柄(描述符)等资源都托管在进程中,线程是操作系统调度的最小单位,本质是一个在 CPU 核心上运行的函数。由于这个问题过于简单,怕没有亮点,遂延伸到 Windows 的进线程模型是比较标准的,而 Linux 实际上并没有真正意义上的进线程,只有任务(task_struct),任务从行为上类似于线程,task_struct 中有 thread_struct 在上下文切换时存储 CPU 的通用寄存器值、段寄存器值等,此外还有一些额外的信息标识进线程组来贴合进线程的概念。然后又延伸到 Linux fork,fork 时仅 fork 一个 task,实际上并没有 fork 进程的所有线程,若在 fork 时其他 task 调用 malloc 等内部申请锁的函数会导致 fork 后的 task 死锁,因为其他的 task 已经不存在的,还提了一下 chrome 源码中的一些关于 fork 的注意事项。滔滔不绝讲了半天面试官说不要延伸太多。什么是线程同步。懵逼二度,不知道从哪里说起。和面试官确认了一下讲了数据竞争问题,mutex 是阻塞原语可以实现互斥访问,条件变量是同步原语,可以在某个条件不满足的时候阻塞,等到条件满足时由其他线程唤醒,比如生产者消费者问题。还提到了原子变量和内存屏障也能部分地实现同步,由于之前面试官说不要延伸,遂打住。项目相关:有一个操作系统内核实现(没问)还有一个几十个 stars 的游戏工具项目,主要是用在游戏里自动刷任务的,讲了一下项目架构。C++ 实现的控制器里面塞了个自己部署的深度学习模型做推理,判定状态后实时交给 Lua 执行器执行,Lua 执行器里封装了 Logitech G Hub API,由于标准库仅支持 string、math、table,缺少协程,遂用了一点 tricks 实现了简易协程用来在命令变更时切换任务。为了让用户使用方便还做了个前端。Skills 了解过吗。不了解,但知道 Agent,做过一些相关的横向、纵向研究,然后谈了一下 AI Agent 构建的一些流程。面试官说可以了解一下 Skills。算法。面试官挑了半天,给了一道 Leetcode hard 的并查集 Redundant Connection II,人直接炸了。撕了半天,面试官又给了一道(没看)说能做出来一个就行。由于第一道已经写了一点,遂继续尝试。写了半天,运行之后发现结果不对,感觉寄了。面试官说思路是对的,就直接让我过了(人也太好了)。反问。问客户端做什么,说是 QQ。正好了解过,就问 QQ NT 这个架构是怎么做跨平台的,几年前 Linux 根本没有 QQ 用,现在除了 Wayland 下面有点小问题,X11 基本体验上和 Windows 没区别。答曰 Electron.js 加上底层封装库。问底层封装是不是做成动态链接库给上层调用,答曰是,我附和说跟 vscode 有点像。日常实习,接不接受 base 深圳。之前投一堆简历都没啥动静,这会压根不挑了。PS:还好没有问后端相关的东西,不然就歇菜了。所以AI 面试还要做吗?不知道能不能进二面。
查看15道真题和解析
点赞 评论 收藏
分享
昨天 08:52
四川大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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