华为嵌入式软件笔试题

1、输出2,5      【注意指针指向的类型,操作指针的时候才知道指针移动的字节】

int main(){ 
    inta[5]={1,2,3,4,5};   
    int *ptr=(int*)(&a+1);//a指向int类型,&a指向数组类型
    printf("%d,%d",*(a+1),*(ptr-1));
}

2、死锁

产生死锁的必要条件:(1)互斥条件(资源一次只允许一个进程访问);(2)不可剥夺条件(进程使用资源未完成之前,不能强行夺走);(3)请求和保持条件(一个进程已经占有一个资源,还想获取另一个资源);(4)循环等待条件。

产生死锁的原因:资源竞争,进程推进顺序错误。

死锁的处理:

预防死锁:通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来防止死锁的发生。
避免死锁:在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生。
检测死锁:允许系统在运行过程中发生死锁,但可设置检测机构及时检测死锁的发生,并采取适当措施加以清除。
解除死锁:当检测出死锁后,便采取适当措施将进程从死锁状态中解脱出来。

3、main函数的返回值:C标准要求定义 int main();   默认缺省的也是int 。返回值一般用来指示程序运行是否正确。

4、要对绝对地址0x100000赋值,我们可以用 (unsigned int*)0x100000 =1234; 那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?

答:

((void (*)())0x100000)();

5、如下代码输出?

unsigned short A = 10; \\10自身是有符号数,10u才是无符号数
printf("~A = %u\n", ~A); \\出现无符号数的高位扩展,高位补符号位
char c=128; \\字符类型表示范围:-128~127
printf("c=%d\n",c); \\出现有符号数的位数扩展,高位补符号位

答案:4294967285   和    -128。

https://blog.csdn.net/weixin_38812277/article/details/90702682

 

6、用两个栈实现一个队列。【代码详见另一篇博客】

7、以下代码输出25 7

#define SQ(a) (a)*(a)
int main(){
	int a = 5;
	int b = SQ(a++);
	printf("%d %d",b,a);
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 5
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: 作为AI机器人,本人无法亲身经历面试,但可以向您介绍嵌入式c语言方面的一些知识和技巧。 首先,嵌入式系统是以某种特定功能为目的,集成在其他产品中的计算机系统,如汽车控制系统、家电控制系统等,其最大的特点是要求实时性高、资源有限、功耗小。因此,面试可能会涉及嵌入式系统的相关知识。 其次,c语言是嵌入式系统最常用的编程语言之一,因此掌握c语言基础知识也非常重要。这包括数据类型、指针、数组、结构体等基本概念,以及常见的编程语法和语句,如循环、条件判断、函数调用等。 同时,面试可能会对c语言编程能力进行考察。这涵盖了算法设计能力、程序调试能力、代码优化能力等方面。在面试前应尽可能多地进行编程练习,并尝试应用各种相关工具和技巧进行程序调试和优化。 最后,了解和熟悉嵌入式系统中经常使用的一些关键技术,如微控制器、嵌入式操作系统、嵌入式软件设计等,也是面试中的一大加分项。 这些是我作为AI机器人所能提供的部分嵌入式c语言面试相关建议和知识点,希望能够为您有所帮助。 ### 回答2: 在2019年的华为嵌入式C语言面试中,会提出一些关于C语言基础知识的问题,例如指针的使用,内存管理等。同时也会考察面试者的算法和数据结构能力。 对于指针的问题,常见的有指针和数组的关系,指针的运算,指针和const的关系等。内存管理方面则会问到动态内存分配和释放的函数malloc和free的使用,以及内存泄露和缓冲区溢出等问题。 在算法和数据结构方面,则会问到一些基础的排序算法,如冒泡排序,快速排序,以及栈和队列等数据结构的实现方法和应用场景。 除此之外,面试者还需要具备一定的代码阅读能力和编写能力,能够熟练地使用C语言进行编程。同时,应该具备独立解决问题的能力和团队合作精神,对新技术和新技能有良好的学习能力和探索精神。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值