嵌入式软件开发工程师--笔试经验分享

最近一直在参加招聘,像富士康,高新兴,康冠,海康威视,以及各种中小厂,总结了以下几点经验和大家分享一下:

笔试:对于嵌入式方向,更多考的是c语言,像指针的运用,内存管理,数据结构与算法等等;我总结了以下几点常考的简答题:

1.malloc和new   free和delete的区别:

new是操作符,malloc是函数;

new开辟内存失败抛出异常,malloc申请内存失败返回NULL;

new开辟的内存大小不需要指定,malloc需要指定;

new开辟的内存的类型会自动转换,不需要强转,malloc需要强转

delete用于释放new分配的空间,free用于释放malloc分配的空间。 delete[] 用于释放new[]  分配的空间。

调用free之前需要检查需要释放的指针是否为空。调用delete则不需要。

2.static的用法:

static修饰局部变量时,表示这个局部变量存储在静态区,生命周期为整个源程序,只初始化一次,若没初始化则为0,作用域不变。

static修饰全局变量时,表示这个全局变量的作用域仅限于当前文件,别的文件不可调用。

static修饰函数时,表示这个函数的作用域仅限于当前文件,别的文件不可调用。

3.register用法

register修饰的变量,编译器会尽量将它分配在寄存器中,这样读写效率会高很多。适用于被频繁使用的变量,可以极大提高程序的运行效率。

编译器只能承诺尽量将register修饰的变量放在寄存器中,但不保证一定放在寄存器中,因为寄存器数量有限。

4.extern

extern主要用来声明全局变量,表示该变量是在别的文件中定义了,当前文件引用了这个变量。将来链接的时候会在别的.o文件中找到这个同名变量。

extern还可用来在全局变量定义点之前的函数中声明该全局变量,表明该变量是一个已经定义的外部变量,因此可以合法地使用该变量,之后在后面有定义即可。

extern还可用来修饰函数,表明该函数是外部函数,加不加都可。

5.volatile

volatile的字面意思是可变的、易变的。C中用colatile来声明一个变量,表示这个变量可以被编译器之外的东西改变,也就是说不是当前代码造成的改变。这样编译器就不会对这个变量作优化,每次用到时都到内存中或寄存器中去读取变量的值。

通常有三种情况需要加volatile:①中断服务子程序中引用的变量;②多线程中共用的变量;③硬件会改变的变量。

6.由源码到可执行程序的过程

预处理--汇编--编译--链接

7.什么是大小端模式,如何判断机器的大小端

大小端源自一本小说,最早在计算机通信领域应用,根据先发送高字节还是低字节区分大小端。

现在我们提到的大小端是指计算机存储系统的大小端,大端模式:一个变量的高字节存储在低地址;小端模式:一个变量的低字节存储在低地址。

判断方式:用union、指针+强制类型转换。

不可行方式:位与(&的时候一定是高字节&高字节)、移位(右移永远是将低字节移除)、强制类型转换(大小端模式没区别,int向char都是低字节赋值给char)。

8.const修饰指针的四种形式

const int *p;

int const *p;

int * const p;

const int * const p;

其中的P是有什么含义

另外还有链表的具体应用,16进制的&运算,用c语言写出strcpy的功能等等

指针的运用是重点!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值