HashMap是非线程安全的,如果想要用线程安全的map,可使用同步的HashTable或通过Collections.synchronizeMap(hashMap)让HashMap变的同步,或者使用并发集合ConcurrentHashMap.下面来介绍一些常见的HashMap面试题目. 1.为何HashMap的数组长度一定是2的次幂? 我们知道,HashMap的存储对于JDK1.7来说,是通过数组加链表的方式实现的.通过hash值获取数组下标存储索引,通过链表来解决冲突.下面看一下调用hash(…
Java的Object是所有引用类型的父类,定义的方法按照用途可以分为以下几种: (1)构造函数 (2)hashCode() 和 equals() 函数用来判断对象是否相同 (3)wait().wait(long).wait(long,int).notify().notifyAll() 线程等待和唤醒 (4)toString() (5)getClass() 获取运行时类型 (5)clone() (6)finalize() 用于在垃圾回收. 这些方法经常会被问题到,所以需要记得. 由这几类方法涉及…
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.JavaCommon项目 基础: (1)基本数据类型 (2)运算符操作 (3)异常 (4)String,StringBuffer,StringBuilder相关 (5)Number类型相关 (6)随机数.Math.random() 集合操作: (1)集合中的List (2)集合中的Stack (3)集合…
前言:这里继续对java线程相关知识点进行总结,不能间断. 1.yield()方法 yield()的作用是让步.它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权:但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权:也有可能是当前线程又进入到“运行状态”继续运行.注意yield()方法并不会释放锁. 具体: http://www.cnblogs.com/skywang12345/p/3479243.html 2.…
前言:接上篇,这里继续对java线程相关知识点进行总结. 1.notify和notifyall的区别 notify()方法能够唤醒一个正在等待该对象的monitor的线程,当有多个线程都在等待该对象的monitor的话,则只能唤醒其中一个线程,具体唤醒哪个线程则不得而知. nofityAll()方法能够唤醒所有正在等待该对象的monitor的线程,也不能决定哪个线程能够获取monitor. 参考: https://www.iflym.com/index.php/code/201208190001…
前言:在Java面试中,一定会遇到线程相关问题,因此笔者在这里总结Java中有关线程方面知识点,多数从网上得来(文中会贴出主要参考链接),有些也是笔者在面试中所遇到的问题,如有错误,请不吝指正.主要参考:https://segmentfault.com/a/1190000013813740 1.线程的基本概念 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,可以使用多线程对运算进行提速. 参考: http://www.cnblogs.com/xrq730/p…
这篇文章总结一下我认为面试中最应该掌握的关于基本类型和引用类型的面试题目. 面试题目1:值传递与引用传递 对于没有接触过C++这类有引用传递的Java程序员来说,很容易误将引用类型的参数传递理解为引用传递,而基本类型的传递理解为值传递,这是错误的.要理解值传递与引用传递,首先要理清值传递.引用传递与指针传递三个概念. 值传递与引用传递最重要的就是看在传递的过程中,值是否发生了复制.在Java中没有指针的概念,但是引用类型做为参数进行传递时,JVM将其实现为指针传递,那么重点就是搞清楚指针传递到底…
简介 同步系列到此就结束了,本篇文章对同步系列做一个总结. 脑图 下面是关于同步系列的一份脑图,列举了主要的知识点和问题点,看过本系列文章的同学可以根据脑图自行回顾所学的内容,也可以作为面试前的准备. 如果有需要高清无码原图的同学,可以关注公众号"彤哥读源码",回复"sync"领取. 总结 所谓同步,就是保证多线程(包括多进程)对共享资源的读写能够安全有效的运行. 根据同步的运用场景的不同,实现同步的方式也是随之一起变化,但是总结下来,这些实现方式之间又有一些共通之…
(手机横屏看源码更方便) 简介 线程系列我们基本就学完了,这一个系列我们基本都是围绕着线程池在讲,其实关于线程还有很多东西可以讲,后面有机会我们再补充进来.当然,如果你有什么好的想法,也可以公从号右下角联系我. 重要知识点 直接上图,看着这张图我相信你能够回忆起很多东西,也可以看着这张图来自己提问自己回答,当然,也可以把这张图作为面试复习的参考. 其中,ThreadLocal是我们没有分析的类,放在netty系列来学习,敬请期待^^ 彩蛋 下一个系列我们将学习netty相关的知识,当然跑不掉的还…
如果你的面试简历是如下这样写的,请务必准备回答下面的所有问题. 面试职位:Java高级工程师 专业技能: (1)牢固掌握Java基础知识,如集合.并发.I/O等,并对Java源码有一定的研究. (2)掌握Git.SVN等版本管理工具,熟练使用Maven.Jenkins等工具. (3)熟练使用MySQL数据库,了解InnoDB存储引擎,接触过MySQL的调优.熟悉Redis数据库. (4)熟练使用Linux常用命令,编写过shell脚本. (5)熟练使用Spring.Hibernate等框架. .…