每天一套面试题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的生命周期

链接

#面试真题#
全部评论

相关推荐

1.自我介绍2.实习介绍,项目介绍,然后根据项目和实习追问,全程无纯八股,下面的项目中问到的一些八股内容3.有用到线程池吗,线程池应该怎么来用呢4.假设有一万个任务需要完成,主线程怎么判断这一万个任务是否执行完成,回答说可以使用countDowmlanch,具体解释了一下,然后又问还有没有其他解决办法,主线程应该执行什么操作5.如果说在分布式服务器中,有10000个任务需要交给不同的节点来执行,应该怎么设计和实现呢6.看你项目中用了本地缓存和Redis,怎么确保本地缓存和Redis的数据一致性,怎么确保MySQL和Redis的一致性,订单库存信息存在Redis中怎么确保一致性7.Redis和lua脚本怎么防止超卖的8.消息队列中怎么解决网络波动引起的订单消息丢失的情况9.怎么解决单个订单重复消费的情况10.多个线程同时消费一个未消费的订单这个情况如何解决11.消费者回调确认消息如何实现的12.回调通知代码层面怎么做的(围绕wait和notify来说)13.如果服务器宕机,怎么保证订单消息不丢失,详细回答了持久化机制,包括使用内存暂时存储并定时落盘,面试官又追问你这种情况只能尽可能减少消息损失,就是在代码层面,比如说生产订单这行代码刚执行完服务器就宕机了,这个损失怎么避免14.MySQL表记录很多的时候比如说有一亿个数据,怎么处理(分片,包括顺序分片和哈希分片)15.如果数据表分片后,比如说要查询同一个用户的订单,可能在不同服务器上,怎么保证数据库查询的效率呢16.数据库索引创建过吗,创建索引怎么考虑的17.如果在订单表要给用户创建一个索引,然后又要给商家创建一个索引,要分别根据用户和商家单独查询要走到索引还可以创建联合索引吗,这个回答的如果只根据一个字段查询,就无法使用联合索引,因为联合索引要遵循最左匹配,必须包含第一个索引字段。这时候面了30多分钟,到了十一点半了,估计面试官要去吃饭了,然后面试官就说今天面试就到这里,没有手撕和反问环节。
查看17道真题和解析
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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