2016深圳竹林科技面试题

1.volitile关键字的作用

1.表示直接存取原始地址

2.告诉编译器不要进行编译优化

例子的话:

并行设备的硬件寄存器,多线程应用中被几个任务共享的变量,中断子程序中访问到的全局变量。

2.位操作,给定一个整型变量,第一个设置a的bit3,第二个清除a的bit3,保持其他位不变。

int main()
{
    int |=(0x01<<3);//第三位置1
    
    int &=~(0x01<<3);//第三位清零

}

3.设置一绝对地址为0x67a9整形变量的值为0xaa66

unsigned int *ptr=(volatile unsigned int *)0x67a9;//第一步定义一个指针指向地址
    
        *ptr=0xaa66 //解引用

这种题还是很常见的。。

4.中断子程序使用的注意

1.ISR是处理器独占,传递参数应该通过中断上下文

2.ISR应该短而有效,而浮点数需要额外的入栈?

这里考到了中断子程序的特点,让我们来复习一下,中断子程序一般分为上半部和底半部

上半部的时间短,主要用来配置启用低半部。而底半部才是用来实现具体的功能业务的。

中断的底半部一般有3种处理模式

1.tasklet(小任务处理)

2.woker 工作队列

3.内核线程 kthread 

5.用一句语句实现x是否是2的若干次幂的计算

return(x&(x-1))?false:true //x&x-1为1的时候返回false,为0的时候返回true;

6.写出strcpy函数的实现方式

7.写出strcmp函数的实现方式,相等返回0,不相等返回1.



int strcmp(char *dest,char *source)
{
    if(NULL==dest||NULL==source)
        {
            return NULL;
        }
    while(*dest!='/0'||*source!='/0')
        {
            if(*dest++!=*source++)
                {
                    return -1; 
                }

        }

        return 0;
}

这种题第一 先进行异常判断,第二 有个很坑的地方,就是||前一定不要有自加符号,因为||号如果前面条件成立,就不会对第二个条件进行判断。

8.已知链表头结点,写个函数将其逆序

得找机会重写一次。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值