Java高级面试题

**

Java高级面试题,你能答上几道?

**

  1. hashcode相等两个类一定相等吗?equals呢?相反呢?
    不一定相等,原因:哈希冲突。两个对象相等,hashcode一定相等。
    Object的默认equals是相等的,重写后就不一定了,一般是内容相同返回true。

  2. 介绍一下集合框架?
    Josh Bloch写的一套用于持有对象的容器类框架
    主要元素包括:
    Collection
    List Queue Set
    ArrayList HashSet SortedSet
    LinkedList
    Vector LinkedHashSet TreeSet
    Stack

    Map
    HashMap HashTable
    LinkedHashMap
    SortedMap
    TreeMap

  3. hashmap hastable 底层实现什么区别?hashtable和concurrenthashmap呢?
    hashmap线程不安全
    hashtable使用synchronize保证线程安全
    hashtable锁住了读写操作
    concurrenthashtable分段锁,segment,
    只有统计数量时,两次不一致才会加锁

  4. hashmap和treemap什么区别?低层数据结构是什么?
    hashmap 数组方式 线程非安全 可以为null ,key不可重复,value可重复
    treemap 红黑树 线程非安全 不可以为null,key不可重复,value可重复,存入的元素应实现Comparable接口

  5. 线程池用过吗都有什么参数?底层如何实现的?
    ThreadPoolExecutor的参数
    corePoolSize
    maxinumPoolSize
    keepAliveTime
    TimeUnit unit
    BlockingQueue workQueue

    Executors中定义了四种线程池
    Fixed
    Cached
    Scheduled
    Single

  6. synchronized和Lock什么区别?synchronized什么情况情况是对象锁? 什么时候是全局锁为什么?
    ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候
    如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断
    如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情

    synchronized 加在普通类对象或非static方法上是对象锁,都会锁住一个对象
    加在static方法上,或者加在类的class对象上,是全局锁

  7. ThreadLocal 是什么底层如何实现?写一个例子呗?
    线程本地存储
    Thread下ThreadLocalMap 类型的 ThreadLocals弱引用的ThreadLocal对象
    ThreadLocal TL_INT = ThreadLocal.withInitial(()->6);
    TL_INT.get();
    TL_INT.set(7);

  8. volitile的工作原理?
    主内存 工作内存
    修改volatile变量强制更新到主内存
    修改后线程内存变量失效,必须读取主内存
    对volatile的写操作 happen-before 读操作
    Java的happen-before原则
    多线程可见

  9. cas知道吗如何实现的?
    CAS compareandswap
    操作包含三个数 内存位置V,期待值A,新值B
    值与预期相同,则更新,否则不做操作

  10. 请用至少四种写法写一个单例模式?
    饿汉(静态常量,静态代码块)
    懒汉(双重检查,内部静态类)
    枚举

  11. 请介绍一下JVM内存模型??用过什么垃圾回收器都说说呗
    java内存结构,运行时数据区
    计数器Program Counter Register
    本地方法栈 native method stack
    方法区 method area
    栈Stack
    堆Heap
    主内存 工作内存
    工作内存中保存了线程使用的变量的副本拷贝
    线程1把更新数据刷新到主内存
    线程2读取主内存,copy数据到本地
    特点是原子性,可见性,有序性
    happens-before

  12. 线上发送频繁full gc如何处理? CPU 使用率过高怎么办?

  13. 如何定位问题?如何解决说一下解决思路和处理方法

  14. 知道字节码吗?字节码都有哪些?Integer x =5,int y =5,比较x =y 都经过哪些步骤?

  15. 讲讲类加载机制呗都有哪些类加载器,这些类加载器都加载哪些文件?

  16. 手写一下类加载Demo

  17. 知道osgi吗? 他是如何实现的?

  18. 请问你做过哪些JVM优化?使用什么方法达到什么效果?

  19. classforName(“java.lang.String”)和String classgetClassLoader() LoadClass(“java.lang.String”) 什么区别啊?

  20. 探查Tomcat的运行机制即框架?

  21. 分析Tomcat线程模型?

  22. Tomcat系统参数认识和调优?

  23. MySQL底层B+Tree机制?

  24. SQL执行计划详解?

  25. 索引优化详解?

  26. SQL语句如如如何优化?

  27. spring都有哪些机制啊AOP底层如何实现的啊IOC呢?

  28. cgLib知道吗?他和jdk动态代理什么区别?手写一个jdk动态代理呗?

  29. 使用mysq1索引都有哪些原则? ?索引什么数据结构? 3+tree 和B tree 什么区别?

  30. MySQL有哪些存储引擎啊?都有啥区别? 要详细!

  31. 设计高并发系统数据库层面该怎么设计??数据库锁有哪些类型?如何实现呀?

  32. 数据库事务有哪些?

  33. 如何设计可以动态扩容缩容的分库分表方案?

  34. 用过哪些分库分表中间件,有啥优点和缺点?讲一下你了解的分库分表中间件的底层实现原理?

  35. 我现在有一个未分库分表的系统,以后系统需分库分表,如何设计,让未分库分表的系统动态切换到分库分表的系统上?TCC? 那若出现网络原因,网络连不通怎么办啊?

  36. 分布式事务知道吗? 你们怎么解决的?

  37. 为什么要分库分表啊?

  38. RPC通信原理,分布式通信原理

  39. 分布式寻址方式都有哪些算法知道一致性hash吗?手写一下java实现代码??你若userId取摸分片,那我要查一段连续时间里的数据怎么办?

  40. 如何解决分库分表主键问题有什么实现方案?

  41. redis和memcheched 什么区别为什么单线程的redis比多线程的memched效率要高啊?

  42. redis有什么数据类型都在哪些场景下使用啊?

  43. reids的主从复制是怎么实现的redis的集群模式是如何实现的呢redis的key是如何寻址的啊?

  44. 使用redis如何设计分布式锁?使用zk可以吗?如何实现啊这两种哪个效率更高啊?

  45. 知道redis的持久化吗都有什么缺点优点啊?具体底层实现呢?

  46. redis过期策略都有哪些LRU 写一下java版本的代码吧?

  47. 说一下dubbo的实现过程注册中心挂了可以继续通信吗?

  48. dubbo支持哪些序列化协议?hessian 说一下hessian的数据结构PB知道吗为啥PB效率是最高的啊??

  49. 知道netty吗’netty可以干嘛呀NIO,BIO,AIO 都是什么啊有什么区别啊?

  50. dubbo复制均衡策略和高可用策略都有哪些啊动态代理策略呢?

  51. 为什么要进行系统拆分啊拆分不用dubbo可以吗’dubbo和thrift什么区别啊?

  52. 为什么使用消息队列啊消息队列有什么优点和缺点啊?

  53. 如何保证消息队列的高可用啊如何保证消息不被重复消费啊

  54. kafka ,activemq,rabbitmq ,rocketmq都有什么优点,缺点啊?

  55. 如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路

  56. 说一下TCP 'IP四层?

  57. http的工作流程?? ?http1.0 http1.1http2.0 具体哪些区别啊?

  58. TCP三次握手,四层分手的工作流程画一下流程图为什么不是四次五次或者二次啊?

  59. 画一下https的工作流程?具体如何实现啊?如何防止被抓包啊??

  60. 源码中所用到的经典设计思想及常用设计模式

  61. 系统架构如何选择合适日志技术(log4j、log4j2、slf4j、jcl…….)

  62. springAOP的原理,springAOP和Aspectj的关系,springAOP的源码问题

  63. dubbo框架的底层通信原理

  64. RPC通信原理,分布式通信原理

  65. 如何利用springCloud来架构微服务项目

  66. 如何正确使用docker技术

  67. springMVC的底层原理、如何从源码来分析其原理

  68. mybaits的底层实现原理,如何从源码来分析mybaits

  69. mysql的索引原理,索引是怎么实现的

  70. 索引的底层算法、如何正确使用、优化索引

  71. springboot如何快速构建系统

  72. zk原理知道吗zk都可以干什么Paxos算法知道吗?说一下原理和实现?

  73. 如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路

  74. 分布式事务知道吗? 你们怎么解决的?

  75. 请问你做过哪些JVM优化?使用什么方法达到什么效果?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值