
面试专栏
备战Java实习生面试必看!!!
Linn-cn
希望你眼眸有星辰,心中有山海。
从此以梦为马,不负韶华。
展开
-
Java实习生面试复习(十四):Redis基础知识汇总
Redis为什么这么快呢?Redis如何保存这些数据类型?五大基础数据类型bit 位图HyperLogLog布隆过滤器Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。RDB快照持久化、AOF增量持久化内存淘汰机制原创 2020-10-23 10:33:51 · 505 阅读 · 6 评论 -
Java实习生面试复习(十三):Java对象的创建、内存布局、访问
对象的创建- 检查类的加载 - 虚拟机遇到 `new` 指令时,会先检查在常量池中能不能定位到一个类的符号引用,检查是否已经被加载,解析和初始化过。- 分配内存 - 指针碰撞 - 空闲列表- 初始化零值 - 内存分配完毕后,虚拟机需要将分配到的内存空间全部初始化为零值- 设置对象头 - 虚拟机要对对象进行必要的设置,比如类的元数据信息,对象的哈希码,对象的GC分代年龄等信息> 在上面工作完成之后,从虚拟机的视角来看,一个新的对象已经产生,但从程序角度来看,对象创建才开原创 2020-09-08 15:59:48 · 212 阅读 · 0 评论 -
Java实习生面试复习(十二):JVM内存结构/运行时数据区
## 2020/10/14 更新部分内容> 如果你觉得内容对你有帮助的话,不如给个赞,鼓励一下更新????。加油啊!新的一天,新的开始????## JVM运行时数据区> 从某一角度来说,Java 虚拟机的内存结构 == 运行时数据区,在《Java 虚拟机规范》中用的是【运行时数据区】术语的,并没有内存结构这么一说法。内存结构只是听着更加贴切,更加形象。> JVM(Java Virtual Machine,Java 虚拟机)顾名思义就是用来执行 Java 程序的“虚拟主机”,实际的工作是将原创 2020-07-11 20:46:51 · 450 阅读 · 1 评论 -
Java实习生面试复习(十一):什么是CAS?
说到CAS,我们就得提起通常所说的并发包也就是 java.util.concurrent(JUC)及其子包,它集中了 Java 并发的各种基础工具类,具体主要包括几个方面:* 提供了比 synchronized 更加高级的各种同步结构 CountDownLatch、Semaphore 等,可以实现更加丰富的多线程操作,比如 Semaphore 作为资源控制器,可以限制同时进行工作的线程数量。* 各种线程安全的容器,比如面试常问到的 ConcurrentHashMap或者通过类似快照机制,实现线程安全的动原创 2020-06-08 14:42:34 · 351 阅读 · 0 评论 -
Java实习生面试复习(十):线程池ThreadPoolExecutor学习
程池是什么,好处是啥?线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入“池”中,当有任务来临时就可以重用已有的线程,无需等待创建的过程,这样就可以有效提高程序的响应速度。通过线程池复用线程有以下几点优点:* 减少资源创建 => 减少内存开销,创建线程占用内存* 降低系统开销 => 创建线程需要时间,会延迟处理的请求* 提高稳定稳定性 => 避免无限创建线程引起的OutOfMemoryError【简称OOM】**在阿里巴巴的《Java 开发手册》中原创 2020-05-07 11:35:18 · 395 阅读 · 0 评论 -
Java实习生面试复习(九):聊聊动态代理
> 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。主要有静态代理和动态代理,静态代理这里就不赘述了。> 动态代理是程序在运行期间动态构建代理对象和动态调用代理方法的一种机制。**如何实现动态代理?JDK Proxy 和 CGLib 有什么区别?**但动态代理不止有反射一种实现方式,例如,动态代理很出名的CGLib,CGLib就是基于ASM(一个Java字节码操作框架)而非反射实现的。简单来说,动态代理是一种行为方式,而**反射或ASM只是它的一种实现手段**而已。原创 2020-05-01 20:32:10 · 899 阅读 · 4 评论 -
Java实习生面试复习(八):volatile的学习
volatile也是多线程这块经常问到的基础问题,以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(JMM),Java并发编程的一些特性都牵扯出来,我们这篇文章就来学习一下volitile关键字吧!多线程之volatile说起volatile,肯定少不了Java内存模型,**Java内存模型(Java Memory Model,JMM)是Java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现Java程序在各种不原创 2020-04-03 14:26:29 · 1593 阅读 · 0 评论 -
Java实习生面试复习(七):synchronized和ReentrantLock的学习
Synchronized 和 ReentrantLock它们有什么区别?**Synchronized属于独占式悲观锁,是通过JVM 层面实现的。** synchronized 只允许同一时刻只有一个线程操作资源。在Java中每个对象都隐式包含一个monitor (监视器)对象,加锁的过程其实就是竞争monitor的过程,当线程进入字节码monitorenter指令之后,线程将持有monitor对象,执行monitorexit时释放monitor对象,当其他线程没有拿到monitor对象时,则需要阻塞等待原创 2020-03-28 16:33:16 · 576 阅读 · 3 评论 -
Java实习生面试复习(六):MySQL索引
作为一个后端程序员,数据库也是天天打交道的,我们都知道表结构设计只是设计数据库最初环节之一,另外还有最为重要的一个环节—索引设计,只有正确设计索引,业务才能达到上线的初步标准~,看完这篇文章,至少让你对MySQL的索引有一个简单的认识。原创 2020-03-25 11:14:08 · 1349 阅读 · 0 评论 -
Java实习生面试复习(五):Thread线程学习
线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化。六种状态分别为:* **NEW**,新建状态,线程被创建出来,**但尚未启动时的线程状态**;* **RUNNABLE**,就绪状态,表示可以运行的线程状态,它可能正在运行,或者是在排队等待操作系统给它分配 CPU 资源; * 比如Thread.start方法就是将线程从NEW状态 转换成 RUNNABLE原创 2020-03-22 16:53:21 · 931 阅读 · 1 评论 -
Java实习生面试复习(四):LinkedList
我是一名很普通的大三学生。我会坚持写博客,输出知识的同时巩固自己的基础,记录自己的成长和锻炼自己,奥利给!!LinkedList 适用于集合元素先入先出和先入后出的场景,在队列中被频繁使用。下面我们就来简单了解一下它,并看看它跟常用的ArrayList的区别。LinkedList结构分析LinkedList 底层数据结构是一个双向链表,整体结构...原创 2020-03-19 10:34:19 · 1610 阅读 · 0 评论 -
Java实习生面试复习(三):ArrayList
我是一名很普通的大三学生。我会坚持写博客,输出知识的同时巩固自己的基础,记录自己的成长和锻炼自己,奥利给!!ArrayList 我们几乎每天都会使用到,本文就一起来看看同样是面试高频问到的ArrayList和LinkedList的相关知识吧。ArrayList分析底层结构分析其实ArrayList是很简单...原创 2020-03-17 17:47:18 · 1333 阅读 · 0 评论 -
Java实习生面试复习(二):HashMap
HashMap基本是我们在日常使用中频率特别高的一个数据结构类型了,同时也是面试经常问到的,围绕着HashMap能展开一系列问题,本文不对源码做过深的讨论,因为我觉得实习生应该还不需要了解的那么透彻。原创 2020-03-15 11:18:49 · 3931 阅读 · 9 评论 -
Java实习生面试复习(一):String类型
String 是如何实现的?它有哪些重要的方法?为什么String要用final修饰的,它的好处在哪?String 和 StringBuilder、StringBuffer 的区别String 类型在 JVM(Java 虚拟机)中是如何存储的? == 和 equals 的区别原创 2020-03-12 16:52:55 · 789 阅读 · 1 评论