试题 百分网手机站

java重难点面试题

时间:2020-11-07 18:20:00 试题 我要投稿

关于java重难点面试题

  正所谓不积跬步,无以至千里;不积小流,无以成江海。想要学好一门计算机语言,基本功很重要,下面是百分网小编为大家搜索整理的关于java重难点面试题,欢迎参考阅读,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!

关于java重难点面试题

  1、方法重载与覆盖的区别?(Overload与Override的区别)

  答:方法覆盖是父类直接多态性的一种表现,而方法重载则是一个类中多态性的表现。

  2、 String 和StringBuffer的区别

  答:String为不可变对象,一旦被创建,就不能修改它的值,对于已经存在的String对象的修改都是重新创建一个新的对象,然后再把新的值保存进去。

  StringBuffer是可变对象,在修改值的.时候不需要再新建对象,可以用append()方法在后面添加新的值,性能比String高。

  3、接口和抽象类

  答:接口(interface):接口是用来实现的,里面定义的方法在被子类覆盖时子类中的方法都是public的,里面的成员对象都是final&static,里面的方法都要被实现。

  抽象类(abstract):是用来被继承的,里面定义的方法在被子类覆盖时子类的方法不一定都是public的,里面的成员对象不是final&static,在其内部中有abstract方法才会被必须实现。

  4、集合类的区别:

  java容器类库一共有两种主要类型,Collection和Map。

  Collection:它是针对集合类的一个帮助类,它提供一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。如:Collection.max(Collection coll); Collection.sort(List list);

  分为List(ArrayList,LinkedList,Vector,都是有序,元素可重复),

  Set(HashSet,TreeSet,LinkedHashSet,都是无序,且元素不可重复),

  Queue(PriorityQueue,先进先出的容器)

  Map:

  HashMap,HashTable,TreeMap

  主要其中几款常用到的:

  ArrayList:底层用数组实现,查询效率高,增删效率低,轻量级,线程不安全

  LinkedList:底层用双向循环链表,查询效率慢,增删效率高。

  Vector:底层用数组实现,重量级,占据更多的系统开销,线程安全。

  HashSet:底层用的是哈希算法。

  HashMap:轻量级,线程不安全,允许key或者value是null。

  HashTable:重量级,先出安全,不允许key或者value是null。

  5、线程的四种状态:

  答:产生(new),可执行(Runnable),死亡(Dead),停滞(Blocked)

  线程的实现方式:extends Thread 和 implements Runnable

  6、线程中wait,join,sleep,yield,notify,notifyall,synchronized,区别及联系

  答:sleep():在指定时间内让当前正在执行的线程休眠。

  wait():在线程休眠的同时释放掉机锁,其他线程可以访问该对象。wait必须在同步代码块中执行。

  那怎样把对象锁收回来呢?第一种就是给其设定时间,时间一到就立刻收回来,如:wait(1000);

  notify():收回对象锁的另一种方式,它的作用是唤醒在此对象监视器上等待的单个线程。当被执行notify()方法后,等待池中的线程就被放到了锁池中,并取得机锁,回到wait()前的中断现场。

  notifyAll():唤醒在此对象监视器上等待的所有线程。

  join():等待当前线程执行完。

  yield():停止当前线程,让同等优先级的线程先运行,如果不是同等优先级的线程,则不执行。

  synchronized:当它用来修饰一个方法或者一个代码块时,能够保证在同一时刻只有一个线程能够执行该段代码。

  7、 final、finally、finanlize()的区别

  答:final:用来修饰成员、方法和类,使得成员变量不能被修改,方法不能被覆写,类不能被继承。

  finally:对java异常处理模型的最佳补充,不管有无异常发生,finally结构的代码总会被执行。

  finalize:用于一些不容易控制,并且非常重要的资源的释放,例如:I/O的操作,数据的连接。

  8、字节流和字符流的区别

  答:字符流用到了缓冲区,而字符流没有用到。

  在字符流的操作中,所有的字符都是在内存中形成的,在输出前会将所有的内容暂时保存在内存之中,所以使用了缓冲区暂存数据。

  但是我们还是认为使用字节流更好,理由是:

  所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,

  而字符是只有在内存中才会形成,所以在开发中,字节流使用较为广泛。

【关于java重难点面试题】相关文章:

1.java从代码到运行的重难点讲解

2.Java原理面试题

3.Java面试题(精选)

4.Java线程面试题

5.Java 问答面试题

6.Java基础语法面试题

7.java编程笔试面试题

8.Java基础面试题集锦

9.高级Java面试题汇总