爱饭饭大吃货
我笔试的是DSP工程师。卷子只有一张纸,正反两页。一共10道题。答案作答在给的空白的纸上。1.定点DSP芯片和浮点DSP芯片是什么?有什么优缺点?定点DSP和浮点DSP主要是按DSP工作时的数据格式来区分的。数据以定点格式工作的DSP是定点DSP,数据以浮点格式工作的DSP是浮点DSP。浮点DSP能进行浮点运算,一次完成,由硬件实现。定点DSP无法直接进行浮点运算,完成浮点运算需要借助程序来实现。优点:浮点DSP比定点DSP 的运算范围要大。浮点DSP 的寻址范围也大些。浮点DSP的精度大些。浮点运算速度大。缺点:定点DSP需要时刻注意运算的溢出。精度不够,定点DSP运算速度慢。和通用CPU的最大区别是什么?有什么共同点?(1)首先是体系结构:CPU是冯.诺伊曼结构的,而DSP有分开的代码和数据总线即“哈佛结构”。(2) 标准化和通用性:CPU的标准化和通用性做得很好,支持操作系统,所以以CPU为核心的系统方便人机交互以及和标准接口设备通信,非常方便而且不需要硬件开发了;但这也使得CPU外设接口电路比较复杂,DSP主要还是用来开发嵌入式的信号处理系统了,不强调人机交互,一般不需要很多通信接口,因此结构也较为简单,便于开发。如果只是着眼于嵌入式应用的话,嵌入式CPU和DSP的区别应该只在于一个偏重控制一个偏重运算了。(3)流水线结构:大多数DSP都拥有流水结构,即每条指令都由片内多个功能单元分别完成取指、译码、取数、执行等步骤,这样可以大大提高系统的执行效率。但流水线的采用也增加了软件设计的难度,要求设计者在程序设计中考虑流水的需要。 快速乘法器:信号处理算法往往大量用到乘加(multiply-accumulate,MAC)运算。DSP有专用的硬件乘法器,它可以在一个时钟周期内完成MAC运算。硬件乘法器占用了DSP芯片面积的很大一部分。(与之相反,通用CPU采用一种较慢的、迭代的乘法技术,它可以在多个时钟周期内完成一次乘法运算,但是占用了较少了硅片资源)。 地址发生器:DSP有专用的硬件地址发生单元,这样它可以支持许多信号处理算法所要求的特定数据地址模式。这包括前(后)增(减)、环状数据缓冲的模地址以及FFT的比特倒置地址。地址发生器单元与主ALU和乘法器并行工作,这就进一步增加了DSP可以在一个时钟周期内可以完成的工作量。 硬件辅助循环:信号处理算法常常需要执行紧密的指令循环。对硬件辅助循环的支持,可以让DSP高效的循环执行代码块而无需让流水线停转或者让软件来测试循环终止条件。3.占先式系统和非占先式系统有什么区别?DSP/BIOS 和ucOSⅡ是哪一种?占先式,当前任务运行中如果有优先级更高的任务进入就绪态,当前任务立即将CPU交给优先级更高的任务。非占先式:等当前任务执行完后再交给优先级更高的任务。DSP/BIOS,ucOSII是占先式的操作系统。4.说一下对DSP MAP的认识。MAP文件是CCS软件编译后产生的有关DSP用到所有程序、数据及IO空间的一种映射文件。一、生成方法 MAP文件主要有两种生成方法,一种是由系统自动生成,默认文件名为所建立的项目名(如XXX为项目名)加上.map后缀,另一种在CMD文件中指定生成MAP文件,操作方法为在MEMORY指令前面加上“-m ”,文件名可以任意。二、文件格式 MAP文件大概分为文件头、内存配置、段映射、全局符号四部分。内存配置与CMD文件中的MEMORY指令关联,在CMD文件中定义的程序与数据区间定义,在该部分均可以找到对应,与CMD文件不同的时,在MAP文件中加入了一个实际使用的区间,即在程序中实际用到的空间长度。段映射部分与CMD文件中的SECTION指令关联,在该部分程序中所有的段实际映射的起始地址与实际长度均有详细说明。可以具体到程序中PROGMA指定的段和各个单独文件产生的OBJ文件。全局符号可以是程序使用的每一个函数、程序中定义的全局变量均可以在此找到对应的起始地址。MAP文件中采用两种方式列举,一种为按相应地址排列,另一种按全局符号字母排列。5.简单的程序题。看程序,写出输出见过,用C写的。6. -7和10的16位二进制补码是什么? 写出Q15 和Q15 ⑴正数的补码与原码相同。 ⑵负数的补码负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。 -7转换成二进制原码是1000000000000111,反码是1111111111111000,补码是反码+1=111111111111100110的二进制原码是0000000000001010,是正数,补码和原码一样DSP芯片的数以2的补码形式表示。每个16位数用一个符号位来表示数的正负,0表示数值为正,l则表示数值为负。其余15位表示数值的大小。如,二进制数0010000000000011b=8195 二进制数1111111111111100b= -4数的定标有Q表示法和S表示法两种。不同的Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;如,16进制数2000H=8192,用Q0表示 16进制数2000H=,用Q15表示7.说一下DSP开发的主要步骤。8.写出strcpy的函数原型。char* strcpy(char *strDest,const char * strSrc){}9.写出创建单链表的函数。struct stu_info{int x;struct stu_info *next;};void inputstuinfo(struct stu_info**head,int n){}10. 对一个字符串进行重新排列,使字母在前,数字在后,并且字母和数字的相对位置不变。include<>include<>include<>函数名:fun参数: char*s,int *m函数返回值:chLetter(数组chLetter[N]的数组名)局部变量:char chLetter[N]; char chNumber[N]; int i,j,k;char *fun(char*s,int *m){
蔡蔡7878
烽火通信的办事效率挺高的,10月29日我在chinahr上注册简历,应聘硬件工程师。11月2日通知参加在南邮的宣讲会(当天有事没去)。11月4日邮件通知11月5日下午3点到南邮笔试。在网上了解到他做光通信的,前一天晚上特地看了一下《光纤通信》,笔试的内容无外乎数电(给定连接图,画出信号波形,这道题和我笔星网锐捷中的一题一样),模电(三极管,二极管,放大器),电路(戴维南定理,可是我没写出来,在考试时一直把它想成叠加定理了,要不又可以多拿几分),单片机、微机原理、还有就是网络通信,总之,本科学的专业课都考到了。当天晚上11:30就发面试通知,不过我睡得早,今天早上起床才看到。当时就在想应该怎样说(第一次面试)。到了面试地点,等了半小时,轮到我时,进去问个好就坐下了。当时她在给前面的同学做记录什么的,看都考了四十几分,等她忙完后,她拿起我昨天的试卷和上交了一些资料看,然后,叫我先自我介绍下,我就说了自己的学校专业,读研期间做的一个项目,后期自学的51,CPLD以及ARM7等,然后说说自己的兴趣爱好就没了(这个自我介绍自己没有做好,有点拖拖拉拉,说到最后不知道说什么了就结束了,而且说的特别快,在后面她提问时我也不假思索的就说出去了,没有先思考一下,然后再作答)。后来,她主要问我读研时项目,我就画出了原理框图,说了说怎样实现的,这个设计的要点是什么?后来她问我有没有问题问她,我就问了新员工进去后的学习和培训什么的。中间她问我哪里人(公司在武汉)?江苏。还说我的学校她没听过,让我介绍下我的学校。我就说我们学校虽不是211,985,但是科研实力以及办学能力都是挺好的等等,是不是说的很不好?第一次面试就结束了,总共10分钟不到吧。当时就知道没什么希望,不过我也不是很沮丧,毕竟还有机会。前面的同学都面半小时的,我怎么就这么快呢?不过感觉好像也没什么说的,他们出来都说还分析昨天的试卷,而我没分析分析。写写面经,总结一下失败的经验,还要继续前行。
优质工程师考试问答知识库