嵌入式笔试刷题(第2天)
5.编写函数void hton(float val,char *buf)把小端序的val转换成大端序的val,存放到buf中
✅ 第 5 题:实现 hton(float)
📌 考点: 浮点数与字节序转换
htonl
只能处理整数类型,如何将 float 进行大端转换?
🧾 示例实现:
float htonf(float val) { uint32_t temp; memcpy(&temp, &val, sizeof(temp)); // float → uint32 temp = htonl(temp); // 使用现成的字节序函数 memcpy(&val, &temp, sizeof(val)); // 还原 float return val; }
6.写出int,bool,float,指针变量与“零值”比较的if语句
✅ 第 6 题:int、bool、float、void 与 0 的比较
📌 考点: 类型与布尔判断
各类型与 0 比较会有不同隐含语义:
int a = 0;
→false
bool b = false;
→false
float f = 0.0;
→false
void* p = nullptr;
→false
在 if (x)
中,全部都可被转换为布尔判断,0 都是假
7.请指出如下语句的含义
void *(*(p1)(int))[10];
float (*(*p2)(int,int,float))(int);
typedef double (*(*(*p3)())[10])();
int (*(*p4())[10])();
✅ 第 7 题:数组指针 & 函数声明分析
📌 考点: 指针声明逆向分析法
int (*p1)[10]; // p1 是指向含10个int的数组的指针 int *p2[10]; // p2 是含10个int指针的数组 int (*fp1)(int); // fp1 是指向函数的指针,函数参数为int int *(*fp2)(int*); // fp2 是指向函数的指针,该函数参数为int*,返回int*
🧠 技巧: 从标识符往外读,遇到 ()
先读函数,再读指针或数组。
8.现有1M长度的char数组,请将每个字节进行高低位互换(一个字节的八位二进制逆序),如果我们需要频繁地处理这样的数据,请实现一个高效的处理函数
✅ 第 8 题:高效字节反转(bit reverse)
📌 考点: 位运算技巧
目标:将一个字节的位顺序反转。例如:
输入:0b11010010 输出:0b01001011
🧾 解法:查表法 或 分步交换法
uint8_t reverse(uint8_t b) { b = (b & 0xF0) >> 4 | (b & 0x0F) << 4; b = (b & 0xCC) >> 2 | (b & 0x33) << 2; b = (b & 0xAA) >> 1 | (b & 0x55) << 1; return b; }
9.用DrawPixel(x,y)画点函数实现一个void DrawLine(int x1,int y1,int x2,int y2)划线函数
✅ 第 9 题:DrawLine(x1, y1, x2, y2)
📌 考点: Bresenham 直线算法
用最基本的点绘制函数画线,要求无浮点数运算。
🧾 简化实现(整数版)
void DrawLine(int x1, int y1, int x2, int y2) { int dx = abs(x2 - x1), sx = x1 < x2 ? 1 : -1; int dy = -abs(y2 - y1), sy = y1 < y2 ? 1 : -1; int err = dx + dy, e2; while (true) { DrawPixel(x1, y1); if (x1 == x2 && y1 == y2) break; e2 = 2 * err; if (e2 >= dy) { err += dy; x1 += sx; } if (e2 <= dx) { err += dx; y1 += sy; } } }
10.如下程序有什么问题,请指出
void test()
{
char string[10];
char *str1=”0123456789”;
strcpy(string,str1);
}
✅ 第 10 题:字符串拷贝导致溢出
📌 考点: 缓冲区溢出、strlen vs strcpy
典型错误:
char a[5]; strcpy(a, "hello"); // 溢出,因为 "hello" 长度为 6(含 '\0')
✔ 安全版本:
strncpy(a, "hell", 4); // 或者 malloc 动态分配空间
更多内容全在下方专栏
全网最受欢迎的嵌入式笔试专栏
笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学
3000+订阅还会涨价,提前订阅提前享受,持续更新中。
专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
#你的秋招第一场笔试是哪家##嵌入式测试,嵌入式开发##嵌入式笔面经分享#