计算机复试专业课面试问题锦集.docx
《计算机复试专业课面试问题锦集.docx》由会员分享,可在线阅读,更多相关《计算机复试专业课面试问题锦集.docx(17页珍藏版)》请在冰豆网上搜索。
![计算机复试专业课面试问题锦集.docx](https://file1.bdocx.com/fileroot1/2023-5/25/d98b2996-7f00-4a02-a1f2-76c1a6e5d030/d98b2996-7f00-4a02-a1f2-76c1a6e5d0301.gif)
计算机复试专业课面试问题锦集
计算机复试专业课面试问题锦集
1.什么是程序局部性,为什么会有程序的空间局部性"程序局部性是指程序在运行时呈现出局部性规律,在一段时间间隔,程序的执行是局限在*个部份,所访问的存储空间也只局限在*个区域。
空间局部性是指假设一个存储单元被访问,则它附近的单元也可能被访问,这是由于程序的顺序执行引起的。
2.比拟TCP与UDP"TCP与UDP都是传输层的协议,且都用端口号标识数据所达的进程。
TCP提供的是面向连接效劳,提供可靠交付。
且具有流量控制和拥塞控制。
可用于可靠要求高的场合如:
SMTP,FTP,HTTP等.UDP提供的是无连接效劳,提供不可靠交付,且无确认机制。
主要用于即时强的场合如:
视频聊天,语音等。
3.网络协议的三个核心要素,及概念.各起什么作用"语法,定义了数据与控制信息的格式;语义,定义了需要发出何种控制信息,完成何种响应动作以及作出何种响应;同步,定义了事件实现顺序的详细说明。
4.关系数据库都有那些操作,特点是什么"◇查询:
选择、投影、连接、除、并、交、差◇数据更新:
插入、删除、修改;关系操作的特点:
集合操作方式,即操作的对象和结果都是集合。
5.解释一下网络体系构造,它得实现和理论有什么区别"是指通信系统的整体设计,它为网络硬件、软件、协议、存取控制和拓扑提供标准。
网络体系统构造采用分层构造,各层之间相互独立、较易维护、灵活性好。
国际标准化组织制定了OSI/RM标准,该标准采用了七层构造应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
七层协议体系构造既复杂又不实用,但其概念清楚,体系构造理论较完整。
而TCP/IP却成为了事实上的标准,它采用了四层构造即应用层、传输层、网络层和网络接口层。
6.为了实现重定位需要哪些硬件"最简单的方式是在系统中增设一个重定位存放器,用来存放正在执行作业的存地址,每次访问数据时,由硬件自动将相对地址与重定位存放器中的起始地址相加,形成实际的特理地址。
当然在分页式与分段式系统中,具地址变换机构,以及快表等硬件。
7.数据库保护(访问)的容有哪些"利用权限机制,利用完整性约束防止法数据进入数据库,提供故障恢复能力,提供并发访问控制。
8.在交互式系统中,非剥夺是不是一个好的策略"为什么"非剥夺方式:
分派程序一旦把处理机分配给*进程后便让它一直运行下去,直到进程完成或发生*事件而阻塞时,才把处理机分配给另一个进程。
剥夺方式:
当一个进程正在运行时,系统可以基于*种原则,剥夺已分配给它的处理机,将之分配给其它进程。
剥夺原则有:
优先权原则、短进程、优先原则、时间片原则。
在分时系统中不剥夺并不是一个好的策略。
因为,在分时系统中,除了交互性以外,及时性是很重要的性能因素。
当一个作业被阻塞后,CPU就完全空闲了,别的用户的及时性就无法保证了,而完全可以把这些时间分配给别的作业运行。
以提高整体的吞吐量。
9.DBA的职责是什么"DBA则是这个机构的一个(组)人员,负责全面管理和控制数据库系统.职责有:
(1)决定数据库中的信息容和构造:
数据库中要存放哪些信息;
(2)决定数据库的存储构造和存取策略:
获得较高的存取效率和存储空间利用率;(3)约定义数据的平安性要求和完整性约束条件:
负责确定各个用户对数据库的存取权限、数据的级别和完整性约束条件;(4)监控数据库的使用和运行:
转储数据、维护日志文件、故障恢复;(5)数据库的改良和重组重构:
对运行情况进展记录、统计分析,以此来不断改良数据库设计。
10.系统调用的定义"系统调用是OS与应用程序之间的接口,它是用户程序取得OS效劳的惟一途径。
它与一般的过程调用的区别:
运行在不同的系统状态。
调用程序在运行在用户态,而被调用的程序运行在系统态;通过软中断机制,先由用户态转为系统态,经枋心分析后,才能转向相应的系统调用处理子程序;一般的过程调用返回后继续执行,但对系统调用,当调用的进程仍具有最高优先权时,才返回到调用进程继续处理;否则只能等被重新调度。
11.死锁是什么"指多个有关进程由于争夺资源而造成的一种僵局,在无外力的情况下这些进程都将无法再向前推进的状态。
12.CPU不执行程序的时候干什么"当没有被任何程序使用的时候,计算机的处理器被认为是空闲的。
当然下面提到的空闲任务不在此列中。
当有程序利用CPU空闲时间的时候,就意味着它以较低的优先权运行着,以便不会影响那有正常优先权的程序运行。
一般来讲,这会引起CPU消耗更多的电能,而大多数的现代CPU当它们空闲的时候是能够进入省电模式的。
大多数操作系统都有个空闲任务,它是一个特殊的任务。
仅当CPU无事可做的时候由操作系统调度器载入它。
在现代的处理器中,HLT停机指令节省了大量的电能与执量,而空闲任务几乎总是由一个重复执行HLT停机指令的循环组成。
13.举例解释一下同步和互斥"同步表现为直接制约,如管道通信,一个进程写,一个进程读,它们是相互制约的。
互斥表现为间接制约,比方多个进程同时请求打印机(没使用SPOOLing技术)、多个进程同时请求一网卡发送数据包等。
14.解释一下管程"管程是由一组局部变量、对局部变量进展操作的一组过程和对局部变量进展初始化的语句序列组成。
引入它的目的是因为Wait/Singal操作太过分散,对它的维护很麻烦且容易造成死锁。
管程的特点是:
管程的过程只能访问管程的局部变量,管程的局部变量只能由其过程来访问;任何时刻只能有一个进程进入管程执行;进程只能通管程提供的过程入口进入管程。
15.在可变分区管理中,需要哪些硬件机制"采用可变分区方式管理时,一般均采用动态重定位方式装入作业。
地址变换要靠硬件支持,主要是两个存放器:
基址存放器和限长存放器,限长存放器存放作业所占分区的长度,基址存放器则存放作业所占分区的起始地址,这两个值确定了一个分区的位置和大小。
转换时根据逻辑地址与限长值比拟,如果不有超过这个值,表示访问地址合法,再加上基址存放器中的值就得到了绝对地址了,否则形成"地址越界〞中断。
16.中断和陷入有什么异同"外中断时指来自处理机和存外部的中断,如I/O中断、定时器中断、外部信号中断等。
狭义上也叫中断;中断主要指在处理机和存部产生的中断,也称陷入,如校验错、页面失效、溢出、除数为零等;中断和陷阱的主要区别:
(1)陷入通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。
(2)陷阱处理程序提供的效劳为当前进程所用,而中断处理程序提供的效劳则不是为了当前进程的。
(3)CPU在执行完一条指令之后,下一条指令开场之前响应中断,而在一条指令执行中也可以响应陷阱。
17.数据库系统和文件系统相比有什么优点"
文件系统
数据库管理系统
*一应用
现实世界
共享性差,冗余度大
共享性高,冗余度小
记录有构造,整体无构造
整体构造化,用数据模型描述
应用程序自己控制
由数据库管理系统提供数据平安性,完整性,并发控制和恢复能力
独立性差
具有高度的物理独立性和一定的逻辑独立性
18.计算机网络和分布式计算机系统的区别"两者在计算机硬件连接、系统拓朴构造和通信控制等方面根本都是一样的,它们都具有通信和资源共享的功能。
区别关键在于:
分布式计算机系统是在分布式计算机操作系统支持下,进展分布式数据库处理的,也就是说各互联的计算机可以互相协调工作,共同完成一项任务,多台计算机上并行运行。
且具有透明性,用户不知道数据、资源的具体位置,整个网络中所有计算机就像是一台计算机一样;而计算机网络却不具备这种功能,计算机网络系统中的各计算机通常是各自独立进展工作的。
19.为什么引入多道程序技术"因为引入多道程序技术后,可以进一步提高了CPU利用率(阻塞),提高存和I/O设备利用率(小作业把存浪费了),增加系统吞吐量(两都提高后的必然)。
20.什么是管态"什么是目态"它们与进程运行状态的关系是什么"CPU交替执行操作系统程序和用户程序。
管态又叫特权态,系统态或核心态。
CPU在管态下可以执行指令系统的全集。
通常,操作系统在管态下运行。
目态又叫常态或用户态。
机器处于目态时,程序只能执行非特权指令。
用户程序只能在目态下运行,如果用户程序在目态下执行特权指令,硬件将发生中断,由操作系统获得控制,特权指令执行被制止,这样可以防止用户程序有意或无意的破坏系统。
21.n个任务一个cup,阻塞,运行,就绪的进程最多有多少个"阻塞n个;运行1个;就绪n-1个。
22.波特和比特的区别"波特是码元传输的踵率单位,说明每秒传多少个码元。
码元传输速率也称为调制速率、波形速率或符号速率。
比恃是信息量的单位,与码元的传输速率"波特"是两个完全不同的概念。
但是,信息的传输速率"比特/秒"与码元的传输速率"波特"在数量上却有一定的关系。
23.什么是网络延时"时延(delay或latency)是指一个报文或分组从一个网络(或一条链路)的一端传送到另一端所需的时间。
24.什么是完整性约束"强制数据完整性可确保数据库中的数据质量。
25.什么是码元"什么是码元长度"在数字通信中常常用时间间隔一样的符号来表示一位二进制数字。
这样的时间间隔的信号称为二进制码元,而这个间隔被称为码元长度。
26.结合Internet,说说有连接效劳和无连接的效劳"面向连接效劳具有连接建立、数据传输和连接释放这三个阶段。
面向连接效劳是在数据交换之前,必须先建立连接。
当数据交换完毕后,则必须终止这个连接。
在传送数据时是按序传送的,是可靠交付。
面向连接效劳比拟适合于在一定期间要向同一日的地发送许多报文的情况。
无连接效劳,两个实体之间的通信不需要先建立好一个连接,因此其下层的有关资源不需要事先进展预定保存。
这些资源将在数据传输时动态地进展分配。
无连接效劳的优点是灵活方便和比拟迅速。
但无连接效劳不能防止报文的丧失、重复或失序。
是一种不可靠的效劳。
这种效劳常被描述为"尽量大努力支付"。
27.点对点和端到端工作在哪层"工作机制"
28.DBMS支持那几种数据模型"
29.父子进程是否可以并发运行"
30.SQL的四个组成局部"
31.数据库操纵语言举例"
32.介绍下有哪些应用数据库"
33.什么是数据独立性。
34.网络时延又拿几局部组成"各产生于何处"
35.实体\协议\效劳"
36.1NF是啥数据模式"
37.缓冲的定义,为什么引入"
38.TCP/IP网络协议的核心是什么,如何引出"overeverything〞和"everythingover"〞
39.数据库的关系操作有哪些"各有什么作用"
40.用白军和蓝军解释下没有100%可靠的通信"
1.用预处理指令#define声明一个常数,用以说明1年中有多少秒〔忽略闰年问题〕"
#defineSECONDS_PER_YEAR(60*60*24*365)UL
2.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢"while
(1){}或者for(;;){}
3.用变量a给出下面的定义
a)一个整型数〔Aninteger〕
b)一个指向整型数的指针〔Apointertoaninteger〕
c)一个指向指针的的指针,它指向的指针是指向一个整型数〔Apointertoapointertoaninteger〕
d)一个有10个整型数的数组〔Anarrayof10integers〕
e)一个有10个指针的数组,该指针是指向一个整型数的。
〔Anarrayof10pointerstointegers〕
f)一个指向有10个整型数数组的指针〔Apointertoanarrayof10integers〕
g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数〔Apointertoafunctionthattakesanintegerasanargumentandreturnsaninteger〕
h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数〔Anarrayoftenpointerstofunctionsthattakeanintegerargumentandreturnaninteger〕
答案是:
a)inta;//Aninteger
b)int*a;//Apointertoaninteger
c)int**a;//Apointertoapointertoaninteger
d)inta[10];//Anarrayof10integers
e)int*a[10];//Anarrayof10pointerstointegers
f)int(*a)[10];//Apointertoanarrayof10integers
g)int(*a)(int);//Apointertoafunctionathattakesanintegerargumentandreturnsaninteger
h)int(*a[10])(int);//Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger。
4.关键字static的作用是什么"这个简单的问题很少有人能答复完全。
在C语言中,关键字static有三个明显的作用:
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2)在模块〔但在函数体外〕,一个被声明为静态的变量可以被模块所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3)在模块,一个被声明为静态的函数只可被这一模块的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地围使用。
大多数应试者能正确答复第一局部,一局部能正确答复第二局部,同是很少的人能懂得第三局部。
这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码围的好处和重要性。
5.关键字const有什么含意"表示常量不可以修改的变量。
constinta;
intconsta;
constint*a;
int*consta;
intconst*aconst;
前两个的作用是一样,a是一个常整型数。
第三个意味着a是一个指向常整型数的指针〔也就是,整型数是不可修改的,但指针可以〕。
第四个意思a是一个指向整型数的常指针〔也就是说,指针指向的整型数是可以修改的,但指针是不可修改的〕。
最后一个意味着a是一个指向常整型数的常指针〔也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的〕。
如果应试者能正确答复这些问题,则他就给我留下了一个好印象。
顺带提一句,也许你可能会问,即使不用关键字const,也还是能很容易写出功能正确的程序,则我为什么还要如此看重关键字const呢?
我也如下的几下理由:
1)关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。
如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感这点多余的信息。
〔当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。
〕2)通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3)合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。
简而言之,这样可以减少bug的出现。
6.程序什么时候应该使用线程,什么时候单线程效率高"1)耗时的操作使用线程,提高应用程序响应。
2)并行操作时使用线程,如C/S架构的效劳器端并发线程响应用户的请求。
3)多CPU系统中,使用线程提高CPU利用率。
4)改善程序构造。
一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行局部,这样的程序会利于理解和修改。
其他情况都使用单线程。
7.一般数据库假设出现日志满了,会出现什么情况,是否还能使用"只能执行查询等读操作,不能执行更改,备份等写操作,原因是任何写操作都要记录日志。
也就是说根本上处于不能使用的状态。
第三次握手:
客户端收到效劳器的SYN+ACK包,向效劳器发送确认包ACK(ack=k+1),此包发送完毕,客户端和效劳器进入ESTABLISHED状态,完成三次握手。
8.ICMP是什么协议,处于哪一层"答:
Internet控制报文协议,处于网络层〔IP层〕〔ping命令基于这个协议〕。
9.winsock建立连接的主要实现步骤"效劳器端:
socket()建立套接字,绑定〔bind〕并监听〔listen〕,用accept〔〕等待客户端连接。
客户端:
socket()建立套接字,连接〔connect〕效劳器,连接上后使用send()和recv〔〕,在套接字上写读数据,直至数据交换完毕,closesocket()关闭套接字。
效劳器端:
accept〔〕发现有客户端连接,建立一个新的套接字,自身重新开场等待连接。
该新产生的套接字使用send()和recv〔〕写读数据,直至数据交换完毕,closesocket()关闭套接字。
10.IP组播有那些好处"Internet上产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽的急剧消耗和网络拥挤问题。
组播是一种允许一个或多个发送者〔组播源〕发送单一的数据包到多个接收者〔一次的,同时的〕的网络技术。
组播可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。
所以说组播技术的核心就是针对如何节约网络资源的前提下保证效劳质量。
11.引用与指针有什么区别"1)引用必须被初始化,指针不必。
2)引用初始化以后不能被改变,指针可以改变所指的对象。
3)不存在指向空值的引用,但是存在指向空值的指针。
12.TCP/IP建立连接的过程"(3-wayshake)"在TCP/IP协议中,TCP协议提供可靠的连接效劳,采用三次握手建立一个连接。
第一次握手:
建立连接时,客户端发送syn包(syn=j)到效劳器,并进入SYN_SEND状态,等待效劳器确认;第二次握手:
效劳器收到syn包,必须确认客户的SYN〔ack=j+1〕,同时自己也发送一个SYN包〔syn=k〕,即SYN+ACK包,此时效劳器进入SYN_RECV状态。
13.局部变量能否和全局变量重名"能,局部会屏蔽全局。
要用全局变量,需要使用":
:
"局部变量可以与全局变量同名,在函数引用这个变量时,会用到同名的局部变量,而不会用到全局变量。
对于有些编译器而言,在同一个函数可以定义多个同名的局部变量,比方在两个循环体都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体。
14.如何引用一个已经定义过的全局变量"e*tern可以用引用头文件的方式,也可以用e*tern关键字,如果用引用头文件方式来引用*个在头文件中声明的全局变理,假定你将那个变写错了,则在编译期间会报错,如果你用e*tern方式引用时,假定你犯了同样的错误,则在编译期间不会报错,而在连接期间报错。
15.描述实时系统的根本特性"在特定时间完成特定的任务,实时性与可靠性"
16.全局变量和局部变量在存中是否有区别"如果有,是什么区别"全局变量储存在静态数据库,局部变量在堆栈。
17.什么是平衡二叉树"左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
18.堆栈溢出一般是由什么原因导致的"没有回收垃圾资源。
19.什么函数不能声明为虚函数"constructor函数不能声明为虚函数。
20.冒泡排序算法的时间复杂度是什么"时间复杂度是O(n2)。
21.写出float*与"零值〞比拟的if语句"if(*<0.000001&&*>-0.000001)。
22.Internet采用哪种网络协议?
该协议的主要层次构造"Tcp/Ip协议主要层次构造为:
应用层/传输层/网络层/数据链路层/物理层。
23.Internet物理地址和IP地址转换采用什么协议"ARP(AddressResolutionProtocol)〔地址解析协议〕。
24.IP地址的编码分为哪俩局部"IP地址由两局部组成,网络号和主机号。
不过是要和"子网掩码〞按位与上之后才能区分哪些是网络位哪些是主机位。
25.用户输入M,N值,从1至N开场顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
循环链表,用取余操作做。
26.不能做switch()的参数类型是:
switch的参数不能为实型。
27.请写出以下代码的输出容
#include
main()
{
inta,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:
%d,%d,%d",b,c,d〕;
return0;
}
答:
10,12,120
28.写出以下代码的输出容
#include
intinc(inta)
{
return(++a);
}
intmulti(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedefint(FUNC1)(intin);
typedefint(FUNC2)(int*,int*,int*);
voidshow(FUNC2fun,intarg1,int*arg2)
{
INCp=&inc;
inttemp=p(arg1);
fun(&temp,&arg1,arg2);
printf("%d\n",*arg2);
}
main()
{
inta;
show(multi,10,&a);
return0;
}
************************************
1.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现"答:
c用宏定义,c++用inline。
2.直接两个信令点的一组链路称作什么"答:
PPP点到点连接。
3.软件测试都有那些种类"黑盒:
针对系统功能的测试白盒:
测试函数功能,各函数接口。
4.确定模块的功能和模块的接口是在软件设计的那个阶段完成的"概要设计阶段。
三.选择题:
1.Ethternet到Internet用到以下那个协议"A.HDLC;B.ARP;C.UDP;D.TCP;E.ID。
2.属于网络层协议的是:
A.TCP;B.IP;C.ICMP;D.*.25。
3.Windows消息调度机制是:
A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈。
4.unsignedshorthash(unsignedshortkey)
{
return(key>>)%256
}
请问hash(16),hash(256)的值分别是:
;B.8.32;C.4.16;D.1.32。
四.找错题:
1.请问下面程序有什么错误"
inta[60][250][1000],i,j,k;
for(k=0;k<=1000;k++)
for(j=0;j<250;j++)
for(i=0;i<60;i++)
a[i][j][k]=0;
把循环语句外换一下
2.#defineMa*_CB500
voidLmiQueryCSmd(StructMSgCB*pmsg)
{
unsignedcharucCmdNum;
......
for(ucCmdNum=0;ucCmdNum{
......;
}
死循环
3.