嵌入式软件工程师面试题及答案

嵌入式软件工程师面试题及答案题目一上个星期 去深圳一家搞 ARM 开发的公司面试 HR 叫我做了一份卷子 里面都是 C 编程 心中暗喜 因为这些题基本上都在程序员面试宝典里见过 后来回到学校 在网上搜索 原来这些题都是嵌入式工程师的经典面试题目 很多网站上都可以找得到 现把他贴出来 附上网上的答案 跟大家分享 因为这些题实在太经典了 预处理器 Preprocessor 1 用预处理指令 define 声明一个常数 用以

题目一

 

题目二

  for(i=0; i

  *(out++) = *(final++);

  *out=’\0′;



LONDE *link_reverse(LNODE *head) {  LNODE *pb,*pt;  if(head == NULL)   return head;  pb = head->next;  head->next=NULL;  while(pb != NULL)  {   pt = pb->next; pb->next = head;   head = pb;   pb = pt;  }  return head; }
void quick_sort(int num,int start_num,int end_num) {  if(start_num < end_num)  { int i = start_num; int j = end_num;   int temp = num[start_num];   while(i < j)    {    while(i < j && num[j] < temp)     j--;    if(i < j)    num[i++] = num[j];//把小于基准值放在左边    while(i < j && num[i] >= temp)     i++;    if(i < j)     num[j--] = num[i];//把大于基准值放在右边   }   num[i] = temp;   quick_sort(num,start_num,i-1);   quick_sort(num,i+1,end_num);  } }
 int binary_search(int array[],int value,int size) {  int low=0,high=size-1,mid;    while(low<=high)    //只要高低不碰头就继续二分查找  {   mid=(low+high)/2;   if(value==array[mid])  //比较是不是与中间元素相等    return mid;   else if(value > array[mid]) //每查找一次,就判断一次所要查找变量所在范围,并继续二分    low=mid;     //如果大小中间值,下限移到中间的后一个位,上限不变,往高方向二分   else    high=mid;        //上限移到中间的前一个位,往低方向二分  }  return -1; } /*双向循环链表插入函数*/ TYPE *insert_link(TYPE *head,TYPE *p_in) {  TYPE *p_mov = head,p_front = head;    if(head == NULL)  {   head = p_in;   p_in->next = head;   p_perior = head;  }  else  {   while((p_in->[] > p_mov->[]) && (p_mov->next != head))   {    p_front = p_mov;    p_mov = p_mov->next;   }      if(p_in->[] <= p_mov->[])   {    if(head == p_mov)    {     p_in->prior = head->prior;     head->prior->next = p_in;     p_in->next = p_mov;     p_mov->prior = p_in;     head = p_in;    }    else    {     pf->next = p_in;     p_in->prior = p_front;     p_in->next = p_mov;     p_mov->prior = p_in;    }   }   else   {    p_mov->next = p_in;    p_in->prior = p_mov;    p_in->next = head;    head->prior = p_in;   }  }  return head; } /*双向链表删除函数*/ TYPE *delete_link(TYPE *head,int num) {  TYPE *p_mov = head,p_front = head;    if(head == NULL)   printf("Not link\n");  while((p_mov->num != num) && (p_mov->next != head))  {   p_front = p_mov;   p_mov = p_mov->next;  }  if(p_mov->num == num)  {   if(p_mov == head)   {    if(p_mov->next == head && p_mov->prior == head)    {     free(pb);     head =NULL;     return head;    }    head->next->prior = head->prior;    head->prior->next = head->next;    head = head->next;   }   else   {    p_front->next = p_mov->next;    p_mov->next->prior = p_front;   }   free(p_mov);   printf("The node is delete\n");  }  else  {   printf("The node not been found\n");  }  return head; }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216905.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:47
下一篇 2026年3月18日 上午10:48


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号