水滴9.27 Java后端 一面

面试官是一个八年工作经验的架构师,还是非常感谢面试官给与的一次面试机会的,让我的视野又被打开很多(不能只注重怎么用在哪用,还得知道底层之间的联系)。

开场面试官简介了一下对我的了解以及查看了我的个人博客和CSDN等开放社区,之后面试开始。

1. 自我介绍。

2. 熟悉的技术栈有哪些?

3.  JVM内存模型介绍一下。

4. JVM内存模型的意义?(保证多线程下缓存可能带来的数据不一致性)

5. 了解过happen-before吗?简单介绍一下(了解~但不多)(如果一个操作的执行结果需要对另一个操作可见,则需要保证happen-before原则。

6. happen-before为了验证什么?

7. JVM内存结构说一下?

8. 这几个结构哪些会发生OOM?

9. 对象分配一定在堆上吗?

10. 为什么要在栈上分配?

11. 栈的结构了解吗?

12. CPU上下文切换,切换的是哪些?(我说的保存PC和栈内容)

13. 保存栈的全部内容吗?(是的?)

14. 什么是动态代理?

15. 动态代理应用在哪些方面?

16. CGLib是静态代理吗?

17. 字节码增强技术了解吗?

18. 你觉得什么是字节码增强技术?

19. 了解字节码增强技术在哪的应用吗?(AOP?)

20. 了解设配器模式吗?

21. 适配器模式解决什么问题?

22. solid原则.....(就是面向对象设计的原则)。

23. 什么是依赖倒置?(我说的不太学术,应该说依赖抽象)

24. CMS了解吗?说一下过程?

25. CMS做了哪些优化?

26. CMS会出现失败的场景吗?降级的场景???

    并发回收失效和晋升失败

27. 有看过GC日志吗?

28. 看GC日志主要关注哪些呢?(我说的看当前堆大小。。。)

29. GC中是包含堆的容量占比吗?形式是什么样的?

30. 如果出现了OOM了怎么排查?比如堆内的。

    这里面试官给我科普了一下,堆栈是有大小设置的,因此如果发生OOM和实例机的内存占用问题关系是不大的。此时看内存是没用的。常用的方式是jmap dump查看最大对象的大小。并且在dump的时候还需要考虑生产环境的影响,dump可能带来用户请求的失败等等。这里严厉批评了我,呜呜~

31. i++是不是线程安全?

32. volatile 修饰后就变线程安全了吗?(这当时脑子抽了。。。。)

33. 什么是CAS?(回答要点应该是cas就是操作系统提供的一个原子操作,关键在于一个指令级)

34. AQS了解吗?

35. AQS怎么实现公平和非公平的?(脑子又抽了)

36. countdownlatch了解吗?应用场景是什么?

37. 以信号量的方式控制线程怎么处理?

38. ThreadLocal的应用场景?

39. 能解决什么问题?(安全?存储?并发?)

40. ThreadLocal 使用过程注意事项?

41. ThreadLocal一直set有什么问题?

42. 引用分为几种?区别是什么?

43. hashmap不安全在哪?1.7-1.8 

44. hash冲突算法有哪些?

45. ThreadLocal哈希算法?

46. 类加载哪个阶段会发生静态变量初始化?


47. 什么会触发类加载?

    1. 创建类的实例
    2. 访问类的静态变量
    3. 访问类的静态方法
    4. 反射
    5. 初始化一个类的子类
    6. 虚拟机启动时,定义了main方法的类

48. 常量会不会触发类加载?

49. 访问final修饰的静态变量时,**不会触发类加载**,因为在编译期已经将此常量放在常量池了。

50. 类的唯一标识符是什么?

51. 怎么知道类有没有被加载?

52. 了解类加载隔离吗?

53. MySQL索引数据结构?为什么用B+?B+特点是什么?

54. MVCC简单描述一下?

55. 幻读可重复读的区别?

56. 可重复读可以解决幻读吗?

57. 间隙锁主键上锁和普通字段上锁区别?

58.  in和exist的区别?

59. 间隙锁如果数据不存在怎么锁?

60. 间隙锁能不能共存?

61. 锁的种类?

62. 怎么上写锁?怎么上读锁?

63. redo log和undo log的区别?

64. redo log 和binlog怎么保证一致性?

65. redo log成功binlog失败

66. redis内部数据结构?

67. redis的String为什么使用SDS作为数据结构?

68. redis跳表是什么样的结构?

69. 跳表插入过程?

70. 跳表的rank怎么存储的?

71. IOC容器有哪些?

72. BeanFactory和FactoryBean的区别?

73. FactoryBean获取对象方法是什么?

74. Spring容器和SpringMVC容器怎么集成的?

75. Spring Cloud的组件有哪些?

76. IO有哪些?

77. 同步异步?阻塞非阻塞?

78. 怎么理解同步非阻塞?

79. Netty epoll是什么?(醉了当时脑子抽了说没听过。。。主要他说是netty里面的呜呜,多加个select我就能想起来了)

80. 什么是boss线程?什么是work线程?

81. 序列化反序列化在哪层?

82. 什么是粘包拆包?

83. 粘包拆包受什么限制?(我说的物理元件限制)

84. 什么元件?(MTU)

85. Netty Nagle 算法?

86. RPC需要开启nagle发送吗?

87. RPC是否可以使用Linux的keepalive保持心跳?

88. http 403什么意思?

89. 304什么意思?

90. 什么是零拷贝?

91. 零拷贝的实现方式?

92. 什么是虚拟内存?

93. Linux统计文件夹下文件数量什么命令

94. 看机器负载怎么看?

95. 怎么改用户权限

96. CAP是什么?

97. Base是什么?

98. 什么是分区容错性?

99. 一致性算法有哪些?(希望我说paxos和raft)

100. zookeeper怎么保证强一致性?

居然发现刚好100~

反问:

1. 您工作几年了?
2. 您在工作中负责什么?
3. 对应届生加入您的团队,您对应届生的期望是什么?(编程基础、算法数据结构设计模式、框架要懂、Linux网络内存等)

#水滴筹##秋招#
全部评论
nb……
2 回复 分享
发布于 2022-09-28 00:42 广东
又多又难..........
点赞 回复 分享
发布于 2022-11-27 18:54 黑龙江
逆天
点赞 回复 分享
发布于 2022-11-25 13:46 广东
nb
点赞 回复 分享
发布于 2022-10-10 12:31 江苏
nb
点赞 回复 分享
发布于 2022-10-04 19:49 安徽
niu
点赞 回复 分享
发布于 2022-10-03 09:44 山东
面试官这是工作几年了?很好奇
点赞 回复 分享
发布于 2022-09-30 22:13 湖南
可以整理成面试宝典了
点赞 回复 分享
发布于 2022-09-30 18:17 重庆
老哥太强了,我昨上午面的60min,感觉是同一个面试官
点赞 回复 分享
发布于 2022-09-30 10:04 江西
楼主和面试官都太强了。。。
点赞 回复 分享
发布于 2022-09-29 00:15 北京
我一面45-50分钟也就二十个问题左右,你这100个太离谱了。
点赞 回复 分享
发布于 2022-09-28 19:19 北京
逆天
点赞 回复 分享
发布于 2022-09-28 16:12 天津
面了多久啊?
点赞 回复 分享
发布于 2022-09-28 09:35 重庆
牛逼
点赞 回复 分享
发布于 2022-09-28 00:11 江苏
最后面试官还说准备让我写算法,时间关系就不写了
点赞 回复 分享
发布于 2022-09-27 23:51 安徽
???一面能问这么多东西啊
点赞 回复 分享
发布于 2022-09-27 23:25 河南

相关推荐

04-10 13:13
门头沟学院 Java
1.自我介绍2.深度参与项目,产出3.OCR为撒做文件识别;部署的哪个4.传统的读取pdf docx api sdk有用过吗5.文本内容为啥还要用ocr6.pdf 图片内容;图片,图表的理解,怎么做;饼状图,折线图怎么提取语义信息7.ocr背后的原理,给一个饼图,然后怎么输出内容8.是否真的了解怎么识别 占比 类比这样的语义识别9.有看过ocr调用,语义保留这样的指标的评估10.怎么做评估;完全识别的指标又是怎么评估;九十分一百分怎么打分完全识别11.图表识别怎么评估打分,怎么评判,有哪些依据12.为啥选768维度13.讲下embedding模型,怎么做embedding14.embedding模型底层;什么是token;为撒100wtoken最大token数15.大语言模型参数了解吗;在显存消耗的哪个层面消耗的16transfomer词表是怎么构建的吗17.ES怎么构建的;这里面的关键词怎么构建的;BM25基于什么原理18.一部分milvus语义召回,一部分ES关键词召回;怎么返回用户的19.精排维度是多少,原理是什么20.rerank精排基于什么;为撒精排效果更好21.你觉得这些策略涉及有哪些问题;讲了四个问题权重;向量维度;双向量检索的策略;切分策略(切分维度)22.针对上述的你提的问题,说出自己解法23.最核心的一个指标的什么;最核心的指标;归纳出最核心的一个综合指标24.function calling mcp skill,解释概念;用到什么场景;分别解决了什么问题答得不好25.prompt engining ,context  engining,hareness enginering 解释什么问题答得不好26.抽象类和接口却别27.jvm内存回收;什么情况下适合标记清除,什么标记整理28存活时间怎么定义这里列下六个ai概念和解释24. Function Calling、MCP、Skill:概念、场景与解决的问题这三个概念其实代表了 AI 智能体(Agent)与工具交互的三个不同层级:底层协议、通信标准、业务封装。1. Function Calling (函数调用)概念:这是大模型的一种底层能力。它让模型不仅能输出文本,还能输出结构化的数据(如 JSON),告诉程序“我要调用哪个函数,参数是什么”。解决的问题:解决了“模型说不清楚,程序读不懂”的问题。它打破了模型只能聊天的限制,让模型有了“手”,能触发外部动作。场景:简单的工具调用:查天气、计算器、查询数据库。提取结构化信息:把用户的一段话转换成 JSON 对象。2. MCP (Model Context Protocol,模型上下文协议)概念:由 Anthropic 提出的标准化通信协议。你可以把它理解为 AI 界的 USB-C 接口。它定义了一套标准,让 AI 应用(Client)能统一地连接到各种数据源和工具(Server)。解决的问题:解决了“连接碎片化”和“上下文孤岛”的问题。以前每接一个工具都要写一套适配代码,现在只要工具支持 MCP 协议,AI 就能直接连,不用重复造轮子。场景:企业级应用集成:统一连接本地文件、Google Drive、Slack、GitHub 等。跨平台工具共享:开发者开发一个 MCP Server,所有支持 MCP 的 AI 客户端都能用。3. Skill (技能)概念:这是面向业务的能力封装。它通常是一个包含指令、脚本、资源和提示词的“文件夹”或集合。Skill 往往基于 Function Calling 构建,但更复杂。解决的问题:解决了“工具零散,无法完成复杂业务”的问题。它把一个个原子化的函数(如“查航班”、“查酒店”)组合成一个有意义的业务能力(如“订机酒套餐”)。场景:复杂任务处理:比如“帮我策划一次旅行”,Skill 会自动规划步骤,依次调用查天气、订机票、订酒店的函数。垂直领域专家:比如“法律助手 Skill”,里面封装了查法条、写文书的特定流程和提示词。📌 总结对比表表格概念本质定位核心解决问题形象比喻Function Calling底层交互协议模型输出结构化指令神经信号(告诉手要动)MCP通信与调度层统一连接标准,避免重复开发USB 接口(通用插头)Skill业务能力层复杂任务编排与封装操作手册(怎么做菜)🧠 25. Prompt Engineering、Context Engineering、Harness Engineering这三个概念代表了 AI 应用开发从“手工作坊”到“系统工程”的进化过程。1. Prompt Engineering (提示词工程)解释:这是最早期的阶段。核心是“写咒语”。通过精心设计自然语言指令(如“你是一个专家,请一步步思考...”),引导模型输出更好的结果。局限:它是一次性的、静态的。如果任务太复杂,光靠一段话很难控制模型。2. Context Engineering (上下文工程)解释:这是目前的主流趋势。核心是“构建信息流水线”。它不再只关注那一句提示词,而是关注如何把最有效的信息(知识、历史、工具描述)在恰当的时机喂给模型。它包括 RAG(检索增强)、记忆管理、摘要压缩等技术。解决问题:解决了模型“记性差”、“知识过时”和“幻觉”问题。它把模型从一个“聊天机器人”变成了一个“拥有外部知识库的专家”。3. Harness Engineering (编排工程/智能体工程)注:Harness 在这里通常指“智具编排”或“系统 harness”,类似于 LangChain 或 AutoGen 这类框架所做的工作。解释:这是最高阶的阶段。核心是“系统级管控”。它不仅仅是给信息,而是设计一个工作流。比如:先让模型 A 写代码,再让模型 B 审查代码,如果报错再让模型 A 修改。它涉及多智能体协作、循环反馈、工具调用的逻辑编排。解决问题:解决了复杂任务的自动化执行和可靠性问题。📌 一句话总结进化史Prompt Engineering:教模型“怎么说话”。Context Engineering:给模型“参考资料和记忆”。Harness Engineering:给模型“ teammates(队友)和工作流程”。
查看28道真题和解析
点赞 评论 收藏
分享
03-31 16:42
中南大学 Java
人生第一次面试,从中午开始就紧张的不行,吞了两粒普萘洛尔,面试的时候确实一点没紧张了。问了快四十个问题,面经写出来才发现问题这么多,怎么记得看面经都是只有一二十个,是不是大家发的时候都精简了一些导致的?鼠鼠实力还是不够,死锁居然没想起来,aba问题一句话的事,也没看过,场景题也只能凭自己经验瞎编,没提前准备好在面试官人比较好,没答上来也给提示,说没关系。(感觉面试官也有点紧张,让我放松了不少)没有手撕也比较惊讶,不知道是出于何考虑。希望能有二面吧,给我一点正向反馈吧,压力真的是爆了问题:1. 请花大概五到十分钟,介绍一下你的项目经验,以及整体遇到的问题和如何解决的。2. 本地生活服务平台项目,是你一个人完成的还是团队合作完成的?3. 这个项目(本地生活服务平台)中,你觉得遇到了最重要、最难的问题是什么?你是如何解决的?4. 经过你这个缓存设计之后,你的整个系统 QPS 可以到多少?假如说我现在要扛 1 万 QPS 的话,你觉得整个系统还需要做什么升级改造?5. 你怎么样去识别哪些数据是热点数据的?6. 假如说你的系统一直运行得很好,突然某天出现了宕机,你觉得应该怎么去定位?大概的流程知道吗?7. 你觉得秒杀系统这种商品购买和普通的商品购买,它会有什么不同?整个系统需要考虑什么因素?8. 如果系统现在能扛 1000 QPS,瞬间来了 3000-4000 个客户秒杀,可能会发生什么?应该有什么措施去对抗/缓解这种情况?9. 你滑动窗口限流用的是什么组件?大概是怎么实现的?10. 针对第一个 下单资格判断Lua脚本,脚本主要的逻辑是什么?11. 如果配合 Lua 脚本的话,有没有什么注意事项?12. 假如因为不小心写了个 bug,这个 Lua 脚本执行需要 10 秒或者 20 秒,你觉得这个时候系统可能会发生什么情况?13. 假设 Redis 的 Lua 脚本正在执行一个扣减操作还没执行完,这时候其他客户端的请求打过来了,它会阻塞吗?还是不阻塞?14. 你们的项目里面用到 Caffeine,为什么用它?主要用它做什么?架构设计上有什么考虑?15. Caffeine 的淘汰策略你大概知道吗?16. 系统运行中如果出现慢 SQL,一般是什么原因?以及如何定位慢 SQL 问题?17. 假如系统用户量非常庞大(两三千万),要给数据库去加索引的话,这个索引加起来可能耗时两三个小时,在执行索引时需要注意什么?18. 你怎么样去测你的 QPS?你评估出来的 1000 QPS 主要是关注哪些指标?19. 本地生活服务平台是在公司里面的经历,还是你们自己的一个学习项目?20. 对于 Kafka 了解吗?它是怎么样保证消息顺序的?21. 即便做了缓存缓解压力,MySQL 还是可能有瓶颈,你觉得这个时候需要做哪些对 MySQL 的优化?22. 你说数据库做主从分离,读从库时,怎么样去保持主库和备库的数据一致性?23. 你们整个系统有没有用到什么监控?你觉得应该做哪些监控去保证稳定,避免发生用户投诉而你没感知的情况?24. 假如系统突然之间 CPU 报警到 90%,或者内存马上要不足了,你应该怎么样从哪些方面去排查?25. 假如系统做了集群,其中有台机器持续报警,你没时间定位,最快的止血方式是什么?26. 如果 Redis 数据更新了,但 Caffeine 的数据还是旧的(双缓存不一致),什么情况下会出这种 bug?发生了要怎么办?27. 订单系统里的超时关闭(延时任务),你觉得应该怎么实现?28. 怎么防范爬虫?29. 滑动窗口限流和固定窗口限流有什么区别?为什么用滑动窗口?30. 支付回调和关单任务可能同时操作同一个订单,应该怎么样去设计避免冲突?31. 你大概知道什么是 CAS 吗?这里面可能会有什么问题?除了空耗 CPU 之外,还有什么其他问题?了解过 ABA 问题吗?32. 谈到锁的升级,可以大概说一下 Java(Synchronized)锁的升级策略吗?33. 如何避免死锁?如果系统中确实出现了死锁,要怎么样去排查?34. Java 的 equals 和 == 有什么区别?一般重写 equals 的话,为什么还需要重写 hashCode?35. 对 Vibe Coding 了解吗?平时使用什么框架或工具?在使用这些 AI 工具生成代码的过程中,你遇到过什么问题?36. 假如用户提出恶意问题(提示词攻击),比如要求删除知识库文档,你如何避免这种恶意操作?37. 自动问答知识库系统(RAG)中,为什么要用 BM25 和向量混合索引?基于什么考虑?38. 你怎么样评价或者说评估你的 RAG 系统的好坏?应该做哪些测试?提交给决策者做可行性分析可以给出哪些数据?39. 如果用户问了 A 问题,预期 A 答案,但始终得到错误答案,你怎么样去定位排查这个问题反问1. 做的业务主要是什么?技术栈是什么样的?2. 实习生培养机制大概是怎样的?3. 真实的业务开发中,是否有用到 AI 技术?是怎么使用的?
发面经攒人品
点赞 评论 收藏
分享
03-25 21:50
已编辑
门头沟学院 Java
更新:中午面的,晚上约下一轮(下一轮应该是hr面了)。求问牛油们是直接拒offer还是当做一个备选项?(本人是后端选手😅)1. 简单自我介绍一下2. 你了解计算机网络吗?什么是TCP和UDP?3. TCP和UDP的内部实现有什么区别?TCP如何保证可靠性?4. 如果希望让UDP也具备一定的可靠性,你会考虑怎么去优化?5. 你了解HTTP协议吗?HTTP协议都有哪几个版本?分别底层基于什么协议实现?6. HTTP 1.0和1.1的区别?长连接是怎么实现的?7. 常见的长连接实现方式有哪些?8. 如果有1亿用户都建立长连接不断开,对后台压力巨大,如何优化?(既要快和稳定,又要扛住压力)9. 长连接会对后台造成压力,如何设计后台机制来管理用户状态?10. 你知道什么是进程和线程吗?11. 进程间通常有几种通信的方法?12. 你知道线程的死锁是什么意思?死锁产生的条件和如何避免?13. 什么是分布式死锁?如何避免分布式死锁的产生和恢复?14. 代码审查题:分析一段Java实现的DataCache代码(使用SharedPreference)存在的问题,包括代码实现bug和代码设计问题15. 算法题:最大子序和团队是QQ浏览器,比一面难一些,但因为我简历写的全是后端的东西,就没有拷打项目。有些八股问太深了没答出,算法题秒了,代码审查的bug找的不是很全,感觉要考虑高并发问题吧?
查看15道真题和解析
点赞 评论 收藏
分享
评论
12
71
分享

创作者周榜

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