Skip to content

Latest commit

 

History

History
56 lines (42 loc) · 2.7 KB

File metadata and controls

56 lines (42 loc) · 2.7 KB

java

java知识

  • 问:java的hashmap实现原理,以及currentHashMap,你在项目中如何使用?
    • 答:jdk1.8中,hashmap初始化状态是数组+链表,链表长度大于8时,先扩容数组到64,然后将链表转为红黑树。
    • 数组默认16,负载因子0.75,临界值=数组size*负载因子,size大于临界值进行扩容,x2.

  • 问:java的IO模型介绍一下?
    • 答:

  • 问:java中深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
    • 引用拷贝:在jvm的栈内存创建一个拷贝地址,指向原来的堆内存对象地址。
    • 浅拷贝:栈内存创建新地址,堆内存新创建对象,但拷贝对象和原对象共用同一个内部对象。
    • 深拷贝:完全拷贝复制整个对象,包括所包含的内部对象。
    • 深拷贝通常用于需要确保对象及其引用对象的独立性的场景,如在多线程环境下操作对象、复制包含引用对象的数据结构等。而浅拷贝则用在不需要复制引用对象的场景下,可以减少资源消耗和提高性能。

  • 问:Java的object类有几个方法,都是什么?
    • 答:java中所有的类都继承类object类,一共有13个方法.
    • clone,getClass,hashCode,toString,equals,clone,notify,notifyAll,3个wait方法,参数不同主要区别是超时时间

  • 问:Java中有字符串常量池,介绍一下?
    • jvm为了提升性能,减少内存消耗,针对字符串类型专门开辟的区域,避免字符串重复创建。
    • 字符串常量池位于元空间(metaspace中)。

  • 问:Java中重写equals方法,需要重写hashCode方法吗?为什么?
    • 两个equals相同的对象,hashCode要必须保证相同,否则出现equals相同,hashCode不等的bug

  • 问:java中collection包含了哪些?/介绍一下java的集合类
    • list/queue/stack,map/set

  • 问:介绍一下java的io模型
    • java主要是3种io模型,bio-阻塞io:数据准备,数据拷贝均阻塞,nio-io多路复用:数据准备非阻塞,数据拷贝阻塞,aio-异步io:数据准备,数据拷贝均非阻塞。
    • netty使用nio。

  • 问:介绍下线程与进程
    • 进程是程序的最小执行单位。
    • 线程是轻量级的进程,一个进程包含多个线程,线程间共享堆和方法区。

  • 问:如何避免死锁
    • 死锁的条件是:互斥条件,互相等待且不释放独占资源,循环等待资源。
    • 因此我们需要破坏死锁的条件,可以避免死锁,在写代码时,资源分配借助于银行家算法对资源进行评估和分配,是有效的手段。

  • 问:介绍下悲观锁和乐观锁,如何实现一个乐观锁