笔面试经验

校招笔试

现场笔试就是每人发一张试卷,跟考试一样做题就行。线上笔试一般会提前用邮件通知是否参加某个时间段的某岗位笔试,点击确认后等时间就可以。线上笔试为了防止作弊,一般会要求开启摄像头和麦克风,有的公司会有人实时监控,有的则是随机拍照。

每个公司的笔试题内容相差挺多的,除了岗位需求的知识题目外,有的甚至会考其他岗位的知识,比如验证岗笔试会出设计题目,静态时序分析,甚至后端、封装测试的题目都有,如果真的遇到超纲题,会选就选,不会选只能蒙了。所以这里建议多刷笔试题,除了自身岗位需要的,其他方面的题也尽量多刷一刷。

笔试题目一般有单选、多选、编程、论述。

单选题一般比较简单,只要是好好准备过一般都能秒选答案,除非题目超纲(比如你投递设计岗,结果出一个后端的题)。举个例子:

下列语法不可综合的是

A.$display

B.generate

C.for

D.case

很简单的一道原题,学习过Verilog的伙伴肯定知道选A。系统函数$display用于打印消息,用于验证环境的仿真过程中,因此不能被综合(一个实际电路怎么能打印消息呢……),generate用于动态的生成verilog代码,可以综合,for语句只要代码风格正确,也可以被综合;case为选择语句,可以被综合为选择器或锁存器。

多选题错误率比单选高,因为要求每一个选项都要完全搞懂,举例:

如下哪些采用了one-hot状态机编码

A. 8’d16

B. 8’d20

C. 8’h20

D. 8’h16

one-hot独热码就是一串二进制数中只有一位为1,其余为0。选择时需要注意选项里的进制,d是十进制,h是16进制,都转换为2进制就能选出答案了,答案为AC。

编程题就是出一个小场景,让你写需要的代码,比如使用Verilog设计一个同步FIFO,使用C语言找出最大数最小数,都较为简单,对于实际做过项目或者实验的小伙伴应该不难。

论述题一般比较好回答,而我在秋招过程中接触到的个别论述题比较难,比如:

现有一个二Master一Slave的AXI接口,请描述在验证过程中需要测试的功能点有哪些?

这种题目我感觉没有做过实际项目的伙伴可能回答不是跟全面,我的答案是:

  1. Master A到Slave和Master B到Slave的数据通路访问,包括数据读写以及所有AXI协议(burst、wrap、outstanding、地址边界等);

  2. Master A到Slave和Master B到Slave的非法地址访问;

  3. Mater A和Master B同时发起读读、读写、写读、写写时,接口的仲裁情况;

  4. 对Slave的同一地址Master A写Master B能否正确读取,Master B写Master A能否正确读取;

  5. 当AXI接口在工作时给出复位,该模块的状态机是否能正常跳回。

  6. 当两个Master和Slave的时钟频率不同时,以上场景能否正常工作,数据是否会丢失。

我做过实际的验证项目,但是回答完这道题还是感觉写的不够全面。

尽量提前上网找一些笔试题资源刷一刷、如牛客网、IC相关公众号、知乎等。

笔试通过后就要进行面试,面试一般分为三类:专业面试,综合面试,HR面试。

专业面试

专业面试考察专业知识能力,一般会问该岗位相关的一些问题。我在这里将专业面试题目分为三类:

  1. 简历相关问题;

  2. 专业问题;

  3. 开放类问题

简历相关问题就是面试官根据你的个人简历,从里面挑选一些感兴趣的点进行提问,提问较多的问题就是简历上的项目和实习工作经历,比如“讲一下这个项目你都做了哪些事”、“你在XX这个公司做了什么事,学到了什么东西”。更细节的问题就会问“这个项目里你的验证环境是不是自己写的”,然后进一步问“搭建一个验证环境需要写什么component”、“怎么集成到一起”、“说一下这个agent是怎么写的,driver大概结构是什么样子”等等,总的来说像是一个“简历打假”的过程,因此建议不要写一些自己不熟悉的项目经历或者编造实习工作经历。

专业问题就是问该岗位相关的专业知识,比如语言的语法、工具使用、验证流程之类的,难一点的会让你手撕代码。这里举例几个我面试遇到的专业问题。

  1. Interface怎么传递到环境里?答案:通过uvm_config_db的set和get方法。

  2. 覆盖率有哪些类型?答案:功能覆盖率,代码覆盖率,断言覆盖率。

  3. 在验证环境里如何模拟一个FIFO?答案:可以声明一个队列,配合使用push_front和pop_back方法,或者直接声明一个mailbox,配合put和get方法。

  4. 写一个driver的大致结构。这个问题对于熟练掌握UVM并且做过实际项目的同学不难,需要注意定义的driver继承于uvm_driver,传递正确的参数类,使用工厂注册,正确定义各个phase以及get_next_item和item_done方法。

  5. VCS的编译、链接和仿真命令是什么?答案:vlogan、vcs和运行simv文件,如果掌握的熟练可以顺便说一下每个命令的选项,这样可以让面试官眼前一亮,觉得你是“有点东西”的学生。

以上举例的问题都是和SV、UVM代码和EDA工具相关的问题,但是最好掌握一些总线协议、串口协议的知识,例如AMBA、UART、I2C、SPI、OCP等协议,这些都是很好的加分项。

开放类问题是面试官假设一个工作场景,给出几个问题。这类问题范围比较大,不好总结,毕竟你也不知道会遇到一个什么样的面试官,能想出怎样一个带坑的问题。这里举一个我实际遇到的问题:

  • 有一个DUT按一种编码规则输入32bit数据,输出1bit判断输入是否符合编码规则,符合输出1,不符合输出0。请搭建一个验证环境,详细描述

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

数字IC验证校招指南 文章被收录于专栏

《数字IC验证校招指南》,专刊共计两部分,分别介绍了数字IC验证岗位的工作内容和该岗位的校招流程,包括简历准备、投递流程、笔试面试、名企笔试面试真题以及个人经验总结。本专刊将全面介绍笔者在校招过程中的经验,通关大厂技巧,让你们的求职之路更加顺畅。

全部评论

相关推荐

最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
10-17 16:07
门头沟学院 Java
牛牛大你18号:在汇报,突然弹出来,,领导以为我在准备跳槽,刚从领导办公室谈心出来
点赞 评论 收藏
分享
评论
5
8
分享
牛客网
牛客企业服务