发布于 2014-10-16 14:59:03 | 118 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Java函数式编程,程序狗速度看过来!

Java程序设计语言

java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。


谈谈final, finally, finalize的区别: 

final:是一个关键字

被final修饰的类不能被继承。

被final修饰的方法不能被重写。

被final修饰的变量必须在创建时指定初始值,之后不能被修改,相当于一个常量。
finally:在异常处理时一定会执行 finally 块中的操作,一般用于释放资源。

finalize:方法名。finalize()方法在Object中定义,所有的类都具备这个方法,在GC即将在内存中释放对象前执行,用于关闭流等清理工作。

String 和StringBuffer的区别
他们都可以储存和操作字符串。String类是不可变类,StringBuffer类是可变类。任何对String的改变都将生成一个新的String实例,内存中产生大量无用对象,影响性能。而StringBuffer操作的始终是同一个实例。字符串动态改变时,使用StringBuffer性能更高。

StringBuffer和StringBuilder的区别

两者都是可变类,但StringBuffer是线程安全的,StringBuilder是非线程安全的。在单线程处理时建议使用StringBuilder,效率更高。

运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,分为运行时异常和非运行时异常,运行时异常表示虚拟机的通常操作中可能遇到的异常。

Java编译器要求方法必须抛出可能发生的非运行时异常,不要求抛出运行时异常。

 

HashMap和Hashtable的联系和区别: 
联系:都实现了Map接口,都是键值对的方式,且键必须唯一。

区别: HashMap是Hashtable的一个轻量级实现。
HashMap :非线程安全的,不同步,效率高。允许一个null键和多个null值。 
Hashtable :线程安全的,同步,效率低。不允许null 键值。

 

Collection 和 Collections的区别:
Collections是集合的工具类,在java.util包下,包含各种集合操作的静态方法。
Collection是集合类的父接口,也在java.util包下。

 

GC是什么? 为什么要有GC? : 
GC是垃圾收集器,Garbage Collection,由C++发展而来,C++中变量必须手动释放,容易造成内存泄漏。Java对其做了改进,不用 手动控制,GC会自动处理。程序员可以调用System.gc()方法建议进行垃圾回收,但不能保证回收也不能保证立即回收。

finalize()与System.gc()的区别?

gc 只能清除在堆上分配的内存(纯java语言的所有对象都在堆上使用new分配内存)。

finalize()回收其他内存。当使用JNI技术时,可能会在栈上分配内存,例如java调用c程序。

sleep() 和 wait() 有什么区别: 
sleep是线程类(Thread)的方法,让线程暂停执行指定时间,调用sleep不会释放对象锁,把执行机会给其他线程,到时后会自动恢复。
wait是Object类的方法,使本线程放弃对象锁,停止执行,直到发出notify方法唤醒后才会重新执行。

Overload重载和Override重写的区别。Overloaded的方法是否可以改变返回值的类型: 
方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,如果在子类中定义某方法与其父类有相同的名称和参数,则父类中的方法被重写。子类的对象使用这个方法时,将调用子类中的方法,。

重载Overloading是一个类中多态性的一种表现。一个类中方法名相同,参数个数或参数类型不同,则称为方法的重载,函数重载返回值可以不同。

写出几个最常见的运行时异常runtime exception: 

算术异常:ArithmeticException,如除以0.
类转换异常:ClassCastException

数组角标越界异常IndexOutOfBoundsException,如角标为-1

空指针异常 NullPointerException。

error和exception有什么区别: 
ERROR:很难恢复,不用处理的错误。Error类一般与虚拟机相关,如系统崩溃,虚拟机错误,内存不足等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行。

abstract class抽象类和interface接口有什么区别: 
  只有声明,没有方法体的方法叫做抽象方法。含有抽象方法的类叫做抽象类,体现事物的某些基本功能,是对事物的抽象,is a关系。抽象类中可以有抽象方法和非抽象方法。抽象类需要被继承extends,只能单继承。抽象类不是具体的,因此不能创建实例。不能有抽象构造函数或抽象静态方法。

接口中所有方法都是抽象的,是对动作的抽象,like a 关系。接口需要被 实现implements,可以多实现。接口中只有全局常量和抽象方法。接口中的常量必须为public static final,方法类型 为 public abstract.接口与接口之间是继承关系,可以多继承。

说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,查询快、增删数据慢。Vector线程安全,ArrayList非线程安全,所以ArrayList性能更强。

LinkedList使用双向链表实现存储,查询慢,增删数据快。

 

抽象类是否可继承实体类(concrete class):
 可以,但前提是父类可继承,父类构造函数可以访问到。

构造器Constructor是否可被override:
  因为构造函数不能被继承,因此不能被重写,但可以被重载。每一个类必须有自己的构造函数,负责自身初始化,子类不会覆盖父类的构造函数,默认在子类构造函数第一行调用父类空参的构造函数super()。

 

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后: 
  会执行,在return前执行。

根据java规范:在try-catch-finally中,如果try- finally或者catch-finally中都有return,则两个return语句都执行并且最终返回到调用者那里的是finally中 return的值;而如果finally中没有return,则理所当然的返回的是try或者catch中return的值,但是finally中的代码 是必须要执行的,而且是在return前执行,除非碰到exit()。若catch到异常,则在throw Exception前先执行finally块 的内容。

事务是什么:
事务是数据库操作的一个执行单元,必须具备四个属性,称为 ACID(原子性、一致性、隔离性和持久性)

说出几个最终类:

String,Integer,Math。

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

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正 在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且 不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

MVC框架的各个部分都有那些技术来实现?如何实现:

Model-View-Controller模型-视图-控制器

Model[业务逻辑层]——表示业务逻辑和业务数据,如javabean

View[表现层]——显示用户界面,如jsp页面

Controller[数据持久层]——处理数据,如servlet,struts2的action

java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? 

有两种实现方法,分别是继承Thread类与实现Runnable接口,用synchronized关键字修饰同步方法

java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类:

字节流,字符流。

字节流继承于InputStream \ OutputStream,

字符流继承于InputStreamReader \ OutputStreamWriter。

java中会存在内存泄漏吗,请简单描述:

会。如:int i,j;return i+j   //i,j足够大时,超出int最大值,会内存溢出。

java中实现多态的机制是什么:

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

垃圾回收器的基本原理是什么?

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及 使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确 定一些对象为"不可达"时,GC就有责任回收这些内存空间。

switch是否能作用在byte上,是否能作用在long上,是否能作用在String上:
switch可以作用在byte,String上,不能作用于long上。

编程题: 写一个Singleton出来:


作用域public,private,protected,以及不写时的区别: 
作用域 当前类 同一package 子孙类 其他package 
public    √  √   √   √ 
protected  √ √  √  × 
friendly  √     √   ×     × 
private  √     ×   ×   × 

ArrayList和Vector的区别

答:就ArrayList与Vector主要从二方面来说. 
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 

jsp有哪些内置对象?作用分别是什么: 
答:JSP共有9个内置对象: 
request ——客户端端请求,此请求会包含来自GET/POST请求的参数 
response ——网页传回用户端的回应 
page ——JSP网页本身 
session ——与请求有关的会话期 
application ——servlet 正在执行的内容 

pageContext ——网页的属性是在这里管理 
out ——用来传送回应的输出 
config ——servlet的构架部件 
exception ——针对错误网页,未捕捉的例外。

jsp有哪些动作?作用分别是什么:
答:JSP共有以下6种基本动作 
jsp:include:在页面被请求的时候引入一个文件。 
jsp:useBean:寻找或者实例化一个JavaBean。 
jsp:setProperty:设置JavaBean的属性。 
jsp:getProperty:输出某个JavaBean的属性。 
jsp:forward:把请求转到一个新的页面。 
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。

说一说Servlet的生命周期: 
答:servlet生命周期包括加载和实例化、初始化、处理请求以及服务结束,由javax.servlet.Servlet接口的init,service和destroy方法体现。

① Servlet容器加载servlet,完成servlet的实例化。

② 容器调用servlet实例的init方法进行初始化。

③ 请求到达时,调用service方法,执行doGet或doPost方法。

④ 调用destroy方法销毁实例。

 

JAVA SERVLET API中forward() 与redirect()的区别: 
答:forward进行一次请求转发,属于服务器端跳转,在客户端浏览器地址栏中不会显示出转向后的地址。

sendRedirect重定向,重新发送一次请求,是客户端跳转。浏览器的地址栏中可以看到跳转后的链接地址。

 

xml有哪些解析技术?区别是什么: 
答:有DOM,SAX,STAX等 
DOM:document Object model文档对象模型。结构为DOM树,解析前之前把整个文档装入内存,适合处理小型xml文件。适合对XML进行随机访问。可以对任意节点进行增删改查。W3C标准。

SAX:事件驱动。顺序读取XML文件,不需要一次全部装载整个文件。当标签开头与标签结束时触发事件,读取XML文件,可以处理大型xml文件。不能对标记进行增删改。是民间的,不是W3C标准。

什么是java序列化,如何实现java序列化:

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流 化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要 被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序 列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用 ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢 复的话则用输入流。



相关阅读 :
JAVA常见面试题总结
Java常见面试题二则
Java类面试题汇总
Java基础笔试题
java开发笔试题以及答案汇总
惠普招聘java工程师笔试题
新华信国际信息咨询JAVA工程师笔试题
2014北京某公司笔试题-java工程师
北京某公司java笔试题
数码视讯2015校园招聘笔试题-JAVA开发类
深圳博安达软件2014笔试题-Java软件工程师
2014软通动力校招笔试题-java开发类
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务