MM 小册子

  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(此锁会在用户态内核态切换,导致线程上下文切换,性能很差)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 9,869评论 1 14
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 9,119评论 0 11
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 4,857评论 0 16
  • 远山 一轮月光凌天飞, 长夜寒光独照己。 居室苦读所谓何, 成业功名光门楣。 己心独愁无人知, 皆...
    远山居士阅读 1,911评论 0 0
  • Humans are ready to build their own colonies on Mars, but...
    Green_Mage阅读 1,852评论 0 0