嵌入式笔试题目(二)

此文章是收集和整理关于嵌入式笔试的题目,便于自己及他人复习用的,取之于网络,用于网络。

1、 写出简单的hello world字符设备驱动?

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/moduleparam.h>

static int __init hello_init(void)                           初始化模块时执行
{
    printk(KERN_INFO "hello world\n");
    return 0;
}

static void __exit hello_exit(void)                       卸载模块时执行
{
    printk(KERN_INFO "goodbye world\n");
}

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("hello");
MODULE_AUTHOR("hongdy");

module_init(hello_init);
module_exit(hello_exit);

2、构造函数与析构函数可以是虚函数吗?
构造函数不能是虚函数,析构函数常常是虚函数。

3.进程间通信的方式?

  1. 管道(pipe),流管道(s_pipe)和有名管道(FIFO)
  2. 信号(signal)
  3. 消息队列
  4. 共享内存
  5. 信号量
  6. 套接字(socket)

4、写一个高性能的函数把一个int乘以9?
int Multiply_9(int a)
{
return ((a<<3)+a);
}

5、 用一个C语言表达式判断一个数是否位2的N次幂。
答案:x == (((x ^ (~0x0)) + 1) & x)

6、int ( (f)(int, int))(int)这里的f是什么?
答案:f是指针,指向一个参数为(int,int),返回值为一个指针的函数
这个返回的指针指向一个参数为(int),返回值为int的函数。

7、 typedef struct
{
char data[10];
}T1;

typedef struct
{
T1* p;
char data[0];
}T2;
sizeof(T2)==?

答案:4

8、含N个元素的一个数组,数组的值的范围是1~N-1,找出重复的那个值。

int array[N];
int FindRepeat(void)
{
   int flag[N]={0};
   int i;
   for(i=0;i<N;i++)
   {
      if(flag[array[i]]==1)
         return array[i];
      else
         flag[array[i]]=1;
   }
}

9、找错误

(1) void Test(const int v)
{
int* p;
p=v;
}
答案:不能把非const指针指向const变量。应该是:const int* p;

(2) void Test(const int& v)
{
const int& p;
p=v;
}
答案:引用必须在定义的时候初始化。应该是:const int& p=v;

10、编程题,翻转链表。

typedef struct node
{
   int value;
   struct node* next;
}SLink;

SLink* ReverseLink(SLink* h)
{
   SLink* pre,*cur,*next;
   pre=NULL;
   cur=h;
   next=cur->next;
   while(next)
   {
      cur->next=pre;
      pre=cur;
      cur=next;
      next=next->next;
   }
   return cur;
}

11、请用C语言写出能将一个字符串逆序函数。
参考此blog

12、请编写一个C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值

int search(char *str,int n,char ch)
{
    int i;
    for(i=0;i<n && *(str+i)!=ch;i++);
    if(i==n)        
        return -1;
    else
        return i;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值