NVIDIA笔试.docx
- 文档编号:24918350
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:25
- 大小:33.56KB
NVIDIA笔试.docx
《NVIDIA笔试.docx》由会员分享,可在线阅读,更多相关《NVIDIA笔试.docx(25页珍藏版)》请在冰豆网上搜索。
NVIDIA笔试
NVIDIA的笔试
NVIDIA上海研发中心,PHYSICALDESIGNENGINEER这个职位
笔试:
笔试分两部分第一部分为技术测试,第二部分为英语
第一部分约10题(凭记忆写吧),时间30分钟(根本来不及做)
1.简单c代码,写输出结果
延时问题,比如1000um为50ps,2000um延迟是多少,10个1000um串连是多少,中间
加上BUFFER又是多少?
3.RC树延迟问题,给出R,C的值和驱动电平,求RC电路的延时,两级RC电路的延时
4.画CMOS反向器结构图标出个部分区域如N+,N-,Metal,Channel,Nwell,substrate,po
ly-siliconetc
5.画与非门电路和layout,棍图
6.两个D触发器和一级buffer组成同步电路给个若干时序数据比如buffer延时,tsetup
thold,组合逻辑延时,时钟SKEW。
算总延时,以及和时钟频率的关系,需要满足的条件
(setup,hold)
7,两个管子串联,vdd接上管g,d和下管g,下管s接地,上管s和下管d相连作输出vout,
求vout
8.3个反相器串联,给出最前面一个和最后面一个反相器P管和N管的宽长比,问中间的反向
器P管和N管的宽长比,使得整个电路延迟最小
9.两个电容并联,给出C值,一个电容给另外一个放电,问最终电容上的电压。
第二部分,20分钟
英文作文(200字),你认为从项目中学习知识重要还是从书本学习重要?
面试:
面试分为两轮,第一轮1小时,全英文;第二轮45分钟,中英文掺杂。
第一轮一上来先是随便聊聊,聊了学校,专业,项目,兴趣爱好。
然后问我在项目中遇到的最大的困难是什么,是怎么解决的?
再然后问了我两个智力题。
接着打开一张板图,问了我有关floorplan和partitioning,timingclosure,low-power
design之类的问题,
然后又问了我一个智力题,
最后问我有什么问题要问他。
第二轮一上来也是随便聊天,聊了学校,导师,实习情况等
然后进入正题,问了我有关wire-loadmodel,manhattanrouting,STA分析,PT的用法之
类的问题。
接着问了两个初中平面几何的证明题,
然后换成英语,问了我的兴趣爱好,以及对NVIDIA的感觉。
最后问我有什么问题要问他。
1、3个D锁存器组成的反馈回路,给了时钟,画出输出波形。
2、3.3V,5V,12V三个输入,都有输入则输出12V,否则。
。
。
用晶体管搭。
3、连题都没看明白,据AC说是结型场效应管求Vt
4、给输入电压波形,画RC输出波形
5、C,数组的2分搜索,判定输出值
6、什么是GraphiyCard
7、什么是ChipSet
1.哪些formatandresize的工具
2.registersofCPU,按照16bits和32bits进行分类
3.请说明inductor和ferritebead之间的区别
4.caches有哪些种类
5.请举个hazards的例子
6.debugamemoryfailure
7.MOSandAssemblyLanguage编写A+B=Y
1、名词释义:
EMI、PCB、crosstalk、overshoot、DDRSDRAM;
2、数制转换:
DC(HEX)=__(DEC)=__(BIN);
3、给个BJT的图要求标出e、b、c还有判断pnp/npn;
4、RCL串联谐振的频率f=__和Q=__;
5、运放V+端到Vin接一个电阻R1,到Vout接一个电阻R2,V-端接地,问Vout/Vin=__;
6、100MHz的正弦波跟带宽100MHz的示波器什么什么的,还有200MHz的什么,这个没看懂,乱答的,一个是问衰减多少dB,还有问可不可以,WHY,似乎跟采样定理有关。
7、问groundbound在highspeedsignalsystem中的作用,以及如何使用;
8、双口网络写V2/V1=__,电路很简单就是V1进去接一个R1C1串联出来V2,再R2C2并联到地;
9、给逻辑图写表达式并化简,国际符号,我看那个图就是AB、CD、EF各接一个与门,再三个与门出来接一个或门出来是G,我就写G=AB+CD+EF,化简?
?
?
?
10、传输线方面的,没有图,就不好说了。
11、用组合逻辑门设计一个二进的平方电路,输入S2S1,出来是F3F2F1F0,写出真值表,表达式和画逻辑图;
12、C语言写输出结果,很简单的,主函数调用一个函数fun(),fun()函数里面用了staticint,这个是需要注意的,也就没什么了,几行而已。
13、给个时域信号x(t)的曲线,然后给出频域图线X(f)的就是一个三角形-fc、+fc,作出sampleddiagram,注意奈奎斯特采样定理的运用。
就是fs>2fc啦,复习一下信号与系统,很简单吧,我看旁边的学通信的MS们画得55的快,所以俺也画得55的快。
14、这个也没看明白,大概是4bit的binarysystem表示decimal,要求解释signedmagnitude、one'scomplement、two'scomplement,然后填表:
表格就是十进制数-8~-0,+0~+8分别对应signed、unsignedmagnitude、one'scomplement、two'scomplement的4bitbinary。
要求:
不能写Verilog/VHDL,必须用门电路或状态机表示。
1. 设计A[9:
0]*101.10111的电路,要求用尽可能少的门。
2. 设计地址生成器,要求依次输出以下序列:
0,8,2,10,4,12,6,14,1,9,3,11,5,13,7,15,
16,24,18,26,......................,31,
32,40,34,42,......................,47,
48,56,50,58,......................,63,
64,72,66,76,......................,79
1.表面看是乘法器,由于第2个乘数给定,其实就是加法器,移位相加需要5个18位的加法器就能实现,如果要求用尽可能少的门,可以换做补码运算A[9:
0]*101.10111=A[9:
0]*(1000-10.01001),只需要3个19位的全加器.虽说多了求补电路,但却节省了全加器,总体是节约了门.全加器也是由1位全加器搭成的,1位全加器用门搭是很容易的,记得逻辑关系的话直接画电路,不记得用真值表可以推出来.
2.只是需要将addr[0]与addr[3]交换连接,即就是新的addr[0]就是原来的addr[3],新的addr[3]就是原来的addr[0],感觉不需要什么门电路,只是连线的时候注意一下交换就行了
2.感谢版主的解答,但是19位全加器就有点复杂了,如果用逐位进位的方法也不是个好办法,用超前全加器又比较复杂。
而且感觉如果笔试的答题空白都有限,是不是还有诀窍
3.第二题那么简单吗?
14-1是怎么变换的,把addr[0]与addr[3]交换连接好象不行啊
4.关于第二题:
设计一个counter[6:
0],把末4bit重新排布后输出,{counter[6:
4],counter[0],counter[2],counter[1],counter[3]}
5.又在考Wallace_tree,呵呵。
去年Nvidia去学校招聘的笔试题就考了的:
大意是七个人选举,统计票数。
6.很难说清楚,给一段代码你自己看吧,用一个加法器和四级CSA实现七个数相加,面积小速度快:
`timescale1ns/1ps
//Structure :
WallaceTree
//Description:
product_o=a1_i+a2_i+a3_i+a4_i+a5_i+a6_i+a7_i;
moduleWALLACE_TREE(
//=======Inputports=======
a1_i,
a2_i,
a3_i,
a4_i,
a5_i,
a6_i,
a7_i,
//=======Outputports=======
product_o
);
input[15:
0]a1_i;
input[15:
0]a2_i;
input[15:
0]a3_i;
input[15:
0]a4_i;
input[15:
0]a5_i;
input[15:
0]a6_i;
input[15:
0]a7_i;
output[18:
0]product_o;
wire [15:
0] s11_s; //Sumofstage11
wire [15:
0] s11_c; //Carryofstage11
wire [15:
0] s12_s; //Sumofstage12
wire [15:
0] s12_c; //Carryofstage12
wire [15:
0] s2_s; //Sumofstage2
wire [15:
0] s2_c; //carryofstage2
wire [16:
0] s3_s; //Sumofstage3
wire [16:
0] s3_c; //carryofstage3
wire [17:
0] s4_s; //Sumofstage4
wire [17:
0] s4_c; //carryofstage4
FULLADDER stage11_u[15:
0](.A(a1_i[15:
0]),.B(a2_i[15:
0]),.CI(a3_i[15:
0]),.SUM(s11_s[15:
0]),.CO(s11_c[15:
0]));
FULLADDER stage12_u[15:
0](.A(a4_i[15:
0]),.B(a5_i[15:
0]),.CI(a6_i[15:
0]),.SUM(s12_s[15:
0]),.CO(s12_c[15:
0]));
FULLADDER stage2_u [15:
0](.A(a7_i[15:
0]),.B(s11_s[15:
0]),.CI(s12_s[15:
0]),.SUM(s2_s[15:
0]),.CO(s2_c[15:
0]));
FULLADDER stage3_u [16:
0](.A({1'b0,s2_s[15:
0]}),.B({s2_c[15:
0],1'b0}),.CI({s12_c[15:
0],1'b0}),.SUM(s3_s[16:
0]),.CO(s3_c[16:
0]));
FULLADDER stage4_u [17:
0](.A({1'b0,s11_c[15:
0],1'b0}),.B({s3_c[16:
0],1'b0}),.CI({1'b0,s3_s[16:
0]}),.SUM(s4_s[17:
0]),.CO(s4_c[17:
0]));
assign product_o={s4_c[17:
0],1'b0}+{1'b0,s4_s[17:
0]};
endmodule
moduleFULLADDER(
//=======Inputports=======
A,
B,
CI,
//=======Outputports=======
SUM,
CO
);
input A;
input B;
input CI;
output SUM;
output CO;
assign{CO,SUM}=A+B+CI;
endmodule
7.不一定是华来氏树吧,wallacetree只是先压缩后相加,只是为了提高速度,面积是要增加的,我觉得2楼说的不错,用补码方式,可以3个19位的加法器,为了门最少,就用最简单的链式全加器就好,这样的话,电路也是很好画图的.
首先压缩电路并不会增加很多资源,虽然我没比较过,不过3个加法器的面积估计不会小,而Wallacetree结构压缩后只用一个加法器,到底哪个资源低大家可以综合看看。
对于一个数为常数的乘法器,可以直接使用CSD编码要的资源肯定是最少的(求补的思想跟这个类似就是减小1的个数),不过CSD编码算法比较麻烦,不容易记住,笔试面试就不大可能编得出来了。
3:
2压缩就是1位全加器,5:
3压缩要么就是两个全加器构成,要么就列真值表从新写表达式列电路.但估计门也差不多.
WALLANCE树不会减少全加器的个数,只有可能减少半加器的个数,如果这个题采用阵列乘法器用5个半加器,其他全为
全加器,WALLACE树用的再好也不会一个半加器不用的.用WALLANCE树的好处缩短关键路径.提高速度.
真的要减少全加器就用BOOTH编码,这才可以.
最后设计乘法器真的没必要用DC看结果,这要靠结构.你如果有这个乘法器的结构在心里,我想大概纸上一划就知道需要多少全加器,多少半加器了.
如果可以用存储器,查表更方便
对于DesignWare的库我觉得已经很成熟了,如果只是单纯的两个变量a*b,工具做出来肯定比我们自选结构要好。
当然如果结构特殊就可以自己做了。
比如上面的常系数乘法器,用CSD编码+Wallace资源应该最少。
难道你还能发明一种更好的编码方式吗?
1.算二进制加减法
2.设计一个全加器,用a)multiplexer8input,2bit(研究到最后我也没想起来这个东东到底是虾么东西)b)用decoder(译码器)
3.用与非门画个电路图
4.两个D触发器连在一起,求一个时序电路的功能。
我画出状态机后就写上去了,这块有的地方印象有点模糊了,所以画完状态机,觉得写的功能可能有问题,但是已经没时间改了
5.一个D触发器,也是要写功能,功能么就是按照clock信号来给输入信号采样。
这个我觉得比较简单,但是不知道是不是越简单陷阱就越多?
还是里面也许潜藏着竞争冒险?
我是看了半天也没看出来。
1,给出stack结构,利用stack完成queue的操作。
Classstack{
Voidpush(data);
Voidpop(&data);
Boolisempty;}
写出:
Classqueue{
}
2,一个链表,里面数字无序排列,要求给出代码,实现升序排序。
Voidsort(*head){
}
3,a=b*c+d;b,c,d均为unsigned8bit,问a需要多大bit来存储。
给出思考过程。
4,解释mipmap(一种texturemap方法?
)
5,数据发送端:
100clock中工作80clock,休息20clock,但这80是random分布的。
(1b
it/1clock).
数据接收端:
每10clock中前8clock工作,后2clock休息。
问:
作为中间的一个缓冲器,其容量应该为多大?
6一个格子图,大概如下:
b w b w b
w b w b w
b w b w b
w b w b w
b w b w b
(1)有多少个正方形?
(2)有多少个方形(包括长方形,正方形)?
(3)给你一个点,你如何判断它是黑色还是白色?
写c代码。
以左下角为原点。
注:
b表示黑色,w表示白色。
(上面所有小方格都是正方形:
)。
1、提供一个stack,要求实现一个queue。
2、链表查找改错
3、实现一个内存分配函数,要求返回的指针按64byte对齐
4、Dataproducer每100clock内随机产生80byte数据,dataconsumer每10clock内前8clock每clock消耗1byte,后两个clock不干活,二者之间需要多大的buffer。
5、四个人晚上过桥,分别要1,2,5,10分钟,只有一个手电,桥只能同时过两个人,最少需要多久才能过桥?
6、几个关于virtual关键字和RTTI的问题。
7、几个关于STL的问题(很无聊,比如使用STL是否会降低performance之类)
笔试的题目,刚开始就是几个英文的oq,什么你的个性一类,为何选择这个职位等等,唉,俺比较懒,写的不多,后来证明这是错误的,也是俺被bs的原因。
后面有几个技术的题,asic的设计流程,cpu的结构图(又考这个,当时就无语),还有一个cmos反相器,都不难,但我边上那个金融的小孩,一看就接着交卷走了。
答完也没啥感觉,nvidia特别着急,下午就发面试通知,第二天就面试,估计是想省翠微饭店的房钱。
唉,俺那个去凑热闹的哥们接到面试通知了,估计是我的oq写的太少,被默拒了。
早上笔试不顺,上来就给我了我一份硬件的试卷,才发现我申请错职位了,于是申请换了一份试卷还是硬件的,只好硬着头皮做下去,实在对硬件头大,就和旁边和我一样倒霉的北理mm聊天了,半个小时过后,交卷想回去了,还好一名NVIDIA考官帮我又换了一份c语言题重新作,可惜时间不够,有三四道大题没做,肯定没戏了。
听说牛人在下午就收到面试通知了,看来被鄙视了。
IBM的笔试也答的不怎么好,估计也over了。
记了一些题(都是大题,编程题):
1用链表实现队列,
2实现最快算法n*15
3判断一个数是否是2的n次方
4分配内存void*mem(int32_tsize,int32_tassignment)
5两个binarysearchtree合并算法
6坐标系转换矩阵
7计算cpu和存储时间等
下午3点准时开始,题量不大,一共6道,也不是很难,第一题是时序问题,第二题写Verilog代码实现同步复位和异步复位的触发器,后面详细说它,第三题画状态图,第四题估算计算结果所需的最小位宽,第五题给条件求FIFO所需的最小长度,第六题是4个人过桥问题,所需最短的时间,很常见了,可我还是想了好一会。
现在还让我很郁闷的事情是,居然第二题做错了,越想越郁闷,这个错误将让我错失这次我很看重的机会,伤心死了。
。
。
我居然将同步复位的Flip-flop写成异步复位的Flip-flop,然后你可想而知,写异步复位的Flip-flop时我就不知道怎么写了,写成
assign=(!
Reset) ?
0 :
data_input;
我当时也很纳闷,但我的确不知道应该怎么写,我的理解中同步电路是时钟沿触发,异步电路是电平触发,而平时设计中都直接用异步复位的Flip-flop,还以为那就是同步复位的Flip-flop(当然这些都是我今天查阅一本书后才知道自己错在哪里的)。
决定在这里完整的写一下这两个模块,利己利人。
//synchronousresetflip-flop
modulesyn_flipflop(clk,Reset,data_input,data_output);
inputclk,Reset,data_input;
outputregdata_output;
always@(posedgeclk)
begin
if(!
Reset)
data_output<=0;
else
data_output<=data_input;
end
endmodule
//asynchronousresetflip-flop
moduleasyn_flipflop(clk,Reset,data_input,data_output);
inputclk,Reset,data_input;
outputregdata_output;
always@(posedgeclkornegedgeReset)
begin
if(!
Reset)
data_output<=0;
else
data_output<=data_input;
end
endmodule
"
1。
计算n!
后面有多少个0
2。
反转单链表
3。
求输出
classBase{
public:
virtualvoidFoo(inti)
{
cout<
}
voidBar(Base&b)
{
b.Foo
(1);
Foo
(2);
}
};
classDerived:
publicBase{
public:
voidFoo(intj)
{
Base:
:
Foo(j+1);
}
};
intmain()
{
Baseb;
Derivedd;
b.Bar(d);
d.Bar(b);
}
4.考了些C++概念
(a)purevirtualfunction
(b)struct和class区别
(c)static含义
(d)overload和override区别
5.f(x)=a0+a1*x+a2*x^2+...+aN*x^N 最少需要多少次加法和多少次乘法
6。
关于cache的。
。
不懂
7。
求空间点到直线距离
笔试:
笔试分两部分第一部分为技术测试,第二部分为英语
第一部分约10题(凭记忆写吧),时间30分钟(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NVIDIA 笔试