每天一套面试题Day7-小红书(1)

1.synchronize的用法及原理

链接

2.如何创建线程池?线程池常见参数有哪些?

Executor工具,ThreadExecutorPool(X)的构造器 核心线程数,非核心线程数空闲时间,任务队列,拒绝策略,最大线程数

ThreadExecutorPool->ThreadPoolExecutor

3.ThreadLocal 的用法和实现原理

用来保存和每个线程绑定的一个变量。用set和get方法存入和取出当前变量的值。通过空间上的隔离支持了并发 这个变量存在thread对象中,thread对象有一个属性,threadLocals,它的类型是ThreadLocalMap,是在ThreadLocal类里面定义的一个类。通过ThreadLocal这个工具,可以设置当前线程对象的这个属性,key是当前threadLocal对象,值是设置的值。

4.请你说说HashMap底层原理和扩容机制。

HashMap底层采用数组+链表(JDK8前),后用数组+链表/红黑树(在链表长度超过64?), 初始容量为16,扩载因子0.75,当超过容量×扩载因子的时候,容量会变成原来的二倍,然后重新哈希,在JDK8之前需要重新计算,由于要么放在原序号的位置,要么放在原序号+数组,原序号与上新数组的大小,如果true那么就放在原序号+原数组大小的位置,反之就在原位置。

原数据通过尾插法迁移到新数组。链表长度超过8且数组长度≥64时会转为红黑树

5.请你说说ArrayList和LinkedList的区别。

ArrayList基于动态数组,随机访问比较快,只需要数组基址+数据的大小×序号,但是增删相对慢。ArrayList基于双向链表,所以增删改比较快,尤其是首尾的。

LinkedList每个节点含前后指针更占内存

6.你了解的JVM内存模型

线程共享的 堆,存放对象实例。方法区,存放类信息,常量 线程独有,随线程生而生,随线程灭而灭 虚拟机栈,程序计数器(存放当前指令的地址),本地方法栈

7.Java的垃圾回收算法

引用计数式垃圾收集(直接收集)

追踪式垃圾收集(间接垃圾收集) 可达性分析算法 标记-回收(老年代,有内存碎片),标记-整理(减少内存碎片),标记-复制(适合新生代,减少内存碎片)

8.类加载机制

加载(双亲委派,生成class对象),验证,准备,解析,初始化

类加载机制是JVM动态加载类的过程,包含加载、验证、准备、解析和初始化五个阶段。加载阶段读取.class文件生成Class对象;验证确保字节码合法;准备为静态变量分配内存并赋默认值;解析将符号引用转为直接引用;初始化执行静态代码块和变量赋值。各阶段顺序执行,确保类正确加载且符合安全规范。

9.说说你对AOP的理解

面向切面编程。切入点(匹配的条件),切面(封装横切逻辑的模块,比如日志切面,由when(通知,比如@After ),where(切点,比如,"execution(...)")what干什么组合而成),通知(定义何时执行什么功能的代码块) Spring AOP通过动态代理实现,分为 JDK动态代理(目标类实现了接口,代理类实现与目标类相同的接口),CGLIB动态代理(目标类未实现接口, Code Generation Library,代码生成库,生成目标类的子类作为代理类。)

10.Bean的生命周期

链接

#面试真题#
全部评论

相关推荐

11-21 15:20
门头沟学院 Java
一面 1.  介绍一个你熟悉的项目2.  当时为什么这个项目?上线了吗?3.  你认为什么是RAG?4.  它跟微调有什么区别?效果上会有什么区别吗?为什么有两种方式?5.  有实际做过微调吗?6.  Rag 去做判卷,你的检索内容是什么?7.  用的是什么向量数据库?为什么最后选了它?8.  Redis 的缓存策略,为什么要去设计的一个热点题目缓存这样的东西?9.  Rocketmq 我们在正常的发送和消费的时候,怎么保证这个消息是不丢失的。10. 在消息发送出来写到 broker 的时候,在你的发送里面要做什么样的设置才可以保证你一定会写入这个?11. 你在做哪些开源的事情?12. 你对哪一个技术中间件是最熟悉的?13. Redis 它为什么很快?14. 为什么单线程还会比多线程要快?感觉这有点反直觉。15. 多线程比单线程执行会多一些成本吗?16. 上下文切换有哪些具体的开销?17. 什么是程序计数器?18. 所以它是跟线程绑定的吗?19. Redis 多路复用20. 你了不了解 Redis 6.0 之后为什么引入了多线程?21. 你觉得你对Redis的掌握程度是怎么样的?评价一下22. 你现在学习是通过什么方式去学习一些新的知识?你有什么感兴趣的方向吗?23. 假设现在你跟你的mentor,你的导师上你们有意见冲突,你们的意见完全相反,在一件事情上,你会如何处理这样的事情?24. 算法题 mid 不含重复字符的最长子串的长度25. 你实际做项目里面,你觉得你碰到过最难的问题是什么?你如何解决它?
查看25道真题和解析
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务