2023届AMD秋招数字IC设计编程真题

AMD数字IC设计笔试题之查找字符串中子串的位置

一、原文题目

Please use systemverilog to implement string find function.
Here are some examples.It will return 3 if we find “cd_” in “a_bcd_123_aaa_232323”.
It will return -1 if we find “f” in “a_bcd_123_aaa_232323”.
The function definition is as following and assume start variant can bigger than 0.
function int find(input string source_str,string substr,int start = 0);

  1. source_str is the basics string, it is “a_bcd_123_aaa_232323” in above example.
  2. substr is the looked-up string, it’s “cd_” or “f” in above example.
  3. start is the start index location of source_str.

substr =“a”,star=0,source_str=“a_bcd_123_aaa_232323”,the function will return 0.
substr =“a”,star=3,source_str=“a_bcd_123_aaa_232323”,the function will return 10.

二、设计与思路

  • 题目要求用systemverilog实现在一个长字符串(source_str)中,从start位置开始查找第一个子串(substr)的位置,并返回位置坐标,如果字符串中没有匹配的子串,则返回-1。
  • 思路就是首先从字符串(source_str)的start位置开始遍历,查找子串(substr)字符的第一个匹配字符,一旦找到子串(substr)的第一个字符,继续匹配子串(substr)剩下字符,如果匹配完成,则退出遍历返回字符串(source_str)下标减去子串(substr)遍历下标(即为开始值),否则重新匹配子串(substr)第一个字符,直到匹配到或遍历字符串(source_str)结束。代码如下所示:
class find_substr;


	function int find(input string source_str,string substr,int start = 0);

		int loc=-1;
		int i=0,j=0;

		for(i=start;i<source_str.len();i++)begin
			if(source_str[i]==substr[j])begin
				if(j!=substr.len()-1)begin
					j++;
				end
				else begin
					loc = i - j;
					break;
				end
			end
			else begin
				if(j!=0)begin
					j = 0;
				end
				else begin
					continue;
				end
			end
		end

		return loc;

	endfunction
  
endclass

module tb;

	string source_str = "a_bcd_123_sd";
	string substr = "d_";
	int start = 2;

	find_substr fdstr;

	initial begin
		fdstr = new();
		$display("loc is:%0d",fdstr.find(source_str,substr,start));
		#200;
		$finish;
	end
endmodule

三、功能验证

  1. 代码写完还要验证下功能是否正确,我们设source_str = “a_bcd_123_sd”,substr = “d_”,start=2,然后运行仿真,结果如下,可以观察到location = 4和预期一样。
    请添加图片描述
  2. 我们再设source_str = “a_bcd_123_sd”,substr = “f”,start=0,然后运行仿真,结果如下,可以观察到location = -1即在字符串中(source_str )没有找到子串(substr )。结合上述仿真可知,本次设计确实达到题目要求。
    请添加图片描述
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 2023年的数字IC设计聘已经结束,现在来回顾一下这次复盘。整个聘过程中,有数十家公司参加了笔试和面试,竞争非常激烈。 首先是笔试环节。笔试目涵盖了数字电路设计、计算机组成原理、操作系统、数据结构等多个领域,目难度也有所不同。其中,一些较难的目需要对底层硬件有较深的理解和编程能力,还有一些考察算法和数据结构的应用,对于应聘者的基础能力要求较高。 然后是面试环节。面试中,面试官对于应聘者的技术能力、项目经验、学术背景等方面进行了深入的了解,考察了应聘者的思路清晰度、解决问的能力、团队协作能力等方面。 整个聘过程中,很多公司更注重应聘者的实际能力和潜力,将实力放在第一位,并且更加关注应聘者的全面素质和团队协作能力。 总的来说,这次数字IC设计复盘展示了很多应聘者的编程能力和技术水平,对于应聘者而言更是一次宝贵的机会,同时也给了聘公司更多的选择和发现优秀人才的机会。 ### 回答2: 2023数字IC设计已经结束,各大公司也陆续公布了面试结果。回顾这次的笔试和面试,可以发现许多新的趋势和特点。 笔试趋势 首先,笔试目趋向综合,不仅包括专业相关的知识,还涉及到诸如计算机编程、英语等的综合考核。这也足以印证了人才市场对于全面素质的重视。 其次,笔试目更加注重实战能力,许多目涉及到实际的设计场景和问,需要熟练掌握工具的使用和项目的整体规划、协作。 再次,笔试目考察重心更加突出学生的综合素质,注重全面考核应聘者的理解、分析、判断能力以及沟通协调等,更贴近企业实际需求。 面试特点 首先,面试对个人的专业能力和综合素质要求都很高,需要应聘者具备扎实的理论基础和实际工程经验,同时在沟通协调等方面也应有较强的个人能力。 其次,许多公司的面试特别注重细节问,通过提问、测试等方式来发现和检验应聘者对细节的注意力和对整个系统的整体把握能力。 再次,许多企业对于应聘者的人品、性格、偏好等也会考究,主观因素对于面试结果有着不可忽视的作用。 总之,就目前的趋势来看,未来数学IC设计中,企业会更注重全面素质的考核和综合能力的培养。希望广大参加的同学都能沉淀好自己的能力,提高自身综合素质,为以后的职业发展夯实基础。 ### 回答3: 2023 数字 IC 设计已经落下帷幕,各家公司的笔试、面试实录也相继公布。我们可以通过分析这些目和面试问,来了解企业对应届毕业生的需求和期待,也可以总结自己的申请情况,为下一轮聘做好准备。 首先,我们可以对各家公司的笔试进行分类。大多数公司的笔试目都围绕数字电路设计、模拟电路设计、通信电路设计、计算机组成原理等方向,目难度较高,需要考生运用自己的专业知识进行解答。同时,也有部分公司会增加智力测试、数学逻辑等综合能力目,考察应聘者的综合素质。为了应对这些目,应聘者需要熟练掌握专业知识,同时也需要加强自己的综合能力训练。 其次,我们可以分析各家公司的面试问。大多数公司的面试问都是围绕应聘者的个人经历和能力进行的,包括个人介绍、自我评价、项目经验、职业规划等方面。同时,也有不少公司会增加逻辑思维类问,考察应聘者的思维能力和解决问的能力。为了应对面试,应聘者需要在个人经历和能力上强化自己的优势,并且提前思考可能会被问到的问,对应准备相应的答案。 在总结这次经验的同时,也要注意未来的趋势和发展方向。随着数字 IC 设计的不断发展和创新,新技术不断涌现,应聘者需要不断学习新知识和新技术,以适应未来发展的需求。同时,公司也会更加注重应聘者的综合能力和创新能力,因此应聘者需要在专业知识的基础上,注重自己的软实力和创新思维的培养。 总而言之,2023 数字 IC 设计是一个很好的学习和锻炼机会。通过这次经历,应聘者可以更好地了解自己的实力和优势,也可以借此机会探索未来的发展方向和趋势。希望未来的应聘者可以以积极的心态面对挑战,不断学习和成长,为未来的数字 IC 设计行业做出更大的贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Iceeeewoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值