java面试题

来源:互联网 发布:unity3d黑暗之光素材 编辑:程序博客网 时间:2024/06/05 23:05
  1. java基础知识
    1、HashMap实现原理,HashMap和HashTable实现区别,HashTable的key值是否允许为空,为什么,HashMap中的循环链表什么情况下怎么形成的,java8中对HashMap做了哪些优化,多线程情况下最容易抛出的异常,ConcurrentHashMap实现原理 (详见 http://dwz.cn/5pC5sc)
    2、ArrayList和LinkList实现,区别,哪一种数据结构占用内存多
    3、java有哪几种异常类型,分别在什么情况下使用

  2. java多线程
    1、volatile和synchronized区别,Lock和synchronized区别
    2、CountDownLatch、CyclicBarrier和Semaphore使用场景和区别,怎么实现CountDownLatch功能
    3、ThreadPoolExecutor有那些参数,分别含义是什么,是否初始化好coreSize的线程数,怎么样才能在初始化的时候有coreSize个线程初始化好了
    4、ThreadLocal实现原理
    5、SimpleDataFormat是否为线程安全的,为什么,怎样变成线程安全

  3. JVM
    1、对象的生命周期
    2、什么情况下发生OOM和StackOverFlow,举个例子,如何排查OOM
    3、如何定为到Java程序中cpu利用率高的代码
    4、java内存模型,回收算法,CMS实现
    5、mirror gc和full gc

  4. 数据库
    1、做过那些数据库相关优化
    2、MySql联合索引,联合索引数据结构实现
    3、聚簇索引和非聚簇索引区别
    4、数据库分库分表
    5、事务的隔离级别
    6、分布式事务,二阶段提交和三阶段提交

  5. 其它
    1、AIO、BIO和NIO区别,unix IO模型
    2、TCP三次握手和四次挥手,为什么不是两次握手,如何查看连接状态
    3、RPC和HTTP区别
    4、一致性hash
    5、有三个线程名字分别为A、B和C,打印线程名ABBCCCAAAABBBBBCCCCCC……..直到200个字符为止( 见:http://dwz.cn/5qoxbi)
    6、linux如何打印日志中的两行数据
    7、paxos协议选主过程

0 0
原创粉丝点击