22届实习生春招面经【一】

上一周基本只面了两家公司,一家是字节,一家是商汤。这两家面的都是做异构计算加速方面的实习生岗位,只不过字节的岗位是系统部STE部门的异构计算实习生,而商汤的是MIG的计算机视觉见习研究员岗位,更专注于移动端的算法落地工程实现。目前两家都拿到了offer,分享一下面经。

字节一面:45分钟
  1. 问项目
  2. cache空间局部性是什么,cache miss发生的原因
  3. 快排算法的复杂度分析
  4. IPC在指令较多的时候会变高,此时如何根据两个函数的IPC进行性能比较?
  5. codesize对函数性能的影响
  6. 代码cost model的特征映射是怎么做的?
  7. 汇编指令的单指令及跨指令之间的特征有哪些
  8. Roofline模型的原理?
  9. 编译器parser的空间、时间复杂度分析
  10. 数据流分析的具体过程是什么?
  11. Top-Down过程的原理是什么?
  12. AST的构建方法?
  13. 虚拟内存中地址转换的工作原理是什么?
  14. 对AI的了解


字节二面:1小时20分钟
  1. Spec的工作原理是什么?
  2. 假设一个cache miss发生时的load时间为100ns,由于乱序执行等原因可以线性地处理多个cache miss,那么在一个指令执行window中如何计算最多可线性处理的cache miss数量?
  3. 写C++代码测量一个单核cpu在1秒内的访存数据数量(内存带宽)
  4. 测量代码和硬件之间可能存在哪些gap使得测量性能不准?(编译器及硬件角度出发)
  5. 测量代码中如何消除cache line size对测量结果的影响?
  6. 测量代码中如何消除page fault对测量结果的影响?
  7. 测量代码中向量化对测量结果的影响?
  8. 如何避免编译器优化中的常量传播对测量结果的影响?(顺便问了C++中volatile的原理)
  9. 如果数组中存的都是全局变量,对测量结果的影响是什么?
  10. 超线程的硬件原理是什么
  11. OpenMP原理
  12. 除了OpenMP还有哪些方法可以使用超线程运行程序?
  13. 了解apache和nginx吗
  14. 内存管理中的虚拟地址转换过程,page fault怎么处理
  15. CPU流水线深度和计算单元数量之间的关系对程序性能的影响(又譬如向量体系结构)
  16. 用过其他架构的cpu吗?

字节三面Leader面:1小时15分钟
  1. GCC/LLVM项目中的cost model是怎么做的
  2. perf原理
  3. instruction retired是什么
  4. 同样的函数在不同的编译方式下IPC下降的原因具体有哪些
  5. fall-through和jmp的哪种执行方式更快,为什么?
  6. CPU选择指令的乱序执行的算法?
  7. 会引起cpu流水线中stall的原因是什么
  8. 保证cache/memory一致性的实际硬件方法
  9. iTLB是什么?放在哪里?
  10. L1 i-cache是什么
  11. 堆排和快排的复杂度分析和为什么大家都在用快排
  12. MMU是什么,虚拟内存的工作原理
  13. 链接器的原理
  14. 将可执行目标文件运行后,os层级发生了什么,原理是什么
  15. fork()函数原理
  16. fork()之后什么时候子进程会修改.text内容
  17. 进程切换的具体过程,线程切换时有哪些信息被切换?堆和栈都是线程之间共享的吗?
  18. 栈的作用
  19. malloc和free的原理,free如何确定要释放多大的内存空间
  20. codesize如何对程序性能产生影响?
  21. Add/Sub和Dec/Inc之间的性能差异分析及原因
  22. 对性能会产生影响的汇编代码特征具体有哪些?
  23. 对代码的cost model需要考虑哪些因素?特征的选取如何完成?
  24. 如何学习计算机体系结构的知识?csapp说了啥?
  25. 你觉得自己的缺点是什么
  26. 手撕代码:小王写了一个makefile,其中有n个编译项编号为0~n-1,他们互相之间有依赖关系,用vector<pair<int,int>> deps表示。例如[a,b]表示b项依赖于a,请写一个程序解析依赖,给出一个可行的编译顺序。

用时5天顺利拿到字节实习Offer。

商汤一面:1小时15分钟
  1. 问项目
  2. 用C++写一个卷积函数并在二维矩阵上进行计算
  3. 使用SIMD向量化优化该函数
  4. 根据访存优化方法优化该函数(提高cache hit rate)
  5. 列计算优化(没做出来)
  6. 如何将计算量从O(MNK^2)降到O(MN)?
商汤二面:40分钟
问项目和相关细节(不太记得了,但是都问得很简单)
#实习##面经##字节跳动##商汤科技##C++工程师#
全部评论
楼主真的强
1 回复
分享
发布于 2021-03-17 19:46
看到似乎有用的信息——开心得点开——手写卷积函数?——还要优化?——这优化方法是什么鬼方法?——👋🏻
1 回复
分享
发布于 2021-03-17 21:36
联易融
校招火热招聘中
官网直投
请问楼主,想走这个技术栈的话需要看什么书呀?
1 回复
分享
发布于 2023-02-19 12:26 广东
codesize为什么会影响函数性能啊,QAQ不明白还查不到
点赞 回复
分享
发布于 2021-03-19 14:49
请问商汤就两轮技术+一轮HR面吗
点赞 回复
分享
发布于 2021-10-29 16:38
mark
点赞 回复
分享
发布于 2021-12-13 00:24
lz去了哪呀
点赞 回复
分享
发布于 2022-01-17 10:35

相关推荐

我前面的帖子还奇怪为啥招行信用卡笔试软件开发岗位只有行测,后来一看今天还有个专门的技术类笔试我收回之前说的“感觉适合计算机基础不好的同学”,倒不能说是全错,只是一点基础没有还是没法做的这次是软件开发岗和算法岗一起考了,前面通用的题有16个单选和一个编程题,后面两个岗位有各自的一道编程题,二选一即可,语言不限,有意思的是作为js选手竟然分开提供了v8和node,虽然二者在编程题里面区别真的很小前面的选择题怎么说呢,感觉比较适合java选手,我是前端选手,不过是科班出身,里面有些知识还是学过的,就是有些东西可能前端不咋考所以准备的不好,比如linux命令、一道读java的代码题、一道读python的代码题,不过我还是用过,了解过一些东西的,就是linux是真的拿捏不定,因为真的不常用其余的数据结构啥的没难度,还有零星几个简单的机器学习为背景的题,但是考的东西和机器学习也没啥关系通用的编程题不难,就是给一个字符串(都是26个小写字母组成),统计每个字符前面相邻的(注意这个相邻直接减少难度)字符的种类并输出,这个一开始没看到相邻,后来一想相邻真的不难,暴力统计即可,难点还是我是js选手,js里面不能像c++那样用s[i]&nbsp;-&nbsp;'a'这样进行字符和数字的转换,所以一开始卡了一阵,不过js可以用set统计种类,就是一开始差点忘了set.size这个api软件开发的编程题看起来很唬人,给一个数组,可以操纵1-m的前缀或m-n的后缀,对区间内部所有的数都加一,问能不能把这个数组里面所有的数变成原来数组的最大值。我以为是前缀和来着,其实不是,只要看从前往后递增、从后往前递增即可,只要两个递增区间中间的区间除了两个端点以外还有值就不可能,就是跳出循环的条件一开始写错了,只有25%,后面改了就ac提前一个小时ak交卷,反正做完笔试我就不想动了
投递招商银行信用卡中心等公司7个岗位
点赞 评论 收藏
转发
8 36 评论
分享
牛客网
牛客企业服务