比特大陆笔试题
ic验证 – 华振
1. 请对面向对象编程中多态性(polymorphism)的概念以及多态性对代码可重用的意义进行阐述。
在面向对象编程中一般是这样表述多态性:向不同的对象发送同一条消息(!!!obj.func():是调用了obj的方法func,又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。这种多态性使得,在非必需的情况下我们可以从一个现存的基类里面继承与共享一些变量与子程序得到扩展类。而扩展类只需要有选择性的改变或增加其部分方法与属性。
2. 列出哪些verilog语法是不可以综合。
解析:time,defparam,$finish, $monitor, $readmemh, fork,join,initial,delays(#10),udp,wait,casex,casez,wand,triand,wor,trior,real,disable,event,string
思考题:verilog中哪些语法是可综合的?
3. 输入信号如下图,请画出组合逻辑输出波形。
f = xyz+x’y’z+x’yz+xy’z’
4. (1) 谈谈对oop中,浅拷贝和深拷贝的区别。
(2) 用一段代码实现如下图class a的浅拷贝(命名为copy)和深拷贝函数(命名为deepcopy)。实现语言为systemverilog。
该class的定义是:
class a;
int a;
int b;
c c;
function new();
endfunction;
endclass
其中class c定义为:
class c;
int t;
endclass
解析:(1)如果是对象之间是浅拷贝的话,会将对象的指针(句柄)指向被拷贝类对象的空间,这样两个对象就相当于绑定在一起,当改变某个对象中的变量,其实两个对象中的变量都被改变了,如果要把两个对象进行拆分的话需要重新对该对象进行new操作。而深拷贝时,是对对象中元素的复制,因此不涉及指针转移的问题,当改变某个对象中的属性变量时,对另外一个没有影响。
(2)
function a copy ()
copy = new();
endfunction
function a deepcopy ()
deepcopy = new();
deepcopy.a=a;
deepcopy.b=b;
deepcopy.c=c.copy();
endfunction
a a, copy, deepcopy;
a=new();
copy = new a; // shallow copy
deepcopy = new();
deepcopy.copy(a);
5. 请用verilog实现逻辑功能:当检测到输入序列p中包含“010”时,输出信号a拉高一拍,当检测到输入序列p中包含“101”时,输出信号b拉高一拍。
module (
input clk,
input p,
input reset_n,
output a,
output b
);
reg[2:0] d3;
always @( posedge clk )
if( !reset_n )
d3<=3'b000;
else
d3<={d3[1:0],p};
assign a = (d3==3'b010) ? 1'b1:1'b0;
assign b = (d3==3'b101) ? 1'b1:1'b0;
endmodule
6. 用任何脚本语言计算π,精确到小数位后5位,并予以解释,不得直接调用内部数学函数或接近数学函数获取π值。
解析:有数学公式
python:
折戟飞利浦,伍伸俊携宏光半导体或将卷土重来
测温电缆由温度传感器、导线、抗拉钢丝绳和护套组成
工业应用中闪存存储的选择要注意什么
开源Zephyr和MCUboot堆栈中的26个缺陷
国产伺服电机的质量怎么样
IC攻城狮求职宝典 比特大陆 面试题
华为云开发者日•东莞站,我们来了!
iQOO旗舰数字系列斩获苏宁平台销售冠军
本田将放弃研发ASIMO人型机器人项目
手机外置LED闪光灯补光灯是什么?它的原理是什么
中国成为世界上最大的机器人市场 连续六年位居世界第一
海格通信子公司已经参与到5G的前期建设
苹果变了,竟然允许对外公布人工智能研究成果
骨骼机器人正在面向民用领域
六旋翼无人机优点有哪些
漫步者M0pro音箱深度拆解报告:内外兼备
8A30V耐压MOS管 n沟道 场效应管(MOSFET)HC3600M介绍
一加5什么时候上市?一加5最新消息:一加与DxO合作,预计一加5相机性能进一步提升
关于zigbee协议栈各层的系统分析
直流稳压电源的定义和分类 直流稳压电源的应用