2022校招1-数字IC工程师——联发科(持续更新...)

写在最前面
答案只是自己查阅资料后所写,不一定正确,欢迎大家留言讨论

文章目录

        • 1. 简答题(8分) 逻辑电路如图所示,已知各触发器初态为0,试画出Q0、Q1、Q2的波形。
        • 2. 简答题(12分) 请根据下面的电路完成相关问题。
        • 3. 简答题(5分) 请简述IC设计从前端到后端的流程。
        • 4. 简答题(10分) P先生、Q先生都具有足够的推理能力,而且都不说谎,这天,他们正在接受推理面试,他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4;黑桃J、8、4、2、7、3;草花K、Q、5、4、6;方块A、Q。约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉P先生,把这张牌的花色告诉Q先生。这时,约翰教授问P先生和Q先生:你们能从已知的点数或花色中推知这张牌是什么牌么?P先生:“我不知道这张牌”;Q先生:“我知道你不知道这张牌”;P先生:“现在我知道这张牌了”;Q先生:“我也知道了”。请问:这张牌是什么牌?并说明理由。
        • 5. 简答题 (10分) 请列表简述您的所有项目经历,挑选其中一个项目进行具体介绍并简述挑选理由。
        • 6. 简答题 (15分) 用Verilog实现一个10010序列检测器,当检测到10010序列时(包括重叠部分的情况)时,序列检测器输出1,否则输出0,请画出状态转移框图并写出Verilog代码。
        • 7. 简答题 (15分) 请用C语言写一个程序,计算输入字符串中每个字母的个数(字符串只包含小写字母)。举例如输入字符串为:aaaaabbcccefff,则结果打印为:5a2b3c1e3f。
        • 8. 简答题 (3分) [Python] list1 = [0,1,2,3,4,5],则list1[::-2] = ?
        • 9. 简答题 (7分) [Python] 请用python写一段程序,用尽量少的语句实现下面功能:定义一个函数,判断给定目录下是否存在result.log文件,如果存在,则从result.log文件中找出所有包含 fail 字样(不区分大小写)的行,并将这些内容保存到一个名为fail.log的文件中,如果文件不存在则抛出异常。
        • 10. 简答题 (10分) [Python] 请使用一种您熟悉的语言(C、Java、Python)定义二叉树的节点,并使用深度优先搜索,获取一个给定二叉树的最大深度,返回深度值。比如,给定二叉树[3,9,20,null,null,15,7],返回它的最大深度3。
        • 11. 简答题 (10分) [选答题] 您是否用python完成过一些项目?碰到哪些困难,如何克服以及有什么收获?
        • 12. 简答题 (10分) [选答题] 给你一个字符串表达式s,请使用一种您熟悉的语言(C、Java、Python)实现一个基本计算器来计算并返回它的值(运算只包含+-和括号)。
        • 1. 不定项选择题 (5分) 正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或从某个串中取出符合某个条件的子串等,正则表达式中某些字符的作用如下表所示,请问“^ [^a-z]”会匹配以下哪个选项()
        • 答案:

1. 简答题(8分) 逻辑电路如图所示,已知各触发器初态为0,试画出Q0、Q1、Q2的波形。

          2022校招1-数字IC工程师——联发科(持续更新...)_第1张图片

2. 简答题(12分) 请根据下面的电路完成相关问题。

         2022校招1-数字IC工程师——联发科(持续更新...)_第2张图片

1)写出电路A的真值表
2)根据图B的电路图画出波形图
        2022校招1-数字IC工程师——联发科(持续更新...)_第3张图片
3)利用状态图描述电路图B的功能
4)假设逻辑门的delay为1ns,DFF的CK到q的delay为1ns,clk周期为10ns,寄存器的setup时间为0.5ns,根据图B中的timing信息计算关键路径setup的slack。

3. 简答题(5分) 请简述IC设计从前端到后端的流程。

4. 简答题(10分) P先生、Q先生都具有足够的推理能力,而且都不说谎,这天,他们正在接受推理面试,他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4;黑桃J、8、4、2、7、3;草花K、Q、5、4、6;方块A、Q。约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉P先生,把这张牌的花色告诉Q先生。这时,约翰教授问P先生和Q先生:你们能从已知的点数或花色中推知这张牌是什么牌么?P先生:“我不知道这张牌”;Q先生:“我知道你不知道这张牌”;P先生:“现在我知道这张牌了”;Q先生:“我也知道了”。请问:这张牌是什么牌?并说明理由。

5. 简答题 (10分) 请列表简述您的所有项目经历,挑选其中一个项目进行具体介绍并简述挑选理由。

6. 简答题 (15分) 用Verilog实现一个10010序列检测器,当检测到10010序列时(包括重叠部分的情况)时,序列检测器输出1,否则输出0,请画出状态转移框图并写出Verilog代码。

7. 简答题 (15分) 请用C语言写一个程序,计算输入字符串中每个字母的个数(字符串只包含小写字母)。举例如输入字符串为:aaaaabbcccefff,则结果打印为:5a2b3c1e3f。

8. 简答题 (3分) [Python] list1 = [0,1,2,3,4,5],则list1[::-2] = ?

9. 简答题 (7分) [Python] 请用python写一段程序,用尽量少的语句实现下面功能:定义一个函数,判断给定目录下是否存在result.log文件,如果存在,则从result.log文件中找出所有包含 fail 字样(不区分大小写)的行,并将这些内容保存到一个名为fail.log的文件中,如果文件不存在则抛出异常。

10. 简答题 (10分) [Python] 请使用一种您熟悉的语言(C、Java、Python)定义二叉树的节点,并使用深度优先搜索,获取一个给定二叉树的最大深度,返回深度值。比如,给定二叉树[3,9,20,null,null,15,7],返回它的最大深度3。

        2022校招1-数字IC工程师——联发科(持续更新...)_第4张图片

11. 简答题 (10分) [选答题] 您是否用python完成过一些项目?碰到哪些困难,如何克服以及有什么收获?

12. 简答题 (10分) [选答题] 给你一个字符串表达式s,请使用一种您熟悉的语言(C、Java、Python)实现一个基本计算器来计算并返回它的值(运算只包含±和括号)。

示例1:
    输入:s = “1 + 1”
    输出:2

示例2:
    输入:s = “2 - 1 + 2”
    输出:3

示例2:
    输入:s = “(1+(4+5+2)-3)+(6+8)”
    输出:23

1. 不定项选择题 (5分) 正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或从某个串中取出符合某个条件的子串等,正则表达式中某些字符的作用如下表所示,请问“^ [^a-z]”会匹配以下哪个选项()

        2022校招1-数字IC工程师——联发科(持续更新...)_第5张图片
    A. Hello MTK
    B. 2021mtk
    C. mtk666
    D. MTK
    E. mediatek

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

答案:

解析
    2022校招1-数字IC工程师——联发科(持续更新...)_第6张图片

4.答案:这张牌是红桃4
解析:
    1. P先生:“我不知道这张牌”;
    因为P先生知道的是这张牌的点数,而P先生不知道这张牌,说明这个点数应该有超过1个花色有这个点数,首先排除单个花色有的点数:
    排除黑桃J、8、2、7、3和草花K、5、6;
    还剩红桃A、Q、4;黑桃4;草花Q、4;方块A、Q。

    2. Q先生:“我知道你不知道这张牌”;
    因为Q先生知道的是这张牌的花色,而Q先生一开始就知道P先生不知道这张牌,说明这个花色是不含有单个点数的花色(因为假如是黑桃花色,假如这张牌是黑桃J,P先生知道J这个点数就可以确定是黑桃J,同理,草花也是一样,假如P先生知道点数K,就可以确定是草花K,而Q先生一开始就知道P先生不知道这张牌,所以不是黑桃和草花这两个花色),因为黑桃和草花都含有单个点数,故排除黑桃和草花花色;
    排除黑桃4和草花Q、4;
    还剩红桃A、Q、4;方块A、Q。

    3. P先生:“现在我知道这张牌了”;
    因为P先生知道自己看到的点数是4,在排除了黑桃和草花花色后,他知道只剩红桃4了;

    4. Q先生:“我也知道了”。
    因为P先生既然已经知道了,Q先生自己知道是红桃,对比红桃A、Q、4,在已知P先生能确定点数后,知道了这张牌,说明这张牌的点数是方块中没有的,那对比方块,只剩红桃4
故最后的答案是红桃4

6.解析:
    我的用3段式状态机写的;第3个always我就直接用assign搞定了,效果都是一样的;
下面是我用OneNote做的一点笔记,仅供大家参考:
2022校招1-数字IC工程师——联发科(持续更新...)_第7张图片

状态转移图:
            2022校招1-数字IC工程师——联发科(持续更新...)_第8张图片
Verilog代码:

`timescale 1ns / 1ps

module sequential_detector_10010(
    input clk,
    input rst_n,
    input list_in,
    output list_out
);

    reg [5:0] current_state;
    reg [5:0] next_state;
    wire list_out;

    //state encode
    parameter IDLE = 6'b000_001;
    parameter s1   = 6'b000_010;
    parameter s2   = 6'b000_100;
    parameter s3   = 6'b001_000;
    parameter s4   = 6'b010_000;
    parameter s5   = 6'b100_000;

    //1:state change
    always @(posedge clk or negedge rst_n) begin
        if(rst_n==0)
            current_state <= IDLE;
        else
            current_state <= next_state;
    end
    
    //2: next state description
    always @(*) begin
        case(current_state)
                IDLE: next_state = list_in?s1:IDLE; 
                s1  : next_state = list_in?s1:s2  ; //1
                s2  : next_state = list_in?s1:s3  ; //10
                s3  : next_state = list_in?s4:IDLE; //100
                s4  : next_state = list_in?s1:s5  ; //1001
                s5  : next_state = list_in?s1:s3  ; //10010
            default : next_state = IDLE;
        endcase
    end

	//3: state out
    assign list_out = (current_state==s4 && list_in==0)?1:0;
    
endmodule

testbench

`timescale 1ns / 1ps

module sequential_detector_10010_tb();
    reg clk;
    reg rst_n;
    wire list_in;
    wire list_out;
    
    reg [14:0] data;
    assign list_in = data[14];

    sequential_detector_10010 dut(
        .clk(clk),
        .rst_n(rst_n),
        .list_in(list_in),
        .list_out(list_out)
    );

    initial begin
        clk = 0;
        rst_n = 0;
        data = 15'b01001_10100_10010;
        #20 rst_n = 1;
    end

    always #2 clk = ~clk;
    always @(negedge clk) begin
        data = data << 1;
    end
      
endmodule

仿真图:
2022校招1-数字IC工程师——联发科(持续更新...)_第9张图片
这里输入的待测序列list_in是01001_10100_10010
因为其中包含了重叠的10010,这个序列中共有2个10010序列
所以list_out就输出两个1,由仿真图可以看出,程序是没有问题的

bug:
写testbench的时候,代码老是报错,编译不过;
2022校招1-数字IC工程师——联发科(持续更新...)_第10张图片

vivado报错:
在这里插入图片描述
后来终于找到了原因:
在这里插入图片描述
寄存器定义反了
正确的应该是: reg [14:0] data;

Verilog 10010 序列检测器 参考链接

联发科技2021校招IC笔试题全部解析

你可能感兴趣的:(2022校招)