1。中断与异常区别:

异常:在产生时必须考虑与处理器的时钟同步,实际上异常也称为同步中断。在处理器执行到由于编程失误而导致的错误指令时,或者在执行期间出现特殊情况(如缺页),必须靠内核处理的时候,处理器就会产生一个异常。

所谓中断就是外部硬件产生的一个电信号,从CPU的中断引脚进入,打断当前CPU的运行

所谓异常就是软件运行中发生了一些必须作出处理的事件,CPU自动产生一个陷入来打断当前运行,转入异常处理流程。

2。进程与线程的区别:

a:调度:线程作为调度与分配的基本单位,进程作为拥有资源的基本单位

b:并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

c:拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源

d:系统开销:在创建或撤销进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销

3。volatile关键字有什么含义

volatile说明这个变量可能会被意想不到的改变,这样在使用之前都要去内存里重新读取它的值,并告诉编译器不要随意对变量做优化

用到场合:并行设备的硬件寄存器(如状态寄存器),一个中断服务子程序会访问到的非自动变量,多线程应用中被几个任务共享的变量

4。static作用

a:在函数体中,一个被声明为静态的变量在这一函数被调用过程中维持其值不变

b:在模块内(但在函数体外),一个被声明为静态变量的变量,可以被这个模块内的所有函数使用,但不能被模块外的函数使用,它是一个本地的全局变量,

c:在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用,那就是这个函数被限制在声明它模块的本地范围内使用

后注问题:static全局变量与普通的全局变量有何不同?static局部变量和普通局部变量有何区别?static函数与普通函数有什么区别?

答:static全局变量只初始化一次,防止在其它文件单元中被引用;static局部变量只被初始化一次,下一次依据上一次结果值;static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

5。关键字const是什么含义?

答案一:

a:它可以定义const常量

b:const可以修饰函数的参数,返回值,甚至是函数的定义体,被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

答案二:

const意味着只读

如:int const *p  指向常整型的指针;

int *const p 指向整型的常指针

int *const *p 指向常整型的常指针  或者等同于const int * const p

a:关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多于的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的)

b:通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码

c:合理地使用关键字const可以使编译器很自然的保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

6:对变量或寄存器进行位操作,给定一个整型变量a,写两段代码,第一个设置a的bit3,第二个清除a的bit3。在以上两个操作中,要保持其他位不变。

代码如下:

#define BIT3 (0x1<<3)

static int a;

void set_bit3(void)

{

a|=BIT3;

}

void clear_bit3(void)

{

a&=~BIT3;

}

7:用C语言实现大小端的测试

void checkcpu()

{

union{

int a;

char b;

}c;

c.a=1;

if(c.b==1)

printf("xiaoduan");

else

printf("daduan");

}

8:引用与指针有什么区别?

a:引用必须初始化,指针不必

b:引用初始化不能改变,指针可以被改变

c:不存在指向空值的引用,但存在指向空值的指针

注:用const限定引用的目的是:用这种形式的引用不能通过引用对目标变量的值进行修改

形式为const 类型标识符 &引用名=目标变量名

eg:Example(const Example &x)

引用的主要目的:当参数传递的数据量较大时,用引用比用一般变量传递参数的效率和空间占有率较好

9:写出float,int ,bool类型与零的比较,假设变量为x

float:if(x>0.000001&&x<-0.000001)

int :if(x==0)

bool: if(x==false)

10:OSI七层网络协议,TCP/IP协议

OSI:物理层-数据链路层-网络层-传输层-会话层-表示层-应用层

TCP/IP:网络接口层-互连网络层-传输层-应用层

11:对于一个频繁使用的短小函数,在C语言与C++中分别用什么实现?

C中用宏定义,C++用inline

注:inline作用:当在程序中调用一个内联函数时,是将该函数的代码直接插入到调用点,然后执行该段代码,所以在调用过程中不存在程序的跳转与返回问题,而对于普通函数的调用,程序是从主调函数点转去执行被调函数,待被调函数执行完毕后,再返回到主调函数的调用点的下一语句继续执行。从调用机理看,内联函数可以加快程序代码的执行速度和效率,减少调用开销。但这是以增加程序代码为代价来求得速度的。

12:堆与栈的区别

Heap是堆,Stack是栈;

Stack的空间由操作系统自动分配/释放,Heap上的空间是手动分配/释放;

C中的malloc函数分配的内存空间在堆上,C++对应的是new操作符;

程序在编译期间对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行;

13:用宏定义写出swap(x,y);用define声明一个常数,用以表明1年中有多少秒;写出宏MIN,这个宏输入两个参数并返回较小的一个

#define swap(x,y)/

x=x+y;/

y=x-y;/

x=x-y;

#define SECOND_PER_YEAR (60*60*24*365)UL

#define MIN(A,B) (A<B)?A:B

嵌入式软件常见笔试面试题总结 .相关推荐

  1. 嵌入式软件常见笔试面试题

    1.int a[10]={1,2,3,4,5,6,7,8,9,0}; int *p=&a[1]; 则p[6]等于8 2.整数数组清零:bzero(),memset(). 3.sizeof(); ...

  2. 数据库常见笔试面试题

    数据库基础(面试常见题) 一.数据库基础 1. 数据抽象:物理抽象.概念抽象.视图级抽象,内模式.模式.外模式 2. SQL语言包括数据定义.数据操纵(Data Manipulation),数据控制( ...

  3. 嵌入式软件工程师笔试面试题

    题目一 上个星期,去深圳一家搞ARM开发的公司面试,HR叫我做了一份卷子,里面都是C编程,心中暗喜,因为这些题基本上都在程序员面试宝典里见过.后来回到学校,在网上搜索,原来这些题都是嵌入式工程师的经典 ...

  4. 计算机网络 常见笔试面试题

    ·      OSI,TCP/IP,五层协议的体系结构,以及各层协议 ①OSI分层 (7层):物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. ②TCP/IP分层(4层):网络接口层. 网 ...

  5. js - (初中级)常见笔试面试题

    1.用 js 实现一个深拷贝 2.用 js 写一个数组去重 3. 用 js 对字符串进行反转 4. 用 js 请求范围内的质数个数 5.用 js 求数组中出现最多的数及其出现次数

  6. 软件测试常见笔试面试题(二)

    本博客内容 一.什么是静态测试?动态测试? 二.什么是回归测试? 三.如果能够执行完美的黑盒测试,还需要进行白盒测试吗(黑盒和白盒的区别?) 四.软件测试分几个阶段?各阶段重点测试什么?各个阶段的含义 ...

  7. 软件测试常见笔试面试题(一)

    一.什么是软件测试 二.软件测试的目的 三.什么是需求文档测试 四.什么是设计文档测试 五.α测试是什么 六.β测试是什么 七.什么是驱动模块 八.什么是桩模块 九.什么是白盒测试,有几种方法 十.软 ...

  8. android常见的面试题,Android常见笔试面试题

    一.JAVA部分: (挂起) 二.Android部分: 1.Android系统的架构 2.Android常用的五大布局 3.Android四大组件是什么 4.Activity的生命周期 5.Activ ...

  9. 计算机网络常见笔试面试题(一)

    本博客内容 一.OSI.TCP/IP.五层协议的体系结构.以及各层协议作用 二.TCP三次握手.四次挥手全过程 三.TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗? 四.TCP的滑动 ...

最新文章

  1. KVM虚拟机迁移到VMWare
  2. 举例说明信息熵、互信息的计算过程
  3. 【Webpack5 配置分包加载 多文件js/css打包 】
  4. k8s核心技术-集群安全机制(RBAC介绍)---K8S_Google工作笔记0039
  5. 当AS3遇见Swift
  6. GEO-Slope产品
  7. Servlet中forward和redirect的区别
  8. 【计组】超标量、超级流水线、超长指令字区别详解
  9. Sub-center ArcFace
  10. 随感10-Transecndence超验骇客
  11. mysql下载速度慢怎么办
  12. MT7658芯片组资料,MT7658处理器参数介绍
  13. 从实习生到算法专家,他只用了2年!
  14. OpenJDK源码赏析之三:Java命令参数的读取处理流程
  15. 全新实用工具证件照制作微信小程序源码下载支持多种证件生成与制作
  16. win10怎么将计算机放桌面壁纸,Win10专业版无法设置电脑桌面壁纸怎么办?
  17. springboot vue mybatis mysql校园疫情数据分析平台源码
  18. 基于Yocto的qmake编译环境默认QMAKE_SPEC不是linux-oe-g++的问题
  19. iOS 判断字符串中含有某个字符串 rangeOfString
  20. 读《九败一胜—美团创始人王兴创业十年》有感

热门文章

  1. 使用WebRTC和WebVR进行VR视频通话
  2. Linux基金会六大项目合并成LF Networking Fund
  3. kafka _命令行操作
  4. 面试必会系列 - 11.1 一文读懂Maven:Maven工程类型、项目结构、工程关系、常见命令等
  5. 【Vue】Docker + Nginx 部署 Vue3.0 项目
  6. 【MySQL】存储过程中,怎么把多个select结果,合并成一个结果集返回?
  7. 【数据结构与算法】最小生成树--Kruskal算法 Prim算法
  8. 牛客网_PAT乙级_1022挖掘机技术哪家强(20)【class vector sort排序、删除重复元素】
  9. k8s安装部署步骤_30分钟无坑部署K8S单Master集群
  10. django restframework 下载文件_【技术选型】Django还是Flask?这是个问题!