![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面经
bingqingsuimeng
这个作者很懒,什么都没留下…
展开
-
C语言中关键字volatile的含义
volatile 的意思是“易失的,易改变的”。这个限定词的含义是向编译器指明变量的内容可能会由于其他程序的修改而变化。通常在程序中申明了一个变量时,编译器会尽量把它存放在通用寄存器中,例如ebx。当CPU把其值放到ebx中后就不会再关心对应内存中的值。若此时其他程序(例如内核程序或一个中断)修改了内存中它的值,ebx中的值并不会随之更新。为了解决这种情况就创建了volatile限定词,让代码在引转载 2017-02-24 10:35:24 · 5268 阅读 · 0 评论 -
嵌入式linux面试题解析(三)——Linux应用编程部分一
1、TCP与UDP的区别 TCP:是面向连接的流传输控制协议,具有高可靠性,确保传输数据的正确性,有验证重发机制,不会出现丢失或乱序。 UDP:是无连接的数据报服务,不对数据报进行检查与修改,无须等待对方的应答,会出现分组丢失、重复、乱序,但具有较好的实时性,UDP段结构比TCP的段结构简单,因此网络开销也小。 2、流量控制和拥塞控制 拥塞控制 网络转载 2017-10-23 09:59:48 · 2547 阅读 · 0 评论 -
定位IO瓶颈的一些方法(iotop工具具体查看IO负载主要是落在哪个进程上)
定位IO瓶颈的一些方法博客分类:Linuxiolinux IO瓶颈往往是我们可能会忽略的地方(我们常会看top、free、netstat等等,但经常会忽略IO的负载情况),今天给大家详细分享一下如何确认一台服务器的IO负载是否到达了瓶颈,以及可能优化、定位的点。先来看一台典型的IO密集型服务器的cpu统计图:可以看到,CPU总使用率不高,平均1.3%,max转载 2017-03-07 15:55:37 · 890 阅读 · 0 评论 -
time_wait的成因和解决方案
建立TCP需要3次握手,而终止TCP需要4次交互; 主动关闭socket的一方最终为time_wait,被动关闭的则为close_wait;为什么time_wait需要2*MSL等待时间?MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。假设最终的 ACK 丢失 ,转载 2017-03-07 14:56:13 · 413 阅读 · 0 评论 -
关于指针的15个经典面试题
1. 常指针与常量的指针 char * const p; char const * p const char *p 上述三个有什么区别? char * const p; //p为只读指针。 char const * p;//p值只读的指针。 const char *p; //和char const *p-----------------转载 2017-02-26 07:58:28 · 684 阅读 · 0 评论 -
C++_重载、重写和重定义的区别
相信看到这个标题头就晕了,其实将他们彼此放到一起来看,就会比较清晰辨认了。重载:函数名相同,函数的参数个数、参数类型或参数顺序三者中必须至少有一种不同。函数返回值的类型可以相同,也可以不相同。发生在一个类内部。重定义:也叫做隐藏,子类重新定义父类中有相同名称的非虚函数 ( 参数列表可以不同 ) ,指派生类的函数屏蔽了与其同名的基类函数。发生在继承中。重写:也叫做覆盖,一般发生在转载 2017-02-24 15:12:35 · 428 阅读 · 0 评论 -
static在C和C++中的用法和区别
static主要有三个作用: (1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍:一、局部静态变量 在C/C++中, 局部变量按照存储形式可分为三种auto, static, register。其中register不常用到,下面主要说说auto和static的区别。 1. 存储转载 2017-02-24 15:01:46 · 302 阅读 · 0 评论 -
const类型的指针是否可变问题
const int *p; // p 可变,p 指向的对象不可变int const *p; // p 可变,p 指向的对象不可变int *const p; // p 不可变,p 指向的对象可变const int *const p; //指针p 和p 指向的对象都不可变在平时的授课中发现学生很难记住这几种情况。这里给出一个记忆和理解的方法:先忽略类型名(编译器解析的时候也是忽略类转载 2017-02-24 14:38:29 · 552 阅读 · 0 评论 -
局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别
下面有几种网上的理解,我整理一下:一: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放转载 2017-02-24 14:29:00 · 661 阅读 · 1 评论 -
绝对地址赋值
这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:int *ptr;ptr = (int *)0x67a9;*ptr = 0xaa55;一个较晦涩的方法是:*(int * const)(0x67a9) = 0xaa55;即使你的品味更接近第二转载 2017-02-24 11:27:37 · 3597 阅读 · 0 评论 -
自动变量与非自动变量
自动变量 局部变量,如不作专门说明为静态变量,都是动态分配存储空间,存储在动态存储区中。这种变量叫自动变量。这种变量只在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间。对这些变量存储空间的分配和回收是由系统自动完成的,所以也叫自动变量。一般情况下,不作专门说明的局部变量,均是自动变量。自动变量也可用关键字auto作出说明。例如:(考虑到浏览器可能给作者本意要写在同一行的转载 2017-02-24 11:03:42 · 534 阅读 · 0 评论 -
C语言字节对齐问题详解
引言 考虑下面的结构体定义:1 typedef struct{2 char c1;3 short s; 4 char c2; 5 int i;6 }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4。 现在,我们编写一个简单的程转载 2017-02-24 10:51:05 · 627 阅读 · 0 评论 -
嵌入式linux面试题解析(四)——逻辑推理一
1、谁是罪犯问题 一位法官在审理一起盗窃案时,对涉及到的四名嫌疑犯A、B、C、D进行了审问。四人分别供述如下: A:“罪犯在B、C、D三人之中。” B:“我没有作案,是C偷的。” C:“在A和D中间有一个是罪犯。” D:“B说的是事实” 经过充分的调查,证实四人中只有两人说了真话,并且罪犯只有一个。请确定真正的罪犯。解答:转载 2017-10-23 10:01:27 · 1026 阅读 · 0 评论