java面试题(正确修改版)(3)

2019-06-03 18:05

45.作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package子孙类其他package public√√√√ protected√√√× friendly√√×× private√××× 不写时默认为friendly 46.ArrayList(List)和Vector的区别,HashMap和Hashtable的区别? 答:就ArrayList(List)与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList(List)是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList(List)却是原来的一半 Vector是序列式容器,作为缺省使用。ArrayList(List)应当用于频繁在序列中部进行插入和删除操作的情况 47.char型变量中能不能存贮一个中文汉字?为什么? 答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的 48.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

Public class Singleton{

Private Singleton(){}

Private static final Singletoninstance=newSingleton();

//这里提供了一个供外部访问本class的静态方法,可以直接访问 Public static Singleton getInstance(){ returninstance; } }

第二种形式:

Public class Singleton{ Private static Singleton instance=null; Public static synchronized Singleton getInstance(){ //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if(instance==null) instance=newSingleton(); returninstance;

} }

同步的实现方面有两种,分别是synchronized,wait与notify 49.垃圾回收机制,如何优化程序? 垃圾回收机制前面题目有答案,如何优化程序请自由发挥吧。 50.float型floatf=3.4是否正确? 答:不正确。精度不准确,应该用强制类型转换,如下所示:floatf=(float)3.4 51.介绍JAVA中的CollectionFrameWork(包括如何写自己的数据结构)? 答:CollectionFrameWork如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements) Map提供key到value的映射 53.JAVA中的多态与继承

多态与继承、重载并不是孤立的,他们之间存在着紧密的联系,多态是建立在这两者的基础之上的(实际上继承就有用重载这一特性)。 下面我们来看个例子: Abstract Class Sharp implement IhaveSide{ public bool isSharp(){ return true; } poublic abstract int getSides(); } Class Triangle extends Sharp{ public Override int getShides() { return 3; } } Class Rectangle extends Sharp{ public Override int getSides(){

return 4 } } 那么这种类的关系叫做继承,下面这种使用方式也是继承所带来的: Triangel tri=new Triangle(); Println(―Triangle is a type of sharp?‖+tri.isSharp()); 而这种方式则是多态: Sharp sharp=new Rectangle(); Println(―My sharp has‖+sharp.getSides()+‖ sides.‖); 这两者区别在哪?很显然,继承是子类使用父类的方法,而多态则是父类的引用指向子类的对象,使用的是子类的方法。 其技术上的区别是绑定时期,晚期绑定的一定是多态。 53.STRING与STRINGBUFFER的区别。 答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法 54.面向对象的三个基本特征 1.继承:是一种联结类的层次模型,并且允许和鼓励类的重用。它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 2.封装:是把过程和数据包围起来,对数据的访问只能通过己定义的界面。面向对象设计始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 3多态性:是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名的问题。 56.接口和内部类、抽象类的特性 接口:一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方被实现时可以有完全不同的行为,JAVA接口还可以定义public 的常量。 抽象类:仅提供一个类型的部分实现。抽象类可以有实例变量,以及一个或多个构造子。抽象类可以同时有抽象方法和具体方法。它提供一个继承的出发点,不能被实例化。因此,抽象类一定是用来继承的。 内部类:JAVA中的内部类实际上和C++中嵌套类(Nested Class)有相似之处,但也有区别: 关于JAVA中的内部类有以下说法: 有一点需要注意的是:匿名内部类由于没有名字,所有他没有构造函数(但是如果这个匿名内部类继承了一个只含有带参数构造函数的父类,创建它的时候必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)。如果你想要初始化它的变量,有下面几

种方法: 1.如果是在一个方法的匿名内部类,可以利用这个方法传进你 的参数,不过记住,这些参数快艇被声明为final。 2.将匿名内部类改造成有名字的局部内部类,这样它就可以拥有构造函数了。 3.这个匿名内部类中使用初始化代码块。 为什么需要内部类? Java内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果您想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称、参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口。由于内部类对外部类的所有内容都是可访问的,所有这样做可以完成所有你直接实现这个接口的功能。 不过你可能要质疑,更改一个方法名不就行了吗? 的确,以此作为设计内部类的理由,实在没有说服力。 真正的原因是这样的,java中的内部类和接口加在一起,可以解决常被C++程序员抱怨java中存在的一个问题—没有多重继承。实际上,C++的多继承设计起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果。 57.文件读写的基本类 FileInputStream,FileOutputStream,File 58.串行化的注意事项以及如何实现串行化 串行化就是把一个对象写入流的过程 具体的做法: 1.必须实现Serializable(标志接口,没有具体的方法) 2.ObjectOutputStream封装一个地层类(与具体的设备交互) 3.使用WriteObject将对象写入流 59.线程的基本概念、线程的基本状态以及状态之间的关系 线程的基本描述: 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为珍上线程,彼此间互相独立。线程又称轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调试,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 线程的基本状态: 1.新状态:线程已被创建但尚未执行(strart()尚未被调用)。 2.可执行状态:线程可以执行,虽然不一定正在执行。CPU时间随时可能被分配给该线程,从而使得它执行。 3.死亡状态:正常情况下run()返回使得线程死亡。调用stop()或destroy()亦有相同效果,但是不被推荐,前者会产生异常,后者是强制终止,不会释放锁。 4.阻塞状态:线程不会被分配CPU时间,无法执行。 60.线程的同步、如何实现线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被

多个线程同时访问。 实现的同一种方式: 1.synchronized方法:通过在方法声明中加入synchronized关键字来声明synchronized方法。 2.synchronized块:通过synchronized关键字来声明synchronized块。 61.Socket通信(TCP、UDP区别及Java实现方式) UDP与TCP的主要区别在于: UDP:不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误的到达目的地。UDP在许多方面非常有效。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用UDP。 UDP是通过DatagramSocket来实现,它使用DatagramSocket无须建立连接。 TCP:在等待客户端的服务器是使用ServerSocket,客户端是使用Socket来连接服务器。 62.JDBC调用数据库的基本步骤 1.通过驱动器管理器获取连接接口。 2.获得Statement或它的子类。 3.限制Statement中的参数。 4.执行Statement。 5.查看返回的行数是否超出范围。 6.关闭Statement。 7.处理其它的Statement。 8.关闭连接接口。 **63.解析XML文件的几种方式和区别 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问。 SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。 STAX:Streaming API for XML (StAX)。 64.Java四种基本权限的定义 启动类装载器,标准扩展类装载器,类路径装载器和网络类装载器。 65.Java的国际化 Java语言具有平台无关、可移植性好等优点,并且提供了强大的类库,所以Java语言可以辅助我们解决上述问题。Java语言本身采用双字节字符编码,采用大汉字字符集,这就为解决国际化问题提供了很多方便。从设计角度来说,只要把程序中与语言和文化有关的部分分离出来,加上特殊处理,就可以部分解决国际化问题。在界面风格的定制方面,我们把可以参数化的元素,如字体、颜色等存储在数据库里,以便为用户提供友好的界面;如果某些部分饮食无法参数化的元素,那么我们可能不得不分别设计,通过有针对性的编码来解决


java面试题(正确修改版)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:西方政治制度复习重点

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

马上注册会员

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