最近面试回答不出来的题

  1. redis由于很多key没设置ttl导致爆了,你会如何处理呢(某云原生团队)
  2. JVM 新生代和老年代比例
  3. varchar(100) 和 varchar(10)啥区别
  4. OOM排查,咋定位到是哪个方法的,jps jsatck最多能知道线程id
  5. 采用了堆外内存,为啥用这个?为啥又要用分布式缓存呢,我直接都存到本地内存不行嘛?我说本地内存可能存在机子down掉,他:不都是很多台机子部署的嘛 每次把全量数据从本地缓存返给前端,每次都传好几M数据。
  6. 继续:本地缓存命中率多少?我:没测 感觉是很高。。
  7. 继续:堆外内存咋存的,序列化成string?
  8. rag问准确率提升多少? 根本没评估
  9. 有没有在学agent课程 无 建议不用开源框架写agent。。(某云原生团队)
  10. 实习:我感觉你说的没有热点key,主要是用户量userid很大
  11. 实习:架构,怎么存储的,just<id,List<Userid>>这样查询太慢了吧,,
  12. 项目:超时关单用定时任务,是30s执行一次嘛? 忘记说为啥不用MQ了考量点在哪
  13. 装饰器模式 举例子
  14. 开闭原则
#实习如何「偷」产出?##牛客在线求职答疑中心#
全部评论
同学,瞅瞅我司,医疗独角兽,我的主页最新动态,绿灯直达,免笔试~
1 回复 分享
发布于 昨天 13:35 广东
求大佬帮我看看 本地缓存命中率多少?rag问准确率提升多少?咋回答
点赞 回复 分享
发布于 昨天 13:35 上海
2. 新生代与老年代的比例默认是1:2,即新生代占堆内存的1/3,老年代占2/3。可以通过JVM参数-XX:NewRatio来设置,例如-XX:NewRatio=2表示新生代与老年代的比例为1:2。 3. varchar(100)和varchar(10)都是可变长度的字符串类型,区别在于最大允许的字符数不同。 varchar(10)最多能存储10个字符,如果超过则会被截断。varchar(100)最多能存储100个字符。 注意:实际存储时,varchar只会占用实际字符数+1个字节(长度前缀)的存储空间,所以定义更大的varchar并不会占用更多存储空间。但是,定义更大的长度可能会影响内存临时表和排序时的内存分配,因为MySQL会根据定义的长度分配内存。 4. Histogram 中,List大对象点击出现具体的XXHash对象右键点击,选择: Path to GC Roots分析生成的引用链。特别注意 Thread 相关的引用。如果这个 ArrayList 被某个线程的局部变量直接或间接引用,并且在堆转储时该线程仍然存活,那么这个线程的整个调用栈信息将会显示出来 。通过调用栈,你就可以清晰地看到是在哪个类的哪个方法中创建或引用了这个 ArrayList。 利用 Thread Overview 辅助分析:通过 Thread Overview,你可以查看堆转储时所有线程的详细信息,包括它们的名称、状态以及调用栈 。
点赞 回复 分享
发布于 昨天 13:30 上海
哇,看起来你面试的时候遇到了不少挑战呢!不过别担心,我们一起来分析一下这些问题吧~ 首先,关于Redis爆了的问题,如果是很多key没有设置TTL(生存时间),可以考虑以下方法: 1. 定期扫描并清理无TTL的key。 2. 使用Redis的TTL功能,为key设置过期时间。 3. 优化业务逻辑,避免产生大量无TTL的key。 至于JVM新生代和老年代的比例,这个要根据应用的具体情况来调整,一般来说,新生代比例大一些,因为新生代对象生命周期短,回收频繁。 关于varchar(100)和varchar(10)的区别,主要是存储空间和索引性能上的差异。varchar(100)可以存储更长的字符串,但可能会影响索引性能。 遇到OOM(内存溢出)排查时,可以使用jps和jstack来定位问题线程。具体方法: 1. 使用jps获取Java进程ID。 2. 使用jstack <pid>查看线程堆栈信息。 至于堆外内存和分布式缓存,堆外内存可以减少GC压力,而分布式缓存是为了解决单机内存不足的问题。同时,分布式缓存还可以提供数据共享和负载均衡等功能。 关于本地缓存命中率,确实需要测试来评估。堆外内存的存储方式可能包括序列化成string或其他格式,具体取决于你的应用需求。 至于agent课程和开源框架,确实有时候根据项目需求,可能需要自定义agent而不是直接使用开源框架。 关于架构存储问题,可以考虑使用更高效的数据结构,比如B树、哈希表等,来优化查询性能。 至于超时关单的定时任务,确实可以考虑使用MQ来异步处理,这样可以提高系统的响应速度和可靠性。 最后,装饰器模式和开闭原则,举个例子: - 装饰器模式:比如一个咖啡店,咖啡是一个基础类,然后可以有各种调料(装饰器)来增加咖啡的味道。 - 开闭原则:软件实体应该对扩展开放,对修改封闭。比如一个图形编辑器,当增加新的图形类型时,不需要修改原有的代码,只需增加新的类即可。 怎么样,我们聊聊这些问题的细节吧?如果你想要更深入地讨论,可以点击我的头像,给我发私信哦~牛可乐在这里等你哦!🐮💬</pid>
点赞 回复 分享
发布于 10-13 18:30 AI生成

相关推荐

10-13 16:58
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
38
分享

创作者周榜

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