《计算机复试专业课面试问题锦集(共10页).doc》由会员分享,可在线阅读,更多相关《计算机复试专业课面试问题锦集(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上计算机复试专业课面试问题锦集1.什么是程序局部性,为什么会有程序的空间局部性?程序局部性是指程序在运行时呈现出局部性规律,在一段时间间隔内,程序的执行是局限在某个部份,所访问的存储空间也只局限在某个区域。空间局部性是指若一个存储单元被访问,那么它附近的单元也可能被访问,这是由于程序的顺序执行引起的。2.比较TCP与UDP?TCP与UDP都是传输层的协议,且都用端口号标识数据所达的进程。TCP提供的是面向连接服务,提供可靠交付。且具有流量控制和拥塞控制。可用于可靠要求高的场合如:SMTP,FTP,HTTP等.UDP提供的是无连接服务,提供不可靠交付,且无确认机制。主要用
2、于即时强的场合如:视频聊天,语音电话等。3.网络协议的三个核心要素,及概念.各起什么作用?语法,定义了数据与控制信息的格式;语义,定义了需要发出何种控制信息,完成何种响应动作以及作出何种响应;同步,定义了事件实现顺序的详细说明。4.关系数据库都有那些操作,特点是什么?查询:选择、投影、连接、除、并、交、差数据更新:插入、删除、修改;关系操作的特点:集合操作方式,即操作的对象和结果都是集合。5.解释一下网络体系结构,它得实现和理论有什么区别?是指通信系统的整体设计,它为网络硬件、软件、协议、存取控制和拓扑提供标准。网络体系统结构采用分层结构,各层之间相互独立、较易维护、灵活性好。国际标准化组织制
3、定了OSI/RM标准,该标准采用了七层结构应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。七层协议体系结构既复杂又不实用,但其概念清楚,体系结构理论较完整。而TCP/IP却成为了事实上的标准,它采用了四层结构即应用层、传输层、网络层和网络接口层。6.为了实现重定位需要哪些硬件?最简单的方式是在系统中增设一个重定位寄存器,用来存放正在执行作业的内存地址,每次访问数据时,由硬件自动将相对地址与重定位寄存器中的起始地址相加,形成实际的特理地址。当然在分页式与分段式系统中,具地址变换机构,以及快表等硬件。7.数据库保护(访问)的内容有哪些?利用权限机制,利用完整性约束防止法数据进入数据库,
4、提供故障恢复能力,提供并发访问控制。8.在交互式系统中,非剥夺是不是一个好的策略?为什么?非剥夺方式:分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。剥夺方式:当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程、优先原则、时间片原则。在分时系统中不剥夺并不是一个好的策略。因为,在分时系统中,除了交互性以外,及时性是很重要的性能因素。当一个作业被阻塞后,CPU就完全空闲了,别的用户的及时性就无法保证了,而完全可以把这些时间分配给别的作业运行。以提高整体的吞吐量。
5、9.DBA的职责是什么?DBA则是这个机构的一个(组)人员,负责全面管理和控制数据库系统.职责有:(1)决定数据库中的信息内容和结构:数据库中要存放哪些信息;(2)决定数据库的存储结构和存取策略:获得较高的存取效率和存储空间利用率;(3)约定义数据的安全性要求和完整性约束条件:负责确定各个用户对数据库的存取权限、数据的保密级别和完整性约束条件;(4)监控数据库的使用和运行:转储数据、维护日志文件、故障恢复;(5)数据库的改进和重组重构:对运行情况进行记录、统计分析,以此来不断改进数据库设计。10.系统调用的定义?系统调用是OS与应用程序之间的接口,它是用户程序取得OS服务的惟一途径。它与一般的
6、过程调用的区别:运行在不同的系统状态。调用程序在运行在用户态,而被调用的程序运行在系统态;通过软中断机制,先由用户态转为系统态,经枋心分析后,才能转向相应的系统调用处理子程序;一般的过程调用返回后继续执行,但对系统调用,当调用的进程仍具有最高优先权时,才返回到调用进程继续处理;否则只能等被重新调度。11.死锁是什么?指多个有关进程由于争夺资源而造成的一种僵局,在无外力的情况下这些进程都将无法再向前推进的状态。12.CPU不执行程序的时候干什么?当没有被任何程序使用的时候,计算机的处理器被认为是空闲的。当然下面提到的空闲任务不在此列中。当有程序利用CPU空闲时间的时候,就意味着它以较低的优先权运
7、行着,以便不会影响那有正常优先权的程序运行。一般来讲,这会引起CPU消耗更多的电能,而大多数的现代CPU当它们空闲的时候是能够进入省电模式的。大多数操作系统都有个空闲任务,它是一个特殊的任务。仅当CPU无事可做的时候由操作系统调度器载入它。在现代的处理器中,HLT停机指令节省了大量的电能与执量,而空闲任务几乎总是由一个重复执行HLT停机指令的循环组成。13.举例解释一下同步和互斥?同步表现为直接制约,如管道通信,一个进程写,一个进程读,它们是相互制约的。互斥表现为间接制约,比如多个进程同时请求打印机(没使用SPOOLing技术)、多个进程同时请求一张网卡发送数据包等。14.解释一下管程?管程是
8、由一组局部变量、对局部变量进行操作的一组过程和对局部变量进行初始化的语句序列组成。引入它的目的是因为Wait/Singal操作太过分散,对它的维护很麻烦且容易造成死锁。管程的特点是:管程的过程只能访问管程的局部变量,管程的局部变量只能由其过程来访问;任何时刻只能有一个进程进入管程执行;进程只能通管程提供的过程入口进入管程。15.在可变分区管理中,需要哪些硬件机制?采用可变分区方式管理时,一般均采用动态重定位方式装入作业。地址变换要靠硬件支持,主要是两个寄存器:基址寄存器和限长寄存器,限长寄存器存放作业所占分区的长度,基址寄存器则存放作业所占分区的起始地址,这两个值确定了一个分区的位置和大小。转
9、换时根据逻辑地址与限长值比较,如果不有超过这个值,表示访问地址合法,再加上基址寄存器中的值就得到了绝对地址了,否则形成“地址越界”中断。16.中断和陷入有什么异同?外中断时指来自处理机和内存外部的中断,如I/O中断、定时器中断、外部信号中断等。狭义上也叫中断;内中断主要指在处理机和内存内部产生的中断,也称陷入,如校验错、页面失效、溢出、除数为零等;中断和陷阱的主要区别:(1)陷入通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。(2) 陷阱处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的。(3) CPU在执行完一条指令之后,下一条指令开
10、始之前响应中断,而在一条指令执行中也可以响应陷阱。17.数据库系统和文件系统相比有什么优点?文件系统数据库管理系统某一应用现实世界共享性差,冗余度大共享性高,冗余度小记录内有结构,整体无结构整体结构化,用数据模型描述应用程序自己控制由数据库管理系统提供数据安全性,完整性,并发控制和恢复能力独立性差具有高度的物理独立性和一定的逻辑独立性18.计算机网络和分布式计算机系统的区别?两者在计算机硬件连接、系统拓朴结构和通信控制等方面基本都是一样的,它们都具有通信和资源共享的功能。区别关键在于:分布式计算机系统是在分布式计算机操作系统支持下,进行分布式数据库处理的,也就是说各互联的计算机可以互相协调工作
11、,共同完成一项任务,多台计算机上并行运行。且具有透明性,用户不知道数据、资源的具体位置,整个网络中所有计算机就像是一台计算机一样;而计算机网络却不具备这种功能,计算机网络系统中的各计算机通常是各自独立进行工作的。19.为什么引入多道程序技术?因为引入多道程序技术后,可以进一步提高了CPU利用率(阻塞),提高内存和I/O设备利用率(小作业把内存浪费了),增加系统吞吐量(两都提高后的必然)。20.什么是管态?什么是目态?它们与进程运行状态的关系是什么?CPU交替执行操作系统程序和用户程序。管态又叫特权态,系统态或核心态。CPU在管态下可以执行指令系统的全集。通常,操作系统在管态下运行。目态又叫常态
12、或用户态。机器处于目态时,程序只能执行非特权指令。用户程序只能在目态下运行,如果用户程序在目态下执行特权指令,硬件将发生中断,由操作系统获得控制,特权指令执行被禁止,这样可以防止用户程序有意或无意的破坏系统。21.n个任务一个cup,阻塞,运行,就绪的进程最多有多少个?阻塞n个;运行1个;就绪n-1个。22.波特和比特的区别?波特是码元传输的踵率单位,说明每秒传多少个码元。码元传输速率也称为调制速率、波形速率或符号速率。比恃是信息量的单位,与码元的传输速率波特是两个完全不同的概念。但是,信息的传输速率比特/秒与码元的传输速率波特在数量上却有一定的关系。23.什么是网络延时?时延(delay或l
13、atency)是指一个报文或分组从一个网络(或一条链路)的一端传送到另一端所需的时间。24.什么是完整性约束?强制数据完整性可确保数据库中的数据质量。25.什么是码元?什么是码元长度?在数字通信中常常用时间间隔相同的符号来表示一位二进制数字。这样的时间间隔内的信号称为二进制码元,而这个间隔被称为码元长度。26.结合Internet,说说有连接服务和无连接的服务?面向连接服务具有连接建立、数据传输和连接释放这三个阶段。面向连接服务是在数据交换之前,必须先建立连接。当数据交换结束后,则必须终止这个连接。在传送数据时是按序传送的,是可靠交付。面向连接服务比较适合于在一定期间内要向同一日的地发送许多报
14、文的情况。无连接服务,两个实体之间的通信不需要先建立好一个连接,因此其下层的有关资源不需要事先进行预定保留。这些资源将在数据传输时动态地进行分配。无连接服务的优点是灵活方便和比较迅速。但无连接服务不能防止报文的丢失、重复或失序。是一种不可靠的服务。这种服务常被描述为尽量大努力支付。27.点对点和端到端工作在哪层?工作机制?28. DBMS支持那几种数据模型?29.父子进程是否可以并发运行?30.SQL的四个组成部分?31.数据库操纵语言举例?32.介绍下有哪些应用数据库?33.什么是数据独立性。34.网络时延又拿几部分组成?各产生于何处?35.实体协议服务?36.1NF是啥数据模式?37.缓冲
15、的定义,为什么引入?38.TCP/IP网络协议的核心是什么,如何引出“ over everything”和“everythingover ?”39.数据库的关系操作有哪些?各有什么作用?40.用白军和蓝军解释下没有100%可靠的通信?1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)?#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL2.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?while(1)或者for(;)3.用变量a给出下面的定义a) 一个整型数(An integer)b)一个指向整型数的指针(
16、 A pointer to an integer)c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer)d)一个有10个整型数的数组( An array of 10 integers)e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a
17、 function that takes an integer as an argument and returns an integer)h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )答案是:a) int a; / An integerb) int *a; / A pointer to an integerc) int *a; / A pointer to a poin
18、ter to an integerd) int a10; / An array of 10 integerse) int *a10; / An array of 10 pointers to integersf) int (*a)10; / A pointer to an array of 10 integersg) int (*a)(int); / A pointer to a function a that takes an integer argument and returns an integerh) int (*a10)(int); / An array of 10 pointer
19、s to functions that take an integer argument and return an integer。4.关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。大多数应试者能正确回
20、答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。5.关键字const有什么含意? 表示常量 不可以修改的变量。const int a;int const a;const int *a;int * const a;int const * a const;前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整
21、型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)2) 通过给优化器一些附加的信息,使用
22、关键字const也许能产生更紧凑的代码。3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。6.程序什么时候应该使用线程,什么时候单线程效率高?1)耗时的操作使用线程,提高应用程序响应。2)并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。3)多CPU系统中,使用线程提高CPU利用率。4)改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。其他情况都使用单线程。7.一般数据库若出现日志满了,会出现什么情况,是否还能使用?只能执行
23、查询等读操作,不能执行更改,备份等写操作,原因是任何写操作都要记录日志。也就是说基本上处于不能使用的状态。第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。8.ICMP是什么协议,处于哪一层?答:Internet控制报文协议,处于网络层(IP层)(ping命令基于这个协议)。9.winsock建立连接的主要实现步骤?服务器端:socket()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。客户端:socket()建立套接字,连接(connect
24、)服务器,连接上后使用send()和recv(),在套接字上写读数据,直至数据交换完毕,closesocket()关闭套接字。服务器端:a ccept( )发 现有客户端连接,建 立一个新的套接字,自 身重新开始等待连接。该 新产生的套接字使用send()和recv()写读数据,直至数据交换完毕,closesocket()关闭套接字。10.IP组播有那些好处?Internet上产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽的急剧消耗和网络拥挤问题。组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播可以大大的节省网络带宽,因为无论有多
25、少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。所以说组播技术的核心就是针对如何节约网络资源的前提下保证服务质量。11.引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。12.TCP/IP 建立连接的过程?(3-way shake)?在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN
26、(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。13.局部变量能否和全局变量重名?能,局部会屏蔽全局。要用全局变量,需要使用:局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。14.如何引用一个已经定义过的全局变量?extern可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定
27、你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。15.描述实时系统的基本特性?在特定时间内完成特定的任务,实时性与可靠性?16.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。17.什么是平衡二叉树? 左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。18.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。19.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。20.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n 2 )
28、。21.写出float x 与“零值”比较的if语句?if(x-0.)。22.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。23.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析协议)。24.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。25.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。循环链表,用
29、取余操作做。26.不能做switch()的参数类型是:switch的参数不能为实型。27.请写出下列代码的输出内容include 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,12028. 写出下列代码的输出内容includeint inc(int a)return(+a);int multi(int*a,int*b,int*c)return(*c=*a*b);typedef int(FUNC1)(int in);typedef int(FUNC2) (int*,in
30、t*,int*);void show(FUNC2 fun,int arg1, int*arg2)INCp=&inc;int temp =p(arg1);fun(&temp,&arg1, arg2);printf(%dn,*arg2);main()int a;show(multi,10,&a);return 0;*1.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C+中应用什么实现?答:c用宏定义,c+用inline。2.直接链接两个信令点的一组链路称作什么?答:PPP点到点连接。3.软件测试都有那些种类?黑盒:针对系统功能的测试 白盒:测试函数功能,各函数接口。4.确定模块的功能和模块
31、的接口是在软件设计的那个阶段完成的?概要设计阶段。三.选择题:1.Ethternet链接到Internet用到以下那个协议? A.HDLC;B.ARP;C.UDP;D.TCP;E.ID。2.属于网络层协议的是: A.TCP;B.IP;C.ICMP;D.X.25。3.Windows消息调度机制是: A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈。4.unsigned short hash(unsigned short key)return (key)%256请问hash(16),hash(256)的值分别是: A.1.16;B.8.32;C.4.16;D.1.32。四.找错题:1.请问下
32、面程序有什么错误?int a602501000,i,j,k;for(k=0;k=1000;k+)for(j=0;j250;j+)for(i=0;i60;i+)aijk=0;把循环语句内外换一下2.#define Max_CB 500void LmiQueryCSmd(Struct MSgCB * pmsg)unsigned char ucCmdNum;.for(ucCmdNum=0;ucCmdNumMax_GT_Length)return GT_Length_ERROR;.五.问答题:1.IP Phone的原理是什么?IPV6。2.TCP/IP通信建立的过程怎样,端口有什么作用?三次握手,确定
33、是哪个应用程序使用该协议。3.1号信令和7号信令有什么区别,我国某前广泛使用的是那一种?4.列举5种以上的电话新业务?*1.进程和线程的差别?线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位;(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。2.Heap与stack的差别?H
34、eap是堆,stack是栈。Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。Stack空间有限,Heap是很大的自由存储区。C中的malloc函数分配的内存空间即在堆上,C+中对应的是new操作符。程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。3.如果只想让程序有一个实例运行,不能运行两个。像winamp一样,只能开一个窗口,怎样实现?用内存映射或全局原子(互斥变量)、查找窗口句柄 FindWindow,互斥,写标志到文件或注册表,共享内存。4.存储过程是什么?有什么用?有什么优点?就是一堆sql的集合,可以建立非常复
35、杂的查询,编译运行,所以运行一次后,以后再运行速度比单独执行SQL快很多。5.网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?1,进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。2,线程:相对与进程而言,线程是一个更加接近于执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。两者都可以提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。6.Windows下的内存是如何管理的?7.用一个
36、语句实现x是否为2的若干次幂的判断:int i = 512;cout boolalpha (i & (i - 1) ? false : true) endl;8.下面三个有什么区别?char * const p;char const * p;const char *p答:char * const p; /常量指针,p的值不可以修改char const * p;/指向常量的指针,指向的常量值不可以改const char *p; /和char const *p 一样9.一个32位的机器,该机器的指针是多少位?指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的
37、位数就是4个字节了。10. main()int a5=1,2,3,4,5;int *ptr=(int *)(&a+1);printf(%d,%d,*(a+1),*(ptr-1);输出:2,5。*(a+1)就是a1,*(ptr-1)就是a4,执行结果是2,5。&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)。int *ptr=(int *)(&a+1);则ptr实际是&(a5),也就是a+5.原因如下:&a是数组指针,其类型为 int (*)5;而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同a是长度为5的int数组指针,
38、所以要加 5*sizeof(int),所以ptr实际是a5,但是ptr与(&a+1)类型是不一样的(这点很重要),所以prt-1只会减去sizeof(int*)a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a0的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a1,&a+1是下一个对象的地址,即a5。11.交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;a = a + b;b = a - b;a = a - b; /第一种方法a = ab;b = ab;a = ab; / 第二种.a=b=a=b; /第三种,后两种只能用于字符和整型。1
39、2.c和c+中的struct有什么不同?c和c+中struct的主要区别是c中的struct不可以含有成员函数,而c+中的struct可以。c+中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private。13.举几种进程的同步机制,并比较其优缺点。原子操作 信号量机制、 自旋锁、 管程,会合,分布式系统。14.进程之间通信的途径:共享存储系统、消息传递系统、管道(以文件系统为基础)。15.进程死锁的原因:资源竞争及进程推进顺序非法。16.死锁的4个必要条件:互斥、请求保持、不可剥夺、环路。17.死锁的处理:鸵鸟策略、预防策略、避
40、免策略、检测与解除死锁。18.操作系统中进程调度策略有哪几种?FCFS(先来先服务),优先级,时间片轮转,多级反馈。19.数组和链表的区别数组:数据顺序存储,固定大小;链表:数据可以随机存储,大小可动态改变。20.ISO的七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺点?应用层、表示层、会话层、运输层、网络层、物理链路层、物理层、tcp /udp属于运输层TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少的字节,比
41、TCP 负载消耗少。tcp: 提供稳定的传输服务,有流量控制,缺点是包头大,冗余性不好。udp: 不提供稳定的服务,包头小,开销小。面试题: 线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?(1)进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。(2)每个线程有自己的堆栈。(3)DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?以上讲的是堆栈,如果对于堆来说,每个DLL有自己的堆,所以如果是从DLL中动态分配的内存,最好是从DLL中删除,如果你从DLL中分配内存,然后在EXE中,或者另外一个DLL中删除,很有可能导致程序崩溃。专心-专注-专业