面试常问题型
面试常见的一些问题以及回答
sunweixiang1002
天道酬勤
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
谈谈对进程的理解?谈谈你对线程的理解?2.进程死锁的原因?如何解决进程死锁?
1.谈谈对进程的理解?答:首先进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位,进程有五方面的特点:第一:动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。第二: 并发性:任何进程都可以同原创 2016-11-02 12:44:39 · 642 阅读 · 0 评论 -
C语言条件编译及编译预处理阶段
一、C语言由源代码生成的各阶段如下:C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件 其中 编译预处理阶段,读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。或者说是扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。预处理过程先于编译器对源代码进行处理。 在C 语言中,并没有任何内在的机制原创 2016-11-13 12:40:17 · 1389 阅读 · 0 评论 -
动态链接和静态连接的优缺点
1 静态链接库的优点 (1) 代码装载速度快,执行速度略比动态链接库快; (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。 2 动态链接库的优点 (1) 更加节省内存并减少页面交换; (2) DLL文件与EXE文件独立,只要输出接口不变(即名转载 2016-11-15 23:20:26 · 5241 阅读 · 0 评论 -
宏定义的优缺点
先来看一下宏的定义:用#define命令将一个指定的标识符(即宏名)来代表一个字符串。它的一般型式为:#define 表示符 字符串#define命令属于“预处理命令”中的一种。它是由C++统一规定的,但非C++语言本身的组成部分,由于编译器无法识别他们,不能对其直接进行编译。预处理过程必须在对程序进行词法与语义分析、代码生成与优化等通常的编译过程之前进行,经过预处理后的程序不再包转载 2016-11-11 21:48:25 · 535 阅读 · 0 评论 -
要求设置一绝对地址为0x67a9的整型变量的值为0xaa55。
这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:int *ptr;ptr = (int *)0x67a9;*ptr = 0xaa55;一个较晦涩的方法是:*(int * const)(0x67a9) = 0xaa55;即使你的品味更接近第二原创 2016-11-11 19:42:20 · 7180 阅读 · 1 评论 -
用变量a给出下面的定义
a) 一个整型数(An integer)b) 一个指向整型数的指针(A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)d) 一个有10个整型数的数组(An array of 10 integers)e) 一个有10个指针的数组,该指针是指原创 2016-11-07 20:56:27 · 1415 阅读 · 0 评论 -
指针数组和数组指针的使用
#includeint main(){char *str[] = {"Welcome","to","Fortemedia","Nanjing"};char **p = str +1;str[0] = (*p++) +2;str[1] = *(p+1);str[2] = p[1] + 3;str[3] = p[0] + (str[2] - str[1]);原创 2016-11-06 22:12:01 · 286 阅读 · 0 评论 -
引用与指针有什么区别?
1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。原创 2016-11-06 21:28:31 · 311 阅读 · 0 评论 -
static有什么用途?(请至少说明两种)
1.限制变量的作用域(DL:使其只在定义的当前文件中起作用,static是只能由与变量在同一个文件中定义的程序 存取的全局变量。也就是说使全局变量成为文件的私有变量,以致其他文件不可以通过将它们定义为extern而存 取这些变量。),2.设置变量的存储域(DL:存储在最开始的静态存储空间里面)。原创 2016-11-06 21:27:13 · 3199 阅读 · 0 评论 -
看代码写输出i++和++i的区别
#includeint main(void){ int i = 8 ; printf("%d\n",++i); 输出9,i=9printf("%d\n",--i); 输出8,i=8printf("%d\n",i++); 输出8,i=9printf("%d\n",i--); 输出9,i=8printf("%d\n",-i++); 输出-8,i=9printf("%d\n",-原创 2016-11-05 20:53:13 · 1026 阅读 · 0 评论 -
简述 C、 C++程序编译的内存分配情况?
1.C、 C++中内存分配方式可以分为三种:(1)从静态存储区域分配:内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static变量等。(2)在栈上分配:在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。原创 2016-11-04 00:18:43 · 561 阅读 · 0 评论 -
C中的 malloc 和C++中的 new 有什么区别?
1.malloc 和 new 有以下不同:(1) new、delete 是操作符,可以重载,只能在 C++中使用。(2) malloc、free是函数,可以覆盖,C、C++中都可以使用。(3)new可以调用对象的构造函数,对应的 delete 调用相应的析构函数。(4)malloc 仅仅分配内存,free 仅仅回收内存,并不执行构造和析构函数(5)new、delete 返回的是某种数据原创 2016-11-04 00:17:26 · 804 阅读 · 0 评论 -
线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?
进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。每个线程有自己的堆栈。DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调 用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创 建的原创 2016-11-04 00:15:43 · 2828 阅读 · 0 评论 -
怎么样对绝对地址0x100000赋值
我们可以用(unsigned int*)0x100000 = 1234; 那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做? *((void (*)( ))0x100000 ) ( ); 首先要将0x100000强制转换成函数指针,即: (void (*)())0x100000 然后再调用它: *((void (*)())0x100000)(); 用typedef可以看得更直原创 2016-11-04 00:13:22 · 5407 阅读 · 0 评论 -
关于strcpy的面试题
找错题 试题1:void test1(){ char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );} 试题2:void test2(){ char string[10], str1[10]; int i; for原创 2016-11-03 23:04:41 · 614 阅读 · 0 评论 -
数组名和指针的区别?
#include #include void main(void){char str[13]="Hello world!";char *pStr="Hello world!";coutcoutcoutcoutreturn;}【答案】打印结果:13 4 12 12注意:一定要记得数组名并不是真正意义上的指针,它的内涵要比指针丰富的多。但是当数组名当做原创 2016-11-02 12:39:17 · 336 阅读 · 0 评论
分享