每日互动(个推)Java实习面经
《面试题目》
- 15投递
- 16约一面
- 17一面面试
- 一面:42min,无八股无手撕,全程拷打实习和项目,外加场景题
- 自我介绍
- 我看你用友实习个人产出2,你的设计思路是什么样的,是如何确定线程池的参数,如何保证并行任务之间数据一致性和最终结果正确性的,假如一些任务失败了你的容错机制是怎么设计的。
- 我看你用友实习个人产出4,能详细说一下你这个策略模式写的策略接口以及工厂模式是如何根据条件动态的选择策略的
- 策略模式和工厂模式的区别,分别适用什么场景
- 我看你安恒信息实习个人产出3,详细讲一下竞价并发冲突下,lua脚本是如何保证原子性的,Redisson分布式锁又是怎么做幂等控制的
- Redisson分布式锁和Redis原生的SET key value NX EX expireTime命令相比有哪些优势
- 我看你这里做了压测,你是怎么设计的测试场景和验证结果的
- 我看你安恒信息实习个人产出2,说一下怎么检测的慢查询,怎么分析索引失效的,如何确定联合索引的建立,join优化做了哪些操作
- 假如说一个联合索引有多个字段的情况下,字段该如何排序,把什么字段放到索引的最前面
- 我看你开源的Agent项目项目亮点1的多Agent并行编排用的CompletableFuture并行执行,可以不可以分析一下为什么使用CompletableFuture而不是用其他框架的原因,基于什么出发点考虑的,语法方面有没有什么特别之处
- 多Agent的新闻舆情Agent如果依赖第二个技术分析Agent的部分数据你是如何调节设计的(项目是股票交易Agent)
- 多Agent并行执行的最后结果生成的建议,你怎么对生成的建议做一个准确性评估,如何做评估
- 我看你用友实习个人产出3,SAP和商城系统的数据同步,可以分析一下两个系统数据模型的差异吗
- 讲一下你说的空值标准化处理解决跨系统数据一致性问题和你写的key算法
- 有没有考虑拓展性,比如未来会新增一个数据源接一个ERP系统,怎么做一些调整快速的接入进来,形成一个标准化的方案
- 我看你用友实习个人产出1,写了个多渠道价格异常值剔除算法,能分析一下这个算法的优缺点吗
- 在实习中你作为一个后端开发你需要和产品测试等人员协作的时候,假如说因为一个接口问题你和一个前端人员产生了分歧你是如何沟通的,如何达成一致
- 说回用友实习个人产出4,假如工作中一些开发同事认为你的if-else代码虽然冗长但是稳定,按照你的策略模式加工厂模式会有风险,你会如何说服他们接受你的方案
- 说回股票交易Agent项目,假如说你要把项目介绍给一些不懂技术但是对炒股有兴趣的人,你如何去向一个非技术背景的产品经理或者业务人员解释一些技术名词以便去让他们了解这个工具设计的合理性增加你的可信度
- 作为学生的角度,你们在探索AICoding的时候,传统手写代码AICoding写代码有什么区别,你们的感受是什么样的
- 作为开发人员的角度,假如说给你一个项目让你完全用AI开发,包括需求分析、出方案、数据库设计、代码开发等等完全交给AI,你该如何保证代码的输出质量,可以通过哪些手段或者技术吗
- 反问:几轮面试
- 反问:岗位和部门业务
- 反问:面试评价
《参考解析》
-
MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。
-
Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。
-
Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。
-
消息队列:消息队列解决异步解耦、流量削峰。消息可靠性:生产者confirm确认;Broker持久化;消费者手动ACK。幂等性:消费端通过唯一ID+Redis或DB乐观锁实现。顺序消息:同一业务Key路由到同一分区/Queue,单线程消费。消息积压:扩消费者+增加分区+临时跳过非关键消息。