先看原题,自己心里默想一遍答案再滑到后面对比答案。答案来源于网络,欢迎指正,共同进步
一、原题
-
guava 和 caffeine 的区别
-
HashMap 作为本地缓存和 caffeine 的区别,本地缓存一般占用多少内存
-
jvm 的堆内存配置大概是怎么的,如果设置了堆内存的初始值为 2g,启动的时候分配给这个进程的内存是多少
-
容器内存为 3g,堆内存为 2.8g,会有什么问题
-
创建很多线程池,导致 oom,这种跟因为本地缓存太多导致的 oom 有什么区别
-
堆内存和栈内存的区别
-
redis 缓存的数据一致性问题,分布式锁是怎么样的
-
redis 集群的架构是怎么样的
-
HashMap 是线程安全的嘛?ConcurrentHashMap 是怎么实现的
-
Synchronized 锁的实现
-
锁优化是怎么样的,偏向锁是怎么样的
-
CMS 跟 G1 的区别
-
动态代理的区别
-
Spring Aop 的实现
15 .zoo keep er 的 ZAB 协议
- 项目 中主要负责的是什么?方案设计大概是怎么样的,比较难的问题以及是怎么解决的
17 .future.get()是怎么实现的,futureTask 的了解
18 .服务怎么做高可用,进程是怎么监控的
19 .在浏览器上输入一个网址,大概执行过程,链路层,网络层路由器选择
20 .操作系统的内存管理
------------------------------------------------------------------------优美的分割线------------------------------------------------------------------------
二、答案
-
guava 和 caffeine 的区别
-
HashMap 作为本地缓存和 caffeine 的区别,本地缓存一般占用多少内存
-
jvm 的堆内存配置大概是怎么的,如果设置了堆内存的初始值为 2g,启动的时候分配给这个进程的内存是多少
-
容器内存为 3g,堆内存为 2.8g,会有什么问题
容器重启的情况少了很多,但还是偶尔会出现OOMKilled 的情况
-
创建很多线程池,导致 oom,这种跟因为本地缓存太多导致的 oom 有什么区别
欢迎补充!!!
-
堆内存和栈内存的区别
堆内存: 存放所有new出来的对象和数组 栈内存: 存放基本类型的变量,对象的引用和方法调用,遵循先入后出的原则。
-
redis 缓存的数据一致性问题,分布式锁是怎么样的
先修改数据库再删除Redis缓存,且缓存一般都要设置失效时间,避免在极端情况下不一致的问题。 分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。 举个不太恰当的例子:假设共享的资源就是一个房子,里面有各种书,分布式系统就是要进屋看书的人,分布式锁就是保证这个房子只有一个门并且一次只有一个人可以进,而且门只有一把钥匙。然后许多人要去看书,可以,排队,第一个人拿着钥匙把门打开进屋看书并且把门锁上,然后第二个人没有钥匙,那就等着,等第一个出来,然后你在拿着钥匙进去,然后就是以此类推
-
redis 集群的架构是怎么样的
Redis Cluster
-
HashMap 是线程安全的嘛?ConcurrentHashMap 是怎么实现的
HashMap 是线程不安全 ConcurrentHashMap通过分段锁实现线程安全
-
Synchronized 锁的实现
1.修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 2.静态方法,作用于当前类加锁,进入同步代码前要获得当前类的锁 3.修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。
-
锁优化是怎么样的,偏向锁是怎么样的
对不同的场景,针对加锁的操作的优化 在一次线程获得锁时,那么该锁进入偏向模式,当该线程再次请求时,会迅速获得该锁,无需进行任何同步操作,提高程序性能;
-
CMS 跟 G1 的区别
CMS G1 使用范围 CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用 G1收集器的范围是老年代和新生代。 STW的时间 以最小的停顿时间为目标的收集器。 可预测垃圾回收的停顿时间(建立可预测的停顿时间模型) 垃圾碎片 使用“标记-清除”算法进行的垃圾回收,容易产生内存碎片 使用的是“标记-整理”算法,进行了空间整合,降低了内存空间碎片。 垃圾回收的过程不一样 1、初始标记
2、并发标记
3、重新标记
4、并发清除1、初始标记
2、并发标记
3、最终标记
4、筛选回收 -
动态代理的区别
JDK代理只能对实现接口的类生成代理;CGlib是针对类实现代理,对指定的类生成一个子类,并覆盖其中的方法,这种通过继承类的实现方式,不能代理final修饰的类。
-
Spring Aop 的实现
1、要想启用Spring AOP,配置类加上注解@EnableAspectJAutoProxy,会往spring容器注入一个BeanPostProcessor即AnnotationAwareAspectJAutoProxyCreator 2、在Bean实例化完成后(即调用构造函数将对象创建出来)会执行AnnotationAwareAspectJAutoProxyCreator#postProcessAfterInitialization(这个方法在父AbstractAutoProxyCreator中,AnnotationAwareAspectJAutoProxyCreator并没有重写) 3、当执行完成AbstractAutoProxyCreator#postProcessAfterInitialization这个方法会将原生对象变成代理代理对象,代理对象中写入了横切的逻辑
-
15.zoo keep er 的 ZAB 协议
ZAB(Zookeeper Atomic Broadcast) 协议是为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议。在zookeeper中,主要依赖ZAB协议来实现分布式数据一致性,基于该协议,zookeeper实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性
-
项目 中主要负责的是什么?方案设计大概是怎么样的,比较难的问题以及是怎么解决的
-
future.get()是怎么实现的,futureTask 的了解
-
服务怎么做高可用,进程是怎么监控的
1、保证一致性 2、消除单点 3、置放群组 4、流量隔离 5、同城双活 6、N + 1 冗余 7、异地多活
-
在浏览器上输入一个网址,大概执行过程,链路层,网络层路由器选择
客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层
-
操作系统的内存管理