总觉得自己好像什么都会点,但是面试就被问得很懵逼,自己很菜就不再吐槽了
最近疯狂的在牛客刷面经,但是过目就忘了!!!所以分门别类的记录了一下高频的考点。
何为高频的考点?快速扫描了七八十篇面经后,再看的面经绝大部分都在我笔记覆盖了!
所以看完了100多篇就没怎么看了,还是整理整理开始狂补基础知识吧!
本文内容来自陌陌、美团、阿里、链家、快手、京东、瓜子、滴滴、百度、爱奇艺、vivo等十多个公司最近三年的100多篇面经中比较高频的总结,有的是校招的有的是实习的,不过不影响学习。学习嘛,反正都得学。
一、JVM
-
JVM内存结构
-
JVM的分区(Java的内存管理机制)(JAVA 的运行时区域分配):都说的是JVM的内存结构
-
JVM哪个区域不会发生内存溢出
-
-
类加载器
-
JVM 类加载机制
-
class 文件如何执行
-
为什么要引入双亲委派机制
-
什么情况下用自定义类加载器
-
-
反射
-
写一段反射的代码
-
-
GC
-
哪些阶段会发生STW现象
-
G1垃圾回收为什么可停顿
-
GC的工作流程
-
FULL GC发生场景
-
如何打印GC日志
-
经常FULL GC怎么定位到错误
-
GC可达性分析怎么做,哪些可以作为GC Root
-
CMS收集器和G1垃圾回收器回收垃圾过程
-
G1的优点
-
垃圾回收的过程,什么对象会进入老年代
-
垃圾回收算法有哪些?为什么新生代使用复制算法
-
高吞吐量时用哪种GC算法、
-
执行了System.gc()触发GC机制后如何进行回收的
-
-
其他
-
JVM排错方式
-
内存泄露的原因,举例说明
-
如何排查内存泄露
-
JVM启动参数有哪些,列举熟悉的几个
-
JVM为什么分新生代和老年代
-
系统周期性卡顿,如何定位问题,结合GC日志
-
在 JVM上运行一段Java 程序输出一条语句,它是怎么输出到屏幕上的
-
二、 并发
-
锁
-
Java 中的锁机制
-
为什么需要锁
-
介绍下几种锁
-
公平锁和非公平锁的区别
-
悲观锁和乐观锁
-
可重入锁与非可重入锁
-
自旋锁与阻塞锁
-
-
Synchronized
-
Synchronized和ReetrantLock的区别
-
Synchronized的偏向锁、轻量级锁、重量级锁
-
Synchronized关键字的底层原理
-
-
Reentrantlock
-
Reentrantlock 有哪些方法
-
有Synchronized了为什么还需要Reentrantlock
-
tryLock()在什么场景下用
-
-
读锁插队策略,锁升降级策略
-
如何优化锁并提高并发性能
-
-
线程池
-
线程池是如何实现的
-
使用线程池带来的好处
-
常见的线程池有哪些,各个参数的意义
-
执行线程池的两种方式
-
线程池怎么定时完成一项任务?
-
线程池线程都有任务,阻塞队列也满了,再来任务怎么办?
-
Java 线程池 ThreadPoolExecuter 和四个自带的线程池分别适合什么场景?
-
ScheduledThreadPoolExecutor 中的使用的是什么队列?内部如何实现任务排序
-
线程池常见的拒绝策略
-
如何优雅的关闭线程池
-
如何设计一个简单的线程池
-
-
并发类
-
怎么实现一个类满足插入和删除操作的原子性
-
JUC原子类的实现原理
-
AQS的原理和应用场景
-
CAS的底层原理和应用场景,ABA问题
-
怎么实现一个线程安全的计数器? 原子类 AtomicInteger 实现原理是什么?和你设计的计数器优劣比较? CAS 怎么实现原子操作的?
-
ThreadLocal
-
ThreadLocal 的应用场景
-
ThreadLocal 与Thread的关系
-
ThreadLocal 使用不当为什么会发生内存溢出?怎么避免
-
-
CopyOnWriteList
-
CopyOnWriteArrayList 与ArrayList相比有哪些异同?
-
CopyOnWriteArrayList 通过哪些手段实现了线程安全?
-
为什么 CopyOnWriteArrayList 迭代过程中,数组结构变动,
-
-