企业面试题
zzz1_1zzz
这个作者很懒,什么都没留下…
展开
-
关键字 static 的作用是什么?
关键字 static 的作用是什么?1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。4)修饰成员变量原创 2017-01-01 20:52:52 · 3014 阅读 · 0 评论 -
多进程与多线程的区别
多进程与多线程的区别?解:(1)从数据共享、同步方面来讲,多进程数据共享复杂,需要用IPC,数据是分开的,同步简单;多线程数据共享简单,但也是因为这个原因导致同步复杂。(2)从内存、CPU方面来讲,多进程占用内存多,切换复杂,CPU利用率低;多线程占用内存少,切换简单,CPU利用率高。(3)从创建销毁、切换方面来讲,多进程创建销毁、切换复杂,速度慢;多线程创建销毁、切换简单,速度很快。原创 2017-01-20 22:10:11 · 387 阅读 · 0 评论 -
多进程与多线程的区别
多进程与多线程的区别?解:(1)从数据共享、同步方面来讲,多进程数据共享复杂,需要用IPC,数据是分开的,同步简单;多线程数据共享简单,但也是因为这个原因导致同步复杂。(2)从内存、CPU方面来讲,多进程占用内存多,切换复杂,CPU利用率低;多线程占用内存少,切换简单,CPU利用率高。(3)从创建销毁、切换方面来讲,多进程创建销毁、切换复杂,速度慢;多线程创建销毁、切换简单,速度很快。原创 2017-01-20 22:15:34 · 362 阅读 · 0 评论 -
多进程编程的优缺点
多进程编程的优缺点?1) 每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;2) 通过增加CPU,就可以容易扩充性能;3) 可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;4) 每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大。原创 2017-01-22 21:49:46 · 507 阅读 · 0 评论 -
TCP与UDP的选择
什么时候选择TCP?什么时候选择UDP?1) 如果数据要求完整,不允许任何错误发生 应用层协议开放模式 [例如http ftp],建议选择tcp,几乎是唯一选择. 应用曾协议封闭模式 [例如游戏]2) 大量连接a) 长连接 少量数据传输:优先考虑可靠udp传输 , tcp建议在20000连接以下使用. 大流量数据传输:只有在100原创 2017-01-26 22:36:20 · 1199 阅读 · 0 评论 -
端口号、IP、网关的作用
请说出端口号、IP、网关的作用。1.ip(网络之间互连的协议)也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性,根据用户性质的不同,2.端口可以认为是设备与外界通讯交流的出口。端口可分为原创 2017-01-28 20:47:20 · 1178 阅读 · 0 评论 -
const与#define的区别
const与#define有什么区别?(1) 编译器处理方式不同define宏是在预处理阶段展开。const常量是编译运行阶段使用。(2) 类型和安全检查不同define宏没有类型,不做任何类型检查,仅仅是展开。const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。cons原创 2017-01-30 20:36:51 · 280 阅读 · 0 评论 -
sizeof和strlen的区别
sizeof和strlen的区别?(1)sizeof是运算符,strlen是函数。(2)Sizeof可以用类型做参数,strlen只能用char *做参数,且必须是以‘\0’结尾(3)数组做sizeof的参数不退化,传递给strlen就退化为指针了。对于指针,sizeof返回指针占的空间,一般为四个字节,对于数组,sizeof返回数组元素空间,包括‘\0’,strlen不区分,读到原创 2017-02-01 21:26:44 · 250 阅读 · 0 评论 -
进程的三个基本状态,以及三个状态之间切换的条件
进程的三个基本状态,以及三个状态之间切换的条件?就绪状态、执行状态,阻塞状态。(1) 就绪->执行 就绪状态是指进程获得了调度程序为之分配的除了CPU时间之外的其他必要资源,只要CPU时间一到位就可执行了。 处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。(2) 执行->就绪 处于执行状态的进程在其执行过程中,因分配给它的一个时原创 2017-02-03 23:29:30 · 2864 阅读 · 0 评论 -
函数模板与类模板
下面有关函数模板和类模板的说法正确的有?A.函数模板的实例化是由编译程序在处理函数调用时自动完成的B.类模板的实例化必须由程序员在程序中显式地指定C.函数模板针对仅参数类型不同的函数D.类模板针对仅数据成员和成员函数类型不同的类答案:ABCD解析: 模板(Template)是一种强大的C++软件复用特性,通常有两种形式:原创 2017-07-06 20:06:01 · 369 阅读 · 0 评论 -
NorFlash和NandFlash区别
Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.(1)闪存芯片读写的基本单位不同 应用程序对NorFlash芯片操作以“字”为基本单位.为了方便对大容量NorFlash转载 2017-07-07 09:24:54 · 429 阅读 · 0 评论 -
C语言的未定义行为
下列 C 代码中,不属于未定义行为的有___正确答案: Cint i=0;i=(i++);char *p=”hello”;p[1]=’E’;char *p=”hello”;char ch=*p++;int i=0;printf(“%d%d\n”,i++,i--);都是未定义行为都不是未定义行为答案解析:原创 2017-07-07 12:33:59 · 526 阅读 · 0 评论 -
C++面试题总结1
http://blog.csdn.net/jingxuewang110/article/details/6736142 内容摘要:1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它原创 2017-07-20 13:13:02 · 334 阅读 · 0 评论 -
面向对象的相关描述
以下关于面向对象的描述错误的是:正确答案: C 面向对象的基本特性是封装,继承和多态构造函数不可以是虚函数,析构函数可以是虚函数子类重新定义父类虚函数的方法叫做重载多态是为了接口重用,封装和继承是为了代码重用解析:对于C++中经常出现的函数名称相同但是参数列表或者返回值不同的函数,主要存在三种情况:1.原创 2017-07-08 20:20:15 · 360 阅读 · 0 评论 -
一个关于fork()的面试题
前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?1234567891011121314转载 2017-07-07 14:33:23 · 2207 阅读 · 0 评论 -
关键字的作用及区别汇总
static关键字static关键字具有隐藏式、记忆、延长生命周期的作用。在C语言中,static既可以修饰变量,也可以修饰函数。1) 修饰的变量保存在静态数据区,静态变量默认初始化为0,只初始化一次。2) 修饰局部变量,延长变量的生命周期,直到程序运行结束,下一次运行依据是上一次的运行结果,体现其记忆功能。3) 修饰全局变量,只在本文原创 2017-08-08 16:58:51 · 3938 阅读 · 0 评论 -
LINUX内核面试题摘选
LINUX内核面试题摘选1) Linux中主要有哪几种内核锁?答:Linux的同步机制从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随Linux从单处理器到对称多处理器的过渡;伴随着从非抢占内核到抢占内核的过度。Linux的锁机制越来越有效,也越来越复杂。linux的内核锁主要是自旋锁和信号量。转载 2017-08-16 10:47:00 · 1209 阅读 · 0 评论 -
C/S和B/S的区别
C/S和B/S的区别1.硬件环境不同:C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行2.对安全要求不同 : C/S 一般面向相对固定的用户群,对信息安全的控原创 2017-02-10 18:06:23 · 804 阅读 · 2 评论 -
嵌入式系统中访问特定的内存位置
嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x 67a9的整型变量的值为0xaa55。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。int *ptr;ptr = (int *)0x67a9;*ptr = 0xaa55原创 2017-01-18 21:50:25 · 864 阅读 · 0 评论 -
进程死锁
什么是进程死锁?造成进程死锁的原因?如果多个进程同时占有对方需要的资源而同时请求对方的资源,并且在得到请求前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步。产生死锁的原因可以归结为以下两点:(1)资源竞争;(2)进程间推进顺序非法原创 2017-01-17 21:01:36 · 239 阅读 · 0 评论 -
关键字const的作用
关键字const的作用是什么?(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;(4)原创 2017-01-02 20:26:03 · 645 阅读 · 0 评论 -
关于变量a的定义
用变量a给出下面的定义1) int a; 2) int *a; 3) int **a; 4) int a[10]; 5) int *a[10]; 6) int (*a)[10]; 7) int (*a)(int); 8) int (*a[10])(int);原创 2017-01-03 22:56:07 · 799 阅读 · 0 评论 -
内存的分配方式
内存的分配方式有几种?解:(1)、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3)、从堆上分配,亦称动态内存分配。原创 2017-01-04 20:25:20 · 228 阅读 · 0 评论 -
进程和线程的区别
进程和线程的区别1)进程是程序的一次执行,是资源分配的最小单位,线程可以理解为进程中执行的一段程序片段,是CPU调度的最小单位;2)进程间是独立的,一个程序崩溃后,在保护模式下不会对其他进程产生影响。同一进程所产生的线程共享同一内存空间,一个线程挂掉会导致整个进程挂掉;3)同一进程中两段代码不能同时执行,除非引入线程;、线程所占用的资源要少于进程所占用资源;4)进程间可以通过IPC原创 2017-01-05 21:32:06 · 227 阅读 · 0 评论 -
进程间通信方式有哪些?各自有哪些优缺点?
进程间通信方式有哪些?各自有哪些优缺点?1)管道管道分为有名管道和无名管道无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。有名原创 2017-01-06 20:15:36 · 4528 阅读 · 0 评论 -
系统调用与库函数的区别
系统调用与库函数的区别?解析:库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。用户应用程序访问并使用内核所提供的各种服务的途径即是系统调用。在内核和用户应用程序相交界的地方,内核提供了一组系统调用接口,通过这组接口,应用程序可以访问系统硬件和各种操作系统资源。1.系统调用是为了方原创 2017-01-07 18:39:32 · 339 阅读 · 0 评论 -
sizeof与strlen的区别
sizeof与strlen的区别?(1)sizeof是运算符,strlen是函数(2)Sizeof可以用类型做参数,strlen只能用char *做参数,且必须是以‘\0’结尾(3)数组做sizeof的参数不退化,传递给strlen就退化为指针了(4)对于指针,sizeof返回指针占的空间,一般为四个字节,对于数组,sizeof返回数组元素空间,包括‘\0’,strlen不区分,读原创 2017-01-08 19:46:33 · 215 阅读 · 0 评论 -
Heap和Stack的区别
Heap和Stack的区别?解:(1).heap是堆,stack是栈。(2).stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。(3).stack空间有限,heap的空间是很大的自由区。(4). Object a =null; 只在栈内存中分配空间Object b =new Object(); 则在堆内存中分配空间。原创 2017-01-13 21:12:23 · 2111 阅读 · 0 评论 -
关键字register的用法及注意事项
关键字register的用法及注意事项?寄存器变量,频繁被使用的变量用,请求编译器尽可能地将变量存在CPU内部寄存器中,省去CPU从内存中抓取数据的时间,从而提高程序的运行效率(1)不能&,&获得的是内存的地址(2)修饰的变量类型一定是CPU接受的类型(3)只能修饰局部变量,不能修饰全局变量和函数原创 2017-01-09 22:21:24 · 1555 阅读 · 0 评论 -
不带头结点的单链表的常规操作
编程写出一个不带头结点的单链表的常规操作,创建、中间插入、删除、逆序、遍历。struct stu{intnum;structstu *next;};typedefstruct node Node;typedefNode * Link;//创建voidinit_node(Link *head){ *head = NULL;}//中间插入voidinser原创 2017-02-05 22:31:01 · 621 阅读 · 0 评论 -
关键字位置问题
char * const p;char const * pconst char *p上述三个有什么区别?解:char* const p; p为指向字符变量的指针,地址不变,地址内容可变const char *p; p为指向字符变量的指针,地址可变,地址内容不变char const *p 与constchar *p等价。原创 2017-01-14 20:50:08 · 356 阅读 · 0 评论 -
用联合体判断大小端
用联合体判断大小端,大端返回0,小端返回1 union w { int a; char b; } u;int judge(){u test;test.a = 1;if(test.b == 1){ return 1;}else{return 0;}}原创 2017-01-10 22:50:53 · 487 阅读 · 0 评论 -
TCP/IP三次握手的详细过程
TCP/IP三次握手的详细过程?解:第一次握手:建立连接时,客户端发送连接请求包到服务器,并等待服务器确认;第二次握手:服务器收到连接请求包,必须确认客户的连接请求,同时自己也发送一个连接请求包,;第三次握手:客户端收到服务器的连接请求包,向服务器发送确认包,此包发送完毕,客户端和服务器建立连接,完成三次握手。原创 2017-01-15 21:48:58 · 756 阅读 · 0 评论 -
TCP是如何保证数据可靠传输
TCP是如何保证数据可靠传输?TCP为应用程序提供可靠的通信连接,因为他采用了三次握手协议,三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互。第一次握手:客户端发送SYN包到服务器,并进行SYN_SEND状态,等待服务器确认;第二次握手:服务器收到SYN包并确认,同时自己发送一个SYN+ACK包,此时服务器进入SYN_RECV状态第三次握手:客户端收到服原创 2017-01-11 23:15:07 · 829 阅读 · 0 评论 -
设置a的bit 3,清除a 的bit 3
给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。 #define BIT3 (0x1 static int a;void set_bit3(void){ a |= BIT3;}void clear_bit3(void){ a &= ~BIT3;}原创 2017-01-16 23:28:05 · 1359 阅读 · 0 评论 -
多线程与多进程通信方式的区别
多线程与多进程通信方式的区别?1) 在数据共享同步方面:多进程数据共享复杂,需要IPC;数据是分开的,同步简单;多线程共享数据简单,但是同步复杂。2) 内存方面:多进程占有内存多,切换复杂,CPU利用率低;多线程占用内存少,切换简单,CPU利用率高3) 创建销毁、切换方面:多进程创建销毁,切换复杂,速度慢;多线程创建销毁、切换简单,速度很快。4) 编程调试方原创 2017-02-07 22:56:31 · 1421 阅读 · 0 评论 -
栈和队列的区别
栈和队列的区别?解:(1).队列先进先出,栈先进后出。(2). 对插入和删除操作的"限定"。栈是限定只能在表的一端进行插入和删除操作的线性表。 队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。 (3).遍历数据速度不同。栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的原创 2017-01-12 21:50:05 · 4542 阅读 · 0 评论 -
内存分配、野指针、指针、数组相关
内存分配方式有哪些?什么是内存泄漏?什么是野指针?如何避免野指针?什么时候将引用作为返回值?引用与指针的区别?数组与指针的区别?函数指针与指针函数的区别?数组指针与指针数组的区别?指针常量与常量指针的区别?函数模板与模板函数的区别?类模板与模板类的区别?重载overload、覆盖overwrite、隐藏override的区别原创 2017-08-09 15:31:38 · 726 阅读 · 0 评论