IC攻城狮求职宝典 比特大陆 面试题

今日头条

1153人已加入

描述

比特大陆笔试题

IC验证 – 华振

1.   请对面向对象编程中多态性(polymorphism)的概念以及多态性对代码可重用的意义进行阐述。


在面向对象编程中一般是这样表述多态性:向不同的对象发送同一条消息(!!!obj.func():是调用了obj的方法func,
又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己
的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。这种多态性使得,
在非必需的情况下我们可以从一个现存的基类里面继承与共享一些变量与子程序得到扩展类。而扩展类只需要有选择性的改
变或增加其部分方法与属性。


2.   列出哪些Verilog语法是不可以综合

解析:timedefparam$finish, $monitor, $readmemh, forkjoininitialdelays(#10)UDPwaitcasexcasezwandtriandwortriorrealdisableevent,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

 比特大陆


 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分