时间:2023-01-07 01:11 / 来源:未知
C语言面试题大汇总(面试宝典)吐血提供搜集编程中策画并发任职器,运用众经过 与 众线程 ,请问有什么区别? 1,经过:子经过是父经过的复成品。子经过得到父经过数据空间、堆和栈的复成品。 2,线程:相对与经过而言,线程是一个尤其迫近与奉行体的观念,它能够与同经过的其他线程共享数据, 但具有本身的栈空间,具有独立的奉行序列。 两者都能够降低标准的并发度,降低标准运转成果和响当令间。 线程和经过正在运用上各有优漏洞:线程奉行开销小,但晦气于资源处理和回护;而经过正相反。同时,线
if(str!=NULL) { strcpy(str,world); } printf(\n str is %s,str); getchar(); } 问输出结果是什么?欲望群众能说说原故,先感谢了 输出 str is world。 free 只是开释的 str 指向的内存空间,它自己的值依旧存正在的. 是以 free 之后,有一个好的风气便是将 str=NULL. 此时 str 指向空间的内存已被接受,若是输出语句之前还存正在分拨空间的操作的话,这段存储空间是不妨被重 新分拨给其他变量的, 假使这段标准确实是存正在大大的题目(上面诸君仍然说得很清晰了) ,然而一般会打印出 world 来。 这是由于,经过中的内存处理寻常不是由操作体系实现的,而是由库函数本身实现的。 当你 malloc 一块内存的时间,处理库向操作体系申请一块空间(不妨会比你申请的大极少) ,然后正在这块 空间中纪录极少处理新闻(寻常是正在你申请的内存前面一点) ,并将可用内存的地点返回。然而开释内存的 时间,处理库一般都不会将内存还给操作体系,因而你是能够持续拜访这块地点的,只然而。 。 。 。 。 。 。 。楼上 都说过了,最好别这么干。 char a[10],strlen(a)为什么等于 15?运转的结果 #include stdio.h #include string.h void main() { char aa[10]; printf(%d,strlen(aa)); } sizeof()和初不初始化,没相合系; strlen()和初始化相合。
口试题: 线程与经过的区别和接洽? 线程是否具有相似的仓库? dll 是否有独立的仓库? 经过是死的,只是极少资源的聚合,真正的标准奉行都是线程来实现的,标准启动的时间操作体系就助你 创筑了一个主线程。 每个线程有本身的仓库。 DLL 中有没有独立的仓库,这个题目欠好答复,或者说这个题目自己是否有题目。由于 DLL 中的代码是被 某些线程所奉行,唯有线程具有仓库,若是 DLL 中的代码是 EXE 中的线程所移用,那么这个时间是不是 说这个 DLL 没有本身独立的仓库?若是 DLL 中的代码是由 DLL 本身创筑的线程所奉行, 那么是不是说 DLL 有独立的仓库? 以上讲的是仓库,若是看待堆来说,每个 DLL 有本身的堆,是以若是是从 DLL 中动态分拨的内存,最好 是从 DLL 中删除,若是你从 DLL 平分配内存,然后正在 EXE 中,或者其余一个 DLL 中删除,很有不妨导致 标准倒闭
位域 : 有些新闻正在存储时,并不须要占用一个无缺的字节, 而只需占几个或一个二进制位。比方正在存放一个开合 量时,唯有 0 和 1 两种状况, 用一位二进位即可。为了减省存储空间,并使措置轻松,C措辞又供应了 一种数据布局,称为“位域”或“位段” 。所谓“位域”是把一个字节中的二进位划分为几个差异的区域, 并注释每个区域的位数。每个域有一个域名,许诺正在标准中按域名实行操作。 如许就能够把几个差异的对 象用一个字节的二进制位域来体现。一、位域的界说和位域变量的注释位域界说与布局界说相仿,其事势 为: struct 位域布局名 { 位域列外 }; 此中位域列外的事势为: 类型注释符 位域名:位域长度 比方: struct bs { int a:8; int b:2;
12.ISO 的七层模子是什么?tcp/udp 是属于哪一层?tcp/udp 有何优漏洞? 操纵层 体现层 会话层 运输层 搜集层 物理链道层 物理层 tcp /udp 属于运输层 TCP 任职供应了数据传布输、牢靠性、有用流左右、全双工操作和众道复用手艺等。 与 TCP 差异, UDP 并不供应对 IP 和议的牢靠机制、流左右以及失误复兴效力等。因为 UDP 斗劲简 单, UDP 头包蕴很少的字节,比 TCP 负载打发少。 tcp: 供应坚固的传输任职,有流量左右,漏洞是包头大,冗余性欠好 udp: 不供应坚固的任职,包头小,开销小
正在特定韶华内实现特定的职责,及时性与牢靠性 全体变量储蓄正在静态数据库,片面变量正在仓库 摆布子树都是均衡二叉树 且摆布子树的深度差值的绝对值不大于 1 没有接受垃圾资源 constructor O(n^2) if(x0.000001&&x-0.000001) tcp/ip 操纵层/传输层/搜集层/数据链道层/物理层 ARP (Address Resolution Protocol)(地点解析協議) 18.IP 地点的编码分为哪俩片面? IP 地点由两片面构成,搜集号和主机号。然而是要和“子网掩码”按位与上之后才力辨别哪些是搜集位哪 些是主机位。
int c:6; }; 位域变量的注释与布局变量注释的式样相似。 可采用先界说后注释,同时界说注释或者直接注释这三种方 式。比方: struct bs { int a:8; int b:2; int c:6; }data; 注释 data 为 bs 变量,共占两个字节。此中位域 a 占 8 位,位域 b 占 2 位,位域 c 占 6 位。看待位域的定 义尚有以下几点注释: 1. 一个位域务必存储正在统一个字节中,不行跨两个字节。如一个字节所剩空间不敷存放另一位域时,应从 下一单位起存放该位域。也能够用意使某位域从下一单位起首。比方: struct bs { unsigned a:4 unsigned :0 /*空域*/ unsigned b:4 /*从下一单位起首存放*/ unsigned c:4 } 正在这个位域界说中,a 占第一字节的 4 位,后 4 位填 0 体现不运用,b 从第二字节起首,占用 4 位,c 占用 4 位。 2. 因为位域不许诺跨两个字节, 因而位域的长度不行大于一个字节的长度, 也便是说不行领先 8 位二进位。 3. 位域能够无位域名,这时它只用来作填充或调治地点。无名的位域是不行运用的。比方: struct k { int a:1 int :2 /*该 2 位不行运用*/ int b:3 int c:2 }; 从以上阐述能够看出,位域正在性子上便是一种布局类型, 然而其成员是按二进位分拨的。 二、位域的运用位域的运用和布局成员的运用相似,其寻常事势为: 位域变量名位域名 位域允 许用百般格局输出。 main(){ struct bs { unsigned a:1; unsigned b:3;
1、写一个“圭臬”宏,这个宏输入两个参数并返回较小的一个。 .#define Min(X, Y) ((X)(Y)?(Y):(X))//收场没有; 2、嵌入式体系中往往要用到无尽轮回,你若何用 C 编写死轮回。 while(1){}或者 for(;;) 3、枢纽字 static 的效率是什么? 界说静态变量 4、枢纽字 const 有什么含意? 体现常量不行够批改的变量。 5、枢纽字 volatile 有什么含意?并举出三个差异的例子? 提示编译器对象的值不妨正在编译器未监测到的处境下变革。
2.用户输入 M,N 值,从 1 至 N 起首序次轮回数数,每数到 M 输出该数值,直至统共输出。写出 C 标准。 轮回链外,用取余操作做 3.不行做 switch()的参数类型是: switch 的参数不行为实型。 華為
1、片面变量能否和全体变量重名? 答:能,片面会樊篱全体。要用全体变量,须要运用:: 片面变量能够与全体变量同名,正在函数内援用这个变量时,会用到同名的片面变量,而不会用到全体变量。 看待有些编译器而言,正在统一个函数内能够界说众个同名的片面变量,好比正在两个轮回体内都界说一个同 名的片面变量,而谁人片面变量的效率域就正在谁人轮回体内 2、怎么援用一个仍然界说过的全体变量? 答:extern 能够用援用头文献的式样,也能够用 extern 枢纽字,若是用援用头文献式样来援用某个正在头文献中声明的 全体变理,假定你将谁人变写错了,那么正在编译时候会报错,若是你用 extern 式样援用时,假定你犯了同 样的失误,那么正在编译时候不会报错,而正在相接时候报错 3、全体变量可不行够界说正在可被众个.C 文献包蕴的头文献中?为什么? 答:能够,正在差异的 C 文献中以 static 事势来声明同名全体变量。 能够正在差异的 C 文献中声明同名的全体变量,条件是此中只可有一个 C 文献中对此变量赋初值,此时相接 不会犯错 4、语句 for( ;1 ;)有什么题目?它是什么意义? 答:和 while(1)相似。 5、do……while 和 while……do 有什么区别? 答:前一个轮回一遍再判决,后一个判决今后再轮回 6、请写出下列代码的输出实质 #includestdio.h main() { int a,b,c,d; a=10; b=a; c=a; d=10*a; printf(b,c,d:%d,%d,%d,b,c,d); return 0; } 答:10,12,120 1、static 全体变量与平凡的全体变量有什么区别?static 片面变量安全凡片面变量有什么区别?static 函数 与平凡函数有什么区别? 全体变量(外部变量)的注释之前再冠以 static 就组成了静态的全体变量。全体变量自己便是静态存储式样, 静态全体变量当然也是静态存储式样。 这两者正在存储式样上并无差异。这两者的区别虽正在于非静态全体变 量的效率域是一切源标准, 当一个源标准由众个源文献构成时,非静态的全体变量正在各个源文献中都是有 效的。 而静态全体变量则局部了其效率域, 即只正在界说该变量的源文献内有用, 正在统一源标准的其它源 文献中不行运用它。因为静态全体变量的效率域限制于一个源文献内,只可为该源文献内的函数公用, 因 此能够避免正在其它源文献中惹起失误。 从以上阐述能够看出, 把片面变量变革为静态变量后是变革了它的存储式样即变革了它的保存期。把全体 变量变革为静态变量后是变革了它的效率域, 局部了它的运用周围。 static 函数与平凡函数效率域差异。 仅正在本文献。 只正在如今源文献中运用的函数该当注释为内部函数(static), 内部函数该当正在如今源文献中注释和界说。看待可正在如今源文献以外运用的函数,该当正在一个头文献中说
发外之前先说明两点: 1 悉数材料来自搜集(要紧是 CSDN),自己只是征采和转发。 2 悉数题目解答(加倍是代码)只是参考,不包管精确。 4. static 有什么用处?(请起码注释两种) 1.局部变量的效率域 2.设备变量的存储域 7. 援用与指针有什么区别? 1) 援用务必被初始化,指针不必。 2) 援用初始化今后不行被变革,指针能够变革所指的对象。 2) 不存正在指向空值的援用,然而存正在指向空值的指针。 8. 9. 10. 11. 12. 13. 14. 16. 17. 描写及时体系的基础性子 全体变量和片面变量正在内存中是否有区别?若是有,是什么区别? 什么是均衡二叉树? 仓库溢出寻常是由什么原故导致的? 什么函数不行声明为虚函数? 冒泡排序算法的韶华庞杂度是什么? 写出 float x 与“零值”斗劲的 if 语句。 Internet 采用哪种搜集和议?该和议的要紧方针布局? Internet 物理地点和 IP 地点转换采用什么和议?
(3)具有资源:经过是具有资源的一个独立单元,线程不具有体系资源,但能够拜访从属于经过的资源. (4)体系开销:正在创筑或除掉经过时,因为体系都要为之分拨和接受资源,导致体系的开销彰彰大于创筑或 除掉线.测试门径 人工测试:小我复查、抽查和会审 呆板测试:黑盒测试和白盒测试 2.Heap 与 stack 的区别。 Heap 是堆,stack 是栈。 Stack 的空间由操作体系自愿分拨/开释,Heap 上的空间手动分拨/开释。 Stack 空间有限,Heap 是很大的自正在存储区 C 中的 malloc 函数分拨的内存空间即正在堆上,C中对应的是 new 操作符。 标准正在编译期对变量和函数分拨内存都正在栈进取行,且标准运转历程中函数移用时参数的转达也正在栈进取 行 3.Windows 下的内存是怎么处理的? 4.先容和.Net 的安好性。 5.客户端怎么拜访.Net 组件告终 Web Service? 6.C/C编译器中虚外是怎么实现的? 7.道道 COM 的线程模子。然后商讨经过内/外组件的区别。 8.道道 IA32 下的分页机制 小页(4K)两级分页形式,大页(4M)一级 9.给两个变量,怎么寻找一个带环单链外中是什么地方显现环的? 一个递增一,一个递增二,他们指向统一个接点时便是环显现的地方 10.正在 IA32 中一共有众少种想法从用户态跳到内核态? 通过移用门,从 ring3 到 ring0,终止从 ring3 到 ring0,进入 vm86 等等 11.若是只思让标准有一个实例运转,不行运转两个。像 winamp 一律,只可开一个窗口,怎么告终? 用内存照射或全体原子(互斥变量) 、查找窗口句柄.. FindWindow,互斥,写标记到文献或注册外,共享内存。. 12.怎么截取键盘的呼应,让悉数的‘a’酿成‘b’ ? 键盘钩子 SetWindowsHookEx 13.Apartment 正在 COM 中有什么用?为什么要引入? 14.存储历程是什么?有什么用?有什么益处? 我的认识便是一堆 sql 的聚合,能够扶植相当庞杂的查问,编译运转,是以运转一次后,今后再运转速率 比零丁奉行 SQL 疾良众 15.Template 有什么特色?什么时间用? 16.道道 Windows DNA 布局的特色和益处。
上一篇:电脑排查和解决常见的故障问题
下一篇:第三方检测机构