Java面试之源码解析
Java全链路面试指南
追梦忆影86
Java EE和大数据
展开
-
7.深克隆和浅克隆有什么区别?它的实现方式有哪些?
目录1.典型回答2.考点分析3.知识扩展3.1clone() 源码分析3.2Arrays.copyOf()3.3深克隆实现方式汇总1.所有对象都实现克隆2.通过构造方法实现深克隆3.通过字节流实现深克隆4.通过第三方工具实现深克隆5.通过 JSON 工具类实现深克隆4.克隆设计理念猜想5.小结使用克隆可以为我们快速地构建出一个已有对象的副本,它属于 Java 基础的一部分,也是面试中常被问到的知识点之一。1.典型回答浅克隆(Shadow...原创 2020-05-27 16:06:42 · 625 阅读 · 0 评论 -
6.谈谈你对锁的理解?如何手动模拟一个死锁?
目录1.典型回答2.考点分析3.知识扩展3.1悲观锁和乐观锁3.2可重入锁3.3共享锁和独占锁4.小结在并发编程中有两个重要的概念:线程和锁,多线程是一把双刃剑,它在提高程序性能的同时,也带来了编码的复杂性,对开发者的要求也提高了一个档次。而锁的出现就是为了保障多线程在同时操作一组资源时的数据一致性,当我们给资源加上锁之后,只有拥有此锁的线程才能操作此资源,而其他线程只能排队等待使用此锁。当然,在所有的面试中也都少不了关于“锁”方面的相关问题。1.典型回答死锁是...原创 2020-05-27 15:50:14 · 297 阅读 · 0 评论 -
5.synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别?
目录1.典型回答2.考点分析3.知识扩展3.1ReentrantLock 源码分析3.2公平锁 VS 非公平锁3.3JDK 1.6 锁优化1.自适应自旋锁2.锁升级4.小结在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并不是为了替代 synchronized,而是在 synchronized 不适用的情况下,提供一种可以选择的高级功能...原创 2020-05-27 15:31:12 · 245 阅读 · 0 评论 -
4.详解 ThreadPoolExecutor 的参数含义及源码执行流程?
目录1.典型回答2.考点分析3.知识扩展3.1 execute() VS submit()3.2线程池的拒绝策略3.3自定义拒绝策略3.4ThreadPoolExecutor 扩展4.小结线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入“池”中,当有任务来临时就可以重用已有的线程,无需等待创建的过程,这样就可以有效提高程序的响应速度。但如果要说线程池的话一定离不开 ThreadPoolExecutor ,在阿里巴巴的《...原创 2020-05-27 15:11:27 · 471 阅读 · 0 评论 -
3.线程的状态有哪些?它是如何工作的?
目录1.典型回答2.考点分析3.知识扩展3.1BLOCKED 和 WAITING 的区别3.2start() 和 run() 的区别3.3 线程优先级3.4线程的常用方法1.join2.yield4.小结线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。当然,线程也是面试中常被问到的...原创 2020-05-27 14:56:06 · 186 阅读 · 0 评论 -
2.HashMap 底层实现原理是什么?JDK8 做了哪些优化?
HashMap 是使用频率最高的类型之一,同时也是面试经常被问到的问题之一,这是因为 HashMap 的知识点有很多,同时它又属于 Java 基础知识的一部分,因此在面试中经常被问到。原创 2020-05-27 14:41:17 · 227 阅读 · 0 评论 -
1.String 的特点是什么?它有哪些重要的方法?
几乎所有的Java 面试都是以String开始的,如果第一个问题没有回答好,则会给面试官留下非常不好的第一印象,而糟糕的第一印象则会直接影响到自己的面试结果,就好像刚破壳的小鹅一样,会把第一眼看到的动物当成自己的母亲,即使它第一眼看到的是一只小狗或小猫,也会默认跟随其后,心理学把这种现象叫做印刻效应。印刻效应不仅存在于低等动物之中,同样也适用于人类,所以对于String的知识,我们必须深入的掌握才能为自己赢得更多的筹码。本节的问题是:String是如何实现的?它有哪些重要的方法?1.典型...原创 2020-05-27 14:21:05 · 343 阅读 · 0 评论 -
0.大厂技术面试“潜规则”
1.为什么说源码掌握程度决定 Offer 薪资?想要分辨出谁是“包装”出来的,谁是真正有实力的,方法其实很简单,只要追问更深层次的技术细节或源码执行流程就行。所以,只想通过背几道面试题就能拿到高薪或者进入大厂是完全不可能的,你需要追本溯源地搞懂每个知识点之间的关联,努力去研究 Java 底层数据结构和执行源码,才有可能获得成功。2.大厂面试的“潜规则”为什么这么说呢?几乎所有大厂的面试套路都是一样的:他们会从一个简单的面试题问起,然后扩展到和这个知识点相关的更深层次的知识点细节,直到问的你答原创 2020-05-27 14:03:14 · 272 阅读 · 0 评论