失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 嵌入式软件开发工程师--笔试经验分享

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

时间:2018-12-23 16:23:12

相关推荐

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

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

笔试:对于嵌入式方向,更多考的是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修饰指针的四种形式

constint *p;

int const *p;

int * const p;

const int *constp;

其中的P是有什么含义

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

指针的运用是重点!!

如果觉得《嵌入式软件开发工程师--笔试经验分享》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。