文远知行infra高性能-完成面试流程

近期会分享一些面经,由于面试突然增多,学业又紧迫,因此从和计算机体系结构/IC 最不沾边的开始
#秋招#  #文远知行#  #2025#

受邀内投
一面8.9
拷打简历,虽然他不懂 CPU 微结构,但是基本上努力讲明白了,画了几个结构图
问了一些 FPGA 的新动向和互联方式,他比较感兴趣但不太了解,遂为其介绍
无八股
数据结构题,二叉树
反问部门,onboard ,也不需要会cuda
面完两小时后约面

二面8.13
继续拷打简历,这个面试官对 CPU 有一定的了解,问了一些 ISA,cache,内存顺序/一致性的问题
简单的 OS 八股
又一数据结构题,二叉树层次遍历
下周一约面

三面8.22早8点
面试官人在美国,所以约的很早。但是能看出面试官对此有所准备,问题设置也由浅入深,非常合理。半中半英问答。首先说因为之前面试官把他想问的简历都问过了,因此直接开始 coding,边写边讨论。我选择用 C。问题包括但不限于:
matrix 由26个英文小写字母组成,在其中搜索目标字符串,上下左右四个方向连接起来即算作匹配。若匹配则调用 callback。我先找首字母起始位置,再用 DFS 即可。面试官问了一下回溯时的状态恢复。再问复杂度。再问如何降低复杂度,其实可以对 input str set 做一个前缀树,提前存储更多的前缀起始信息。如果不在树里的怎么办?常规搜索边搜边建就行?如果数据量很大,内存不够怎么办?先按 hash 把更可能有重复前缀的 input 一起处理,更可能复用之前的状态。如果 callback 很 heavy 怎么办?异步起一个新线程做。。。
反问了部门工作,面试官详细介绍了下,基本上是各种新硬件的 driver 到 OS 级的工作
周末后的周一约四面。

四面(终面)8.30早8点
小插曲,showmebug宕机了,HR小姐姐7点多帮忙开牛客环境,辛苦了~
简单自我介绍后,开始询问我简历上的CPU微结构项目
由于项目涉及到内存访问,面试官询问了以下问题:
1)什么是内存一致性模型?x86, ARM下的内存一致性模型是怎样的。从概念到微结构进行了解释
2)如果要确定内存操作在多核间的次序,怎么做?回答了Cache Management Operation (flush, clean) 以及微结构语义屏障指令 (fence)。另外也提到锁来防止并发访问冲突,项目中涉及的。
3)PCIE了解吗?能简要介绍下CXL协议吗?回答CXL over PCIE。如何利用PCIE的设施讲一下,将了一下PCIE switch可以扩展链接多设备/内存等等。用没用过lspci以及控制其他外设?之前玩FPGA时用到过。问那你对PCIE协议很了解咯?感觉回答NONONO
4)在SoC中,如果socket 0 写了一个内存地址,socket 1是怎么读到这个新数据的?因为面试官x86用得多,遂为其介绍基于MESI的缓存一致性协议状态+事务。问了很多细节,包括状态转换是怎么知道下一个状态的,会不会有中间状态等等。

coding,问我是不是ACMer,赶紧否定(大早上真做不了算法题)。用C写了个在字符串s中寻找cover子串t,不要求连续,也不要求顺序。直接双指针写的,没做优化。但好像这一面的面试官并没有care复杂度。
问我咋会投他们,我说HR邀请的,乐
反问了base,工作内容上一面问完了。体验整体良好

文远面试轮次多,三四面时间很阴间(因为面试官在美国),提问范围广,而且确实每一面都有要刷人的风险(基本都很大,可能是因为HC少)。但因为我可能不是算法岗吧,手撕的题都比较简单,或者要求比较低。整体来讲,面试官都很客气,互相尊重,氛围非常好。

9.3 终面✅,推进 offer 

9.6 确定 oc
若有后续,持续更新
全部评论
太牛了老哥
点赞 回复 分享
发布于 2024-09-13 12:19 美国
三面 沾沾喜气
点赞 回复 分享
发布于 2024-09-23 10:21 广东
请问所有面试都是线上吗?
点赞 回复 分享
发布于 2024-09-25 10:23 北京
请问佬,oc是有意向邮件么
点赞 回复 分享
发布于 2024-09-26 21:50 安徽
请问楼主是怎么确定oc的呀?我也收到四面通过的通知,但是hr说需要等到十月底一起开,说是不会提前发录取意向的
点赞 回复 分享
发布于 2024-09-27 09:14 陕西

相关推荐

头像
2024-12-31 08:28
已编辑
北京大学 嵌入式软件开发
1. C++11有什么新特性?2. 函数有哪些常见的传参方式,有何区别?3. 指针和引用有什么区别?4. 指针常量和常量指针有何区别?5. 常见的内存泄漏发生场景有哪些?6. 常见的内存泄漏检测工具?7. 虚拟内存和物理内存的区别?8. 内存空间有哪些区域?分别是做什么的?9. 段页式内存管理有何优点?10. 说一下智能指针?11. 内联函数是什么?和宏有何区别?它有什么优缺点?什么情况不能内联?12. 说一下多态的底层原理?为什么要有多态,直接静态重写不好吗?13. C++空类的大小是多少?如果空类内含有虚函数,类的大小又是多少?14. 讲讲内存对齐?15. 虚函数可以是模板函数吗?16. 虚函数可以内联吗?17. 32位Linux系统的寻址空间是多大?进程能申请的内存有这么大吗?18. Linux系统中进程默认栈空间是多大?如何修改?19. Linux系统中调试崩溃问题的流程是?20. 栈溢出一般是由哪些原因导致?21. Static关键字有什么用?static变量修饰全局、函数内和类内变量时,分别在什么时候进行初始化?22. 初始化列表有什么好处?哪些成员变量必须通过初始化列表初始化?23. 什么是右值引用?说一下什么是移动语义及使用场景?24. Malloc/free和new/delete有什么区别?25. Vector和List有什么区别?讲一下vector动态扩展的原理?26. Vector动态扩展时,编译器为什么不先判断一下原有空间后面的内存是否空闲,如果空闲,直接在后面的内存空间继续分配空间?(从内存池角度回答)27. Unordered_map和map,unordered_set和set,分别有什么区别,它们的底层数据结构是什么?28. priority_queue优先级队列的底层数据结构是什么?操作的时间复杂度是什么?29. 红黑树与AVL树有什么区别?与堆有什么区别?与跳表有什么区别?30. 如果让你用一维数组模拟一个大根堆,你怎么实现?问题答案已经整理到专栏中了,关注我分享更多知识。   http://daxprogram.com
点赞 评论 收藏
分享
评论
10
13
分享
牛客网
牛客企业服务