笔试常考题--嵌入式软件开发

最近在找工作,到处跑,做了很多笔试,这里总结这些天常考的题,一是记录心得,二是分享知识--Rome was not built in a day

1 char *const p; char const *p; const char *p; 这三者有什么区别?

   char *const p: 指针常量,指向一块区域,这块区域可读可写,但是指针的值初始后就不能改,类似于一般常量。 char const *p; const char *p表示同一个意思: 常量指针,指向一块区域,这块区域不可写,只能读。

2 Static全局变量与普通的全局变量有什么区别?Static局部变量与普通的局部变量有什么区别?Static函数与普通的函数有什么区别?

   在模块内,一个被声明为静态的全局变量可以被模块内所有函数访问,但不能被模块外其它函数访问,它是一个本地的全局变量。在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用,也就是说,这个函数被限制在声明它的模块的本地范围内使用。

3 请描述堆和栈的区别

   栈区(stack)由编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构中的栈。 堆区(heap)一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式类似于链表

4 列出你所知道的嵌入式操作系统

   一般个人的话一般是嵌入式Linux,uclinux,ucos-ii 这些都可以,而且可以接触到源码,这个是很好的。除此之外还有微软的wince,开发工具多,开发周期短,但是看不到源码。还有就是VxWorks ,这个是嵌入式最强的可想而知一般在大企业,军工上才会用。

5 你所知道的排序算法

   排序算法稳定性的简单形式化定义为:如果Ai = Aj,排序前Ai在Aj之前,排序后Ai还在Aj之前,则称这种排序算法是稳定的通俗地讲就是保证排序前后两个相等的数的相对顺序不变。

   冒泡排序,时间复杂度o(n^2),稳定;

   选择排序,时间复杂度o(n^2),不稳定;

   插入排序,时间复杂度o(n^2),稳定;

   希尔排序,时间复杂度不定,不稳定;

   堆排序,时间复杂度o(nlogn),不稳定;

   快速排序,时间复杂度o(nlogn),不稳定;

   归并排序,时间复杂度o(nlogn),稳定;

   基数排序,时间复杂度o(n^2),稳定

 

posted on 2017-09-22 21:24  萝卜丶爱  阅读(463)  评论(0编辑  收藏  举报

导航