面经-Java

Java

  1. 常用集合

    List,Set,Map

    ArrayList,LinkesList(双向列表,适用于频繁插入和删除)

    HashSet,TreeSet(红黑树)

    hashmap,LinkesHashMap(加上双向链表)

  2. hashmap和hashtable区别。

    map线程不安全(效率高,key可以为null),table线程安全(每个方法都有synchronized 关键字,)

  3. hashmap底层原理

    哈希表,数组加链表

    1.8之后转换红黑树

  4. 线程安全的集合有哪些?

    hashMap,concurentHashMap,vector(与arrayList类似,动态增长),hashtable

  5. java面向对象三个特征

    封装,继承,多态

  6. 多态如何实现

    方法重载,方法重写,接口实现

  7. 什么是多态

    在java中,多态是面向对象编程的一种重要特性,它允许不同的对象对同一个消息做出不同的响应。

  8. 接口可以多实现吗

    可以。

  9. 抽象类和接口

    接口多实现,接口无构造器,不存在方法的实现,默认修饰符public

  10. 线程池使用方法

    好处:降低资源消耗。提交响应速度(不需要等待线程创建)。提高线程可管理性。

    1)核心线程数(corePoolSize):当线程池的线程都忙碌时,再进来新任务时,由最小线程数扩容到核心线程数 。一般设置为cpu的核数

    2)最大线程数 (maximumPoolSize):当核心线程数满了,当队列也满了,再来新任务,就会创建新非核心线程来执行这个新任务,直到线程数达到最大线程数。一般设置为cpu的核数*2

    3)存活时间(keepAliveTime):非核心线程 =(maximumPoolSize - corePoolSize ) ,非核心线程闲置下来不干活最多存活时间。当非核心线程超过多长时间不执行任务,处于空闲状态,线程池会将它回收,直到线程数量达到核心线程数。如果设置为0,就代表不回收

    4)存活时间单位

    5)线程池等待队列(workQueue):维护着等待执行的Runnable对象。当运行当线程数= corePoolSize时,新的任务会被添加到workQueue中,如果workQueue也满了则尝试用非核心线程执行任务,等待队列应该尽量用有界的。
    6)threadFactory
    创建一个新线程时使用的工厂,可以用来设定线程名、是否为daemon线程等等。
    7)handler
    corePoolSize、workQueue、maximumPoolSize都不可用的时候执行的饱和策略

  11. 线程通信方式

    • 通过 volatile 关键字(volatile共享内存)
    • join()方法。
    • wait和notify
  12. 进程通信

    共享内存,消息队列

  13. spring bean的生命周期

    实例化Bean --> Bean属性填充 --> 初始化Bean -->销毁Bean

  14. aop,IOC特性

    控制反转,简单点说,就是创建对象的控制权,被反转到了Spring框架上。

    AOP主要一般应用于签名验签、参数校验、日志记录、事务控制、权限控制、性能统计、异常处理等。

  15. post和get的区别

    GET是从服务器上获得数据;POST是向服务器传递数据

    get通过url传输参数,post的参数在请求体中。

    post发送长度更大

  16. 缓存穿透

    客户端请求数据在缓存和数据库中都不存在

  17. 缓存击穿

    热点key问题,缓存重建任务较长,不停创建

  18. 缓存雪崩

    大量key同时失效,大量请求到数据库

  19. redis的超时时间设置了多久?

    一般以秒为单位

    过期时间的设置原则:
    数据的生命周期(对于不经常变动的数据,超时时间会长一些)

    ​ 内存使用率(可以通过Redis的INFO命令获取当前的内存使用情况,包括已使用内存和可用内存等信息。)

    ​ 数据访问频率(可以通过Redis的MONITOR命令监控数据的访问情况,从而了解数据的访问频率。)

  20. Springboot自动装配

  21. Spring常用的缓存(本地缓存,外地缓存)

  22. redis常用值的类型

  23. 除了redis缓存的实现方式(本地缓存)

  24. ES做什么

  25. ES搜索原理

  26. 使用rabbitmq的场景

  27. 如何测试他没有重复消费

    • 发送两条完全一样的消息到同一消息队列中
    • 发送两条相同消息到不同队列中
  28. 如何测试他是否顺序传递

    向不同的队列中有顺序的发送数据,通过消费端的日志判断它是否顺序消费

  29. 对数据结构的了解

  30. 排序算法有哪些

  31. redis的了解,和应用场景

  32. 缓存一致性

posted @   疯啦吧你  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示