Skip to content

Latest commit

 

History

History
59 lines (50 loc) · 4.44 KB

File metadata and controls

59 lines (50 loc) · 4.44 KB

Java语言基础面试八股题整理05

方法变量与同步

方法之中的变量都是属于局部变量,也就是说如果我们真的去考虑线程安全性问题,一定是在多个线程访问同一个资源的时候进行的,那么既然是同一个资源,就必须考虑Runnable、Callable接口来实现多线程处理关系。

方法的定义上如果使用了synchronized,那么这个方法之中就表示同步的处理操作,那么这个同步的处理操作之中指的是当前的方法只允许有一个线程进入,但是会有其它的线程等待进入处理。在一个同步线程的处理之中,变量肯定是同步的。线程同步处理之中不会去考虑方法中的参数,只会考虑类中的属性。

高并发处理包

在java里面有一个包:java.util.concurrent包,这组开发包是从JDK1.5的时候开始添加到JDK系统之中,主要的目的是进行高并发访问的处理,也就是说通过这个开发包实现的程序都将基于线程池的高速操作完成。

那么HashMap、Hashtable、ConcurrentHashMap有什么区别呢?

  • Hashtable:进行公共数据保存的时候线程的安全性是最高的,因为每个时刻只允许一个线程进行操作;
  • HashMap:所有的方法都属于异步处理的,那么属于非线程安全,这样可以保证操作速度快,前提是:处理多个用户并发访问,但是不安全;
  • ConcurrentHashMap:进行数据存储或读取的时候并不是简单的按照hashCode()进行简单的存放,而是经过了一些处理(segment(分段锁))之后以保证高速的响应。但是前提是:你需要有一个并发访问的Map的高效数据。

缓冲流与内存流的区别

内存流的本质就是将所有的数据在内存之中进行完整的处理操作。核心的概念在于内存流可以进行整体的数据处理。

如果从实现来讲,两者是可以部分互通的,如果从实用的角度来讲,缓存流更多的是暂时的操作,缓存流操作更多的情况下有一个间隔。但是这个间隔往往不会保存过多的内容。比较适合中文处理例如,(bufferedReader)。

基本类型和包装类

基本类型与包装类最大的区别有两点:

  • 包装类是以对象的形式运行,而且JDK1.5之后针对包装类又提供自动的装箱与拆箱处理机制;
  • 包装类可以进行null的描述(使用基本类型,不设置内容就是对应数据类型默认值,如果使用了包装类就是null);

基本数据类型与引用传递

在Java里面数据类型有两种:基本类型、引用类型。

集合信息取得

get可以轻松的进行元素的定位,get方法是主要起扩充的方法。

区分(ArrayList和LinkedList)。

对于集合的输出:

  • for循环
  • Iterator

接口标准

对于接口本身而言,只是一个方法视图。继承类强制性实现。便于分层,可以实现标准化设计。

接口的使用

区分接口和抽象类。

接口的一个核心意义是暴露远程结构的(方法视图)。 抽象类是留给接口和子类之间做过渡使用的。

关心的点:

  • 接口定义的功能是否够用?
  • 结构设计是否合理(特别多的继承关系就不好),子类是否有重复?

一个接口可以有多个子类,一个子类可以实现多个接口,一个子类只能实现一个抽象类。

进程间通讯

JVM间的通讯,可以使用Socket编程,也可以使用公共文件,或者直接进行管道流处理。

进程与线程

每启动一个Jvm进程,实际上都要执行一个完整的进程生命周期,也就是说其使用的资源会更加的庞大。而对于线程优势在于启动速度快,而java采用了多线程的处理方式,整个系统运行之中进程只会执行1次。

所有的线程都受到进程的控制,如果你的进程被毁了,那么所有的线程也就完蛋了。

链表为什么要用内部类

内部类的特点:

  • 内部类可以方便的与外部类之间进行私有属性的访问
  • 内部类使用private,可以进行方法作用域控制