美团Java日常实习一面

1、原理:每个线程维护一个ThreadLocalMap,以ThreadLocal为key存储变量副本,实现线程隔离。问题:内存泄漏(弱引用key被回收但value未清理)、父子线程无法传递。
2、主要用于事务管理(TransactionSynchronizationManager)、请求上下文(RequestContextHolder)、安全上下文等,保证线程安全。
3、冲突解决:ThreadLocalMap用线性探测,HashMap用链表+红黑树;扩容机制:ThreadLocalMap渐进式清理,HashMap一次性rehash;key类型:ThreadLocalMap的key是弱引用
4、corePoolSize(核心线程数)、maximumPoolSize(最大线程数)、keepAliveTime(空闲时间)、workQueue(任务队列)、threadFactory、rejectedExecutionHandler(拒绝策略)
5、通过ThreadPoolExecutor的setter方法:setCorePoolSize()、setMaximumPoolSize()、setKeepAliveTime()等,结合配置中心实现热更新。
6、监听配置变更→参数校验→调用线程池setter方法→记录变更日志,通常结合Apollo/Nacos等配置中心实现。
7、Zookeeper:强一致性、自动过期、惊群效应Redis:高性能、需手动续期、主从切换可能丢锁
8、原子性(SET NX EX)、锁续期、主从一致性、可重入性、公平性、异常释放等。
9、基于业务执行时间统计(P99耗时 × 2-3倍)+ 网络延迟 + 安全边界,配合自动续期机制。
10、定位:慢查询日志/监控工具 → 分析:EXPLAIN执行计划 → 优化:索引优化/SQL重写/分库分表 → 验证:压测对比 → 监控:持续观察
全部评论

相关推荐

01-26 10:35
已编辑
成都理工大学 Java
实习拷打: 描述一下这段实习过程中你觉得最有价值或印象最深刻的事情是什么?技术细节: 规则引擎中复杂的逻辑表达式是如何存储的?如何实现规则因子的通用化?系统设计: 为什么要设计多版本快照?如何保证对旧表的兼容?线上风险: 如何发现规则变更后的错误?审批流程能解决哪些问题?并发处理:两个业务人员同时修改同一规则,如何保证并发安全?多版本快照产生的数据冗余如何处理?分布式锁在这里的作用是什么?有点奇怪的八股操作系统: 简单介绍计算机通电后是如何启动起来的?硬件常识: CPU 通电后为什么能运行?网络基础: 在当前面试的视频直播场景下,网络上发生了哪些事?协议细节: 视频传输一定是 UDP 吗?在网页端是如何建立 UDP 连接的?反射(Reflection): Java 为什么要用反射?不用行不行?它带来了什么好处?类加载(ClassLoader): 为什么要用类加载机制?你写过相关代码(如 Starter 或 SPI)吗?算法题: 字符串模拟大数相加系统设计题:老师在某个时间段加一节课。根据起止时间查询该时段内的所有课程。有的问题不是很常规,感觉要凉后续:周五面的,周一通知挂了,复盘感觉问的还是偏综合,反射这块答偏了,应该是从Java编译之后静态,反射提供了动态的能力去会回答。然后就是前面OS和计算机网络答的不算好,继续练吧
查看21道真题和解析
点赞 评论 收藏
分享
一面 1. String、StringBuilder、StringBuffer的区别2. String不可变的原因是什么3. 常用的String方法4. 浅拷贝和深拷贝的区别5. 项目介绍和主要职责6. 线程池调参、线程池隔离7. 线程池核心参数以及意义8. 核心线程数的作用以及创建时机9. redis防重机制的设计原因10. 使用的redis的类型11. redis的string底层设计12. 分库分表改造13. 分库分表改造时要注意的问题14. 分库分表涉及的数据迁移15. 本地缓存使用场景16. 数据库不一致问题17. 库存扣减的其他方案18. 博客上的问题19. sql调优经历20. 什么是覆盖索引21. 索引类型有哪些22. B+树做索引的特点23. 索引失效的场景24. 项目还有哪些亮点没有问到?25. 第二个项目的介绍26. 高jdk版本的新特性27. jdk8的stream语法28. java集合的分类29. 集合存储null值的情况30. HasMap的底层原理31. 单例设计模式手撕:删除倒数第n个节点反问建议:尽量不要一问一答,自己多去延申思考二面1. 项目一共几个模块、一共几个人2. 项目遇到的挑战以及如何解决3. 项目遇到了什么问题4. 分布式锁加锁解锁的原理5. 锁的过期时间的设计6. redis过期淘汰策略7. redis相较于mysql的优势8. redis为什么快9. 线程池参数调优,限流和降级10. HashMap如何更新一条数据11. JVM垃圾回收中的新生代老年代的回收策略12. 新生代的划分、复制回收的具体过程手撕:最长公共前缀13. 个人优缺点
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

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