杰理科技 - 嵌入式软件工程师 - 笔试

❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗

alt

本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。

岗位:嵌入式软件工程师

题型:11 道问答题,60 分钟,总分 110 分

1、问答题

1.1

简述在嵌入式学习中遇到的一个问题(可多个)及处理过程?

解答(抛砖引玉,非标准答案):

问题:

我自己写 RTOS 内核的过程中,发现任务调度不正常,会在心跳函数中出现卡死现象

处理过程:

  1. ​首先尝试使用 Keil 软件的 Debug 模式定位发生错误的程序
  2. 发现程序会卡在 HardFault_Handler 中断处理函数(非法内存访问、堆栈溢出或者除零等操作)
  3. 尝试打断点进定位发生错误的程序
  4. 经过逐步排查我发现一旦执行 RTOS 的心跳函数就会触发 HardFault 中断
  5. 逐行查看程序后发现可能访问了不该访问的地址
  6. 聚焦到就绪链表数组的下标上
  7. 利用 printf 打印访问时的数组下标,发现不正常
  8. 思考不正常的原因,先创建任务再启动 RTOS 心跳
  9. 将启动 RTOS 心跳的定时器移动到启动 RTOS 调度器函数中

1.2

链表节点声明如下:

struct ListNode { 
	int num; 
	float score; 
	struct ListNode* m_pNext; 
};

请补充以下函数实现链表反转 ListNode* ReverseList(struct ListNode* pHead)

解答:

struct ListNode* ReverseList(struct ListNode* pHead) 
{
    struct ListNode* prev = NULL;
    struct ListNode* current = pHead;
    struct ListNode* next = NULL;

    while (current != NULL) {
        next = current->m_pNext; 
        current->m_pNext = prev;
        prev = current; 
        current = next; 
    }
    return prev;
}

1.3

在一个 2ms 的定时器里,请写一个函数可以控制灯实现以下几种状态

  1. 亮 200ms,灭 800ms
  2. 亮 200ms,灭 200ms
  3. 亮 500ms,灭 4.5s

解答:

#include <stido.h>
​
static int count = 0;
static int mode = 0;
static int state = 0; 

void setLightState(bool state) {
    // 控制灯的亮灭,state为true时亮,false时灭
}
​
​
void my_2ms_timer() {

    count++;

    switch (mode) {
        // 模式0​
        case 0: 
            if (state == 0 && count >= 400) { 
                setLightState(true);
​                state = 1;
                count = 0; 
            } else if (state == 1 && count >= 100) {
                setLightState(false);
                state = 0;
                count = 0;
            }
            break;
        // 模式1​
        case 1: 
            if (state == 0 && count >= 100) {
                setLightState(true);
                state = 1;
                count

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,同时还整理了嵌入式软件相关的八股知识。专栏内容涵盖C/C++基础、嵌软常见通信协议、ARM、FreeRTOS、Linux OS相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。

全部评论

相关推荐

评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务