zoukankan      html  css  js  c++  java
  • 知识点关注

    基础篇

    1. JVM相关,JAVA里的垃圾回收有什么目的?什么时候会触发?(追问:频繁full GC问题排查思路,GVM调优)

    垃圾回收的目的,内存管理,释放无用的对象;
    能够完成的描述一次垃圾回收的过程。(年轻代、老年代、永久代)
    Full gc 现象,分析定位,解决;

    2. 集合相关,HashMap实现原理?(追问:多线程环境如何使用Map)

    HashMap存储,碰撞,扩容,性能,红黑树;
    线程相关的HashTable,CurrentHashMap;


    3. 多线程相关:线程池ThreadPoolExecutor有没有使用过,解决什么问题?(追问:线程池的扩容机制)

    线程管理解耦,降低资源消耗,提高可管理性
    setCorePoolSize和setMaximumPoolSize两个参数,创建和销毁的机制。
    reject机制默认有Discard/DiscardOld/Abort/CallersRun, 默认为abort报错。能够讲明白原理的,标记出来 算加分

    4. 锁相关:设计一个高速缓存,允许多个线程读,只允许一个线程写? 

    读写锁,CurrentHashMap
    考虑性能和数据一致性

    5. 分布式:分布式系统中不同的模块如何进行通信?

    RPC、RMI、Web Service、JMS(MQ)
    RPC 和 HTTP比较
    RPC框架的原理(注册发现机制、路由、降级、负载均衡)
    dubbo、thrift、
    MQ(消息消费模式:广播、点对点)

    6. 操作系统:

    从那几个方面评估机器的负载
      CPU ,当java进程占用CPU过高的时候,经常100%,怎么排查
        top查看进程id,ps查看线程id,jstack堆栈信息
      内存,java内存查看分析工具
        gc日志,在jvm启动参数中加入 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimestamps -XX:+PrintGCApplicationStopedTime
        jconsole,jmap,jhat,jstat,MAT
      load,load是怎么计算的
        load 要结合cpu数量来看,我们假设cpu数量为4,每个cpu都正好满负荷运转时,load为4.如果每个cpu处理任务过程中,还有一个任务在排队等待,那么load为8。
      网络IO
        sar -n DEV
    cat /home/a.log | grep 'abc' | sort | uniq 理解这段脚本
      统计a.log中包含abc的行,正序排序并去重
    用JAVA实现,画板上codeing
    扩展,超大文件,MapReduce思想

    7. 数据库:Mysql

    MySQL中有一条SQL比较慢,如果让你去优化,你会怎么做?为什么要这样做?
      explain查看执行计划,是否走索引,sql本身优化,比如模糊查询,子查询,loop
    表数据量过大,分库分表
    redis;
    读写分离;

    高级篇

    分布式、集群环境中,缓存如何刷新,如何保持同步?

    A、缓存如何刷新?
      1、定时刷新
      2、主动刷新覆盖
      每个缓存框架都有自带的刷新机制, 或者说缓存失效机制, 就拿Redis和 Ehcache举例, 他们都有自带的过期机制, 另外主动刷新覆盖时, 只需获取对应的key进行数据的覆盖即可
    B、缓存如何保持同步?
      这个redis有自带的集群同步机制, 即复制功能, 具体参考:基于Redis分布式缓存实现, Ehcache也有分布式缓存同步的配置, 只需要配置不同服务器地址即可, 参照:Ehcache分布式缓存同步


  • 相关阅读:
    vue小结
    ES6中的super关键字
    es5和es6
    雅虎工程师提供的CSS初始化示例代码
    移动端rem用法总结
    批量压缩图片
    cordova
    cordova 添加插件时报错相关问题
    JS 数组中对象去重 reduce 用法
    中间件笔录
  • 原文地址:https://www.cnblogs.com/milicool/p/11239305.html
Copyright © 2011-2022 走看看