java j2se_J2SE JAVA基本要点

1 : 面向对象的特征有哪些方面?

封装

最常见的是把属性私有化封装在一个类里面,只能通过方法去访问

继承

子类继承父类,从而继承了父类的方法和属性

多态

多态分操作符的多态和类的多态。

类的多态指父类引用指向子类对象,并且有继承,有重写。

(注意:子类的父类引用由于向上转型时,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用))

2.String是最基本的数据类型吗?

肯定不是,String是类类型,不是基本类型。基本数据类型有八种,整型四种,字符型型一种,浮点型两种,布尔型一种(分别是int long short byte cher float double boolean)

3.int和integer的区别?

首先integer是一个类类型的,是int的一个封装类,int和Integer之间可以通过自动装箱, 自动拆箱, 互相转换。

4.string和stringbuffer的区别?(很多面试题都在问)

string是immutable的,内容一旦创建好了就不可以发生改变,但是stringbuffer是采用字符数组存放数据的,因此stringbuffer是可以变长的,其内容也可以发生改变。stringbuffer在需要增加长度的时候,创建新的数组,并且把原来的数据复制到新的数组这样的办法来实现。

5.运行时异常和一般异常有什么不同?

运行时异常叫非可查异常,意思就是你写的语法没有问题,但在编译过程中不要求必须进行显示捕捉。一般异常又叫可查异常,在编译过程中,必须进行处理,要么捕捉,要么通过throws 抛出去。

6.ArrayList,Vector, LinkedList的存储性能和特性有哪些?

首先arraylist和vector都是继承了抽象类abstractlist,但是vector是安全线程,arraylist是非安全线程。再说ArrayList和LinkedList的区别:ArrayList 是数组结构,所以定位很快,但是插入和删除很慢,而LinkedList 是双向链表结构,所以插入和删除很快,但是定位很慢。

7.Collection 和 Collections的区别是什么?

collection是接口,是list和set的父接口。而collections是一个工具类,提供了排序,混淆等等很多实用方法。

8.hashmap和hashtable的区别?(很多面试的都会问)

首先HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式。

区别:1.HashMap可以存放 null,Hashtable不能存放null。

2.HashMap是非安全线程类,而hashtable是安全线程类。

9.final, finally, finalize的区别?(很多面试的都会问)

final修饰类,方法,基本类型变量,引用的时候分别有不同的意思

修饰类 表示该类不能被继承

修饰方法 表示该方法不能被重写

修饰基本类型变量 表示该变量只能被赋值一次

修饰引用 表示该引用只有一次指向对象的机会

finally 是用于异常处理的场面,无论是否有异常抛出,都会执行

finalize是Object的方法,所有类都继承了该方法。 当一个对象满足垃圾回收的条件,并且被回收的时候,其finalize()方法就会被调用。

10.Overload和Override的区别,即重载和重写的区别。 Overloaded的方法是否可以改变返回值的类型?

Overload是方法重载的意思,指的是在同一个类里面,方法名一样,但是参数不一样

Override是方法重写的意思,指的是子类继承了父类的某个方法后,重新又写了一遍

对于Overloaded的方法是否可以改变返回值的类型?是可以,重载其实本质上就是完全不同的方法,只是恰好取了相同的名字。

11.Error和Exception有什么区别?

Error和Exception都实现了Throwable接口,error指的是JVM层面的错误(如:内存不足),exception指的是代码逻辑异常(如:下标越界)

12.abstract class和interface有什么区别?

使用方式:

抽象类只能够通过继承被使用

接口必须通过实现被使用

实现方法:

抽象类不仅可以提供抽象方法,也可以提供实现方法

接口只能提供抽象方法,不能提供实现方法。 但是在JAVA8版本开始,接口可以提供实现方法了,前提是要在方法前加一个default修饰符

13.heap和stack有什么区别?

存放的内容不一样:

heap: 是存放对象的

stack: 是存放基本类型(int, float, boolean 等等)、引用(对象地址)、方法调用

存取方式不一样:

heap: 是自动增加大小的,所以不需要指定大小,但是存取相对较慢

stack: 是固定大小的,并且是FILO 先入后出的顺序,并且存取速度比较快

14.GC是什么? 为什么要有GC?

GC是Garbage Collection的缩写,即垃圾回收这里所谓的垃圾,指的是那些不再被使用的对象,JVM的垃圾回收机制使得开发人员从无聊、容易犯错的手动释放内存资源的过程中解放出来。开发人员可以更加专注的进行业务功能的开发,而资源回收的工作交由更加专业的垃圾回收机制自动完成。

15.最常见的:short s1 = 1; s1 = s1 + 1;有什么错?

short s1 = 1; 这一句没有错误,编译器会自动把1这个整数处理为short。

s1 = s1 + 1; 右侧的表达式会返回一个Int类型的整数,再把这个int类型的整数赋给short类型的s1的时候,就会出现强制转换错误

16.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

Math.round 的意思是+0.5 取整数

所以 Math.round(11.5) 即 11.5+0.5 = 12

Math.round(-11.5) 即 -11.5+0.5 = -11

17.String s = new String("xyz");创建了几个String Object?

String s = new String("xyz");

首先构造方法 new String("xyz"); 中的"xyz" 这本身就是一个字符串对象

然后 new 关键字一定会创建一个对象

所以总共创建了两个String对象

18. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类?

接口可以继承接口,比如List 就继承了接口Collection。抽象类也可以实现接口,比如MouseAdapter鼠标监听适配器 是一个抽象类,并且实现了MouseListener接口。抽象类也可以继承实体类,比如所有抽象类都继承object。

19. List, Set, Map是否继承自Collection接口? (重点!!!)

List 和 Set 继承了Collection接口,但是Map和Collection之间没有继承关系,因为一个是键值对容器,一个是单值容器,无法兼容。

414868719074565870e4925590438eb7.png

20. abstract的method是否可同时是static,是否可同时是synchronized?

记住!都不可以!

21.数组有没有length()这个方法? String有没有length()这个方法?

数组获取长度的手段是 .length 属性

String获取长度的手段是 length()方法

集合获取长度的手段是 size()方法

文件获取长度的手段是 length()方法

22. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?

以HashSet为例,判断重复的逻辑是:

1. 首先看hashcode是否相同,如果不同,就是不重复的

2. 如果hashcode一样,再比较equals,如果不同,就是不重复的,否则就是重复的。

23.构造器Constructor是否可被override?是否可以继承String类?

子类不能继承父类的构造方法,所以就不存在重写父类的构造方法。

24.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch可以作用在 byte,short,int String,Enum(枚举) 上,但是不能作用在long上面。

25.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?(遇到几个面试的都在问我这个)

try里的return 和 finally里的return 都会支持,但是当前方法只会采纳finally中return的值。

26.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

不对! 当equals返回true的时候,这两个对象一定有相同的hashcode。

27.垃圾回收的优点和原理。并考虑2种回收机制。(有些面试要问)

原理:当某个一个对象,没有任何引用指向它的时候,那么它就满足垃圾回收的条件,在适当的时候,JVM虚拟机进行GC将其回收,释放空间,以供后续再利用。

两种常见的回收机制:

1. 定时回收

每隔30分钟进行一次回收,这种机制的弊端是如果垃圾产生的比较快,有可能30分钟之内垃圾已经把内存占用光了,导致性能变慢

2. 当垃圾占到某个百分比的时候,进行回收

比如,当垃圾占到70%的时候,进行回收。 这种机制的弊端是,如果垃圾产生的频率很快,那么JVM就必须高频率的进行垃圾回收。 而在垃圾回收的过程中, JVM会停顿下来,只做垃圾回收,而影响业务功能的正常运行。

一般说来 JVM会采用两种机制结合的方式进行垃圾回收。

28.常见的集合类都有哪些?主要方法?

ArrayList,LinkedList,HashSet,HashMap,TreeSet 等等。

常见方法:size()。add()。remove()等

29.解析XML文档有哪几种方式?

主要是两种,SAX和DOM

SAX 就是逐行读取,直到找到目标数据为止。

DOM 是先全文档加载,然后读取。

30.关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?(遇到很多次了)

throws 用在方法声明上面,表示该方法有可能抛出某个异常

throw 抛出一个指定的异常

try

catch 在try中有可能会抛出某个异常,一旦某个异常抛出后,就会在catch中进行捕捉,他俩一般说来都是成对出现的。

finally: 表示无论是否捕捉住异常,都会执行

31.java中有几种类型的流?

Java中所有的流都是基于字节流,所以最基本的流是

输入输出字节流

InputStream

OutputStream

在字节流的基础上,封装了字符流

Reader

Writer

进一步,又封装了缓存流

BufferedReader

PrintWriter

以及数据流

DataInputStream

DataOutputStream

对象流

ObjectInputStream

ObjectOutputStream

(常见的就这么几个)

32.什么是java序列化,如何实现java序列化?

序列化指的是把一个Java对象,通过某种介质进行传输,比如Socket输入输出流,或者保存在一个文件里。实现java序列化的手段是让该类实现接口 Serializable,这个接口是一个标识性接口,没有任何方法,仅仅用于表示该类可以序列化。

33.是否可以从一个static方法内部发出对非static方法的调用?

不行,因为非static方法需要一个具体的实例才可以调用,而调用 static方法的时候,不一定存在一个实例。

34.List、Map、Set三个接口,存取元素时,各有什么特点?(重点)

List 是有顺序的,并且可以重复。

Set 是无序的,不可以重复 。

Map 保存数据的方式是键值对。

35.多线程有几种实现方法,都是什么?

Java 创建一个线程有三种方式

1. 继承一个Thread类

2. 实现Runnable接口

3. 匿名内部类

36.数据连接池的工作机制是什么?

数据库连接池原理:

因为创建连接和关闭连接的行为是非常耗时的,会显著降低软件的性能表现。解决办法就是先创建n条数据库连接Connection,循环使用,但是不进行关闭,这样再执行SQL语句,就不需要额外创建连接了,直接使用现成的连接就可以了,从而节约了创建连接和关闭连接的时间开销。

37.synchronized和java.util.concurrent.locks.Lock的异同 ?

1. Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现,Lock是代码层面的实现。

2. Lock可以选择性的获取锁,如果一段时间获取不到,可以放弃。synchronized不行,会一根筋一直获取下去。 借助Lock的这个特性,就能够规避死锁,synchronized必须通过谨慎和良好的设计,才能减少死锁的发生。

3. synchronized在发生异常和同步块结束的时候,会自动释放锁。而Lock必须手动释放, 所以如果忘记了释放锁,一样会造成死锁。

38.列举最常见的几个异常?

NullPointerException 空指针异常

ArithmeticException 算术异常,比如除数为零

ClassCastException 类型转换异常

ConcurrentModificationException 同步修改异常,遍历一个集合的时候,删除集合的元素,就会抛出该异常

IndexOutOfBoundsException 数组下标越界异常

NegativeArraySizeException 为数组分配的空间是负数异常

(上班ing,持续更新中...)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值