芯片岗实习面试经验
前期准备了两个项目,一个是集创赛,一个是复微杯的,面试中主要就是在讨论这两个项目内容。
投递的岗位都是数字IC设计与验证,我的简历偏向验证。
平头哥
- 4.16投递简历,没有笔试
- 4.27中午电话协商电话面试时间。下午四点电话面试,时长20分钟,全程聊项目。最后问了一下关于实习时长、时间、实习内容、地点的问题
- 5.11中午突然电话面试。首先问我怎么学习的验证,因为我投的是验证岗位。然后问的怎么设计一个模块,真的原话就这个,我说这问题太抽象,回答不了,就换成三段式状态机怎么设计,还有如果发现建立时间不满足,要怎么解决,大概说了一下重新设计、优化逻辑、切流水和重定时,然后问了跨时钟域处理的方法,还问我是看书了解的还是工程中举到的。这里主要是验证人员懂设计的话会好一些,所以想了解我设计的能力。后面就问的验证的问题了,怎么搭建环境,环境都包括哪些,monitor和sorceboard的数据怎么传递,tlm接口有哪几种,传递的是句柄还是数据,传递以后是要直接使用还是存下来,interface怎么传递到环境中去。面试官说上海的团队刚刚成立,如果实习的话会参与到模块验证或者环境搭建中去,不是虚拟lab,然后实习时间最少两个月,最好三个月,支持远程实习,去公司实习的话最快可能要到六月中,工资他不清楚,随口说了一句4000,可信度未知。然后平头哥的校招有60%是实习转正的。大概就这么些。后面还有交叉面和HR面,这也太多了吧= =。
- 5.22下午突然面试,交叉面,时长20分。首先介绍一下自己的项目,然后在问项目的的内容,接着问我对于UVM的理解,对于验证和设计的协同合作的有什么理解,学校实验室有没有和企业进行合作?项目参考了NVDLA,是直接下载他的源码,还是自己实现的?实验室的工作和验证有关系吗?对于验证没有什么看法,仅仅只是嘴上说说的有兴趣吗?面试官说分为AI\IOT\SOC组,他是AI组的。别的就没什么值得注意的了,等HR面
- 5.28电话联系,6.1进行HR视频面
- 6.6说是hr面过了,在offer审核
- offer审核未通过,招聘助理原话:GPA低,面试评价一般,我们实习生差不多招够了,如果不是很优秀就不考虑了。综合来看,所以就不过了。
- 发现是硕士学校填成了一个三本,重新审核通过了
海康威视
- 投递简历时间具体忘了,也是四月中旬,IC岗没有笔试
- 4.28下午五点,没有提前通知,突然电话面试。时长40分钟,全程聊项目。问了一个经典烧绳子计时的急转弯题目,一条绳子点燃以后燃烧速度不均匀,全部烧完需要60分钟,现在有很多条绳子,要求计时75分钟。这个问题很久以前就听过了,但是答案忘了。面试官提示说两头同时烧,一条绳子就变成30分钟了,然后我回答一条绳子两头同时烧,另一条烧一头,第一条烧完以后,把第二条也两头都点上,这样就是15分钟,加上一条绳子60分钟,一共75分钟。最后问了一个时序分析的题目,关于复位的,reset recovery time和reset removal time,我没有复习到这块,没答上来,还没面试的建议好好看看这块。面试官说30号之前是一面阶段,陆续给大家电话面试。
- 5.6收到第二次面试通知,视频面,5.8下午进行视频面试
- 5.8视频面试被摆了一道,只有一个问题,别的没有,手撕代码,正常情况下数据包由起始码(16bit)、数据段(n byte n<256)、结束码(16bit)3部分组成。起始码为0xFF00,结束码为0xFF01。在一个完整数据包中,数据段部分不会出现起始码和结束码。请设计一个电路在码流中检测完整且有效的数据包,并输出当前数据包的有效数据长度n。 输入数据接口 In:clk,rstn, din[7:0], din_vld Out: data_cnt[7:0], data_cnt_vld。看题目比较简单,实际上有几个坑,注意,起始码和结束码是16bit的,din是8bit的,然后要考虑几点,异常检测,结束码还没出现的时候如果超过255个byte的数据要报异常,如果中间出现起始码要报异常。我就是题目理解不到位,以为来的数据包都是规规矩矩的,写完了被面试官指出来这几点的时候,我直冒冷汗。各位手撕代码的时候一定要注意看题!!描述不准确一定要和面试官仔细交流!! 说来其实如果他在题目理告诉我要做异常处理,估计好一点,而且题目给的端口也没给异常标志位的端口。面试官告诉我这个是他们自己出的,然后问我难度怎么样,现场手撕确实有点难,毕竟慌。他说会根据我们现在的意见,在秋招的时候调整,加以说明或者引导或者降低难度。最后还剩几分钟问我要不要完善代码,我说不了,告辞,反正写不了几行。
- 5.11收到人力面试预约,5.13下午进行人力面试。
- 5.15收到offer。
华为
- 3.16投递简历,但是后来发现预计毕业时间填错了,一直没给笔试通知,改了以后才通知笔试
- 4.22笔试,全是选择题,比较简单
- 5.6上午收到知识产权和商业秘密保护承诺书。之前一直在系统里查看不了申请,现在可以了,显示还差专业面和主管面。
- 5.6下午电话预约5.8上午进行视频面试
- 5.8上午面试完,上来先自我介绍,会问学校是哪里的,专业是什么,学校里学了什么IC相关的课程,成绩怎么样。然后问了项目内容,负责哪些部分。问了关于速度与面积的问题,还有怎么加快时钟频率。还问了如何处理信号跨时钟域的问题,这里具体可以关注我的公众号,大概分单bit和多bit,允不允许漏采,这样回答。复盘了一下笔试题,面试官说我大部分都挺好的,有一些细节有问题,比如验证那部分,应该根据经验重点检查某些功能点,这是错误的,因为实际上会有很多checklist,不能根据经验来。手撕代码之前让我提问了一下,面试官说我报的是网络芯片。。可是我在系统里根本就没得选,到海思这里就没了。选不了次级部门,不知道怎么搞的。手撕代码做的是一个帧头检测,frame_head来脉冲的同时din会来数据,连续三次数据都是8'h23的话,就输出一个脉冲。我一开始理解错了,理解成检测三次就完事了,然后就用计数器简单写了。面试官提醒我才发现理解错了,然后重新用状态机搞定了。最后,问了一下实习内容,是虚拟lab还是参与工程,面试官说每个部门都不一样,看部门。大概就是这些,我贴一下我提交的代码,可能还是有问题。
module det ( input clk, // Clock input rst_n, // Asynchronous reset active low input frame_head, input din, output detect ); wire [7:0] din; reg [1:0] cnt; reg frame_head_ff; reg detect_ff; reg [1:0] state, state_next; always@(posedge clk or negedge rst_n) begin : proc_state if(~rst_n) begin state <= 0; end else begin state <= state_next; end end always_comb begin : proc_state_next state_next = state; if (frame_head) begin case (state) 0 : state_next = (din == 8'h23)?2'd1:2'd0; 1 : state_next = (din == 8'h23)?2'd2:2'd0; 2 : state_next = (din == 8'h23)?2'd3:2'd0; 3 : state_next = (din == 8'h23)?2'd3:2'd0; default : state_next = 2'd0; endcase end end always @(posedge clk or negedge rst_n) begin : proc_frame_head_ff if(~rst_n) begin frame_head_ff <= 0; end else begin frame_head_ff <= frame_head; end end always @(posedge clk or negedge rst_n) begin : proc_detect_ff if(~rst_n) begin detect_ff <= 0; end else begin detect_ff <= frame_head_ff&&(state_next==2'd3); end end assign detect = detect_ff; endmodule
- 5.9收到电话联系专业面通过,预约5.11主管面
- 5.11主管面,自我介绍,探讨人生,可以实习多久,很轻松,随便聊聊就行
- 官网显示录用排序中,估计要等很久。
- 最新消息,数字芯片实习全砍掉了
联发科
- 投递时间忘了,4月初
- 4.9笔试,10个简答题,包括写时序与约束,解释什么是大小端,用C语言写一个函数辨别系统是大端还是小端,perl或者python写字符串匹配,对行业的看法,题目特别杂,中间还有一道题图片没显示出来
- 5.9邮件通知凉了,确实不行,笔试题范围太广,我真的不会做
推销公众号
自己有个分享数字IC学习菜鸟经验的公众号,摸鱼范式。平时会发一些基础知识和资料整合,欢迎关注。个人博客地址:https://www.cnblogs.com/icparadigm/
#加入校招求职吐槽圈抽马克杯##平头哥##华为##海康威视##芯片设计工程师##芯片IC验证工程师##实习##面经#