- 博客(22)
- 收藏
- 关注
转载 2020Java面试题含答案
1.JAVA基础1.JAVA中的几种基本类型,各占用多少字节?下图单位是bit,非字节 1B=8bit2.String能被继承吗?为什么?不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”abc”(直接赋一个字面量);其实和String str=new String(“abc”)(通过构造器构造)还是有差异的。String str=“abc”和String str=new String(“abc”)...
2020-12-29 17:15:43
440
原创 Integer源码-装箱与拆箱
1,自动装箱如Integera=1;这样的代码会自动装箱,也就是会调用Integer类的static valueOf(int i)方法;publicstaticIntegervalueOf(inti){if(i>=IntegerCache.low&&i<=IntegerCache.high)returnIntegerCache.cache[i+(-IntegerCache...
2020-12-25 10:50:41
331
2
原创 Hashtable
LinkedHashMap常作为HashMap(了解HashMap)的替补出现,它继承自HashMap,并继承了HashMap百分之八十的功能,剩下的百分之二十的功能则是用于排序。1,LinkedHashMap同样使用table存储元素,但元素不再是Node类,而是继承自Node类的Entry类。并新增了两个属性,before, after,表示前一个元素和后一个元素。staticclassEntry<K,V>extendsHashMap.Node<K,V>...
2020-12-24 21:51:54
690
原创 HashMap与LinkedHashMap有什么区别
LinkedHashMap常作为HashMap(了解HashMap)的替补出现,它继承自HashMap,并继承了HashMap百分之八十的功能,剩下的百分之二十的功能则是用于排序。1,LinkedHashMap同样使用table存储元素,但元素不再是Node类,而是继承自Node类的Entry类。并新增了两个属性,before, after,表示前一个元素和后一个元素。staticclassEntry<K,V>extendsHashMap.Node<K,V>...
2020-12-21 21:06:03
6883
原创 HashMap面试题看这一篇就够了
HashMap作为java开发中最常用的数据结构和面试中出现频率最高的类,它的魅力到底在哪里呢。1,构造函数:该类同样有多个构造函数,这里只看默认的构造函数/***Constructsanempty<tt>HashMap</tt>withthedefaultinitialcapacity*(16)andthedefaultloadfactor(0.75).*/publicHashMap(){...
2020-12-20 15:06:39
313
1
原创 string类面试题
1,String类可以被继承吗String类定义如下publicfinalclassString{...}String类是一个final类,final类不能被继承。报错提示:The type StringDemo cannot subclass the final class String。2,string的值为什么不能被修改String类属性定义如下privatefinalcharvalue[];对象值用final字符数组保存,一旦初始化引用地址...
2020-12-18 15:55:07
233
3
原创 java arraylist详解
1,ArrayList的秘密都在构造函数里publicArrayList(){this.elementData=DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}2,接着 elementData 和 DEFAULTCAPACITY_EMPTY_ELEMENTDATA/***ThearraybufferintowhichtheelementsoftheArrayListarestored.*Thecapacity...
2020-12-18 15:51:19
211
3
原创 jvm启动过程(类加载过程)
jvm类加载过程包括5个过程,分别为加载,验证,准备,解析,初始化。1,加载①:通过一个类的全限定名来获取定义此类的二进制字节流。②:将这个字节流代表的静态存储结构转化为方法区的运行时数据结构。③:在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。2,验证:确保class文件的字节流中包含的信息符合虚拟机的要求,并且不会危害虚...
2019-05-24 17:38:19
435
原创 jvm运行时数据区分布
1,程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程执行的字节码的行号指示器,通过改变指示器的值来选取下一条执行的字节码指令,帮助程序完成执行过程中存在的分支,循环,跳转,异常,线程恢复等功能。担任线程助跑器的职责,所以为线程私有内存区,同时是运行时数据区中唯一不会出现OutOfMemoryError的区域。2,虚拟机栈虚拟机栈描述的是Java方法(也就是字节码)执行的内存...
2019-05-24 15:50:04
110
原创 Java new一个对象的过程
1,首先到常量池中找类的带路径全名,然后检查对应的字节码是否已被加载,解析,验证,初始化,如果没有先执行类加载过程(class.forname())。2,类加载过程完成后,虚拟机会为对象分配内存。分配内存有两种方式,根据使用的垃圾收集器的不同使用不同的分配机制。(1)指针碰撞,当虚拟机使用复制算法或标记整理算法实现的垃圾收集器时,内存区域都是规整的,这时候使用指针碰撞分配内存,用过的内存放...
2019-05-15 17:19:29
9759
原创 jvm垃圾收集算法整理
1,标记清除算法标记可回收的内存,然后清除。2,复制算法。使用标记清除算法的过程中,如果回收的内存很少这个算法还是可以的,但是如果大量的内存都是需要回收的,那这个就比较笨重,因为我们只需要保留少量不被回收的内存就可以。这就衍生出了复制算法。3,标记整理算法使用标记清除算法的过程中,会产生大量内存碎片,导致分配大对象时频繁出现内存不足引发gc的问题,针对这个问题衍生出标记整理算法...
2019-05-15 16:12:14
118
原创 jvm垃圾收集器及启动参数使用说明
垃圾收集器表示内存回收的具体实现,区别于垃圾收集算法点击查看(相当于方法论),收集器基于收集算法实现。同时为了降低回收内存过程中对用户线程的影响的时间,衍生出不同的收集器。一般情况下年轻代需要回收的内存较多,存活对象较少,采用复制算法,年老代存活对象较多,需要回收的内存较少,采用标记清除/整理算法。1.serial收集器:串行收集器,采用单线程回收内存,同时暂停所有用户线程直到收集结束。...
2019-05-15 15:17:59
176
原创 【数据结构与算法09】排序算法
public class Sort { /** * 名称:冒泡排序 * 顺序:从小到大(非必须) * 逻辑:循环比较数组中相邻的数,较大的数放在下标较大的位置。比较的时候就会发生移动 * 原则:找到最大的数,放到最右边 * 例子:假如数组为{3,2,1} * 先把3和2比较,换位置{2,3,1},再3和1比较,换位置{2,1,3} * 再2和1比较,换位置{1...
2019-04-18 15:24:51
105
原创 【数据结构与算法08】234树
定义:234树是扩展于二叉树的多叉树,二叉树是一个数据项,两个子节点,234树是最少一个数据项,最多3个数据项,最少2个子节点,最多4个子节点,也就是说234树当只有一个数据项时非叶子节点有且只有2个子节点,2个数据项时3个子节点,3个数据项时4个子节点,子节点数量可以为234,所以叫234树。运算限制:它是平衡树,有序树,添加操作只发生在叶子节点上。看上图,第一个节点有一个数据项70...
2019-04-17 18:26:08
2527
1
原创 linux使用docker全过程
1,系统版本要求。CentOS 7 系统为64位、系统内核版本为 3.10 以上。CentOS-6.5或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。查看系统情况命令:uname -r2,若已经安装过docker,可使用命令卸载,或跳过安装过程。yum remove docker \ ...
2019-04-15 14:17:18
1036
2
原创 【数据结构与算法07】哈希表
定义:是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。运算限制:没有限制,这个就是挂腊肠。数组的元素定义为链表,也就是一个横着的数组,每个下标位置挂着一个链表。基本运算: 1,添加。 2:取值。定义一个节点数...
2019-04-10 17:56:16
159
原创 【数据结构与算法06】堆
定义:用二叉树的思想实现的优先级队列,同时它是完全二叉树,即除最后一层以外,其他层都是满元素的。运算限制:参考前面优先级队列。自动排序,同时使用二叉树的存储方式,但不使用二叉树的元素逻辑关系。基本运算: 1,添加。 2:移除。 3:取最大值。1,为了...
2019-04-10 16:53:36
145
原创 【数据结构与算法05】优先级队列
定义:其实就是有序队列。运算限制:自动排序。既然是自动排序那就不需要考虑先进先出的问题了,排序之后就乱了,所以只需要定义排序方式(取最大还是取最小),这里为了简化逻辑,避免再出现队列需要考虑循环使用存储空间的问题,我们把最大值永远放在下标0的位置,出队列时取最小值。当然你也可以反过来。基本运算: 1,添加。 ...
2019-04-09 15:23:29
1429
原创 【数据结构与算法04】红黑树
定义:自平衡二叉查找树,每个节点都带有颜色属性,颜色或红色或黑色。运算限制:1节点是红色或黑色。2根节点是黑色。3每个叶节点(NIL节点,空节点)是黑色的。4每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)。5从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。基本概念:左旋就是把原节点摘下来,用原节点的右子节点替换原节点,原节点变成右子节点的...
2019-03-12 10:20:54
454
原创 【数据结构与算法03】二叉搜索树
定义:它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉搜索树。运算限制:非空左子树的所有节点值小于当前节点值,非空右子树的所有节点值大于当前节点值。基本概念:基本运算:1,查找。2,插入。3,删除。要删除的节点有两个子节点...
2019-03-08 23:56:22
475
原创 【数据结构与算法02】队列
定义:只允许在表的一端插入数据,而在表的另一端访问数据。根据存储方式可分为顺序队列和链队列。运算限制:先进先出。基本概念:允许插入的一端称为队尾(rear),允许访问的一端称为队头(front)。基本运算:1::创建一个空的队列。2:判空。3:入队。添加到队尾,修改队尾指针。4:出队。删除队头,修改队头指针。5:读队头数据。顺序队列说明:利用一组地址连续的存...
2019-03-06 18:31:26
423
原创 【数据结构与算法01】栈
写在最前面:所谓数据结构,其实就是表示一组数据的存储方式,元素之间的逻辑关系的统称。计算机物理存储方式通常分为数组存储和链表存储,元素关系通常分为有序无序。根据实际应用需要,我们组合存储方式和元素关系来设计数据结构以满足我们应用的需要。定义:只能通过访问它的一端来实现数据存储和检索的一种线性数据结构。根据存储方式可分为顺序栈(数组实现)和链栈(链表实现)。运算限制:后进先出。基本概念:...
2019-03-06 18:30:19
265
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人