【诺西笔试题面试题详解】 1. 位运算题: - 0xABCD ^ 0x0F0F 的结果是将两个十六进制数对应位进行异或操作,0xABCD的二进制表示中,每四位与0x0F0F的二进制进行异或,结果为0x6566。 - 0xA15C | 0x9753 的结果是进行或运算,两个数的二进制表示中1的位置会被保留下来,结果为0xA77F。 - 0xB5 & 0x13 的结果是进行与运算,只有两数都为1的位置才会有结果1,所以结果是0x11。 2. 计算题: - sizeof(uwData) 由于uwData是长度为50的int型数组,每个int占4个字节,因此数组占用的总内存是50 * 4 = 200个字节。 - sizeof(MemStru) MemStru是一个结构体,包含一个大小为50的Char指针数组。在大多数系统上,指针的大小为4或8个字节,假设为4字节,MemStru的大小是50 * 4 = 200个字节。 3. 字节序问题: - 在小端系统中,数据存储是从低位到高位。题目中的for循环将i的值填充到unData数组中,当i=1时,cOut等于unData[1]和unData[0]组合成的短整型。因此,如果i初始值为0,cOut的值取决于unData的前两个字节,具体值无法确定,需要实际数据才能计算。 4. 指针操作可行性分析: - 1) int * samples: samples可以自增,但*samples++操作会改变samples指向的值。 - 2) const int *samples: samples不能自增,但可以读取*samples。 - 3) int * const samples: samples的指针值不能改变,但可以修改其指向的数据,所以*samples++可行。 - 4) const int *const samples: samples的指针值和所指数据都不能改变,所以*samples++不可行。 - 5)volatile const int *const samples: 既不能改变指针值,也不能修改所指数据,所以*samples++不可行。 5. 计算32位整数中1的个数: 可以使用位操作或者计数法实现,例如:将数据与自身右移一位后与原数据进行异或,每次异或后会将原数据中最低位为1的位置变为0,最高位为1的位置不变,统计这个过程中的异或结果为非零的次数即可。 6. 点积计算代码问题: 代码中的点积计算可能存在的问题是没有考虑sizeA和sizeB不一致的情况,可能导致访问越界。正确的做法是在循环中增加条件判断,确保不会超出数组边界。 7. 自定义strcpy函数: strcpy函数需要实现的功能是将源字符串strSrc复制到目标字符串strDest。这里需要注意处理特殊情况,如目标字符串内存不足、源字符串为空等,同时避免发生缓冲区溢出。 8. DSP程序任务时间计算: - Task1和Task2分别需要50ns和60ns。 - Task3使用QDMA,配置和启动需要0.1ns,2M字节数据移动需要40ns。 - 最小时间是三者之和,但考虑到QDMA可能在Task1和Task2之间启动,所以最小时间是50ns + 60ns + 40ns = 150ns。 9. 丑数(Ugly Number)问题: 丑数是仅含有质因数2, 3, 5的正整数。可以使用动态规划方法来高效地找到第n个丑数,维护三个指针分别指向2, 3, 5的倍数,每次选取最小的作为下一个丑数,并更新指针。 以上就是对诺西笔试题面试题的详细解答,涵盖了位运算、内存管理、指针操作、算法实现等多个IT领域的知识点。
剩余10页未读,继续阅读
- 粉丝: 22
- 资源: 54
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助