南大计算机面试问题汇总及部分答案.docx
《南大计算机面试问题汇总及部分答案.docx》由会员分享,可在线阅读,更多相关《南大计算机面试问题汇总及部分答案.docx(16页珍藏版)》请在冰豆网上搜索。
南大计算机面试问题汇总及部分答案
1.概率上面的中心极限定理
2.算法题,上台阶问题:
一共n级台阶,你一次只能上一级或者两级,请问有几种不同的走法?
提示,用递归实现。
。
。
。
其实就是斐波那契数列的应用。
3.用英语叙述一下你在研究生期间有什么打算,准备从事哪个方向的研究
4.介绍一下图灵机
5.介绍一下图像处理方面的几个相关算法
6.介绍一下你的毕设情况,越详细越好。
7.用英语介绍一门你比较熟悉的语言。
8.算法题:
一次性遍历出一个单链表的中间节点。
9.介绍一下有关嵌入式的东西,譬如说嵌入式系统、软件之类的。
10.指针传递与值传递的不同
11.傅立叶变换将时域转变为什么?
频域!
12.n个科学家,对应有n顶帽子,现把帽子放在一起,每个科学家拿一顶,问每个科学家都拿到不是自己的帽子的概率有多大?
13.c++和c比,最特别的地方是什么。
(面向对象,类的封装,默认是private,将操作和数据合在一起等,继承。
。
。
)
14.tcp和udp的有无连接问题。
15.网络的七层协议是什么。
16.多态,继承,C和C++不同
多态是:
一个对象可以被多个其他对象动态调用
继承是:
一个子类可以继承父类的属性,和方法。
c是面向过程的,数据与算法分开。
它的重点在于算法和数据结构。
侧重于计算机底层操作。
c++是面向对象的,主要特点是类,封装和继承。
与C的区别主要为:
类、继承和多重继承、运算符重载、类模板、C++标准库、模板库。
17.一群数里面每个数出现两次,只有一个数出现一次,怎样用N的复杂度找到只出现一次的数
两个相同的数异或结果为0
0与任何数异或结果还是这个数
18.数据库ACID
ACID,是指在数据库管理系统(DBMS)中事务所具有的四个特性:
原子性(Atomicity)事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
一致性(Consistency)事务在完成时,必须使所有的数据都保持一致状态、隔离性(Isolation,又称独立性)由并发事务所作的修改必须与任何其它并发事务所作的修改隔离、持久性(Durability)事务完成之后,它对于系统的影响是永久性的
19.一个方格,从左上角走到右下角,只能向下后者向右,问有几种走法
假设从(1,1)走到(m,n),则向下走m-1格,向右走n-1格,根据全排列,有[(m-1)+(n-1)]!
种走法,再去重复计算,有[(m-1)+(n-1)]!
/[(m-1)!
*(n-1)!
]种不同走法。
20.google关于云申请了哪些专利&*%……%……%云计算
通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将与互联网更相似。
这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
21.内存泄露
内存泄漏形象的比喻是“操作系统可提供给所有进程的存储空间正在被某个进程榨干”,最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃。
这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于磁盘交换区的设定的大小由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。
22.多态
23.const的用法
(1)说明值常量
(2)说明指针
(3)说明函数参数及其返回值
(4)说明类的常量和成员函数
Const和指针的三种经典组合
(1)指向常量的指针——constint*p;
(2)常指针——char*constpc=’a’;
(3)指向常量的常指针——constchar*constpc=’a’
24.语法分析的作用,
26.whatisyourmotivationtonanjinguniversity?
27.说说伪随机数
真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。
而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的。
我们可以这样认为这个可预见的结果其出现的概率是100%。
所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。
28.说说什么是大数定律,我说我知道中心极限可以不
大数定理就是“当试验次数足够多时,事件出现的频率无穷接近于该事件发生的概率。
中心极限定理:
设从均值为μ、方差为σ^2;(有限)的任意一个总体中抽取样本量为n的样本,当n充分大时,样本均值的抽样分布近似服从均值为μ、方差为σ^2/
的正态分布。
29.特征值的定义
在A变换的作用下,向量ξ仅仅在尺度上变为原来的λ倍。
称ξ是A的一个特征向量,λ是对应的特征值(本征值)
30.如何在100W个,或者更多的数据里面找到前50个;堆排序(数据较大用log2n复杂度的堆
排序速度最快
31.图灵测试
图灵测试是测试人在与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随
意提问。
问过一些问题后,如果测试人不能确认被测试者30%的答复哪个是人、哪个是机器的回答,那么这
台机器就通过了测试,并被认为具有人类智能。
“图灵机”不是一种具体的机器,而是一种思想模型,可制
造一种十分简单但运算能力极强的计算装置,用来计算所有能想象得到的可计算函数。
32.说说c++里面面向对象的特点
33.什么是云计算
“云计算是通过网络提供可伸缩的廉价的分布式计算能力”。
通过使计算分布在大量的分布式计算机上,
而非本地计算机或远程服务器中,企业数据中心的运行将与互联网更相似。
这使得企业能够将资源切换到
需要的应用上,根据需求访问计算机和存储系统。
34.图灵机,然后是图灵机和有限自动机的区别(忘记了)
所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有
不同的颜色。
有一个机器头在纸带上移来移去。
机器头有一组内部状态,还有一些固定的程序。
在每个时刻
,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到
纸带方格上,并转换自己的内部状态,然后进行移动
35.说说编译哪些步骤,然后说说程序是怎么编译的。
LL1LR
36.线程与进程的区别,进程调度
37.howtoinstallanoperatingsystem?
开机进入BIOS界面选中上下方向键移动AdvancedBIOSFeatures,按回车键,进入下一界面上下方向键移动到boot,,选择CD-ROMdrive,然后+调整启动顺序,F10保存。
38.汽水1元一瓶,2个空瓶换一瓶,20块最多能喝多少瓶(39)
一开始20瓶没有问题,随后的10瓶和5瓶也都没有问题,接着把5瓶分成4瓶和1瓶,前4个空瓶再换2瓶,喝完后2瓶再换1瓶,此时喝完后手头上剩余的空瓶数为2个,把这2个瓶换1瓶继续喝,喝完后把这1个空瓶换1瓶汽水,喝完换来的那瓶再把瓶子还给人家即可,所以最多可以喝的汽水数为:
20+10+5+2+1+1=39
39.一张纸对折30次大概有多高?
应该是0.00005乘以2的30次方即0.0005*2^30=53687.0912米,很简单的推算:
对折一次,就是乘以2,即0.00005*2^1,对折两次,就有4倍这么厚了,就是乘以4,即0.00005*2^2
以此类推,对折30次应该是乘以2的30次方
40.进程死锁与饿死的区别
饥饿是一个进程因为优先级和算法的原因使得其请求的资源在新请求进程优先级较高情况下永远不会分配给它的情况.死锁是2个或2个以上进程都请求临界资源而又不放弃自己已占用的资源,发生死锁时存在一条环,环上各个进程申请的资源(互斥访问)都被环上其他资源所占用.
41.进程同步于互斥的共同点与不同点(不是单个的概念解释)
互斥:
是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。
但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:
是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。
在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。
少数情况是指可以允许多个访问者同时访问资源
42.进程间通信的几种方式,以及实际的经验?
43.c与c++的区别,类,模板
44.vector与数组的区别
C++的数组是一种内置类型,其大小运行期不可改变,内容存储于栈上。
vector是stl标准库中的类模板,其大小运行期确定,内容存储于堆上
45.软件工程测试
46.说说栈和队列的区别,以及它们分别的应用;
从数据结构角度看,都是受限线性结构。
队列先进先出,栈先进后出
47.有若干根非均匀的香,均可烧一小时,如何确定十五分钟;
先用一根香点燃一根香的两端和另一根香的一端,等那两端的香燃烧后点燃另一根香,从此时到这香燃烧完了就是15分钟
48.有四个装有粒状药瓶的瓶子,其中三瓶中每一粒药瓶的重量均为x,另一瓶药由于受潮每一粒变为x+1.现有一电子称,问如何只称一次确定哪一瓶药受潮;
将药瓶编号1234第一瓶拿一颗第二瓶两颗第三瓶三颗第四瓶四颗若不受潮为10X多出来了几就是第几瓶
天平两端各放两瓶,看哪一端重,同时各拿下一瓶,若平衡了,重的那端拿下来的就是要找的,若不平衡,重的那端没拿下来的就是要找的。
49.什么是归并排序?
它的时间复杂度是多少?
这是它的平均复杂度还是最差复杂度?
如果是平均复杂度,那么它的最差复杂度是多少,为什么;
7.说说如果让你设计一个“智能书架(或者智能冰箱之类的)”,你会使用什么样的技术。
为什么?
应答器是指能够传输信息回复信息的电子模块,近些年,由于射频技术发展迅猛,应答器有了新的说法和含义,又被叫做智能标签或标签。
RFID电子标签的阅读器通过天线与RFID电子标签进行无线通信,可以实现对标签识别码和内存数据的读出或写入操作。
RFID技术可识别高速运动物体并可同时识别多个标签,操作快捷方便。
类似于条形码。
50.constchar*p与charconst*p的区别;
51.int*p;*p=0;请问上述代码有错吗;未对指针进行初始化
这说明在指针定义的时候,指针已经指向(可能指向)一个未知的内存空间,只不过这个空间在用户可访问和修改级别未知
52.学过数据库吧,说说数据库中的一些名词。
模式、视图、触发器、范式等等。
老师就要我说说视图的作用;
53.本科专业是什么,最喜欢计算机相关的什么课程,OS总的分为几个大方面,
操作系统分成处理机管理,存储管理,设备管理,文件管理和用户接口几部份
以及数据结构中常见排序算法,具体阐述是怎么各自实现的,在复杂度上有什么区别;排序算法很重要
54.C++相比较C,C#最大的特色是什么,让我在纸上简单的写几个最有特色的代码例子,可以不按照程序设计过程,只需要写出相应关键处,然后具体阐述一下。
55.安卓开发和Java最大的区别在于什么,
Java程序和Android程序的区別在于Android程序是基于组件,基于配置的.Android虽然使用Java语言作为开发工具,但是在实际开发中发现,还是与JavaSDK有一些不同的地方。
AndroidSDK引用了大部分的JavaSDK,少数部分被AndroidSDK抛弃,
56.数据结构中常见排序算法,各种复杂度分别为多少
intf(intx,intn){
intret=1;
while(n>0){
if(n%2==1)ret=ret*x;//奇数次
x=x*x;//偶数次倍乘
n=n/2;
}
returnret;
57.自顶向下测试,是从程序的顶部或初始模块开始。
⊙测试开始之后,挑选哪一个后续模块进行增量测试没有惟一正确的方法;
⊙惟一的原则是:
要成为合乎条件的下一个模块,至少一个该模块的从属模块(调用它的模块)事先经过了测试。
⊙该测试策略里边最关键的可能就是编写桩模块了。
⊙它涉及到的几个关键点概括为:
桩模块的返回信息一定要给予此次调用所希望的返回值,否则调用模块将会发生失效或是产生一个混乱的结果;早期,测试数据要通过其一个或多个桩模块提交给模块的。
⊙需要指出一点,就是测试完一个模块后,就用一个实际的模块代替其中的一个桩模块,而该模块需要的桩模块也被添加起来。
需要注意的是:
不存在最佳的模块序列。
但尽量让包含I/O操作的桩模块和重要的桩模块添入。
自底向上测试,是开始于程序的终端模块,此类模块不再调用其他任何模块。
⊙测试完这些模块之后,同样没有最佳的方法来挑选要进行增量测试的下一个模块;
⊙惟一正确的原则是:
要成为合乎条件的下一个模块,该模块所有的从属模块(它调用的模块)都已经事先经过了测试。
⊙需要指出的是,如果终端模块是多个的话,既可以进行串行测试,也可以进行并行测试。
且每一个模块都需要一个特殊的驱动模块,即:
包含着有效的测试输入、调用被测模块且将输出显示出来(或将实际输出与预期输出作比较)的模块。
⊙对于测试序列也同自顶向下测试的一样。
58.什么是结构化程序设计
结构化程序设计(structuredprogramming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。
结构化程序设计的三种基本结构是:
顺序结构、选择结构和循环结构。
一个复杂问题,肯定是由若干稍简单的问题构成。
模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。
59.树(不是二叉树)的后序遍历该怎么实现
60.死锁的4个必要条件
产生死锁的原因主要是:
(1)因为系统资源不足。
(2)进程运行推进的顺序不合适。
(3)资源分配不当等。
(1)互斥条件:
一个资源每次只能被一个进程使用。
(2)请求与保持条件:
一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不剥夺条件:
进程已获得的资源,在末使用完之前,不能强行剥夺。
(4)循环等待条件:
若干进程之间形成一种头尾相接的循环等待资源关系。
61.什么是插入排序,最好和最坏的时间复杂度
62.const跟#define相比,有何优点
1,const进行类型检查
2.const支持一些编译器的断点调试
63.什么是红黑树?
红黑树是用来干什么的?
红黑树是一种自平衡二叉查找树
64.图形与图像有什么区别?
怎么存储的?
65.MapReduce的英文,
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
概念"Map(映射)"和"Reduce(规约)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。
他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。
当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(规约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
66.并行计算与集群有神马区别?
有哪些并行计算。
并行计算:
并行计算是相对于串行计算来说的。
可分为时间上的并行和空间上的并行。
时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。
并行计算的目的就是提供单处理器无法提供的性能(处理器能力或存储器),使用多处理器求解单个问题。
分布式计算:
分布式计算研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
最近的分布式计算项目已经被用于使用世界各地成千上万位志愿者的计算机的闲置计算能力,通过因特网,可以分析来自外太空的电讯号,寻找隐蔽的黑洞,并探索可能存在的外星智慧生命等。
集群计算:
计算机集群使将一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。
在某种意义上,他们可以被看作是一台计算机。
集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。
集群计算机通常用来改进单个计算机的计算速度和/或可靠性。
一般情况下集群计算机比单个计算机,比如工作站或超级计算机性价比要高得多。
根据组成集群系统的计算机之间体系结构是否相同,集群可分为同构与异构两种。
集群计算机按功能和结构可以分为,高可用性集群(High-availability(HA)clusters)、负载均衡集群(Loadbalancingclusters)、高性能计算集群(High-performance(HPC)clusters)、网格计算(Gridcomputing)。
67.什么是MVC?
为什么要用MVC?
MVC全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑和数据显示分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
耦合性,低重用性高,生命周期成本低,具体看XX百科
68.C++与Java的区别?
Java无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如指针悬空所造成的系统崩溃。
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。
尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。
Java不支持多重继承,但允许一个类继承多个接口(界面),实现了c++多重继承的功能,又避免了c++的
许多缺陷。
Java不支持操作符重载。
操作符重载被认为是c十十的突出特征,在Java中虽然类大体上pJ以实现这样的功能,但操作符重载的方便性仍然丢失了不少。
c和c十十不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(strinR和stringBuffer)来实现的,这些类对象是Java语言
69.看镜子,为啥上下不颠倒,左右颠倒?
因为人的影象与人是关于镜子对称的,而镜子是立着放的,所以镜子中人就是颠倒左右,
而颠倒上下只要将镜子横着放,人站在镜子上就是上下颠倒了.
因为镜子的原理是:
物像对称,以镜面为对称轴。
70.一道解释希尔排序,一道进程和管程区别,云计算的,英语口语说运动,解释哈希表,散列表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。
也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
这个映射函数叫做散列函数,存放记录的数组叫做散列表。
解释avl,
高度为h的AVL树,节点数N最多2^h−1;最少N(h)=N(h−1)+N(h−2)+1。
71.数据库的视图的概念;视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。
视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。
可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。
视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。
那些用于产生视图的表叫做该视图的基表。
一个视图也可以从另一个视图中产生。
72.(x+1)^10,展开后系数是奇数的概率(就是有多少项系数是奇数)
(X+1)^10展开式中的系数为:
1,C10
(1),C10
(2),C10(3),C10(4),C10(5),C10(4),C10(3),C10
(2),C10
(1),1.
奇数有:
1,1,C10
(2),C10
(2),共4项,该项为奇数的概率为4/11.
(x+1)(x+2)(x+3)(x+4)(x+5)展开式四次项:
(1+2+3+4+5)x^4.
四次项系数:
1+2+3+4+5=15//C排列组合的C
73.什么是函数复用,和继承的区别。
74.智力题,2,3,10,10算24点,可以用+-*/!
^(后两个是阶乘和幂),当时给的是(2*10+10-3!
),然后他说不给*/,没想出来,他说作为学计算机的应该敏感点,结果是(2^10-10^3),啊啊;
75.Http,Ftp的区别;
使用Web浏览器时,这两个协议之间的差异几乎不会对使用的方便性及下载时间产生影响。
不过,两者却拥有各自不同的结构。
HTTP是一种为了将位于全球各个地方的Web服务器中的内容发送给不特定多数用户而制订的协议。
也就是说,可以把HTTP看作是旨在向不特定多数的用户“发放”文件的协议。
HTTP使用于从服务器读取Web页面内容。
Web浏览器下载Web服务器中的HTML文件及图像文件等,并临时保存在个人电脑硬盘及内存中以供显示。
使用HTTP下载软件等内容时的不同之处只是在于是否以Web浏览器显示的方式保存,还是以不显示的方式保存而已。
结构则完全相同。
因此,只要指定文件,任何人都可以进行下载。
另一方面,FTP是为了在特定主机之间“传输”文件而开发的协议。
因此,在FTP通信的起始阶段,必须运行通过用户ID和密码确认通信对方的认证程序。
FTP下载和HTTP下载的区别之一就在与此。
76.类和对象的区别
类是对象的抽象,对象是类的具体实例。
类是抽象的,不占用内存,而对象是具体的,占有内存空间。
例如:
类就是水果,对象就是苹果。
77.英语介绍自己最喜欢用的搜索引擎
78.引用和指针的区别
引用访问一个变量是直接访问,而指针是间接访问。
引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。
79.数1-2n中取任意n+1个数,是否一定有两个数互素(这道题王道上有,去年也有人被问到,我说n+1个数中必有两个相邻,这两个互素)
反证:
假设n+1个两两均不互质于是能找到一个数同时为其他n个数的因子我们都知道1不属于考虑范围内的于是从2开始,假设就是最小的数2那么由于其他的n个数都是2的整数倍而我们知道2n范围内2的整数倍数不会超过n个这还包括2在内而由假设可知2n内有n+1个2的倍数这两者间矛盾矛盾的根源在假设可知原命题成立如果是比2大的数就更不可能了
80.是否知道哥德巴赫猜想,
每一个大偶数都可以写成两个素数的和陈景润证明1+2
81.快速排序算法,时间复杂度,最好与最坏情况
82.通信基站能定位吗?
答能,讲原理,又问能精确定位吗?
基站定位,就是靠从用户手机上获得基站的信息,然后将基站信息上传给基站定位提供商的服务器,服务器拥有这些基站所在地的经纬度信息,返回给用户,用户就知道了自己的大概位置
83.手机和pc的操作系统设计有什么不同?
只是由于手机或者移动终端都采用功耗低的CPU和其他特定的通信组件,因此其操作系统也要专门设计和精简,并符合操作习惯。
84.有3把椅子,其中一把后边藏了奖品,让你只能选一把,中奖概率是多少?
如果你选了一把后(还没看有没有奖品),有人帮你排除了剩下两把中的一把没奖品的,问你要不要改变你的选择?
抽签原理来自全概率公式,是指抽签的顺序和中签的概率无关
85.对什么方向感兴趣?
说人工智能,对分布计算也感兴趣,问Google的分布式系统叫什么?
86.连连看的算法,
87.已知n个数之和,只有两个数不知道,如何找出这两个数。
88.描述一下内存页面管理,什么是TLB,什么是Cache
89.解释下什么是DomainNameSer