Skip to content

Latest commit

 

History

History
410 lines (174 loc) · 13.1 KB

152.md

File metadata and controls

410 lines (174 loc) · 13.1 KB

151_ThreadLocal内存泄漏问题以及专栏最终总结

《151_ThreadLocal内存泄漏问题以及专栏最终总结》

ThreadLocal这个东西为什么会有内存泄漏

我们的每个线程可以通过THreadLocal来存取自己线程专属的一个变量副本,ThreadLocalMap,Key-Value,Key是WeakReference,弱引用,value就是你自己放的变量副本

比如说你的线程长期存活,ThreadLocal里会一直有你这个线程的key-value对,万一说出现一些内存不够的情况,进行了gc,此时就会自动把很多线程在ThreadLocal里存放的key-value对的key,弱引用,都会进行回收

null -> value

JDK团队都有解决的方案了,你在通过ThreadLocal,set、get、remove,他会自动清理掉map里值为null的key,确保不要有很多的null值引用了你的value造成内存的泄漏问题,这个就是一个他的自己的解决方案

你不要老是让一个长期存活的线程,线程池里的线程,要不然可能是你自己开启的线程在后台长期运行,尽量避免在ThreadLocal长期放入数据,你不使用的时候最好及时的进行remove,自己主动把数据给删除了

开篇词

01、先一起来看看阿里、美团、滴滴、京东等一线大厂的面试真题

02、面试突击第一季、第二季以及第三季各自的侧重点是什么?

03、来看几个并发、JVM和MySQL的面试连环炮

04、学习完三季面试突击课程之后,你能拿下什么样的Offer?

05、除了学习面试突击课程之外,为了面试你还应该做哪些准备呢?

Java集合包

06、为什么在Java面试中一定会深入考察HashMap?

07、你知道HashMap底层的数据结构是什么吗?

08、JDK 1.8中对hash算法和寻址算法是如何优化的?

09、你知道HashMap是如何解决hash碰撞问题的吗?

10、说说HashMap是如何进行扩容的可以吗?

Java并发编程

11、BAT面试官为什么都喜欢问并发编程的问题?

12、说说synchronized关键字的底层原理是什么?

13、能聊聊你对CAS的理解以及其底层实现原理可以吗?

14、ConcurrentHashMap实现线程安全的底层原理到底是什么?

15、你对JDK中的AQS理解吗?AQS的实现原理是什么?

16、说说线程池的底层工作原理可以吗?

17、那你再说说线程池的核心配置参数都是干什么的?平时我们应该怎么用?

18、如果在线程中使用无界阻塞队列会发生什么问题?

19、你知道如果线程池的队列满了之后,会发生什么事情吗?

20、如果线上机器突然宕机,线程池的阻塞队列中的请求怎么办?

21、谈谈你对Java内存模型的理解可以吗?

22、你知道Java内存模型中的原子性、有序性、可见性是什么吗?

23、能从Java底层角度聊聊volatile关键字的原理吗?

24、你知道指令重排以及happens-before原则是什么吗?

25、volatile底层是如何基于内存屏障保证可见性和有序性的?

Spring

26、说说你对Spring的IOC机制的理解可以吗?

27、说说你对Spring的AOP机制的理解可以吗?

28、了解过cglib动态代理吗?他跟jdk动态代理的区别是什么?

29、额外加餐:能说说Spring中的Bean是线程安全的吗?

30、Spring的事务实现原理是什么?能聊聊你对事务传播机制的理解吗?

31、额外加餐:能画一张图说说Spring Boot的核心架构吗?

32、额外加餐:能画一张图说说Spring的核心架构吗?

33、能说说Spring中都使用了哪些设计模式吗?

34、额外加餐:能画一张图说说Spring Web MVC的核心架构吗?

35、额外加餐:能画一张图说说Spring Cloud的核心架构吗?

JVM

36、JVM中有哪几块内存区域?Java 8之后对内存分代做了什么改进?

37、你知道JVM是如何运行起来的吗?我们的对象是如何分配的?

38、说说JVM在哪些情况下会触发垃圾回收可以吗?

39、说说JVM的年轻代垃圾回收算法?对象什么时候转移到老年代?

40、说说老年代的垃圾回收算法?常用的垃圾回收器都有什么?

41、你们生产环境中的Tomat是如何设置JVM参数的?如何检查JVM运行情况?

42、你在实际项目中是否做过JVM GC优化,怎么做的?

43、你知道发生OOM之后,应该如何排查和处理线上系统的OOM问题?

网络

44_你能聊聊TCP/IP四层网络模型吗?OSI七层网络模型也说一下!(上)

45_你能聊聊TCP/IP四层网络模型吗?OSI七层网络模型也说一下!(中)

46_你能聊聊TCP/IP四层网络模型吗?OSI七层网络模型也说一下!(下)

47、浏览器请求www.baidu.com的全过程大概是怎么样的?(上)

48、浏览器请求www.baidu.com的全过程大概是怎么样的?(下)

49、画一下TCP三次握手流程图?为啥是三次而不是二次或者四次呢?

50、聊聊HTTP协议的工作原理!

51、聊聊HTTPS的工作原理?为啥用HTTPS就可以加密通信?

52、聊聊http的长连接的工作原理到底是啥?

MySQL

53、MySQL、MyISAM和InnoDB存储引擎的区别是啥?(上)

54、MySQL、MyISAM和InnoDB存储引擎的区别是啥?(下)

55、聊聊MySQL的索引实现原理?各种索引你们平时都怎么用的?(上)

56、聊聊MySQL的索引实现原理?各种索引你们平时都怎么用的?(下)

57、你能说说事务的几个特性是啥?有哪几种隔离级别?(上)

58、你能说说事务的几个特性是啥?有哪几种隔离级别?(下)

59、你能说说MySQL数据库锁的实现原理吗?如果死锁了咋办?

60、MySQL的SQL调优一般都有哪些手段?你们一般怎么做?

Linux

61、聊聊Socket的工作原理?Socket跟TCP IP之间是啥关系?

62、进程间是如何通信的?线程间又如何切换呢?

63、你能聊聊BIO、NIO、AIO分别都是啥?有什么区别?(上)

64、你能聊聊BIO、NIO、AIO分别都是啥?有什么区别?(下)

生产实践

65、线上服务器CPU 100%了!该怎么排查、定位和解决?

66、线上机器的一个进程用kill命令杀不死该怎么办?磁盘空间快满了又该怎么处理?

加餐:并发底层深入

67、再谈原子性:Java规范规定所有变量写操作都是原子的

68、32位Java虚拟机中的long和double变量写操作为何不是原子的?

69、volatile原来还可以保证long和double变量写操作的原子性

70、到底有哪些操作在Java规范中是不保证原子性的呢?

71、可见性涉及的底层硬件概念:寄存器、高速缓存、写缓冲器(上)

72、可见性涉及的底层硬件概念:寄存器、高速缓存、写缓冲器(下)

73、深入探秘有序性:Java程序运行过程中发生指令重排的几个地方

74、JIT编译器对创建对象的指令重排以及double check单例实践

75、现代处理器为了提升性能的指令乱序和猜测执行的机制!

76、高速缓存和写缓冲器的内存重排序造成的视觉假象

77、synchronized锁同时对原子性、可见性以及有序性的保证

78、深入分析synchronized是如何通过加锁保证原子性的?

79、synchronized是如何使用内存屏障保证可见性和有序性的?

80、再看volatile关键字对原子性、可见性以及有序性的保证

81、高速缓存的数据结构:拉链散列表、缓存条目以及地址解码(上)

82、高速缓存的数据结构:拉链散列表、缓存条目以及地址解码(下)

83、结合硬件级别的缓存数据结构深入分析缓存一致性协议(上)

84、结合硬件级别的缓存数据结构深入分析缓存一致性协议(下)

85、采用写缓冲器和无效队列优化MESI协议的实现性能

86、硬件层面的MESI协议为何会引发有序性和可见性的问题?

87、内存屏障在硬件层面的实现原理以及如何解决各种问题

88、在复杂的硬件模型之上的Java内存模型是如何大幅简化的?

89、面试的时候如何从内存屏障、硬件层面的原理来震慑面试官

90、Java虚拟机对锁的优化:锁消除、锁粗化、偏向锁、自旋锁(上)

91、Java虚拟机对锁的优化:锁消除、锁粗化、偏向锁、自旋锁(下)

92、再来看看CAS是如何基于MESI协议在底层硬件层面实现加锁的?

加餐面试题:系统安全性

93、为什么越来越多的公司面试的时候,喜欢问安全相关的连环炮?

94、能不能说说一般黑客常用的XSS网络攻击的原理是什么?

95、能不能说说我们经常听到的SQL注入攻击背后的原理是什么?

96、听说过CSRF攻击吗?你知道他背后的原理是什么吗?

97、如果你们的系统允许用户上传文件,可能会遭到什么样的黑客攻击?

98、让所有工程师闻声色变的DDoS攻击到底是什么东西?

99、基于SYN Flood模式的DDoS攻击,背后的原理是什么呢?

100、再来看看基于DNS Query Flood和HTTP Flood的DDoS攻击

101、在分布式架构中,Zuul网关是如何防止网络攻击的?

加餐面试题:网络与IO

102、一个对技术有追求的面试官,是怎么深挖网络与IO的面试连环炮的?

103、Netty的架构原理图能画一下吗,他是如何体现Reactor架构思想的?

104、能说说你对堆外内存的理解吗?JDK底层是如何分配堆外内存的?

105、JDK是如何对堆外内存进行回收的?什么时候会发生堆外内存溢出?

106、如果不使用零拷贝技术,普通的IO操作在OS层面是如何执行的?

107、听说过mmap技术吗?内存映射为什么可以提升IO性能?

108、零拷贝技术到底是什么,他是如何提升IO性能的?

加餐面试题:分布式架构

109、一起来看一个难度升级之后的分布式架构面试连环炮

110、你们的分布式系统是如何进行链路监控的?说说链路追踪系统架构原理?

111、对分布式系统进行核心链路追踪的时候,链路id是怎么管理的?

112、聊过两阶段提交了,那么分布式事务三阶段提交的思想能说一下吗?

113、唯一id生成机制中的snowflake算法的时钟回拨问题如何解决?

114、实施灰度发布的时候,网关是可以灰度了,可是Dubbo服务如何进行灰度呢?

115、除了常见服务注册中心之外,你觉得Redis能作为服务注册中心吗?为什么以及怎么做?

加餐面试题:中间件系统

116、我们一般到底用ZooKeeper来干什么事儿?

117、有哪些开源的分布式系统中使用了ZooKeeper?

118、为什么我们在分布式系统架构中需要使用 ZooKeeper 集群?

119、ZooKeeper为了满足分布式系统的需求要有哪些特点?

120、为了满足分布式系统的需求,ZooKeeper的架构设计有哪些特点?

121、ZooKeeper集群的三种角色:Leader、Follower、Observer

122、客户端与ZooKeeper之间的长连接和会话是什么?

123、ZooKeeper的数据模型:znode和节点类型

124、ZooKeeper最核心的一个机制:Watcher监听回调

125、一个关键的问题:zk到底通过什么协议在集群间进行数据一致性同步?

126、ZAB的核心思想介绍:主从同步机制和崩溃恢复机制

127、从zk集群启动到数据同步再到崩溃恢复的ZAB协议流程

128、采用了2PC两阶段提交思想的ZAB消息广播流程

129、停一下脚步:ZooKeeper到底是强一致性还是最终一致性?

130、ZAB协议下一种可能存在的数据一致性问题

131、崩溃恢复时选举出来的Leader是如何跟其他Follower进行同步的?

132、对于需要丢弃的消息是如何在ZAB协议中进行处理的?

133、现在再来看看ZooKeeper的Observer节点是用来干什么的?

134、ZooKeeper为什么只能是小集群部署?为什么适合读多写少场景?

135、一清二楚:再次回头对ZooKeeper特性的总结

加餐面试题:系统架构优化与设计

136、一个身经百战的互联网面试官的系统设计优化连环炮发问!

137、说说高并发场景下的数据库连接池应该如何进行优化?

138、如果压测的时候发现系统的TPS不达标,此时应该如何优化系统?

139、为什么有了HDFS之后,还需要HBase呢?

140、到底为什么把 HBase 叫做NoSQL数据库呢?

141、HBase作为一个NoSQL数据库,有哪些架构上的特点?(上)

142、HBase作为一个NoSQL数据库,有哪些架构上的特点?(下)

143、HBase作为NoSQL数据库,到底适用于哪些场景?

144、HBase的数据模型是什么样的?(上)

145、HBase的数据模型是什么样的?(下)

146、HBase的物理存储格式:为啥说他是列式存储?

147、假设让你来负责微信朋友圈这样的社交系统,应该如何设计?

148、微信朋友圈是如何对好友显示权限进行控制的?

149、如何设计高并发的朋友圈点赞系统架构?

150、关于重复点赞问题以及点赞查看时效性的方案设计

151、你了解过ThreadLocal的内存泄漏问题以及解决方案吗?