java面试题
文章平均质量分 84
sdlyjzh
这个作者很懒,什么都没留下…
展开
-
java多线程 sleep()和wait()的区别
这两个方法主要来源是,sleep用于线程控制,而wait用于线程间的通信,与wait配套的方法还有notify和notifyAll.区别一:sleep是Thread类的方法,是线程用来 控制自身流程的,比如有一个要报时的线程,每一秒中打印出一个时间,那么我就需要在print方法前面加上一个sleep让自己每隔一秒执行一次。就像个闹钟一样。wait是Object类的方法,用来线程间的通信,这个方法会使转载 2016-06-14 17:55:48 · 366 阅读 · 0 评论 -
String的按值传递,java传参都是传值
转自:http://www.cnblogs.com/woshimrf/p/5263018.htmljava中对象作为参数传递给一个方法,到底是值传递,还是引用传递?String和int参数传递是按值传递还是引用传递?一道面试题目,String的传递:123456789转载 2017-08-18 16:24:08 · 264 阅读 · 0 评论 -
jvm内存区域
程序计数器 可以看做是当前线程所执行的字节码的行号指示器虚拟机栈 每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口 等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。 局部变量表存放了编译期可知的各种基本数据类型(boolean、byte、char、short、int、float、lo原创 2017-11-07 13:32:53 · 174 阅读 · 0 评论 -
Java集合
List 常用的有ArrayList,Vector,LinkedList。 其中ArrayList和Vector底层通过数组实现,它们两者几乎使用了相同的算法,唯一的区别在于vector对绝大部分操作都做了线程同步。 LinkedList使用了循环双向列表数据结构。Map 常用的Map为Hashtable,HashMap,LinkedHashMap和TreeMap。 Hashtable和原创 2017-11-08 12:55:08 · 166 阅读 · 0 评论 -
HashMap底层实现原理
大家都知道HashMap是存储key-value形式的集合,允许key和value为null。那么HashMap底层到底是如何实现的呢?今天查了一些资料,简单记录一下。 HashMap底层通过数组和链表实现。数组可以理解,那么链表是用来做什么的呢?这是因为两个不同的对象,hashCode是可能相等的。为了在数组存储hashCode相等的两个不同对象,实际上,一个数组里面的元素,是一个链表。当根据h原创 2017-11-09 15:43:04 · 465 阅读 · 0 评论 -
HashMap为什么是线程不安全的?
如果有人问你,HashMap是不是线程安全的,大部分人都不会答错,当然是线程不安全的了。线程安全的是Hashtable和ConcurrentHashMap。如果再问你,为什么说HashMap是线程不安全的,估计很多人就答不出来了。网上找了篇很好的文章,稍作修改。对于HashMap底层数据结构不清楚的,可以参考这篇文章:HashMap底层实现原理resize我们都知道HashMap初始容量大小为16,原创 2017-11-10 22:39:35 · 765 阅读 · 0 评论 -
ConcurrentHashMap小记
ConcurrentHashMap和HashTable比,是一种更高效的线程安全Map。 HashTable通过synchronized保证线程安全,而且对所有操作均进行了加锁。当线程竞争激烈的情况下,由于要竞争同一把锁,效率就非常低下了。 ConcurrentHashMap通过引入多个锁,缓解了上述问题。通过将底层数据分成多个Segment,每个Segment分配一个锁,当一个Segment的原创 2017-11-17 13:38:32 · 207 阅读 · 0 评论 -
JAVA快速排序
本文只讲算法思想和简单实现。效率问题暂不考虑。算法思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 下图是一次快速排序的全过程。 代码示例public static void quickSort(int[] arr, int start,原创 2017-11-13 15:55:30 · 181 阅读 · 0 评论 -
Java异常处理
先放图。 java所有异常类,继承自java.lang.Throwable。Throwable有两个直接子类,Error类和Exception类。Error(错误):一般指虚拟机相关的问题,入系统崩溃、虚拟机出错、动态链接失败等。这种错误无法恢复,也不可捕获,会导致程序运行中断。例如内存溢出错误。Exception(异常):一般分为Checked(受检)异常和Runtime异常,所有Runti原创 2017-11-21 14:05:52 · 220 阅读 · 0 评论