考研计算机复试面试题总结(2)

2019-03-28 17:38

模板实例化(template instantiation )是指在编译或链接时生成函数模板或类模板的具体实例源代码。ISO C++定义了两种模板实例化方法:隐式实例化(当使用实例化的模板时自动地在当前代码单元之前插入模板的实例化代码)、显式实例化(直接声明模板实例化)。

10、编译和链接的过程

源文件的编译过程包含两个主要阶段,而它们之间的转换是自动的。第一个阶段是预处理阶段,在正式的编译阶段之前进行。预处理阶段将根据已放置在文件中的预处理指令来修改源文件的内容。#include指令就是一个预处理指令,它把头文件的内容添加到.cpp文件中还有其他许多预处理指令

这个在编译之前修改源文件的方式提供了很大的灵活性,以适应不同的计算机和操作系统环境的限制。一个环境需要的代码跟另一个环境所需的代码可能有所不同,因为可用的硬件或操作系统是不同的。在许多情况下,可以把用于不同环境的代码放在同一个文件中,再在预处理阶段修改代码,使之适应当前的环境。 预处理器显示为一个独立的操作,但一般不能独立于编译器来执行这个操作。调用编译器会自动执行预处理过程,之后才编译代码。 编译器为给定源文件输出的是机器码,执行这个过程需要较长时间。在对象文件之间并没有建立任何连接。对应于某个源文件的对象文件包含在其他源文件中定义的函数引用或其他指定项的引用,而这些函数或项仍没有被解析。同样,也没有建立同库函数的链接。实际上,这些函数的代码并不是文件的一部分。这些工作是由链接程序(有时称为链接编辑器)完成的 链接程序把所有对象文件中的机器码组合在一起,并解析它们之间的交叉引用。它还集成了

对象模块所使用的库函数的代码。这是链接程序的一种简化表示,因为这里假定在可执行模块中,模块之间的所有链接都是静态建立的。实际上有些链接是动态的,即这些链接是在程序执行时建立的。

链接程序静态地建立函数之间的链接,即在程序执行之前建立组成程序的源文件中所包含的函数链接。动态建立的函数之间的链接(在程序执行过程中建立的链接)将函数编译并链接起来,创建另一种可执行模块—— 动态链接库或共享库。动态链接库中的函数链接是在程序调用函数时才建立的,在程序调用之前,该链接是不存在的。 动态链接库有几个重要的优点。一个主要的优点是动态链接库中的函数可以在几个并行执行的程序之间共享,这将节省相同函数占用的内存空间。另一个优点是动态链接库在调用其中的函数之前是不会加载到内存中的。也就是说,如果不使用给定动态链接库中的函数,该动态链接库就不会占用内存空间

11、解释“优先级队列”这一抽象数据类型及实现方法

如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。

缺省情况下,优先级队列利用一个最大堆完成 函数列表: empty() 如果优先队列为空,则返回真 pop() 删除第一个元素 push() 加入一个元素

size() 返回优先队列中拥有的元素的个数 top() 返回优先队列中有最高优先级的元素

用途就不用多说了吧,例如Huffman编码、分支限界、A*启发式都需要用到优先队列存放信息。

12、逆波兰式用什么数据结构算法的效率比较高,为什么

13、C和C++,C++和Java的区别

C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。

所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为面向对

14、什么是预处理

程序设计中的预处理(Preprocess),程序设计领域,预处理是在程序源代码被编译之前,由预处理器(Preprocessor)对程序源代码进行的处理。这个过程并不对程序的源代码进行解析,但它把源代码分割或处理成为特定的符号用来支持宏调用。

预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见 的预处理有:文件包含,条件编译、布局控制和宏替换4种。 15、堆和栈的区别

栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。

堆栈(英文:stack),也可直接称栈。台湾作堆叠,在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指标,英文为top)进行加入资料(push)和输出资料(pop)的运算。另外堆栈也可以用一维阵列或连结串行的形式来完成。堆栈的另外一个相对的操作方式称为伫列。

由于堆栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。

堆栈数据结构使用两种基本操作:推入(push)和弹出(pop):

17、简述在面向对象程序设计中,引入继承和封装的主要作用 继承:代码重用 封装:代码安全

18、简述C语言中指针及其作用 19、Java语言的多线程机制

20、简述四种常见的数据逻辑结构

① 集合 集合中任何两个数据元素之间都没有逻辑关系,组织形式松散。

④ 图状结构 图状结构中的结点按逻辑关系互相缠绕,任何两个结点都可以邻接 21、简述在一棵二叉排序树中查找一特定元素x的算法过程

二叉排序树(Binary Sort Tree)又称二叉查找树。 它或者是一棵空树; 或者是具有下列性质的二叉树:

(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;

(3)左、右子树也分别为二叉排序树;

在最坏的情况是,两子数列拥有大各为 1 和 n-1,且调用树(call tree)变成为一个 n 个嵌套(nested)调用的线性连串(chain)。第 i 次调用作了O(n-i)的工作量,且递归关系式为: 这与插入排序和选择排序有相同的关系式,以及它被解为T(n) = O(n2)。

它的最坏情况是很恐怖的,需要

空间,远比数列本身还多。

23、简述在一带权有向图中寻找关键路径的基本思想 关键路径:关键路径是指网络终端元素的元素的序列,该序列具有最长的总工期并决定了整个项目的最短完成时间。在AOE网中,从始点到终点具有最大路径长度(该路径上的各个活动所持续的时间之和)的路径为关键路径 关键活动:关键路径上的活动称为关键活动。 只有所有关键活动提前完成,整个工程才能提前完成。

最早可能开始时间Ve[i]:从原点到顶点Vi最长路径的长度(之前所有事情做完了才可能开始); 最迟允许开始时间Vl[i]:保证汇点Vn-1在Ve[n-1]时刻完成的前提下(整体工期不拖),事件Vi最迟允许的开始时间。Vl[i]=min{Vl[k]-dur()} 关键活动:松弛时间(slack time)Al[j]-Ae[k]==0的节点。 24、类作用域和文件作用域的区别是什么 文件作用域也称“全局作用域”。 ?

?

? 定义在所有函数之外的标识符,具有文件作用域,作用域为从定义处到整个源文件结束。 文件中定义的全局变量和函数都具有文件作用域。 如果某个文件中说明了具有文件作用域的标识符,该文件又被另一个文件包含,则该标识符的作用域延伸到新的文件中。如cin和cout是在头文件iostream.h中说明的具有文件作用域的标识符,它们的作用域也延伸到嵌入iostream.h的文件中。

操作系统 1. 进程和线程的区别及联系,操作系统的程序栈… 线程和进程的区别:

1、 线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。

2、 一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。


考研计算机复试面试题总结(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:落实统计工作要点

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: