摘要:1. 什么是字节码?采用字节码的好处是什么? java中的编译器和解释器: Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为 阅读全文
posted @ 2021-07-21 09:21 SmallGrayCode 阅读(19) 评论(0) 推荐(0) 编辑
摘要:1. 如何实现一个IOC容器 1. 配置文件配置包扫描路径 2. 递归包扫描获取.class文件 3. 反射,确定需要交给IOC管理的类 4. 对需要注入的类进行依赖注入 配置文件中指定需要扫描的包路径 定义一些注解,分别表示访问控制层、业务逻辑层、数据持久层、依赖注入注解、获取配置文件注解 从配置 阅读全文
posted @ 2021-07-19 21:33 SmallGrayCode 阅读(23) 评论(0) 推荐(0) 编辑
摘要:1. ConcurrentHashMap原理,jdk7和jdk8版本的区别 jdk7: 数据结构:ReentrantLock+HashEntry,一个Segment中包含一个HashEntry数组,每个HashEntry又是一个链表结构。 元素查询:二次Hash,第一次Hash定位到Segment, 阅读全文
posted @ 2021-07-12 22:20 SmallGrayCode 阅读(30) 评论(0) 推荐(0) 编辑
摘要:1. HashMap和HashTable的区别 区别: (1)HashMap方法没有synchronized修饰,线程非安全,HashTable线程安全。 (2)HashMap允许key和value为null,而HashTable不允许。 底层实现:数组+链表实现 jdk8开始链表高度达到8,数组长 阅读全文
posted @ 2021-07-04 12:54 SmallGrayCode 阅读(35) 评论(0) 推荐(0) 编辑
摘要:1. ArrayList和LinkedList的区别 ArrayList:基于动态数组,连续内存存储,适合下标访问(随机访问),扩容机制,因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并 阅读全文
posted @ 2021-06-20 18:09 SmallGrayCode 阅读(49) 评论(0) 推荐(0) 编辑
摘要:1. hashcode与equals 1.1 hashcode介绍 hashcode()的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashcode()定义在JDK的Object.java中,Java中的任何类都包含有hashco 阅读全文
posted @ 2021-06-20 16:23 SmallGrayCode 阅读(36) 评论(0) 推荐(1) 编辑
摘要:1. List和Set的区别 List:有序,按对象进入的顺序保存对象,可重复,允许多个Null元素对象,可以使用iterator取出所有元素,在逐一遍历,还可以使用get(int index)获取指定下标的元素。 Set:无序,不可重复,最多允许有一个Null元素对象,取元素时只能用iterato 阅读全文
posted @ 2021-06-20 13:37 SmallGrayCode 阅读(32) 评论(0) 推荐(0) 编辑
摘要:1. 接口和抽象类的区别 抽象类可以存在普通成员函数,而接口中只能存在public abstract方法 抽象类中的成员变量客户是各种类型的,而接口中的成员变量只能是public static final类型的 抽象类只能继承一个,接口可以实现多个 接口的设计目的,是对类的行为进行约束(更准确的说是 阅读全文
posted @ 2021-06-19 21:48 SmallGrayCode 阅读(33) 评论(0) 推荐(0) 编辑
摘要:1. 重载和重写的区别 重载:发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。 重写:发生在父子类中,方法名、参数必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于父类;如果父类方法访问修饰符为priva 阅读全文
posted @ 2021-06-19 18:37 SmallGrayCode 阅读(28) 评论(0) 推荐(1) 编辑
摘要:1. String、StringBuffer、StringBuilder String是final修饰的,不可变,每次操作都会产生新的String对象。 StringBuffer和StringBuilder都是在原对象上操作。 StringBuffer是线程安全的,StringBuilder线程不安 阅读全文
posted @ 2021-06-19 14:26 SmallGrayCode 阅读(8) 评论(0) 推荐(0) 编辑