Java常见问题
Java常见问题
徐明曉
这个作者很懒,什么都没留下…
展开
-
Java常见问题(一):Java的基本类型有哪些?
题目分析:提到Java就应该想到面向对象1. 回答Java是一种面向对象的语言。将事物看作为对象,不需要了解其中的具体流程,可以将复杂问题简单化。面向对象的三大特性为:封装,继承与多态。封装:将事物封装成一个类,减少耦合,隐藏细节。保留特定的接口与外界联系,当接口内部发生改变时,不会影响外部调用方。继承:从一个已知的类中派生出一个新的类,新类可以拥有已知类的行为和属性,并且可以通过覆...原创 2020-03-23 20:01:54 · 109 阅读 · 0 评论 -
Java常见问题(二):Java的面向对象什么意思?有哪些特性?
题目分析:可以先记住四大基本类型,再记忆下属类型。1. 回答Java的基本数据类型分为:整数类型、浮点类型、字符类型、布尔类型这四个类型。整数类型(4类):整数类型变量用来表示整数的数据类型。整数类型又分为字节型(byte/8)、短整型(short/16)、整型(int/32)、长整型(long/64)这四种。浮点类型(2类):浮点类型用来表示小数的数据类型。浮点类型分为单精度型(f...原创 2020-03-23 20:09:08 · 114 阅读 · 0 评论 -
Java常见问题(三):Java的注解是什么意思?
题目分析:作者暂时了解这些,还在学习中1. 回答Java 注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。2. 题目拓展暂无...原创 2020-03-23 20:28:19 · 138 阅读 · 0 评论 -
Java常见问题(四):Java的反射机制是什么意思?
题目分析:Spring等底层都依赖于Java中的反射机制1. 回答反射机制是指在运行中,对于任意一个类,都能够知道这个类的所有属性和方法。对于任意一个对象,都能够调用它的任意一个方法和属性。即动态获取信息和动态调用对象方法的功能称为反射机制。2. 题目拓展暂无...原创 2020-03-23 20:31:48 · 150 阅读 · 0 评论 -
Java常见问题(五):Java中String, StringBuffer 和StringBuilder有什么区别?
题目分析:Spring等底层都依赖于Java中的反射机制1. 回答反射机制是指在运行中,对于任意一个类,都能够知道这个类的所有属性和方法。对于任意一个对象,都能够调用它的任意一个方法和属性。即动态获取信息和动态调用对象方法的功能称为反射机制。2. 题目拓展暂无...原创 2020-03-23 20:49:05 · 97 阅读 · 0 评论 -
Java常见问题(六):线程安全是什么意思?
题目分析:作者正在学习中…【答案】线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。参考文章传送门: link.【题目拓展】什么是线程,它与进程又有什么关系?答: ...原创 2020-03-23 22:24:00 · 541 阅读 · 0 评论 -
Java常见问题(七):Java中的常见的集合有哪些?
题目分析:作者正在学习中…【答案】答:集合可以从接口上分类:Map(图)接口和Collection(收集)接口是所有集合框架的父接口,Collection接口的子接口包括:Set(一组)接口和List(目录)接口Map接口的实现类主要有:HashMap、TreeMap、Hashtable、LinkedHashMap、ConcurrentHashMap以及Properties等Set...原创 2020-03-23 23:29:47 · 319 阅读 · 2 评论 -
Java常见问题(八):HashMap和Hashtable的区别有哪些?
题目分析:作者正在学习中…【答案】答:1) HashMap没有考虑同步,是线程不安全的;Hashtable使用了synchronized关键字,是线程安全的;2) HashMap允许null作为Key;Hashtable不允许null作为Key,Hashtable的value也不可以为null。【题目拓展】1. 为什么HashMap是线程不安全,Hashtable是线程安全?Hash...原创 2020-03-23 23:51:01 · 123 阅读 · 0 评论 -
Java常见问题(九):Java中的ConcurrentHashMap和Hashtable的区别?
题目分析:作者正在学习中…【答案】集合可以从接口上分类:ConcurrentHashMap,HashMap和Hashtable同属Map接口下的集合。ConcurrentHashMap结合了HashMap和Hashtable二者的优势。HashMap没有考虑同步,Hashtable考虑了同步的问题。但是Hashtable在每次同步执行时都要锁住整个结构。【题目拓展】什么是同步?...原创 2020-03-24 10:14:16 · 219 阅读 · 0 评论 -
Java常见问题(十):TreeMap有哪些特性??
题目分析:作者正在学习中…【答案】集合可以从接口上分类:TreeMap集合属于Map接口,其底层使用红黑树实现,TreeMap中存储的键值对按照键来排序。【题目拓展】什么是红黑树?红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。TreeMap中存储的键值对按照键来排序的含义是?...原创 2020-03-24 10:18:55 · 841 阅读 · 0 评论 -
Java常见问题(十一):ArrayList和LinkedList有哪些区别?
题目分析:作者正在学习中…【答案】集合可以从接口上分类:ArrayList和LinkedList集合同属List接口,区别总结如下:底层结构:ArrayList使用了动态数组实现,实质上是一个动态数组; LinkedList底层使用了双向链表实现,可当作堆栈、队列、双端队列使用。底层结构决定了优势:ArrayList在随机存取方面效率高于LinkedList;LinkedLi...原创 2020-03-24 10:27:48 · 444 阅读 · 0 评论 -
Java常见问题(十二):HashSet和TreeSet有哪些区别?
题目分析:HashSet和TreeSet首先明白它们所属集合,再从字面意思上引申其特性。【答案】集合可以从接口上分类:HashSet和TreeSet有哪些区别?从字面意思上来判断:HashSet底层使用了Hash表实现。TreeSet底层使用了红黑树来实现。保证元素唯一性的原理:HashSet判断元素的hashCode值是否相同。如果相同,还会继续判断元素的equals方法,是否...原创 2020-03-24 10:38:17 · 168 阅读 · 0 评论 -
Java常见问题(十三):讲讲HashMap的数据结构
题目分析:作者正在学习中…【答案】从宏观来说:如下图所示HashMap属于Map接口下的集合。从微观来说:如下图所示,HashMap底层实现数据结构为数组+链表的形式,JDK8及其以后的版本中使用了数组+链表+红黑树实现,解决了链表太长导致的查询速度变慢的问题。图片来源: link.【题目拓展】解决Hash冲突的方法有什么?拉链法 (HashMap使用的方法)线性探测...原创 2020-03-24 11:04:29 · 96 阅读 · 0 评论 -
Java常见问题(十四):讲讲HashMap中扩容机制
题目分析:作者正在学习中…【问题】1. HashMap的初始容量,加载因子,扩容增量是多少?2. HashMap的长度为什么是2的幂次方?【答案】1. HashMap的初始容量,加载因子,扩容增量是多少?答:HashMap的初始容量16,加载因子为0.75,扩容增量是原容量的1倍。如果HashMap的容量为16,一次扩容后容量为32。2. HashMap的长度为什么是2的幂次方?...原创 2020-03-24 18:56:54 · 282 阅读 · 0 评论 -
Java常见问题(十五):HashMap源码分析
https://segmentfault.com/a/1190000012926722?utm_source=tag-newest原创 2020-03-24 19:07:48 · 83 阅读 · 0 评论 -
Java常见问题(十六):讲讲jdk7和jdk8的区别
https://blog.csdn.net/tawlang/article/details/78207091原创 2020-03-24 19:15:36 · 543 阅读 · 1 评论 -
Java常见问题(十七):进程和线程的有区别?
题目分析:一个比喻可以很好记忆【答案】进程是资源分配的最小单位,线程是CPU调度的最小单位以下转自:https://www.zhihu.com/question/25532384/answer/411179772可以做个简单的比喻:进程=火车,线程=车厢线程在进程下行进(单纯的车厢无法运行)一个进程可以包含多个线程(一辆火车可以有多个车厢)不同进程间数据很难共享(一辆火车上的乘客...原创 2020-03-24 19:31:53 · 116 阅读 · 0 评论 -
Java常见问题(十八):线程死锁引发的条件及如何避免?
题目分析:学习中。。【答案】线程死锁引发的条件:死锁的起因是多个线程之间相互等待对方而被永远暂停(处于非Runnable)。死锁的产生必须满足如下四个必要条件:资源互斥:一个资源每次只能被一个线程使用请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放不剥夺条件:线程已经获得的资源,在未使用完之前,不能强行剥夺循环等待条件:若干线程之间形成一种头尾相接的循环等待...原创 2020-03-24 19:43:56 · 82 阅读 · 0 评论 -
Java常见问题(十九):线程的状态有哪些?
题目分析:五大状态【答案】新建(NEW):新创建了一个线程对象。可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。阻塞...原创 2020-03-24 19:48:34 · 139 阅读 · 0 评论 -
Java常见问题(二十):谈谈对synchronized关键字的理解
题目分析:正在学习中…【答案】synchronized是Java中的一个关键字,是一个内部锁。【题目拓展】synchronized可以保证线程安全原创 2020-03-24 19:53:51 · 158 阅读 · 0 评论 -
Java常见问题(二十一):Java中的线程池有什么用?
题目分析:其他内容正在学习中…【答案】为什么需要线程池?如果没有线程池,我们平常所创建的线程在运行结束后都会被虚拟机销毁,如果任务数量多的话,频繁的创建和销毁线程会浪费大量时间,降低任务效率,创建过多的线程也会使内存开销吃紧。线程池是一种异步化技术,通过预先创建线程/异步处理来提高响应速度。同时通过统一调配线程资源,可以降低线程的重复创建问题,提高线程的利用率,中心化管理有利于对资...原创 2020-03-24 20:11:16 · 123 阅读 · 0 评论 -
Java常见问题(二十二):HashMap的常用命令
题目分析:其他内容正在学习中…【HashMap为什么会出现?】数组的特点:数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表:链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(n)。链表的特点是:寻址困难,插入和删除容易。是否有既寻址容易,插入和删除困难又简单的数据结...原创 2020-03-26 19:02:32 · 212 阅读 · 0 评论 -
Java常见问题(二十七):Java中的类加载机制是什么
一.自我介绍:面试官好,我的名字叫徐明晓,现在在大连海事大学就读研二,我的专业是计算机技术,学制是三年。我在研究生期间的科研项目是: 基于混沌系统的图像加密系统,简单来说就是研究加密的,加密的对象是图像,加密的主要工具是混沌系统,其他方法是为此服务的。因为我们实验室是科研为主,所以没有机会去参与横向的项目。想应聘贵公司的暑期实习工作。二.项目相关:1. 什么是混沌系统?混沌系统用一个比较普...原创 2020-03-30 09:23:18 · 93 阅读 · 2 评论 -
Java常见问题(二十三):JVM中的区域是怎么划分的?
题目分析:可以先记住四大基本类型,再记忆下属类型。1. 回答JVM中的内存主要划分为5个区域,即方法区,堆内存,程序计数器,虚拟机栈以及本地方法栈。方法区:方法区是一个线程之间共享的区域。常量,静态变量以及JIT编译后的代码都在方法区。主要用于存储已被虚拟机加载的类信息,也可以称为“永久代”,垃圾回收效果一般,通过-XX:MaxPermSize控制上限。堆内存:堆内存是垃圾回收的主要场...原创 2020-03-29 22:40:40 · 120 阅读 · 0 评论 -
Java常见问题(二十四):JVM中内存分配与垃圾回收
题目分析:暂无1. 回答JVM的内存可以分为堆内存和非堆内存。堆内存分为年轻代和老年代。年轻代又可以进一步划分为一个Eden(伊甸)区和两个Survivor(幸存)区组成。2. 题目拓展暂无...原创 2020-03-29 22:43:40 · 130 阅读 · 0 评论 -
Java常见问题(二十五):JVM如何判定一个对象是否应该被回收?
题目分析:暂无1. 回答判断一个对象是否应该被回收,主要是看其是否还有引用。判断对象是否存在引用关系的方法包括引用计数法以及root根搜索方法。2. 题目拓展暂无...原创 2020-03-29 22:45:31 · 262 阅读 · 0 评论 -
Java常见问题(二十六):JVM垃圾回收算法有哪些?
题目分析:暂无1. 回答HotSpot 虚拟机采用了root根搜索方法来进行内存回收,常见的回收算法有标记-清除算法,复制算法和标记整理算法。2. 题目拓展暂无...原创 2020-03-29 22:46:51 · 64 阅读 · 0 评论 -
Java常见问题(二十八):JVM中的垃圾收集器有了解吗?CMS收集器是怎么一回事?
题目分析:暂无1. 回答JVM中的垃圾收集器主要包括7种,即Serial,Serial Old,ParNew,Parallel Scavenge,Parallel Old以及CMS,G1收集器。CMS(Concurrent Mark Sweep)收集器:CMS收集器是一种以获取最短回收停顿时间为目标的收集器。CMS收集器是基于标记-清除算法实现的,是一种老年代收集器,通常与Pa...原创 2020-03-30 09:26:37 · 95 阅读 · 0 评论 -
Java常见问题(二十九):JVM常用内存调优命令
1. 回答答: JVM在内存调优方面,提供了几个常用的命令,分别为jps,jinfo,jstack,jmap以及jstat命令。分别介绍如下:jps:主要用来输出JVM中运行的进程状态信息,一般使用jps命令来查看进程的状态信息,包括JVM启动参数等。jinfo:主要用来观察进程运行环境参数等信息。jstack:主要用来查看某个Java进程内的线程堆栈信息。jstack pid 可以看到当...原创 2020-03-30 09:27:27 · 207 阅读 · 0 评论 -
Java常见问题(三十):JVM是什么?
1. 回答2. 题目拓展原创 2020-03-30 09:29:00 · 98 阅读 · 0 评论