java面试题总结

知识整理


一、项目介绍(熟悉项目中用到的中间件及其原理。对目前业务现状有反思,思考可能遇到的问题和解决方案)
二、java基础
三、多线程,并发编程
四、JVM
五、分布式
六、mysql
七、其他。maven git

java 基础

一、集合类
Collections分为List、Set、Map
ArrayList的底层实现原理:ArrayList底层实际上用了一个Object[]来存放数据。你知道ArrayList在实例化时,什么时候才分配大小吗?
LindList的底层实现原理:LindList的底层实际是用了双向链表来实现的。你知道LindList的查找算法是什么吗?
ArrayList和LindList的区别

你直接FailFast机制吗?它的底层实现原理?什么时候会出现FailFast?会抛出什么异常?conrrentmodifiled

Set
HashSet的底层实现原理。其实是基于HashMap来实现的
TreeSet的底层实现原理。其实是基于TreeMap来实现的。采用的哪种数据结构?红黑树
HashSet和TreeSet的区别

List和Set的区别

HashMap的底层实现原理?jdk6和jdk8的区别,冲突怎么解决?两个key的Hashcode相同怎么办?线程不安全,为什么?什么情况下会出现循环链表?
ConcurrentHashMap为什么线程安全?底层实现原理?他是并发容器,怎么理解?为什么相比加锁速度快?它的get操作需要加锁吗?他的size操作怎么实现的?

二、多线程
1、线程的实现方式?几种?
2、线程有几种状态?各个状态是怎么运作的?
3、你知道join()方法和yield()方法吗?
4、线程池的伸缩策略?线程池的几个核心参数:coresize,maxsize,keeplivetime,queue. 拒绝策略有几种。
5、创建线程池的几种方式?静态工厂?
6、你知道CountDownLatch、CyclicBarrier、。你知道它们的实现方式吗?基于AQS实现的。AQS很重要的,一定要明白,JUC包下面的大部分功能都是基于它实现的。
7、你知道Synchionized的底层实现原理吗?moniter对象,moniterenter和moniterexit。你知道Synchionized在1.6都做了哪些优化吗?偏向锁、轻量级锁、重量级锁、锁消除、锁粗化。
8、你知道Synchionized和lock的区别吗?
9、你知道Reentrantlock吗?你知道它的实现原理吗?基于AQS.
10、你知道ReentrantReadWriteLock吗?什么场景用它?底层实现原理
11、Reentrantlock,羊群效应。联想到zookeeper的分布式锁如何解决羊群效应

jvm

一、jvm内存分配
分为两大类:线程私有区,线程共享区
线程私有区:程序计数器、虚拟机栈、本地方法栈
线程共享区:堆、方法区(常量池)
以上的每个区域必须知道里面都存放的什么数据,都干了什么操作。会抛出什么异常。
对象的创建过程:1、遇到new指令之后,会先检查这个指令参数是否能在常量池中定位到一个类的符号引用。。。。

二、垃圾收集算器与内存分配策略
1、判断对象是否需要被回收的算法有哪几种?
引用计数器算法、可达性分析算法。
可以作为GCRoots的对象有哪几种?牢记,被问到过
2、对象有几种引用类型?每种的区别。
3、在可达性分析算法中不可达的对象一定会被回收吗?
看是否实现了finalize()方法,里面都干了什么操作。要了解
4、垃圾收集算法都有几种?
标记清除算法
复制算法
标记整理算法
分代收集算法
每种具体干了什么事情,有什么区别都要了解。

5、垃圾收集器
新生代的:serial收集器、ParNew收集器、Parallel Scavenge收集器(吞吐量优先收集器)
老年代、serial old收集器、Parallel old收集器、CMS收集器(重点在重点)、G1收集器(重点)
CMS收集器(重点在重点)都有哪几步?每步都干了什么事情?哪两步会出现"stop the world"
有哪些缺点?1、无法处理“浮动垃圾”,什么是浮动垃圾?2、内存碎片?什么会有内存碎片?因为CMS采用的是标记清楚算法,不带整理过程。CMS怎么解决的? 第一种:当CMS顶不住要Full GC的时候,会开启内存碎片的合并整理过程。
第二种:执行多少次不带压缩的Full GC后,外带一次压缩整理的过程。

6、内存分配策略

  1. 对象优先在eden分配
  2. 大对象直接进入老年代
  3. 长期存活的对象将进入老年代 默认经过几次minor GC
  4. 动态对象年龄判定 什么意思 怎么理解
  5. 空间分配担保(重点) 不允许空间分配担保失败,会执行什么操作?

7、类加载过程,几个阶段
加载、验证、准备、解析、初始化、使用、卸载
每一步都干了什么事情,要了解。
8、双亲委托机制。干了什么事情,解决了什么事情。
9、讲一下一个Class类加载的整个过程。。
10、线上OOM排查步骤

  • jps -mlvV 找出当前java进程号1234
  • jstat -gcutil 1234 1000 10
    从这一步查出,full gc次数频繁,由此可见原因是老年代空间不足 dump内存 接下来就是排查问题最重要的一步,dump内存最容易想到的是
  • jmap -dump:format=b,file=heap.hprof 1234。
    使用eclipse MAT或者visaul VM查看dump文件分析原因
    11、 一次load飙高排查过程
  • ps -ef | grep java
    找出Java进程ID,得到进程ID为21711
  • top -Hp 21711
    找出该进程内最耗费CPU的线程,TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21742的线程,用printf "%x\n" 21742,得到21742的十六进制值为54ee,下面会用到。
  • jstack 21711 | grep 54ee
    它用来输出进程21711的堆栈信息,然后根据线程ID的十六进制值grep。有时这一步并不能从整体上查看性能消耗在哪, 要用jstack 21711 > jstack.txt查看整体情况。

总结:
Jstack :可以查看线程信息
Jmap :可以查看java内存分配的情况
Jstat :可以查询gc的信息

spring

1、spring可以解决循环依赖吗?
http://blog.csdn.net/a1548178885/article/details/51697386
2、怎么理解IOC和AOP
3、spring事务怎么实现的
4、spring的传播特性

中间件

Zookpeer
1、什么是原子广播协议
2、master选举算法
3、怎么实现分布式锁
4、有几种节点类型

Dubbo
1、dubbo交互原理
2、Dubbo服务提供者发布服务的流程
3、Dubbo服务消费者消费服务的流程
4、什么是本地暴露和远程暴露,他们的区别
5、支持的协议都有哪些?区别是什么,适用场景

redis
1、和memcache的区别
2、几种数据结构,每种的使用场景
3、过期策略有哪些
4、数据淘汰策略有哪些
5、redis内存模型
6、zset的用法和实现原理

MQ
1、如何解决消息顺序问题
2、如何解决消息重复投递问题
。。。

设计能力

1、如何设计秒杀



2、分布式锁怎么实现

mysql

索引
1、索引的分类以及区别
2、索引的原理 b+树 为什么用B+树 不用B树
3、什么是聚集索引和辅助索引
4、最左前缀

锁:
1、行锁有几种?共享锁、排他锁。怎么实现的
2、什么叫MVCC 一致性非锁定读
3、什么是一致性锁定读 select .... for update select .... lock in share mode
4、表锁有几种?意向共享锁 意向排塔锁
5、锁的算法 ?Recode lock GAP next-key Lock = GAP+ Recode lock
6、锁的隔离级别?ACID 怎么实现的
原子性:redo log
一致性:undo log
隔离线:锁
持久性:redo log
优化
1、哪些情况索引会失效?
2、索引如何设计。怎么考量

其他

1、spring ioc里面为什么用currenthashmap
2、如何设置 不让浏览器缓存
3、nio中 客户端线程如何匹配注册的事件
4、共享session问题

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容