每日一面---真实面试题---9

先看原题,自己心里默想一遍答案再滑到后面对比答案。答案来源于网络,欢迎指正,共同进步

一、原题
  1. guava 和 caffeine 的区别

  2. HashMap 作为本地缓存和 caffeine 的区别,本地缓存一般占用多少内存

  3. jvm 的堆内存配置大概是怎么的,如果设置了堆内存的初始值为 2g,启动的时候分配给这个进程的内存是多少

  4. 容器内存为 3g,堆内存为 2.8g,会有什么问题

  5. 创建很多线程池,导致 oom,这种跟因为本地缓存太多导致的 oom 有什么区别

  6. 堆内存和栈内存的区别

  7. redis 缓存的数据一致性问题,分布式锁是怎么样的

  8. redis 集群的架构是怎么样的

  9. HashMap 是线程安全的嘛?ConcurrentHashMap 是怎么实现的

  10. Synchronized 锁的实现

  11. 锁优化是怎么样的,偏向锁是怎么样的

  12. CMS 跟 G1 的区别

  13. 动态代理的区别

  14. Spring Aop 的实现

15 .zoo keep er 的 ZAB 协议

  1. 项目 中主要负责的是什么?方案设计大概是怎么样的,比较难的问题以及是怎么解决的

17 .future.get()是怎么实现的,futureTask 的了解

18 .服务怎么做高可用,进程是怎么监控的

19 .在浏览器上输入一个网址,大概执行过程,链路层,网络层路由器选择

20 .操作系统的内存管理

------------------------------------------------------------------------优美的分割线------------------------------------------------------------------------
















二、答案
  1. guava 和 caffeine 的区别

  2. HashMap 作为本地缓存和 caffeine 的区别,本地缓存一般占用多少内存

  3. jvm 的堆内存配置大概是怎么的,如果设置了堆内存的初始值为 2g,启动的时候分配给这个进程的内存是多少

  4. 容器内存为 3g,堆内存为 2.8g,会有什么问题

    容器重启的情况少了很多,但还是偶尔会出现OOMKilled 的情况
    
  5. 创建很多线程池,导致 oom,这种跟因为本地缓存太多导致的 oom 有什么区别

    欢迎补充!!!
    
  6. 堆内存和栈内存的区别

    堆内存:
    	存放所有new出来的对象和数组
    
    栈内存:
    	存放基本类型的变量,对象的引用和方法调用,遵循先入后出的原则。
    
  7. redis 缓存的数据一致性问题,分布式锁是怎么样的

    先修改数据库再删除Redis缓存,且缓存一般都要设置失效时间,避免在极端情况下不一致的问题。
    
    分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。 举个不太恰当的例子:假设共享的资源就是一个房子,里面有各种书,分布式系统就是要进屋看书的人,分布式锁就是保证这个房子只有一个门并且一次只有一个人可以进,而且门只有一把钥匙。然后许多人要去看书,可以,排队,第一个人拿着钥匙把门打开进屋看书并且把门锁上,然后第二个人没有钥匙,那就等着,等第一个出来,然后你在拿着钥匙进去,然后就是以此类推
    
    
  8. redis 集群的架构是怎么样的

    Redis Cluster
    
  9. HashMap 是线程安全的嘛?ConcurrentHashMap 是怎么实现的

    HashMap 是线程不安全
    
    ConcurrentHashMap通过分段锁实现线程安全
    
  10. Synchronized 锁的实现

    1.修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁
    2.静态方法,作用于当前类加锁,进入同步代码前要获得当前类的锁
    3.修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。
    
  11. 锁优化是怎么样的,偏向锁是怎么样的

    对不同的场景,针对加锁的操作的优化
    
    在一次线程获得锁时,那么该锁进入偏向模式,当该线程再次请求时,会迅速获得该锁,无需进行任何同步操作,提高程序性能;
    
  12. CMS 跟 G1 的区别

    CMSG1
    使用范围CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用G1收集器的范围是老年代和新生代。
    STW的时间以最小的停顿时间为目标的收集器。可预测垃圾回收的停顿时间(建立可预测的停顿时间模型)
    垃圾碎片使用“标记-清除”算法进行的垃圾回收,容易产生内存碎片使用的是“标记-整理”算法,进行了空间整合,降低了内存空间碎片。
    垃圾回收的过程不一样1、初始标记
    2、并发标记
    3、重新标记
    4、并发清除
    1、初始标记
    2、并发标记
    3、最终标记
    4、筛选回收
  13. 动态代理的区别

    JDK代理只能对实现接口的类生成代理;CGlib是针对类实现代理,对指定的类生成一个子类,并覆盖其中的方法,这种通过继承类的实现方式,不能代理final修饰的类。
    
  14. Spring Aop 的实现

    1、要想启用Spring AOP,配置类加上注解@EnableAspectJAutoProxy,会往spring容器注入一个BeanPostProcessor即AnnotationAwareAspectJAutoProxyCreator
    2、在Bean实例化完成后(即调用构造函数将对象创建出来)会执行AnnotationAwareAspectJAutoProxyCreator#postProcessAfterInitialization(这个方法在父AbstractAutoProxyCreator中,AnnotationAwareAspectJAutoProxyCreator并没有重写)
    3、当执行完成AbstractAutoProxyCreator#postProcessAfterInitialization这个方法会将原生对象变成代理代理对象,代理对象中写入了横切的逻辑
    
    
  15. 15.zoo keep er 的 ZAB 协议

    ZAB(Zookeeper Atomic Broadcast) 协议是为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议。在zookeeper中,主要依赖ZAB协议来实现分布式数据一致性,基于该协议,zookeeper实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性
    
  16. 项目 中主要负责的是什么?方案设计大概是怎么样的,比较难的问题以及是怎么解决的

  17. future.get()是怎么实现的,futureTask 的了解

  18. 服务怎么做高可用,进程是怎么监控的

    1、保证一致性
    2、消除单点
    3、置放群组
    4、流量隔离
    5、同城双活
    6N + 1 冗余
    7、异地多活
    
    
  19. 在浏览器上输入一个网址,大概执行过程,链路层,网络层路由器选择

    客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层
    
  20. 操作系统的内存管理

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值