java面试题总结

短路运算符的短路行为
左移运算符的规律 a左移b位,最后的结果是 :a*(2的b次方)
右移运算符的规律 a右移b位,最后的结果是 :a/(2的b次方)

JVM中运行着一个优先级不是很高的线程,定期的过滤堆中没有引用的指向的对象,进行垃圾回收,释放内存
子类默认继承父类的无参构造器,如果父类没有提供无参构造器,编译失败

面试:***
* final finally finalize的区别
* final:是个修饰符,可以修饰类,修饰类时类不能被继承;修饰方法时,方法不能被覆盖;修饰成员时,成员变量就是常量,不能被修改.
* finally:是应用在异常处理try…catch后面的一个语句块,特征:不管try语句块中的代码是否发生异常,finally中的代码永远会被执行,它通常用于资源的关闭
* finalize:object类所提供的一个方法,作用:垃圾回收,当对象没有引用指向时,就会调用finalize方法进行垃圾回收释放内存

ArrayList和linkedlist的区别:
arraylist是数组结构,地址联系,更适用于查询
linkedlist是链表结构,地址不联系,更适用于修改 插入元素

this和super关键字的区别:
This指向当前对象,super指向父类对象
this调用属性和方法时时,优先调用本类属性(方法),如果有继承则子类属性(方法)不存在时调用继承过来的父类属性(方法),super是直接调用父类
this和super调用构造方法时,要遵从代码规范,放在构造方法的第一行
在子类与父类的继承时,子类会自动调用父类的无参构造函数
set get方法中–this.啥啥啥=啥啥啥 前面的就是当前对象,后面的就是局部变量

构造方法的特征:
方法名必须和类名相同,方法必须没有返回值类型,可以有参数可以没有参数,可以重载

break和continue的区别:
break结束整个循环,continue:结束当前自循环,进入下一次循环

单例模式:
此类必须要实现:在当前应用程序中,永远只能有一个本类对象.这就是单例模式
创造单例模式的类的步骤:
1.你的类要有私有的构造器
2.声明一个私有的静态的类的实例化对象
3.声明一个公有的静态的方法返回该实例化对象
单例模式的好处:节省内存空间
如果一个类没有个性化的成员变量,有各种成员方法,则这个类就适合创建单例模式

Java OOP进阶之
Java面试题集二(一未总结)

1. 讲述ArrayList和Vector的区别?
主要从三方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半。
三.速度方面,ArrayList高于Vector.

2. 讲述HashMap和Hashtable的区别.

在这里插入图片描述
3.多线程有几种实现方法,都是什么?
同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是 继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是 synchronized,wait与notify.

4.以下语句会输出什么?

在这里插入图片描述
This is a BaseClass
This is a ChildClass
 java构造函数的执行过程及初始化变量的过程
 1.初始化对象的存储空间为零或Null值.
 2.调用父类构造函数,并非需显式写super.
 3.按顺序分别调用成员变量的初始化表达式.
 4.调用本身构造函数.

5.执行main函数的输出是:
在这里插入图片描述
This is a function
 -------------
 This is a inherited function
 -------------
 This is a inherited function

6. 谈谈接口,类与抽象类的区别?

在这里插入图片描述
7. 写出将字符串”Andy, Bill ,Cindy ,Douglas, Felex”劈分成字符串数组的办法?
(注意其中的空格,劈分后的字符串数组为{“Andy”,“Bill”,“Cindy”,“Douglas”,“Felex”};

方法一:
 String str=“Andy, Bill ,Cindy , Douglas,Felex”;
 String[] arr1 = str.split("\s*,\s*");
方法二:
 String str=“Andy, Bill ,Cindy , Douglas,Felex”;
Pattern pattern=Pattern.compile("\s*,\s*");
String[] arr2 = pattern.split(str);

8. 谈谈String和StringBuffer的区别?
两者都实现了CharSequence接口,String是不可变的,每次对String进行改值操作时实际上都在不断生成新的的String对象,这在大量字符串累加时对性能和效率有较大影响,而StringBuffer是容量可变的,在字符串累加时长度会增加,不会像String累加不断生成新对象,效率较高,因此在执行大量字符串累加时应该采用StringBuffer。在累加完毕时调用toString方法就能得到最后的字符串。

9.简述XML的两种解析技术?
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
 SAX:不同于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。

10.列举现代程序在那些场合会用到XML?
1)数据存储,XML文件+缓存方案可以作为桌面程序的数据库使用。
 2)信息配置,将程序的配置信息储存在XML中,读取和写入都很方便,其树状结构的形式也比properties文件有优势得多。
 3)数据传输,将信息放在XML树状结构进行传输。

11.有一XML文件如下,请指出快速访问title节点文字的XPath写法?
在这里插入图片描述
在这里插入图片描述
12.MVC 指的是什么?三个单词各代表什么意思?
MVC是Model-View-Controller的简写,是现代程序流行的设计模型。
“Model” 代表的是应用的业务逻辑,“View” 是应用的表示面,
“Controller” 是提供应用的处理过程控制,
通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。

13. C/S 术数中的C和S各表示什么意义?
C:Client 客户端,指客户端程序
S:Server 服务器端,它既可以是Socket的服务器端,也可以是数据库.

14. 谈谈final, finally, finalize的区别?
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,它是try…catch…语句中总会执行的部分。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

15. 匿名类可否继承抽象类,是否可以实现接口?
均可,Swing的事件监听常采用这些方式.

16. 举出五种常见的运行时异常,并指出出现这种异常的可能时机.
thmeticException:算术异常,如除零时;
assCastException:类转化异常,将类进行强制转化如果不成功则会出现这种异常。
ncurrentModificationException :并发修改异常,当迭代器的索引找不到下一个值会立即抛出这种异常。
dexOutOfBoundsException :下标越界异常,当用不存在的集合下标去取集合中值会会导致这种异常的发生。
llPointerException :空指针异常,当调用空对象的方法时会出现这种异常。

17. 抽象类的抽象方法是否可以是private的?
是否可以是synchronized的?是否可以是final的?为什么?

都不行。
 private表示仅在本类可见,这使得指定子类实现的抽象方法不可能被子类实现,这样设计的抽象方法没有意义。
 synchronized表示同步,锁定的是this,而抽象类是不会生成实例的,这样synchronized锁定的对象是不可能存在的。
 final修饰函数表示函数不可被子类复写,这和指定子类实现的抽象方法的意图是矛盾的。
抽象方法的修饰符只可能是public和protected,没有第三选项。

18. 接口是否可实现接口?接口是否可继承接口?
抽象类是否可实现(implements)接口?
抽象类是否可继承类?
接口不能实现接口。
 接口可以继承接口。
 抽象类可以实现(implements)接口。
 抽象类可以继承类,这和正常的类继承一致。

19. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

20. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
witch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

21. Singleton模式的意图是什么,请写出它的完整代码?

在这里插入图片描述
22. 简述反射机制?
已知类全名是com.company.model.domain.Member,如何通过反射得到类的实例?

在这里插入图片描述
23. 请简述工厂模式?
工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

24. 简述Java中多态的两种实现方式?
多态分继承多态和类内部多态.
 继承多态称覆写,英文名override,子类覆盖父类的函数即覆写.在内存中,函数覆写并没有抹去父类的原函数,而是把指向它的函数指针指向子类的新函数地址.
 类内部多态称重载,英文名overload,String类的valueOf(***)方法是典型的重载写法.在内存中,重载会生成一个新的函数,函数名根据参数有相应的改变.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值