美文网首页
java基础

java基础

作者: 时乆 | 来源:发表于2020-02-18 22:04 被阅读0次

1、JAVA中的几种基本数据类型是什么,各自占用多少字节。

2、String类能被继承吗,为什么。

3、String,Stringbuffer,StringBuilder的区别。

4、ArrayList和LinkedList有什么区别。

5、讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序。

6、用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如存储方式,hashcode,扩容,默认容量等。

7、JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何设计。

它摒弃了Segment(锁段)的概念,而是启用了一种全新的方式实现,利用CAS算法,段锁性能也不是很高,而CAS操作是CPU支持的操作,是一种原子操作

1、下面讲一下concurrentHashMap的结构

ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成(一个segment里面有一个hashEntry数组)。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,HashEntry则用于存储键值对数据。一个ConcurrentHashMap里包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表结构


8、有没有有顺序的Map实现类,如果有,他们是怎么保证有序的。

    TreeMap,有序,通过红黑树的左旋或者右旋实现有序(根节点大于他的左节点)

     LinkedHashMap: 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。

    https://blog.csdn.net/chenssy/article/details/26668941

9、抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。

http://www.importnew.com/12399.html

10、继承和聚合的区别在哪。

11、IO模型有哪些,讲讲你理解的nio ,他和bio,aio的区别是啥,谈谈reactor模型。

    内存IO、网络IO、磁盘IO

    1.阻塞IO模型:请求发起,内核缓存中没有数据请求磁盘,等待磁盘返回成功(阻塞socket、Java BIO,进程阻塞挂起不消耗cpu)

    2.非阻塞IO:请求发起,内核缓存中没有数据,返回错误,进程轮询调用,消耗cpu直查询到磁盘数据并返回

    3.IO复用模型:有一个select函数,它是一个文件描述的集合,对这些的文件描述符进行循环监听,当某个文件描述符就绪的时候,就对这个文件描述符进行处理(属于阻塞的IO。但是由于它可以对多个文件描述符进行阻塞监听,所以它的效率比阻塞IO模型高效) NIO

    4.信号驱动IO:安装一个信号处理函数,进程继续运行并不阻塞,当IO时间就绪,进程收到SIGIO信号。然后处理IO事件。

    5.异步IO模型:程序调用aio_read函数,该函数取数据,同时应用程序做其他的事情,当数据准备完毕,通知应用程序

12、反射的原理,反射创建类实例的三种方式是什么。

13、反射中,Class.forName和ClassLoader区别 。

Class.forName(className)方法,内部实际调用的方法是Class.forName(className,true,classloader);

第2个boolean参数表示类是否需要初始化,  Class.forName(className)默认是需要初始化。

一旦初始化,就会触发目标对象的 static块代码执行,static参数也也会被再次初始化。

ClassLoader.loadClass(className)方法,内部实际调用的方法是  ClassLoader.loadClass(className,false);

第2个 boolean参数,表示目标对象是否进行链接,false表示不进行链接,由上面介绍可以,

不进行链接意味着不进行包括初始化等一些列步骤,那么静态块和静态对象就不会得到执行

数据库链接使用 Class.forName(className)

14、描述动态代理的几种实现方式,分别说出相应的优缺点。

15、动态代理与cglib实现的区别。

jdk动态代理是通过反射机制,生成一个实现代理接口的匿名类

16、为什么CGlib方式可以对接口实现代理。

cglib通过字节码技术,为类创建一个子类,子类中采用方法拦截技术,拦截父类中所有方法的调用,所以可以对接口实现代理

17、final的用途。

1、被final修饰的类不可以被继承

2、被final修饰的方法不可以被重写

3、被final修饰的变量不可以被改变

18、写出三种单例模式实现 。

19、如何在父类中为子类自动完成所有的hashcode和equals实现?这么做有何优劣。

20、请结合OO设计理念,谈谈访问修饰符public、private、protected、default在应用设计中的作用。

21、深拷贝和浅拷贝区别。

22、数组和链表数据结构描述,各自的时间复杂度。

23、error和exception的区别,CheckedException,RuntimeException的区别。

24、请列出5个运行时异常。

25、在自己的代码中,如果创建一个java.lang.String类,这个类是否可以被类加载器加载?为什么。

26、说一说你对java.lang.Object对象中hashCode和equals方法的理解。在什么场景下需

27、要重新实现这两个方法。

28、在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题。

可以在编译期对类型进行检查,减少运行期因为参数类型问题所引发的异常

29、这样的a.hashcode() 有什么用,与a.equals(b)有什么关系。

30、有没有可能2个不相等的对象有相同的hashcode。

    有

31、Java中的HashSet内部是如何工作的。

32、什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。

33、java8的新特性。

34、java的四种引用

强引用: 如Object object = new Object() 这个Object()就是一个强引用了,如果一个对象具有强引用。垃圾回收器就不会去回收有强引用的对象

弱引用:只要垃圾回收器在自己的内存空间中线程检测到了,就会立即被回收

软引用:如果内存空间足够,那么垃圾回收器就不会回收它

虚引用:如果一个对象只具有虚引用,那么它就和没有任何引用一样,随时会被jvm当作垃圾进行回收

相关文章

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 技术体系

    一,java核心 java基础,jvm,算法,多线程,设计模式 Java基础:java基础相关,全栈java基础 ...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Java基础:注解

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 概述 注解...

  • Java基础:动态代理

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,...

  • Java 集合类原理

    Java基础——HashMap源码分析 Java基础——HashSet源码分析 Java基础——HashTable...

  • Java基础:类加载器

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 什么是类加...

  • java基础(一)-String、StringBuffer、St

    java基础-String、StringBuffer、StringBuilder java基础小白,初学java,...

网友评论

      本文标题:java基础

      本文链接:https://www.haomeiwen.com/subject/uoisoftx.html