美文网首页
MM 小册子

MM 小册子

作者: 哓晓的故事 | 来源:发表于2019-03-01 01:48 被阅读0次
    1. hashmap和hashtable区别
      线程安全,非线程安全
    2. 为什么产生死锁
      相互占有对方需要争夺的资源
    3. jvm类加载
      使用ClassLoder分为
      加载(会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口)
      连接校验=字节流符合虚拟机规范准备=给静态变量等赋初始值0,如果是final会赋真值、解析=将符号引用转为直接引用)
      初始化(执行静态方法块)
      运行
      销毁
    4. java反射获取私有属性,改变值
      要通过反射访问是有方法首先要将设置为access=true来取消访问检查
      然后要使用declare方法
    5. 反射用途 反射详细描述
    • 在运行时判断任意一个对象所属的类
    • 在运行时构造任意一个类的对象
    • 在运行时判断任意一个类所具有的成员变量和方法,编译后就会把泛型给擦除,使用反射可以设置进Object
    • 在运行时调用任意一个对象的方法
    • 运行时创建新类对象 Class.forName(), ClassLoader.loadClass() class.newInstance, constructor.newInstance
    • 生成动态代理

    反射是为了能够动态的加载一个类动态的调用一个方法动态的访问一个属性等动态要求而设计的
    Method,Constructor,field,Proxy,InvocationHandler
    优点:可以动态的创建对象和编译,最大限度发挥了java的灵活性
    缺点:对性能有影响。使用反射基本上一种解释操作,告诉JVM我们要做什么并且满足我们的要求,这类操作总是慢于直接执行java代码

    1. 所用数据库
    2. 项目难点,问题
    3. 如何解决项目中遇到的问题
    1. 数据库乐观锁使用
      version
    2. 状态机(有限状态机

    一个有限状态机(后文以状态机缩写指代)是一种特殊的组织代码的方式,用这种方式你能确保你的对象随时都知道自己所处的状态以及所能做的操作。其中每一个状态是独立的代码块,与其他不同的状态分开独立运行,这么做可以使得游戏的调试变得更加方便,同时也更易于增加新的功能

    列出 所有状态枚举
    列出 状态 -> 状态所有可能(分布式状态变更需要传递状态变更前后信息)
    实现 状态对应事件操作
    reactorEventBus实现事件驱动,监听者记忆变化前和变化后状态,发送通知,@Selector根据配置好的状态机变更流程,做出处理

    1. 如何解决状态机不对问题
      丢弃不存在的注册状态,并且打warn日志

    2. 如何分库分表
      按用用户规则分库分表

    3. MySQL极限

    4. HashMap源码
      hashcode(=hashcode^h>>>16)
      resize(原容量大小&数据hashcode 如果为1迁移到新链表,否则在旧链表)
      table[] + link + redblack-tree
      1.8解决了死循环,原来使用头插法为了读到热数据,改成使用尾插法

    5. 设计一个线程安全的HashMap
      直接给方法加 synchronized
      或者使用小粒度的读写锁,在put的链表头锁,并且同事更新count

    6. 快排的实现,时间复杂度和空间复杂度
      时间复杂度O(nlogn),空间复杂度O(nlogn)

    partition();
    left();
    right();
    
    1. 会什么算法

    2. 如何把项目变成SOA架构
      有序,服务化,业务服务化
      搭建esb总线,

    3. Spring源码,最深刻的模块,aop用途

    4. JVM内存模型

    5. 垃圾回收机制

    6. 项目中查看垃圾回收

    7. 栈溢出,堆溢出
      不断递归方法,会导致stackoverflow
      不断往集合新加对象,又不删除,会导致 heapoverflow,死循环不断创建对象,直接解析一个超大的json成为对象(而没有局部处理)
      比如ThreadLocal,使用了weakReference保存,在gc的时候会回收没有引用的对象
      softReference 在oom前会回收没有引用的对象
      Guava的Cache就使用了弱引用软引用

    8. synchronized和lock原理和使用
      隐式(jvm释放) 和 显示(手动释放)
      都能重入
      用CAS来优化重量级的Mutex Lock(此锁会在用户态内核态切换,导致线程上下文切换,性能很差)

    相关文章

      网友评论

          本文标题:MM 小册子

          本文链接:https://www.haomeiwen.com/subject/upaluqtx.html