【面经/经验分享】23届芯片秋招经验分享-黄白橙

个人简介

今年秋招的寒气遍布各个行业。主要原因是我所处的一届是扩招的一届,竞争的人数大幅度地提升;同时,大部分的岗位相较于去年大幅度地缩招,导致整体上僧更多,粥更少。尽管数字IC行业对人才仍有较大的需求,但主要的需求是拥有三至五年工作经验,可以直接输出的人才;而并非高校毕业生。因此说今年的秋招是历史上最难的一届也不为过。

我目前通过的笔试和面试包括了ZEKU(SoC集成team)、百度昆仑芯(芯片设计及架构)、复旦微(ASIC开发)、睿思芯科(RISC—V开发,RTL设计)、中兴领军计划(ASIC/SoC)、星宸科技(SoC集成)、安路科技(FPGA,SoC研发)、OPPO(硬件工程师)。上述公司基本上都是在提前批的阶段进行投递的,秋招的大部分投递都泡池子,有的公司根本没有参与面试的机会就被挂简历,寒气逼人。

我属于双985,本校保研学生,理工类学校,与清北复交浙同济南大中大相比,也许名气上要差一个档次。因此在研究生阶段我也不断提升自己,弥补这方面的差距。研究生阶段一共获得过FPGA大赛的自定义赛道国家级二等奖、集成电路创新创业大赛紫光同创杯华北赛区省部级二等奖和决赛国家级二等奖、嵌入式设计大赛芯片设计赛道的国家级三等奖和省部级二等奖、海峡两岸电子设计竞赛省部级二等奖;同时有两篇公开的发明型专利。除此之外,还参与过一次公司的流片项目,负责前端RTL代码的设计。上述的经历也许是我的简历得以在提前批阶段被筛选出来的原因。

如果想要在秋招获得比较丰富的成果,除了临近秋招季刷一些笔试面试题目、调研面经、找内推等努力,更重要的是研一和研二近两年的积淀。因此我想先谈谈近两年的成长,再谈谈近四个月的应试性举措。

研一和研二两年的积淀

目标设立

在数字IC领域,主要能够从事的工作包括SoC集成、IP设计、FPGA开发、验证、DFT(Design For Test)、嵌入式设计。在研究生入学阶段,如果有志于从事数字IC工作,就应该明确自己的目标并做相应的知识与能力储备。SoC集成主要侧重于IP之间的互联。一般而言,针对一个或多个CPU、多个IP、多个外设的协同工作进行设计,主要涉及总线(最经典的就是AMBA)、低功耗、IP通信与协同工作、存储管理、软硬件协同(如中断)等设计。IP设计主要针对特定的算法(例如神经网络算法、SLAM等基于特征点的传统算法)进行定制化电路设计,或者专门设计接口IP;当然,最为复杂的IP要数CPU。FPGA开发主要对算法进行快速的FPGA平台的验证,与ASIC流片走的是不一样的开发流程,要对FPGA的资源、原理及各类开发板的使用较为熟悉。验证工作负责将设计好的RTL代码进行测试平台的搭建,当代码功能较多的时候尤其需要验证人员的功力和经验,主要需要system verilog和UVM相关的知识。DFT(Design For Test)主要负责给电路安插扫描链和测试点,方便流片的过程中对关键的信号进行观测。嵌入式设计主要对单片机和接口进行软件的控制,需要了解CPU的使用,对类似于iic、spi、uart等简单接口比较熟悉,有一定的算法和C语言编写能力。

数字IC入门,FPGA的使用

在刚准备读研的时候,我对ASIC一无所知,以为数字IC就是FPGA开发,也把自己的微信签名改成了“我要成为FPGA顶尖专家”。因此我非常在意代码能在FPGA开发板上出功能。当然在这个过程中我锻炼出了一部分的数字IC能力。我做的第一个相关项目是SVM级联分类器(本科毕设),我用的第一款开发板是PYNQ开发板。SVM分类器是一个比较简单的算法,也算是我第一次接触IP、第一次接触总线。当时实现的功能是把图片通过AXI-Stream从PS(processing system)端发送到PL(Programable Logic)端,使用SVM分类器将计算结果存储在RAM,再一次性用AXI-Stream返回到PS端,在jupyter-notebook界面观测结果。虽然功能非常简单,没有什么可吹的技术点,但是实现出完全正确的效果非常耗费精力。当时花了极大量的时间学习PYNQ及PYNQ各类驱动的使用、AXI-Stream接口功能在PYNQ的实现。我发现同学们写出的verilog代码都仅仅是在Vivado上仿真,但并不上板测试,就自以为能力上更强。但本质上提升的是工程方面的能力,PYNQ的各种功能再也没有用过。

参与流片项目,IP开发的实践

由于导师和一家公司有合作,因此我们实验室承担了该公司一个流片项目的子模块的前端设计部分,从Specification到RTL设计到Synopsy DC工具上的仿真、综合、时序分析,第一次体验了业界进行IP开发的感觉。在这个项目当中,软件的C++代码是公司写好了提供给我们的,我们只需要确保设计的IP计算结果与软件结果完全一致,并且符合公司要求的各种参数化设计与流水线出结果的要求。这次经历我承担了比较大的压力,原因是项目的时间紧迫,同时由于最终要流片,就需要确保功能和代码的编写上严格地符合要求。设计和代码编写花了很少的时间,主要时间用于debug以及解决综合过程中遇到的各种报错。这次项目基本覆盖了IP设计所需要的各种基础知识,包括有无符号定点数运算、加法器乘法器、状态机、流水线并行化、静态时序分析等等。但经过了这次项目,就让我意识到IP设计工作的单一化,没有太多设计的空间,即便是花费了大量的精力把功能调试成功了,回过头来复盘的时候似乎也没有太多可以讲述的知识点。因此便萌生了从事SoC集成等与架构相关的、视野更为宏观的工种的想法。

紫光同创杯,SoC的实践

为了实践SoC,我报名参加了集创赛的紫光同创杯,因为这个赛道题目就是搭建一个小型SoC系统,这个系统当中包含了arm处理器、DMA、AMBA接口的DDR、ov5640摄像头、SD卡驱动,通过这个项目就可以很好地锻炼总线、中断、仲裁、DMA、带宽分配、跨时钟处理等知识。为了做好这次竞赛,我基本上把B站能够找到的相关视频都看了一遍,看得最多的是AMBA。当时对outstanding、乱序传输等知识点不是很理解,为了实践,利用Vivado提供的AXI verification ip和AXI Interconnect IP,搭建了一个多主多从的系统,简单学习了system verilog对AXI VIP的驱动进行了控制,模拟乱序传输,观测ID等关键信号,最后总算对AXI有了比较深入的了解。在今年的面试中和面试官聊到频率最高的就是AXI以及在个人项目中的应用,我觉得大家可以作为一项基础知识来储备它。

近4个月的应试性举措

3月至5月

为了尽快地适应秋招的节奏,春招的时候开展了非常多的实习招聘,我投递了一些公司,想感受一下面试的过程。当时联发科的实习招聘开启了,虽然最后收到了感谢信,但还是走了两轮技术面,让我对面试常考问题以及面试官对我个人项目感兴趣的点进一步熟悉。

当时刷了“数字IC打工人”和其它公众号提供的各种类型的笔试题目,算是减轻了后续应试的部分压力,但实习的试题有的真的太偏了,当时也试图背了下来。由于发现考了很多验证相关的知识,于是学习了sv绿皮书,只学了一点皮毛,后面发现这些偏门知识点和验证知识点纯粹为了应试去学是没必要的,感觉浪费了很多时间。

应试知识

经历了若干场的笔试,我才发现笔试题目虽然确实是要准备,但并不是真正的决定性因素。并不是笔试题的分数做得越高,后续越有可能被录到。有的笔试题目我感觉考得太偏了,身边同专业一起考的朋友也不会做,没准备到。但后来我还是收到了面试邀约。我觉得简历起到了一定的作用。因此,不要将过多的注意力放在笔试的应试上,不要追求笔试拿高分,丰富完善个人简历才是最关键的。

当然,笔试还是要准备的,起码得拿出基本的态度。牛客网、CSDN上面有很多笔试的帖子,专题方面无非就是围绕ASIC流程、STA静态时序分析、跨时钟、异步FIFO、低功耗、运算里的赋值法则等;常考的题型,例如FIFO开多大问题、时钟分频代码等等,做几套题目基本就发现套路,可以背下来。

笔试的准备一个月左右就够了,有时候甚至可以在招聘的过程当中通过做一些公司的题目,记下不懂的点,丰富自己脑海里面的题库。能否通过笔试和公司的hc息息相关,和个人简历里呈现出的综合能力息息相关,这两者决定了基本格局,后续并不会因为多做对了几道题目而捞你,不会因为做错了几道题目而挂你。还有剩余的时间,还不如补充拓展个人项目涉及的知识,深度复盘个人项目。

招聘日记

ZEKU(SoC集成team)

本来我有学姐在哲库可以给我内推,但由于心急想投,某天看见一个宣传图片就把简历扔到了里面写的邮箱,后来问了学姐才知道是陌生人给我内推了。朋友已经收到简历完善邀请的时候,我还在焦急等待,发邮件找内推人,内推人有种爱答不理的感觉,最后他原来的邮箱还失效了,导致无法联系他。

终于在ZEKU招聘的公众号看见自己的进度,突然发现自己的第二志愿选错了,当时看宣传海报图片的某个名字感觉很对口,结果仔细一读JD才发现不对,于是发邮件联系官方负责人把第二志愿改到了“FPGA”。改完之后很快就收到了简历完善的通知,而第一志愿“数字前端设计”还在筛选中。

通过第二志愿的“FPGA岗”进了一面,问了一些流片相关和AXI高级特性的知识,了解到可以转到前端设计去,第一志愿和第二志愿好像是互通的。因此大概过了两三周进入了二面。

二面的时候,发现是团队里面做接口IP的team,但是我更想做SoC集成。当时面完感觉能过,但我提出了自己的想法,面试官说可以加面一轮,让我和SoC team的面试官聊聊。当时最稳妥的做法应该是不聊了,直接进入hr面,万一聊得不好有可能会被直接淘汰。但我还是选择了加面。

三面的时候,由于换了个部门面试,所以依然是技术面,但问题大部分是自己准备之内的,因此三面也通过,两三周后进入了hr面,最后收到了第一批的意向。

百度昆仑芯(芯片设计及架构)

投递简历的时候,投了“数字芯片前端实现”,看见工作职责里面有“顶层SOC”以为很对口。结果过了几周,hr打电话告诉我简历不匹配,这个岗位是将别人写好的RTL代码拿去综合的。我问了同学才知道自己投错了,应该要投“芯片设计及架构”。这是我第二次没有仔细读JD造成的失误,当时非常后悔。

本来以为自己要凉了,系统也无法修改,于是厚着脸皮回拨hr,希望换岗位,几经周转,就收到了一面的面试,换到了想去的工作地点和岗位。也许如果不是投错,甚至难以引起面试官的注意。

一面的时候讲了课题,口述了一道代码思路;二面聊了竞赛的细节,三面继续聊了课题里的创新,三轮技术面都比较硬核,过了一个月左右收到面试通过的通知。

复旦微(ASIC开发)

首先进行了一场中规中矩的笔试,基本上前期的笔试储备都派上了用场,笔试通过后,进行了一轮技术面,用腾讯会议分享了个人的代码,手撕了一些常规的verilog代码(同步复位异步释放),除了项目外聊了些中规中矩的面试题就通过了,进入了HR面。

睿思芯科(RISC—V开发,RTL设计)

通过加hr的微信投递简历,先是做了两道代码题的机试,然后面试也是手撕代码。手撕的是master和slave相隔较远时候插深度为1的FIFO的处理。恰好同学在组会提到过,因此手撕和讲解都挺顺利。一面后就直接进入了HR面。

中兴领军计划(ASIC/SoC)

全程只进行了一轮技术面,两个技术官来问,主要问了AXI,包括outstanding和乱序传输,简单问了项目,问了一些非技术问题(代码怎么验证的,代码量多少),就通过了。

星宸科技(SoC集成)

星宸科技的面试出乎意料地硬核。三轮面试都是非常细节、非常深入的技术面。第一轮面试的时候,我介绍自己的紫光同创杯,面试官立刻拿出纸和笔来画出我说的电路结构,并且针对每一个细节点询问设计的思路,从这场面试我甚至学到了很多AXI和DDR的设计与使用技巧。第二轮面试的时候同样用腾讯会议分享了所参与的流片项目的代码,面试官很认真地指出我代码写法的细节问题,并且介绍了SoC集成的一些知识(顺带介绍了公司的业务)。第三轮面试本以为是hr面,随便找了家星巴克坐下用手机面,结果是技术面,问了整整一个小时,针对我的研究生课题,从头到脚的小细节都过了一遍,如同帮我梳理了我的大论文脉络。总之这家公司留给我的印象非常深刻。

安路科技(FPGA,SoC研发)

只有一轮技术面,和中兴面试类似,主要问了AXI,包括outstanding和乱序传输,简单问了项目,就通过了。

OPPO(硬件工程师)

嵌入式岗位的面试相对轻松,由于竞赛大部分涉及到了嵌入式的开发,因此就这竞赛聊了一轮,谈了一些问题的解决思路,就过了。没有涉及特别深入的知识点和细节。

大疆(数字前端岗)

大疆只有一轮技术面,但是非常硬核,也问了一个多小时,之前准备的各种类型的面试套路在大疆的面试中基本发挥不上任何用场,因为大疆面试官非常关注底层逻辑,比如常考的异步FIFO,面试官会从加异步约束的角度来考察对设计的理解。因为一般异步约束除了set_false_path还会加set_max_delay,但由于full信号里面对读信号在写时钟域打两拍来比较,即便迟一些抵达也不会对系统功能造成影响,因为full时不会写。因而set_max_delay不需要。类似这些细节问题还问了很多。另外大疆没有问AXI,而是问了项目里面的IIC,包括多从机的情况,完全没有准备到。大疆也许是我目前唯一不通过的面试,目前还在等待感谢信中。

总结

虽然今年的秋招比较寒,但整体上的收获和个人付出的努力基本成正比,甚至还有很多运气的因素在。最大的遗憾也许是收到了一些意向书之后心态松弛,后面没有好好投递简历,也没有好好做笔试题跟测评,当然也是因为面试太多轮之后真的累了。

整体看来,今年秋招获得一些成功,主要是因为我尽早地确立了自己要做SoC集成的方向,并且参加了大量的竞赛与项目,使得无论在简历上还是面试过程的沟通过程中有了比较多能讲的点。当然也做了非常多应试的准备,如果毫不准备面试题,面试官在聊完项目后突然要求写一个常考小代码,一时间写不下来,那么印象分就会大打折扣。就个人项目而言,我最大的问题就是多而不精,没有特别深入的项目。因此我对学弟学妹的建议就是在简历足够出类拔萃的前提下,能做精、做深一个项目,对其中的各个细节有非常独到的见解。当然,如果简历上没有什么亮点,闷头做了一个项目而没有什么成果,尤其是学校的名气不算特别大,很容易在简历关被挂,这也是很吃亏的。

从个人角度而言,已经站在了一个新的起点上,不需要再过多在意今年秋招的得与失,而是应该尽可能地习惯一套能适应未来高压力的生活工作模式,以及关注未来入职后的学习积累跟成长。

Q&A环节

1.对于下一届的同学如何准备,你有什么建议

A: 尽早选择一个数字IC领域的方向,针对性地补充相应的知识,譬如想做SoC就实践与积累AMBA总线等,想做验证就积累system verilog等。时间的分配非常重要,要尽早做出选择。

尽可能丰富自己的简历。如果要进入企业,最好有实习实践或者是竞赛实践等经历;如果要进入研究所,最好要有一篇较好的论文。时间的分配非常重要,要尽早做出选择。当然也不能盲目为了堆砌成果而忽视了对技术的深入思考。

尽可能把项目与要做的工作结合,能直接输出是最好的。针对想要去的企业,在竞赛或论文中选择对应的课题。例如希望进入arm公司做CPU,最好在竞赛的时候选择CPU设计的赛道;希望进入AI芯片的公司,最好在竞赛或论文的选题上选择AI的硬件加速。所做项目要契合公司业务。

在寒气重重的环境下,通过深入做好某个项目体现个人自学能力进而轻松应聘到非关联岗位的时代已经一去不复返了。

2.你对公司的意向度是怎么在内心进行排序的,大概规则如何(如何选择)

A: 如果有对象的话,和对象一起规划工作的地点,异地真的很难受,感情比事业重要。如果家乡有好的IC企业,最好在家乡,周末能陪陪爸妈,亲情比事业重要。公司实力和工种要综合来考虑,譬如说SoC和IP开发表面是两个工种,但刚进去头几年其实工作的界限不会分得太过明显。但SoC和IP以外的工种,区别还是比较大的。此时比起公司实力,更要优先考虑工种。薪资确实不应该放在首要因素来考虑,除非家里的经济吃紧,需要尽快地为家里提供支持。否则,应该以技术(能学到东西、能成长)和公司是否具备成熟的体系作为优先的考量。潜心耕耘三五年,未来不必愁薪资。

#芯片招聘##秋招#
数字IC打工人 文章被收录于专栏

致力于分享数字IC知识,精彩故事等你来看!

全部评论
楼主奖项好丰富啊
点赞 回复 分享
发布于 2023-01-31 16:24 山东
今年秋招真的寒气逼人
点赞 回复 分享
发布于 2023-01-31 16:36 天津
大佬好厉害啊 呜呜呜
点赞 回复 分享
发布于 2023-01-31 17:24 江苏

相关推荐

不愿透露姓名的神秘牛友
11-02 20:36
点赞 评论 收藏
分享
投票
快要三方开始纠结offer的到期男大:上海不配吗
点赞 评论 收藏
分享
24 96 评论
分享
牛客网
牛客企业服务