计算机考研面试题目Word下载.docx
《计算机考研面试题目Word下载.docx》由会员分享,可在线阅读,更多相关《计算机考研面试题目Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
用户是经过EventManager来和浏览器做交互的,相应的事件有:
用户的键盘输入,鼠标击打,浏览器监听(窗口改变大小,改变字体)等等;
在和用户交互时不需要刷新页面,一切在后台进行。
它允许你从服务器经过AJAX来获取或者提交数据而且在第一时间执行你的反馈。
JavaEE
MVC:
开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序能够使用不同的表现形式。
比如一批统计数据能够分别用柱状图、饼图来表示。
C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
[1-2]
Hibernate是一个实现数据持久化的工具项目,它能够被嵌入到J2EE服务器中使用,也能够直接从客户端调用,一般的使用方式是将Hibernate嵌入到Tomcat和JBoss等服务器中使用。
简单的说就是在表的记录与与表对应的持久化类的实例之间进行转换。
Spring:
Spring表示是一个开源框架,是为了解决企业应用程序开发复杂性。
框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不但限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都能够从Spring中受益。
◆目的:
解决企业应用开发的复杂性
◆功能:
使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:
任何Java应用
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
◆轻量——从大小与开销两方面而言Spring都是轻量的。
完整的Spring框架能够在一个大小只有1MB多的JAR文件里发布。
而且Spring所需的处理开销也是微不足道的。
另外,Spring是非侵入式的:
典型地,Spring应用中的对象不依赖于Spring的特定类。
◆控制反转——Spring经过一种称作控制反转(IoC)的技术促进了松耦合。
当应用了IoC,一个对象依赖的其它对象会经过被动的方式传递进来,而不是这个对象自己创立或者查找依赖对象。
你能够认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
◆面向切面——Spring提供了面向切面编程的丰富支持,允许经过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。
应用对象只实现它们应该做的——完成业务逻辑——仅此而已。
它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你能够配置你的每个bean如何被创立——基于一个可配置原型(prototype),你的bean能够创立一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。
然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
◆框架——Spring能够将简单的组件配置、组合成为复杂的应用。
在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。
Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
◆MVC——Spring的作用是整合,但不但仅限于整合,Spring框架能够被看做是一个企业解决方案级别的框
架。
客户端发送请求,服务器控制器(由DispatcherServlet实现的)完成请求的转发,控制器调用一个用于映射的类HandlerMapping,该类用于将请求映射到对应的处理器来处理请求。
HandlerMapping将请求映射到对应的处理器Controller(相当于Action)在Spring当中如果写一些处理器组件,一般实现Controller接口,在Controller中就能够调用一些Service或DAO来进行数据操作ModelAndView用于存放从DAO中取出的数据,还能够存放响应视图的一些数据。
如果想将处理结果返回给用户,那么在Spring框架中还提供一个视图组件ViewResolver,该组件根据Controller返回的标示,找到对应的视图,将响应response返回给用户。
所有Spring的这些特征使你能够编写更干净、更可管理、而且更易于测试的代码。
它们也为Spring中的各种模块提供了基础支持。
JAVAEE:
是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。
核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循架构的不同平台之间,存在良好兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。
Struts:
struts是开源软件。
使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。
它采用MVC模式,能够很好地帮助java开发者利用J2EE开发Web应用。
和其它的java架构一样,Struts也是面向对象设计,将MVC模式"
分离显示逻辑和业务逻辑"
的能力发挥得淋漓尽致。
Structs框架的核心是一个弹性的控制层,基于如JavaServlets,JavaBeans,ResourceBundles与XML等标准技术,以及JakartaCommons的一些类库。
JSON:
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。
它基于JavaScript(StandardECMA-2623rdEdition-December1999)的一个子集。
JSON采用完全独立于语言的文本格式,可是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。
这些特性使JSON成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成。
JSON能够将JavaScript对象中表示的一组数据转换为字符串,然后就能够在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序。
AJAX:
在基于数据的应用中,用户需求的数据如联系人列表,能够从独立于实际网页的服务端取得而且能够被动态地写入网页中,给缓慢的Web应用体验着色使之像桌面应用一样。
Ajax的核心是JavaScript对象XmlHttpRequest。
该对象在InternetExplorer5中首次引入,它是一种支持异步请求的技术。
简而言之,XmlHttpRequest使您能够使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
AJAX不是一种新的编程语言,而是一种用于创立更好更快以及交互性更强的Web应用程序的技术。
对计算机科学的认识
本专业是计算机硬件与软件相结合、面向系统、侧重应用的宽口径专业。
经过基础教学与专业训练,培养基础知识扎实、知识面宽、工程实践能力强,具有开拓创新意识,在计算机科学与技术领域从事科学研究、教育、开发和应用的高级人才。
当今计算机技术正朝着巨型化、微型化、网络化和智能化方向发展。
当今计算机科学发展趋势,能够把它分为三维考虑。
一维是是向"
高"
的方向。
性能越来越高,速度越来越快,主要表现在计算机的主频越来越高。
像前几年我们使用的都是286、386、主频只有几十兆。
美国另一项计划的目标是左右推出每秒一千万亿次并行计算机(Petaflops计算机),其处理机将采用超导量子器件,每个处理机每秒100亿次,共用10万个处理机并行。
另一个方向就是向“广”度方向发展,计算机发展的趋势就是无处不在,以至于像“没有计算机一样”。
近年来更明显的趋势是网络化与向各个领域的渗透,即在广度上的发展开拓。
第三个方向是向"
深"
度方向发展,即向信息的智能化发展。
网上有大量的信息,怎样把这些浩如烟海的东西变成你想要的知识,这是计算科学的重要课题,同时人机界面更加友好。
当前计算机"
思维"
的方式与人类思维方式有很大区别,人机之间的间隔还不小。
人类还很难以自然的方式,如语言、手势、表情与计算机打交道,计算机难用已成为阻碍计算机进一步普及的巨大障碍。
估计5-内手写和口语输入将逐步成为主流的输入方式。
手势(特别是哑语手势)和脸部表情识别也已取得较大进展。
使人沉浸在计算机世界的虚拟现实(VirtualReality)技术是近几年来发展较快的技术,21世纪将更加迅速的发展。
1.C的结构体和C++结构体的区别
1.1C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。
因此C的结构体是没有构造函数、析构函数、和this指针的。
1.2C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。
1.3C语言的结构体是不能够继承的,C++的结构体是能够从其它的结构体或者类继承过来的。
以上都是表面的区别,实际区别就是面向过程和面向对象编程思路的区别:
C的结构体只是把数据变量给包裹起来了,并不涉及算法。
而C++是把数据变量及对这些数据变量的相关算法给封装起来,而且给对这些数据和类不同的访问权限。
C语言中是没有类的概念的,可是C语言能够经过结构体内创立函数指针实现面向对象思想。
2.C++的结构体和C++类的区别
2.1C++结构体内部成员变量及成员函数默认的访问级别是public,而c++类的内部成员变量及成员函数的默认访问级别是private。
2.2C++结构体的继承默认是public,而c++类的继承默认是private。
静态链接库、动态链接库与COM组件的区别
1.动态链接库与静态链接库的区别。
1.1静态链接库作为代码的一部分,在编译时被链接。
1.2动态链接库有两种使用方式:
一种是静态加载,即在应用程序启动时被加载;
一种是动态加载,即是该动态链接库在被使用时才被应用程序加载。
2.动态链接库和COM组件的区别
2.1动态链接库的表现形式只能是dll[变态该名的除外],COM组件的表现形式能够是dll也能够是exe。
注:
其实字体、驱动等也算是动态链接库的一种,这里略去...
2.2动态链接库的生成和编译器及系统相关,在Windows/Linux下系统,需要分别编译才能使用。
COM组件是二进制编码,在Windows和Linux下能够直接使用,不需要重新编译。
2.3COM组件是按照COM规范实现的dll或者exe;
动态链接库是一个能够导出函数的函数集合。
2.4动态链接库只能在本机被调用,COM组件支持分布式使用。
MAC地址是不能经过IP来查询的!
局域网如何根据ip查mac
cmd
pingip地址
arp-a
即使ping不通,只要她机开着,都能够看到MAC!
!
显示和修改“地址解析协议(ARP)”缓存中的项目。
ARP缓存中包含一个或多个表,它们用于存储IP地址及其经过解析的以太网或令牌环物理地址。
计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。
如果在没有参数的情况下使用,则arp命令将显示帮助信息。
-a[InetAddr][-NIfaceAddr]
显示所有接口的当前ARP缓存表。
要显示特定IP地址的ARP缓存项,请使用带有InetAddr参数的arp-a,此处的InetAddr代表IP地址。
如果未指定InetAddr,则使用第一个适用的接口。
要显示特定接口的ARP缓存表,请将-NIfaceAddr参数与-a参数一起使用,此处的IfaceAddr代表指派给该接口的IP地址。
-N参数区分大小写。
BIOS
BIOS设置程序是储存在BIOS芯片中的,BIOS芯片是主板上一块长方形或正方形芯片,只有在开机时才能够进行设置。
BIOS是:
直译过来后中文名称就是"
基本输入输出系统"
其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。
其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
数学中的梯度是什么意思?
在向量微积分中,标量场的梯度是一个向量场。
标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。
更严格的说,从欧氏空间Rn到R的函数的梯度是在Rn某一点最佳的线性近似。
在这个意义上,梯度是雅戈比矩阵的一个特殊情况。
在单变量的实值函数的情况,梯度只是导数,或者,对于一个线性函数,也就是线的斜率。
梯度一词有时用于斜度,也就是一个曲面沿着给定方向的倾斜程度。
能够经过取向量梯度和所研究的方向的点积来得到斜度。
梯度的数值有时也被成为梯度。
如果你是问在纯数学中的作用,那就是反映那个量变化的有多剧烈;
多元微积分中则还反映在哪个方向上变化最剧烈.
云计算
云计算[1]是基于互联网的相关服务的增加、使用和交付模式,一般涉及经过互联网来提供动态易扩展且经常是虚拟化的资源。
定义:
“云计算是经过网络提供可伸缩的廉价的分布式计算能力”。
云计算代表了以虚拟化技术为核心、以低成本为目标的动态可扩展网络应用基础设施,是近年来最有代表性的网络计算技术与模式。
云计算是:
分布式计算、并行计算、效用计算、[3]网络存储、虚拟化、负载均衡等传统计算机和网络技术发展融合的产物。
云计算是经过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将与互联网更相似。
这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
好比是从古老的单台发电机模式转向了电厂集中供电的模式。
它意味着计算能力也能够作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。
最大的不同在于,它是经过互联网进行传输的。
网格计算:
分布式计算的一种,由一群松散耦合的计算机组成的一个超级虚拟计算机,常见来执行一些大型任务;
效用计算:
IT资源的一种打包和计费方式,比如按照计算、存储分别计量费用,像传统的电力等公共设施一样;
算法的时间复杂度
一个算法花费的时间与算法中语句的执行次数成正比例。
一个算法中的语句执行次数称为语句频度或时间频度。
记为T(n)。
计算方法
1.一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:
T(n)=O(f(n))
分析:
随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,因此f(n)越小,算法的时间复杂度越低,算法的效率越高。
2.在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T(n)的同数量级(它的同数量级有以下:
1,log
(2)n,n,nlog
(2)n,n的平方,n的三次方,2的n次方,n!
),找出后,f(n)=该数量级,若T(n)/f(n)求极限可得到一常数c,则时间复杂度T(n)=O(f(n))
十种程序设计语言
PASCAL、C、Ada
FORTRAN、BASIC、VisualBasic、Java、C++、Go、Delphi、F#
SQL、PowerBuilder、
static全局变量与普通的全局变量有什么区别?
全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。
全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。
这两者在存储方式上并无不同。
这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。
由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此能够避免在其它源文件中引起错误。
从以上分析能够看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。
把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
static函数与普通函数作用域不同。
仅在本文件。
只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。
对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
static全局变量与普通的全局变量有什么区别:
static全局变量只初使化一次,防止在其它文件单元中被引用;
static局部变量和普通局部变量有什么区别:
static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:
static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
C语言中讲讲static变量和static函数有什么作用
static关键字有两种意思,你看上下文来判断
1,表示变量是静态存储变量
表示变量存放在静态存储区.
2,表示该变量是内部连接
(这种情况是指该变量不在任何{}之内,就象全局变量那样,这时候加上static)
也就是说在其它的.cpp文件中,该变量是不可见的(你不能用).
当static加在函数前面的时候
表示该函数是内部连接,之在本文件中有效,别的文件中不能应用该函数.
不加static的函数默认为是全局的.
也就是说在其它的.cpp中只要申明一下这个函数,就能够使用它.
1、static全局变量与普通的全局变量有什么区别?
static局部变量和普通局部变量有什么区别?
static函数与普通函数有什么区别?
答:
全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。
这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。
从以上分析能够看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。
static函数与普通函数作用域不同。
static函数仅在本文件中使用。
static全局变量与普通的全局变量有什么区别:
static局部变量和普通局部变量有什么区别:
static函数与普通函数有什么区别:
2、如何引用一个已经定义过的全局变量?
extern
能够用引用头文件的方式,也能够用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。
3、全局变量可不能够定义在可被多个.C文件包含的头文件中?
为什么?
答:
能够,在不同的C文件中以static形式来声明同名全局变量。
能够在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。
比较两个浮点数大小
在计算机中表示一个浮点数,其结构如下:
尾数部分(定点小数)阶码部分(定点整数)
是2的指数形式来表示小数。
因此一个小数用浮点数来表示,肯定是有误差的。
比如说两个运算过程,它们的结果都是2,可是由于浮点运算过程不一样,它结果可能有差异,比如说可能一个结果为2,一个结果为1..
因此用==号来比较,会得出错误的结果,浮点数比较相等的时候,用两个数的相减,当小于一个比较小的值时,就认为相等。
3D打印
3D打印,即快速成型技术的一种,它是一种以数字模型文件为基础,运用粉末状金属或塑料等可粘合材料,经过逐层打印的方式来构造物体的技术。
3D打印一般是采用数字技术材料打印机来实现的。
常在模具制造、工业设计等领域被用于制造模型,后逐渐用于一些产品的直接制造,已经有使用这种技术打印而成的零部件。
该技术在珠宝、鞋类、工业设计、建筑、工程和施工(AEC)、汽车,航空航天、牙科和医疗产业、教育、地理信息系统、土木工程、枪支以及其它领域都有所应用。
[1]
而所谓的3D打印机与普通打印机工作原理基本相同,只是打印材料有些不同,普通打印机的打印材料是墨水和纸张,而3D打印机内装有金属、陶瓷、塑料、砂等不同的“打印材料”,是实实在在的原材料,打印机与电脑连接后,经过电脑控制能够把“打印材料”一层层叠加起来,最终把计算机上的蓝图变成实物。
通俗地说,3D打印机是能够“打印”出真实的3D物体的一种设备,比如打印一个机器人、打印玩具车,打印各种模型,甚至是食物等等。
之因此通俗地称其为“打印机”是参照了普通打印机的技术原理,因为分层加工的过程与喷墨打印十分相似。
这项打印技术称为3D立体打印技术。
[2]
大数据