25 暑期实习&秋招面经
1 自我介绍
主要投递CPP相关的开发岗位:异构计算、量化开发、数据库、后台开发。
2 暑期实习面试
2.1 腾讯 WXG 客户端
面试的部门主要做网络库,跟我的简历一点不match。
- 写题 LRU有bug没改出来
- 进程和线程区别
- 什么是死锁,死锁的必要条件
- 进程间通信方式
- 虚函数的用处,实现原理
- weak_ptr和shared_ptr的区别,shared_ptr的实现原理
- shared_ptr在什么情况下会造成内存泄漏?
- TCP三次握手,滑动窗口协议不懂网络(本科学的东西全忘了)
- 为什么阿里云实习只有一个多月?
- 说三种排序算法复杂度
- 什么是排序算法的稳定性?
- 又给了一个简单代码题
挂!
2.2 腾讯 WXG 企业微信-后台
- 自我介绍
- 介绍最近2012实验室实习做的PIM项目
- PIM项目里面的索引是怎么做的?怎么做的并发控制?
- 你提到使用bitmap管理内存,linux系统里面是怎么设计内存分配器的?
- 内存里的有序索引一般使用什么数据结构?
- 你从这个项目中学习到了什么?
- 存在一个redis服务器集群,现在向集群中新增一个节点,怎么做数据迁移?
- 使用链表管理共享内存分配,如果一个进程A申请了一块新的内存,结果进程A挂了,怎么回收这块内存?
- 介绍一下leveldb的核心数据结构
- 你在linux上是怎么调试程序的?gdb使用?gdb是怎么查看string值
- weak_ptr和shared_ptr的区别,各自的使用场景是什么?
- 基类的析构函数要加virtual关键字吗?不加virtual会有什么后果?
- 做两道题判断二叉查找树是否合法?假设不存在节点的最小值和最大值,只有一个compare函数,代码需要怎么写?要求空间复杂度为O(1)给一个无符号整数num,最多位交换一次,返回交换后的最大值
挂!
2.3 腾讯 csig 后台
一面
- 自我介绍
- 介绍存内计算项目,甚至还让我讲了10分钟的ppt
- 讲一下二叉查找树和hash table
- C中的static关键字
- linux中的虚拟内存?
- linux中为什么是三级页表?
- TLB的作用?
- 写题 链表l1和l2中存储两个数,然后将两数相加。
这个部门是做RDMA的,不match,然后把我推给别的部门了。
2.4 阿里云 Nosql
一面
- 自我介绍
- 华为opengauss组实习中的postgres到opengauss的数据迁移工具是怎么做的?
- 具体介绍一下redis-PM项目
- redis-PM在宕机条件下怎么保证数据一致性的?内存是怎么管理的?
- 现在让你重新设计一下redis-PM,你会新增什么哪些设计?目标是更好的性能,并且保证数据一致性
- PM的存储块大小设置多少比较合适?
- C语言中,数组和指针的关系是什么?定义int A[10],如何不使用size/宏遍历数组?sizeof(A)是多少?
- 熟悉Linux内核吗?linux内核中你最印象深刻的点是什么?
- 中断为什么要分上半部和下半部?还有别的考虑吗?提示一下,考虑函数可重入性
- 熟悉多线程编程吗?锁有哪几种?怎么实现的?
- 你是怎么测试系统吞吐的?
- 你是怎么找到系统瓶颈的?
- 为了获取更好的程序性能,你做过数据预取、SIMD等计算机体系结构相关的优化吗?
二面
- 自我介绍
- 讲PIM项目
- 讲redis-PM项目
- 讲GMDB架构
- 写题
2.5 美团 机器学习引擎
一面
- 介绍一下在2012实验室实习的工作
- 全连接层和attention的区别?
- 了解LLAMA 模型吗?
- 讲一下你对计算图的理解
- 静态计算图和动态计算图的区别
- 如果使用动态计算图,系统瓶颈是什么?
- 怎么对计算图做优化
- 介绍一下模型训练的过程。从磁盘-->内存-->GPU。
- 模型训练过程中,如何避免资源空闲/浪费?
- 介绍一下pipeline的流程?如果pcie带宽不足,GPU算的很快,会对pipeline有什么影响?如何优化?
- 模型参数在一个机器上放不下,增加机器,怎么训练?
- 模型参数切分在多个节点,如果反向传播比正向传播快一倍,会对流水线产生什么影响?
- 写题。关于链表删除节点,拷贝链表。
二面
- 讲 pagedAttention
- pagedAttention 和 FlashAttention有什么关系?
- 聊PIM项目,论文
- 你最敬佩的身边的人是谁?为什么?
- 两本你最印象深刻的书籍
- 写题。最长连续子数组的最大值
暑期实习 offer++,已拒
2.6 腾讯云 图数据库
一面
- 全程聊PIM项目
- 写题 DFS CSR图
二面
- 聊PIM项目,论文
- Mysql输入一个sql语句,处理流程是怎么样的?执行计划优化有哪些?
- 一道简单题
- 后面就是随便聊了
- 感觉像是kpi面试
三面
- 问了一些实习时间、地点情况
- 写题
四面
- 对cypher了解怎么样?写一个cypher
- 讲一下RedisGraph和GMDB的架构
- redis 的键值对过期策略
- redis 的键值对淘汰策略
- 讲一下B+树
- 讲一下LSM tree
- LSM tree 如何缓解读放大
- 对比一下B+树和LSM tree
- 讲PIM项目
- 写题
挂!
2.7 达摩院 AI芯片
一面
- 讲PIM论文,回答提问
- 你认为PIM芯片的优势在哪?
- 讲一下PIM-attention穿刺实验
- 为什么要存在PagedAttention?
- PagedAttention的kernal代码读过吗?怎么写的?
- 讲一下CPU流水线
- 讲一下TPU体系结构
- PIM有哪几种?
二面
- 讲论文
- 聊天,为什么阿里云实习只有一两个月?为什么不留在2012实验室?
- 对PIM加速大模型推理的看法?
- 现在面了哪些公司?
- 实习时间,地点
hr 面
- 自我介绍
- 你为什么适合达摩院这个岗位?
- 在AI方向,你的成长历程怎么样的?
- 讲一下你的职业规划?
- 为什么选择AI芯片行业?
- 在之前面试过程中,你与面试官达成过哪些共识?
- 讲讲你对“生态”的理解
- 你认为AI行业之后会怎么样发展?具体一点
- 除了达摩院和2012实验室,你还有别的意向公司部门吗?
反问:
- 医疗AI发展迅猛,你认为什么时候医疗AI可以真正走进千家万户?
- 达摩院怎么解决cuda生态问题?
- offer流程
暑期实习 offer++
2.8 拼多多 服务端研发
一面
- 自我介绍
- 写题。手写 vector
- 讲llama2模型结构
- 讲PagedAttention,kv cache
二面
不知道是二面还是被捞了,流程上也没有显示几面
- 自我介绍
- 介绍PIM项目
- 写题
三面(主管面)
- 在实习过程中,你解决了棘手的问题,受到mentor的赞赏,有没有这种情况?这儿问了好长时间,直接就是讲完了整个项目
- 三段实习的公司/部门有什么区别
- 你是要去华为工作吗?
- 两种岗位,research or 开发岗位,你怎么看?你会怎么选?
反问:
- 你们业务流程中,有没有什么棘手的问题?怎么解决的?
- 工作时间
- 如果一段时间内,系统没有棘手的问题,你们会比较清闲吗?
因为已经拿到心仪offer,主动要求主管结束流程
2.9 敦和资产
一面
- 讲论文,PIM项目
- 持久内存键值存储项目
- 讲PagedAttention的思想
- 对汇编了解多少?
- 你最敬佩的身边的人是谁?为什么?
二面
- 写题
- 讲了一下paper
三面
- 讲一下CPU cache
- CPU进行矩阵按行遍历/按列遍历的性能差距有多少
- 对量化行业有哪些了解?
- 自我评价
- 剩下的忘了
暑期实习 offer++,已拒
2.10 蚂蚁 图计算
一面
- 手写 shared_ptr
- Neo4j 是怎么存储图的?
- C++ 11相比C++ 98新增加了哪些特性?
- STL中的 unordered_map 和 map 有什么区别?
- 知道右值引用吗?
- 熟悉C++多线程编程吗?
- 讲一下 RedisGraph 是怎么存储图的?
- 如果领导给你了一个非常棘手甚至不可能完成的任务,你会怎么办?
二面
- 讲PIM架构,PIM项目
- 一个PIM核对应的内存容量是64MB,为什么不能对应1GB?
- RedisGraph 执行查询的过程
- RedisGraph 的执行计划了解吗?
- 熟悉C++多线程编程吗?
- 对异步编程了解吗?
- 待排序数据放在磁盘中,内存容量比较小,怎么对数据进行排序?
- 讲一下C++的多态
- 讲一下编译的过程
- 讲一下静态链接和动态链接
- C++类中默认创建的函数有哪些?
- 什么情况下要用到拷贝构造函数
三面
- 讲PIM项目,论文创新点
- 磁盘中有1TB数据,内存大小为4GB,如何对数据去重?估计运行时间是多少?
hr 面
- 为什么选择保研上交?
- 讲一下硕士做的项目是做什么的?
- 论文的idea是怎么来的?
- 代码能力怎么样?
- 你最大的优势是什么?
- 你的缺点是什么?
- 为什么不选择读博?
- 实习、工作城市选择?
加面
- 自我介绍
- 介绍存算架构
- 介绍论文背景,创先点
- 介绍 redis 持久化
- 可以自己单独承担项目调研吗?
暑期实习 offer++
转正offer 36k,p6
2.11 稳博投资
一面
- 大致讲了一下论文
- 讲一下CPU的cache line
- cache一致性协议
- 讲一下C++的模板和虚函数是什么?
- 一个class里面,模板函数可以是虚函数吗?
- 为什么模板函数体要放在.h文件里面?
- 栈上分配内存和堆上有什么区别?
- 讲一下锁有哪几种?怎么选择?
- 讲一下IO多路复用,epoll原理?
- STL中的 unordered_map 和 map 有什么区别?
- 增加删除元素,哪几种数据结构的迭代器不失效?
- TCP释放连接中的2TSL的作用是什么?
- 怎么修改UDP协议,实现可靠传输?
- 你是如何找系统性能瓶颈的?
- 如何对性能瓶颈进行优化的?
- 如果没有占比较大的算子,你如何进行优化?
- 写题
暑期实习 offer++,已拒
3 秋招提前批
3.1 tplink 联洲 操作系统
一面
- 自我介绍
- 介绍 PIM 论文,QA
- 三个线程,线程1打印a,线程2打印b,线程3打印c。如何做到顺序打印a,b,c
- 内核态和用户态的区别?什么情况会陷入到内核态?
- 进程间通信方式
二面
- 自我介绍
- 介绍 PIM 论文,QA
- 讲一下在华为2012实验室的工作
- cache 一致性协议
- 进程与线程的区别
- 线程间的通信方式
- hash table 冲突解决方法
三面
- 自我介绍
- 讲论文
- 聊天
秋招 offer,32k
3.2 腾讯 青云计划 云架构平台部
一面
面试持续时间90min
- 自我介绍
- 讲在蚂蚁做的项目Graph-Aware SSTable 设计
- 讲 processing-in-memory 架构,讲论文设计
- 写题:根据cas执行,写无锁list
- 又一个文件描述符,向offset=3kb处写入4MB数据,操作系统中会发生什么?
- 主存的读写时延是多少?cache 的读写时延是多少?
- 讲一下 C++ memory 模型中的 release
4 秋招
4.1 淘天 基础平台研发工程师(T-Star)
一面
- 自我介绍
- 介绍论文
- 介绍 2012 实验室实习做的项目
一面挂
4.2 拼多多 服务端研发
一面
- 自我介绍
- 讲在蚂蚁做的项目Graph-Aware SSTable 设计
- 写一段死锁程序,解决死锁
- 在一大块连续内存上实现 hash map,主要实现出来 set(key, value) 函数
二面
- 自我介绍
- 手撕题:找出两个有序数组的中位数
- 操作系统为什么分为内核态和用户态?
- 讲一下 page cache
- 什么情况下使用 page cache?什么情况下使用 direct io?
- 讲一下图数据库和关系型数据库的区别
- linux 进程和线程实现的区别
- 系统中线程上下文开销比较大,如何解决这个问题?
- 讲一下 redis 为什么高性能?
秋招 offer++,37k
4.3 淘天 基础平台研发工程师
- 自我介绍
- 讲蚂蚁和2012实验室做的项目
- 讲一下 C++ 中的多态,如何实现的多态
- 讲一下 C 中指针和C++中的智能指针的区别
- shared ptr 的实现原理是什么
- 系统调用是如何实现的?linux 有哪些常见的系统调用?
- 手撕题:LRU
挂了
4.4 华为
海思 ai 芯片线下面试,给不到预期的职级。
后面转投之前实习过的 2012 预研部门。
秋招 offer++,职级薪资符合预期。
mark:秋招慎重考虑海思。据我所知,基本都给的13 14级,简直离谱到家了。
5 心得
秋招被挂惨了,主要原因在于暑期实习选择的方向有问题。目前已正式入职,据我统计,公司去年招聘 hc 有一半给了 ai 相关岗位。然而,我暑期实习选择了图计算方向。。。秋招被挂惨这也就正常了。
选择 >>> 努力
#我的求职总结#