省建设信息中心笔试

报异构数据研发岗,笔试题目:

一,java部分笔试题

1、final, finally, finalize的区别?

final:如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在new一个对象时初始化(即只能在声明变量或构造器或代码块内初始化),而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能覆盖(重写)。

finally在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize:方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。注意:finalize不一定被jvm调用,只有当垃圾回收器要清除垃圾时才被调用。

2、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

Overload是重载的意思,Override是覆盖的意思,也就是重写。

重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。

至于Overloaded的方法是否可以改变返回值的类型这个问题,要看你倒底想问什么呢?这个题目很模糊。如果几个Overloaded的方法的参数列表不一样,它们的返回者类型当然也可以不一样。但我估计你想问的问题是:如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载Overload。这是不行的,我们可以用反证法来说明这个问题,因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用map.remove(key)方法时,虽然remove方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。

override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以下的几点:

3、值传递还是引用传递的区别? 

值传递:指的是在方法调用时,传递的参数是按值的拷贝传递;

引用传递:指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。

 

4、MVC基本概念?优缺点?

MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"

MVC的优点 低耦合性 

视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。 

高重用性和可适用性

 较低的生命周期成本 
MVC使开发和维护用户接口的技术含量降低。 快速的部署 
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。

5、jvm概念和运行机制?

JVM是虚拟机,也是一种规范 , 他遵循着冯·诺依曼体系结构的设计原理。 冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操作码和地址码 组成,操作码决定了操作类型和所操作的数的数字类型,地址码则指出地址码和操作数。从dos到window8,从unix到ubuntu和CentOS, 还有MAC OS等等,不同的操作系统指令集以及数据结构都有着差异,而JVM通过在操作系统上建立虚拟机,自己定义出来的一套统一的数据结构和操作指令,把同一套语 言翻译给各大主流的操作系统,实现了跨平台运行,可以说 JVM是java的核心,是java可以一次编译到处运行的本质所在 。

6、什么是内部类?Static Nested Class 和 Inner Class的不同?

答:定义在封装类内部的类就是内部类。

7.MVC的各个部分都有那些技术来实现?如何实现?
答:MVC是Model-View-Controller的简写。"Model"代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),"View"是应用的表示面(由JSP页面产生),"Controller"是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用

8、String 和StringBuffer的区别?

答:StringBuffer是可变的,但是String是不可变的。String实例化以后所有的属性都是final的,而StringBuffer确不是。

9、同步和异步有何异同,在什么情况下分别使用他们?举例说明。

答:同步(synchronized)和异步(asynchronized)是对于多线程(multi-threading)而言的 同步可防止并发 主要出于数据安全的考虑  ,如某一线程在执行完对数据的加法操作后 在还没来得及使用新数据之前 被另一线程就抢先执行了减法操作 。这样它就没法得到它单一施加影响的数据结果,存在安全隐患 异步允许并发

ajax技术通常都是异步实现的  
去服务端请求数据的同时 前台的操作不会阻塞 而是异步进行 节省时间的同时保证了效率

10、垃圾回收的优点和原理。并考虑2种回收机制?

答:Java垃圾收集器使用有向图的方式进行内存管理,当一个对象不可达时(没有引用指向该对象时),垃圾就会对其进行回收。

11、java中会存在内存泄漏吗,请简单描述。

答:存在,Java中的垃圾收集器只能回收一部分内存,所以还是会存在内存泄漏的。

 

posted on 2016-06-28 15:27  楼兰过客  阅读(290)  评论(0编辑  收藏  举报

导航