阿里平头哥半导体有限公司 (技术面 复试题目)

阿里平头哥半导体有限公司

(技术面 复试题目)

 

  1. 指针函数和函数指针的区别?
  • 指针函数:是指带指针的函数,其本质上是一个函数,函数返回值是某一类型的指针。
  • 函数指针:是指向函数的指针变量,该指针可指向函数的入口地址(即函数名)。

 

  1. 什么是回调函数?
  • 回调函数就是一个通过函数指针调用的函数,将某一个函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,即称之为回调函数。

 

  1. Define 和 Enum的区别?
  • 编译器的处理方式不同,#define是在预编译阶段进行替换,不做数据类型安全检查,只是替换;enum是在编译时才确定其值。
  • 分配内存不同,#define 在预编译阶段不分配内存,只是进行替换与展开,在编译后当有变量调用这个宏时才会分配一份内存;enum则存储在静态存储区。
  • 编译检查不同,#define没有类型检查和安全检查,容易出现不可预知的错误;enum在编译阶段即进行类型检查。

 

  1. 结构体、联合体区别?
  • 结构体:结构体内部定义变量拥有各自内存,各自使用互不干涉,遵循内存对齐原则,数据总长度等于所有成员长度之和。
  • 联合体:定义的各成员共用一块内存空间,且同时只有一个成员得到这块内存的使用权,各变量共用一个内存首地址,数据总长度等于最大成员变量长度。
  • 联合体比结构体节省内存

 

  1. 数组和链表的区别?
  • 物理地址存储的连续性不同:数组的元素在内存中是连续存放的,链表的元素在内存中通常是不连续存放的。
  • 访问速度不同:数组的访问速度很快,因为数组可以根据数组内元素的下标进行快速定位;链表的访问速度较慢,因为链表访问元素需要移动指针。
  • 添加、删除元素速度不同:数组的元素增、删速度较慢,因为需要移动大量的元素;链表的元素删、删速度较快,因为只需要修改指针即可。

 

  1. 关键字Volatile的作用?
  • 防止编译器进行优化,即与定义该变量的有关运算,不要进行编译优化,以免出错。
  • 一般中断服务程序中用到的全局变量、多线程中用到的共享变量都需要增加vlotaile关键字,防止cpu执行指令的时候从最近的寄存器取而不从内存中取数据,造成前后两次调用的值不一样。

 

  1. 关键字Inline的作用?
  • Inline表示为内联函数,主要是为了解决一些频繁调用的小函数大量消耗栈空间的问题。在系统中栈空间是有限的,假如频繁大量的使用就会造成栈空间不足而导致程序出错。

 

  1. 强符号、弱符号的区别?
  • 强符号:是指已经初始化的全局变量和定义的函数名。
  • 弱符号:是指未初始化的全局变量。
  • 同名的强符号只能有一个,否则编译器报“重复定义”错误。
  • 允许定义一个强符号和多个弱符号,但定义会选择强符号。
  • 当有多个弱符号相同时,链接器会选择最先出现的那个,即与链接顺序无关。

 

 

  1. 什么是中断?
  • 中断是指CPU在运行过程中,出现某些突发事件,CPU自动停止当前任务,去执行突发任务,待突发任务执行完毕后,在返回程序暂停处继续执行。
  • 具体实现方式为,CPU接收到中断请求后,首先将断点处的PC值(即下一条应执行指令的地址)推入堆栈中保存(保护断点,由硬件自动执行),然后将相关的寄存器内容和标志位推入堆栈中保存(保护现场,由用户编程完成),保护断点和现场后即可执行中断服务程序,执行完毕后,CPU由中断服务程序返回主程序;返回流程即为回复寄存器的内容和标志位(恢复现场,由用户编程完成),然后在加返回指令RETI恢复PC值(恢复断点),恢复断点和现场后CPU继续执行原主程序。

 

 

  1. 什么是时间片的?
  • 时间片是分式操作系统内核分配给每个正在运行的进程微观上一段CPU执行时间,然后每个进程轮番的执行相应的时间,当所有进程处于时间片耗尽的状态时,内核会重新为每个进程计算并分配时间片,

 

  1. 互斥量、信号量区别?
  • 互斥量:用于线程间的互斥,指某一资源同时只允许一个访问者对其访问,具有唯一性和排它性;访问是无序的。
  • 信号量:用于线程间的同步,在互斥的基础上通过其它机制实现访问者对资源的有序访问。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值