C语言软件工程师笔试题大全.docx
《C语言软件工程师笔试题大全.docx》由会员分享,可在线阅读,更多相关《C语言软件工程师笔试题大全.docx(39页珍藏版)》请在课桌文档上搜索。
1、网络平安应具有以下五个方面的特征I保密性:信息不泄我给非授权用户、实体或过程,或供其利用的特性.完整性:数据未经授权不能进行改变的特性.即信息在存储或传检过程中保持不被修改、不被破坏和丧失的特性。可用性:可被授权实体访问并按需求使用的特性,即当街要时能否存取所需的信息.例如网络环境下拒绝效劳、破坏网络和有关系统的正常运行等椰屈于对可用性的攻击:可控性:对信息的传播及内容具有捽制能力.可审查性:出现平安闫题时提供依据与手段第一局部:根本感念及其它问答的1、关键字Sta1.ie的作用是什么?这个简学的问题很少有人能答复完全。在C语言中,关道字S1.aIiC有三个明显的作用:1) .在函数体,一个被
2、声明为附态的变埴在这一函数被调用过程中维持其值不变.2) .在模块内(但在函数体外),一个被小明为解态的变盘可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变盘,3),在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的本地范附内使用.本地化数据和代码范围的好处和重要性).2, ijur与指针的区别毡什么?答、D引用必须被初始化,指针不必,2)引用初始化以后不能被改变,指针可以改变所指的对象.3)不存在指向空值的引用.但是存在指向空值的指针.指针通过某个指针变盘指向一个对象后,对它所指向的变最间接悚作.程序中使用指许,程
3、序的可读性差:而引用本身就是目标变最的别名,对引用的操作就是对目标变量的掾作.流操作符和、赋值操作符=的返回值、指贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用.3, .h头文件中的ifndef/dCfineendif的作用?答:防止该头文件被曳及引用.4、Sinc1.ude与Kinc1.ude*,fi1.e.h的区别?答:前者是从S1.andard1.ibrary的路径寻找和引用fi1.e.h,而后者是从当前工作路径搜寻并引用fi1.e.h,5.描述实时系统的根本特性答:在特定时间内完成特定的任务,实时性与可靠性.6、全局变量和局部变录在内存中是否有区别?如果有,是什么区别?答
4、:全局变琏他存在静态数据区,局部变量在堆枝中。7.什么是平衡二叉树?答:左右于树格是平衡二叉树且左右子树的深度差值的绝对值不大于I.8、堆栈溢出一般是由什么原因导致的?答:1.没有回收垃圾资源2.层次太深的递归调用9、H泡排序算法的时间或杂度是什么?答:0(n2)10、什么函数不能声明为虚函数?答:constructorIk队列和栈有什么区别?答:队列先进先出,栈后进先出12、不能做SWiICh。的参数类型答:SWi1.Ch的参数不能为实型.13、局部变Ift能否和全局变量重名?答:能.局部会屏蔽全局.要用全局变fit需要使用:同部变盘可以与全局变量同名,在函数内引用这个变瓜时.会用到同名的局
5、部变1上而不会用到全局变量,对于有些编详器而言,在同一个函数内可以定义多个同名的局部变业,比方在两个循环体内都定义一个同名的局部变殖,而那个局部变量的作用域就在那个砧环体内14.如何引用一个已经定义过的全局变盘?答、可以用引用头文件的方式,也可以用extern关罐字,如果用引用头文件方式来引用某个在头文件中声明的全局变量.假定你将那个变名写情了,那么在编译期间会报惜,如果你用extern方式引用时,假定你犯了同样的错误,那么在嫔译期间不会报错,而在连接期间报错.15、全局变眼可不可以定义在可被多个.C文件包含的头文件中?为什么?答、可以,在不同的C文件中以StatiC形式来声明同名全局变朋.可
6、以在不同的C文件中声明同名的全局变量.前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错.16、语句for(:1;)有什么问魄?它是什么意思?答、和hi1.e(D相同,无眼循环。17、doWhiI。和WhiICdo有什么区别?答、第一个循环一遍再判断,后一个判断以后再砧环。18、Statac全局变St局部变量、函数与普通全局变眼、同部变量、函数答、全局变显(外部变JA)的说明之前再冠以StatiC就构成了静态的全可变瓜.全局变配本身就是静态存储方式,静态全局变妆当然也是静态存储方式。这两科在存储方式上并无不1可,这两者的区别虽在于非伸态全局变显的作用域是整个源程序,当一个源程序由多个
7、源文件祖成时,非衿态的全局变鳍在各个源文件中都是有效的.而静态全局变量则限制了其作用城,即只在定义该变量的就文件内有效.在同一源程序的其它源文件中不能使用它.由于步态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以防止在其它源丈件中引起错误。从以上分析HJ以看出,把同部变用改变为伸态变状后是改变了它的存储方式即改变了它的生存期“把全局变量改变为静态变显后是改变了它的作用域,限制了它的使用范B1.static函数与普通函数作川城不同.仅在本文件.只在当前源文件中使用的函数应该说明为内部函数(Static).内部函数应该在当前海文件中说明和定义.对于可在当前海文件以外使用的
8、函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件Static全局知与普通的全局知:有什么区剧:SIaIiC全局变量只初使化一次,防止在其他文件单元中破弓I用;static局部受量和普maHtAEa:StatiC局部变量只被初始化一次,下一次依据卜一次结果值:static函数与普通函数有什么区别:StatiC函数在内存中只有一份,普通函数在每个被网用中维持一份拷贝19、程序的内存分配答:一个由cC+*编许的程序占用的内存分为以下几个局部1.栈区(StaCk)一由漏译器自动分配择放.存放函数的参数值,局部变址的值等.共操作方式类似于数据结构中的栈-2、堆区heap一做由程序员分
9、配林放,若程序员不群放,程序站农时可能由OS回收,注意它与数据结的中的堆是两回事,分配方式倒足类似于锥表,MMo3,全局区静态区(static)-全局变量和静态变fit的存储是放在一块的,初始化的全局变肽和静态变Ift在一块区域.未初始化的全局变仪和未初始化的静态变晶在相邻的另一块区域.程序结束后由系统择放.4、文字常景区一常WM字符申就是放在这里的.程序结束后由系统样放。5、程序代码区一存放函数体的二进制代码例子程序这是一个前辈写的,非常详细/main.CPPinia=0;全局初始化区charp1.:/全局未初始化区main()(inb:栈chars三*abc*;栈char*p2;/栈cha
10、rp3=123156n;/1231560在常用区,p3在栈上。sia1.icintC=0:/全局(静态)初始化区P1.-(char*)ma11oc(10):p2=(char*)ma1.Ioc(20);分配用来得10和20字节的区域就在堆区.StrCPy(P1.J1.23456);/1234560放在常贵区,编译零可能会符它与p3所向123456”优化成一个地方.20、解择堆和栈的区别答:堆(heap)和栈(SIaCk)的区别1)申请方式StaCk:由系统自动分配.例如,声明在函数中一个局部变奴intb:系统自动在校中为b开辟空间heap:需要程序员自己申诂,并指明大小,在C中InHIIoC函数
11、如p1.=(char*)ma1.Ioc(IO);在C+中用IMJW运算符,如p2=(char*)maUoc(10):但是注怠p1.、p2本身是在栈中的。(2)申请后系统的响应栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则格报异常提示栈溢出.堆:首先应该知道操作系统有一个记录空闲内存地址的流表,当系统收到程序的申清时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链衣中删除,井将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小.这样.代码中的de1.ete谱句才能正确的择放本内存空间.另外,由于找到的堆结点的
12、大小不一定正好等于申请的大小,系统会自动的将多余的那局部由新放入空闲链表中。(3)申请大小的限制栈:在UindOWS下,栈是向低地址扩展的数据结构.是一块连续的内存的区域.这句话的意见是栈原的地址和栈的最大容ht是系统段先规定好的,在W1.M)OWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数,如果申谢的空间超过校的剩余空间时,将提示OVerfIO-因此,能从栈获得的空间较小,堆:堆是向高地址扩展的数据结构,是不连续的内存区域,这是由于系统是用锥表来存储的空闱内存地址的,自然是不连续的,而锥表的遍历方向是南低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存.由此可%.
13、唯获得的空间比较灵活,也比较大.ova1,byteptredx+1.5FC三ovbyteptreb-1j,a1.第一神在读取时自接就把字符小中的元泰读到存放器C1.中,而第二种则要先把指针值读到CdX中,在根据cd*读取字符.彩然慢了.21、什么是预嫔译,何时需要预编译?答:预编译又称为预处理,是做些代码文本的替换工作,处理才开头的指令,比方指贝目inc1.ude包含的文件代码,#dcQnc宏定义的普换,条件编译等,就是为编译做的预备工作的阶段,主要处理*开始的预编诉指令,预编译指令指示了在程序正式娟译前就由循译携进行的操作,可以放在程序中的任何位?1.C编译系统在对程序进行通常的编译之前,先
14、进行预处理C类供的H处理功能主要有以下三种:1)宏定义2)文件包含3)条件编译22、关键字COnS1.是什么含意?等:“const意味着常数.业余者.“只读.正确的答案.constinta;a是一个常整型数intconsta:a是一个常察型数constint*a;a是一个指向雷整型数的指针(也就是,整型数是不可修改的,但指针可以。int*consta:a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可蟋改的)intconst*aconst;a是一个指向常整型数的常指针(也就是说,指针指向的整里数是不可修改的,同时指针也是不可修改的)1) .关键字ConSt的作用是
15、为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的.如果你用花很多时间消埋其它人留下的垃圾,你就会很快学会感谢这点多余的信息.(当然,懂得用const的程序员很少会例下的垃圾让别人来清理的.)2),通过给优化器一-亚附加的信息,使用关键字COnS1.也许能产生更紧凑的代码。3).合理地使用关城字ConSt可以使编译推很自然地保护那些不帘望被改变的参数.防止其被无意的代眄修改.简而古之,这样可以减少bug的出现23、关键字v。IaIi1.e有什么含意并给出三个不同的例子。答:一个定义为丫。IaIi1.e的变量是说这变量可能会被总忽不到地改变,这样,编
16、译器就不会去假设这个变量的值了.精确地说就是.优化器在用到这个变M时必须每次都小心地重新读取这个变盘的值.而不是使用保存在存放器里的备份.下面是v。Iati1.e变Ift的几个例子:1),并行设备的硬件存放器inta;a=*ptr;returnaa:)24、三种根本的数据模型答:按照数据结构类型的不同,物数据模型划分为层次模型、网状模型和关系模型.25、结构与联合有和区别?答:(1),结构和联合都是由多个不同的数据类型成员如成,但在任何同一时刻,联合中只存放了一个被选中的成员(所有成员共用一块地址空间),而结构的所行成员都存在(不同成员的存放地址不同).(2)对于联合的不同成员贼伯,将会对其它
17、成员理写,原来成员的伯就不存在了,而对于结构的不同成员贼依是互不影响的26、描述内存分配方式以及它们的区别?答:1)从传态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全国变S1.static变质.2)在栈上创立。在执行函数时,函数内同部变卡的存储单元都可以在栈上创立,函数执行结束时这些存偌单元自动被移放。栈内存分配运算内置于处理器的指令集。3)从堆上分配.亦称动态内存分配.程序在运行的时候用三a1.Ioc或nen申请任意多少的内存.程序员自己负说在何时用free或de1.ete择放内存.动态内存的生存期也程序员决定,使用非常见活,但时速也最多27、说
18、说出ConSt与define相比,有何优点?答:CUnSt作用:定义整量、修饰函数卷数、修饰函数返回值三个作用,被Cons1.修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.DConSt常域有数据类型,而宏常盘没有数据类型.嫔评器可以对前者进行类型平安检2b而对后者只进行字符件换,没彳i类型平安检杳,并且在字符杵换可俄会产生意料不到的错误,2)有些集成化的调试工具可以对ConSt常量进行调试,但是不能对宏常砧进行调试.28、简述数组与指针的区别?答:数组要么在部态存储区被创立(如全局数组,要么在栈上被创立,指针可以的时指向任意类型的内存块,(1)修改内容上的差异chara=h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 软件工程师 笔试 大全

链接地址:https://www.desk33.com/p-1679072.html