前言 # 经过两个月的面试,发现了诸多的问题,现在为了避免应试失败,这一次开始拓展性的面试复盘,把所有面试的问题都准备一下,今天进行的是复盘题目和总结,明天开始逐一攻关
0. 自我介绍 # 请做一个简单的自我介绍,比如你的职业背景? - 面试鸭 - 程序员求职面试刷题神器 1. 专业技能部分 # 1.1 专业技能1-熟悉Java特性 # 基础知识
一面 # 聊天为主,偶尔聊点技术问题(意外)
自我介绍
请做一个简短的自我介绍。 项目经验
您最近参与的一个项目是什么?该项目的主要技术栈是什么? 智能答题系统是否已经上线?如果上线了,在哪里上线? 在这个项目中您具体工作了多久? 团队与职责
您所在的团队有多少人?您的小组有多少人? 请描述一下您在高校GPT系统中的角色和责任。 在这些项目中,您主要负责哪些方面的工作? 编程语言和技术细节
在项目中您使用到了Java的哪些特性? 抽象类在Java中有何特点?它们与接口有何不同? 参考:https://blog.csdn.net/ADbyCool/article/details/106789587 类(非接口类)在Java中有什么特性? 在项目中您是否有抽象过任何方法?如果有,请举例说明。 设计模式
笔试题(只记录我没答上来的题目) # 1. 外语类 # 外语完型 # 全是蒙的,几乎一个都没答上来 2. 算法 # 给定二叉树的一个后序和中序遍历结果,确定前序遍历结果 # 要确定二叉树的前序遍历结果,可以按照以下步骤进行:
0. 结果 # 没啥戏
1. 面试 # 1. 技术栈和项目经验: # 你在之前的项目中使用了哪些技术栈? # 描述一下你最近做的AI答题应用系统。 # 2. AI模型选择: # 在选型过程中是如何选择用哪一个AI模型(如通义AI、OpenAI等)? # 3. Spring Boot配置与操作: # 如果想将Spring Boot默认的嵌入式服务器换成其他的应该怎么做? # 如何在Spring Boot启动时执行特定的代码逻辑? # 4. 异常处理: # 你是如何实现全局异常处理的? # 5. 加密机制: # 对controller返回值进行加密的方法有哪些? # 要在Spring Boot启动后立即对controller返回值进行加密,可以使用拦截器或过滤器来实现。以下是使用过滤器的示例:
0. 结论 # 疑似刷KPI,因为我和HR核实,大约面试就20分钟,不过线上面试,可以拿来练手
1. 面试题(20min+) # 自我介绍 项目介绍 Controller 与 RestController的区别(一个是单独注解,另一个是合并注解,后者是ResponseBody与Controller的合并) 问我如何对SQL调优 问我如何解决Redis穿透的问题,缓存搭建的问题 重复性的恶意请求,如果这个缓存就是不存在,且数据库查不到,如何解决?(没答上来,做个参考) 请求速率限制:使用速率限制(Rate Limiting)来限制每个IP地址在一定时间内的请求次数。可以使用Nginx、API Gateway等工具来实现。 验证码:在关键操作或频繁请求时,要求用户输入验证码,以防止自动化的 IP黑名单:将频繁发送恶意请求的IP地址加入黑名单,阻止其访问。 缓存空结果:对于不存在的数据,可以将空结果缓存一段时间,防止短时间内重复查询数据库。 请求签名:对请求进行签名验证,确保请求的合法性,防止伪造请求。 监控和报警:设置监控和报警机制,及时发现和处理异常请求。 策略模式 配置Gateway的方法:yaml,必要三个条件:服务名称、端口号和api前缀 已知如果需要动态配置,除了环境变量手段以外,如何用Nacos实现这个过程? 参考1:Nacos自定义环境变量 参考2:Nacos 配置中心用法
面试题 # 自我介绍 - 要求候选人简述自己的背景和经历。 样例:尊敬的面试官,您好。我是XXX,一名拥有2年Java后端开发经验的工程师。最近在XX公司担任后端工程师,主导了多个关键项目的开发与优化。我对Java有深入理解,熟悉集合类、自定义注解及异常处理,并严格遵守阿里编码规范确保代码质量。熟练使用SSM和Spring Boot框架,曾用MyBatis-Plus提升开发效率。掌握了Redis的应用与优化,解决了缓存穿透、一致性问题,并通过Lua脚本实现限流。特别值得一提的是,在构建一个在线答题平台时,我利用Spring Boot整合了Redis缓存、通义AI智能服务、RxJava响应式编程以及SSE实时推送技术。我们团队采用了策略模式提高系统灵活性,封装AI服务简化初始化,优化Prompt保证数据格式化,同时引入Caffeine本地缓存减少重复计算,显著提升了系统性能。此外,我还领导了一次从Java到Go的技术迁移,大幅提高了开发效率并降低了维护成本。我对软件工程充满热情,持续追求技术水平和服务质量的提升。我相信我的背景和技术能力非常适合这个职位,期待能进一步讨论如何为贵公司带来价值。感谢您提供的机会,希望有幸加入贵公司。谢谢! 项目介绍 - 让候选人详细讲述最近参与的项目,特别是与AI答题系统相关的内容。 继续看看课程,稍作完善 系统并发能力 - 询问智能答题系统的并发处理能力,特别是针对一万多用户的场景。 信口胡说一下,因为我把它包装成了一个高校特供的项目,当然之前有这样的项目 数据处理流程 - 关于答题系统中数据处理的具体流程,尤其是AI判题时的数据存储和检索机制。 不会 数据库索引 - 提问关于MySQL查询语句中使用IN关键字是否触发索引,以及联合索引的使用情况。 需结合实际情况讨论,仍以字段是否有索引为标准 索引下推 最左匹配原则 事务隔离级别 - 考察候选人对数据库事务隔离级别的理解,特别是MySQL的默认隔离级别及其含义。 四大隔离:读已提交、读未提交、可重复读、串行化 默认隔离级别:可重复读 含义:它确保在同一事务中多次读取同一数据集时,结果是一致的。这意味着在事务执行期间,其他事务无法修改这些数据。这个级别可以防止脏读和不可重复读,但可能出现幻读。 MySQL执行计划 - 询问候选人如何查看和解读MySQL的执行计划,用于查询优化。 select_type, type, key, key_len, rows, Extra 查询类型效率 - 讨论MySQL查询类型(如index, range, ref)的效率排序。 参考: ref > range > index const, system:这些查询类型用于单行匹配,效率最高。 eq_ref:用于唯一索引的查询,每次只返回一行。 ref:用于非唯一索引的查询,可能返回多行。 range:用于范围查询,扫描索引的一部分。 index:扫描整个索引。 ALL:全表扫描,效率最低。 测试候选人对Java字符串处理的理解,包括字符串相等性的判断(小场景题,主要是==与equals的区别) 参考:== equals 和 hashCode 是什么,又有怎样的区别? 扩展问题: String/StringBuilder/StringBuffer的区别。 类加载顺序 - 询问Java中类的静态变量、静态代码块、成员变量、普通代码块、构造方法、(静态方法)的加载顺序。 静态变量和静态代码块 > 成员变量和普通代码块 > 构造方法 (> 静态方法) Java IO - 要求解释Java IO的不同模式,包括传统的阻塞IO、非阻塞IO及AIO,并提及项目中常用的字节流。 问你这个的时候,实际上考官在问的是序列化和反序列化问题 还有文件字节流 还有上面的三种io
1. 自我介绍 # 面试解析:普通人面试指南2024版
2. 问题回忆 # 介绍一下你拿手的项目? 遇到的难点 RabbitMQ问题 MySQL事务问题 Java基础类型 深拷贝和浅拷贝 包装类型和值类型 包装类型和值类型属于什么拷贝 JDK 1.8 新特性 流相关问题 流的过滤会不会影响已有的数组 Spring IOC AOP是什么? Bean注入是属于IOC还是AOP Spring事务问题(没答上来,瞎编引导到MyBatis) 3. 感受 # 这次感觉很社死,答得磕磕巴巴,差点我就要紫砂了,时至今日都没有一张offer.
0. 面试结果 # 岗位竞争激烈,只要两个人,凉凉
1. 自我介绍 # 面试解析:普通人面试指南2024版
0. 面试结果 # 凉凉,差点以为能过,面试官当时对我印象不错,意难平,决定分享
1. 自我介绍(1min) # 面试解析:普通人面试指南2024版