25年8月KN Group Java实习 一面

#JAVA##JAVA面经##JAVA内推#

技术部分

  1. 平时怎么理解Java的面向对象?项目里有实际用到哪些设计思路吗?

我认为面向对象不仅是语法特性,更是用现实世界思维建模软件的方法论:

  • 封装:隐藏内部实现(如订单状态机封装在OrderService,外部只调placeOrder()
  • 继承:代码复用(项目中BaseController统一封装响应格式)
  • 多态:扩展灵活性(支付模块用策略模式,见下题)
    项目实践
  • 策略模式+工厂模式实现支付方式:定义PaymentStrategy接口,Alipay/WechatPay实现类,PaymentFactory根据type返回策略。新增支付方式只需加实现类,符合开闭原则。
  • 模板方法模式:导出功能中,AbstractExporter定义流程(查数据→生成文件→上传OSS),Excel/PDF子类重写具体步骤。
    核心收获:面向对象让代码像搭积木,改需求时‘改一处而非改百处’。
  1. 多态能举个你写代码时遇到的例子吗?比如父类引用调子类方法那种。

校园二手平台中,商品审核场景:

// 父类接口
public interface ContentChecker { 
    boolean check(String content); 
    String getType(); // 返回"文本"/"图片"
}

// 子类实现
@Component
public class TextChecker implements ContentChecker { ... } // 敏感词过滤
@Component
public class ImageChecker implements ContentChecker { ... } // 调用阿里云内容安全API

// 多态应用:审核服务
@Service
public class AuditService {
    @Autowired 
    private List<ContentChecker> checkers; // Spring自动注入所有实现类
    
    public boolean audit(Product product) {
        return checkers.stream()
            .filter(checker -> checker.getType().equals(product.getType()))
            .allMatch(checker -> checker.check(product.getContent())); // 父类引用调用子类方法
    }
}

价值:新增视频审核只需加VideoChecker实现,无需修改AuditService。这让我深刻体会到:多态是解耦扩展的基石

  1. 假如让你做一个简单的订单功能(下单、查订单),你会拆成哪几个模块?为啥这么分?

高内聚低耦合+单一职责原则拆解:
1️⃣ API层(Controller):接收HTTP请求,参数校验,统一响应封装
2️⃣ 应用层(Service)

  • OrderService:核心业务逻辑(创建订单、状态流转)
  • InventoryService:库存扣减(防腐层,隔离商品模块)
    3️⃣ 领域层(Domain)
  • Order实体:含状态机(create→paid→shipped
  • OrderRepository:持久化接口(定义方法,不写SQL)
    4️⃣ 基础设施层(Infrastructure)
  • OrderMapper:MyBatis实现Repository
  • 消息发送(RabbitMQ通知物流)
    分层价值
  • 修改数据库不影响业务逻辑(Repository接口隔离)
  • 单元测试可Mock Repository,专注验证Service逻辑
  • 符合DDD思想,未来扩展优惠券、积分等模块时边界清晰
  1. 数据库主从复制和分库分表听说过吗?简单说说啥时候会用到?

主从复制

  • 原理:主库写→Binlog同步→从库重放
  • 使用场景:读多写少业务(如商品查询),读请求走从库分担压力;从库也可作灾备
    分库分表
  • 触发条件:单表超500万行/单库CPU持续>70%(参考阿里规范)
  • 项目认知:当前二手平台单表<10万,用读写分离+缓存即可;但设计时预留分片键(如user_id),未来用ShardingSphere平滑扩容
    关键认知:先优化SQL、加索引、归档历史数据,分库分表是‘最后手段’,因会引入分布式事务、跨分片查询等复杂度。
  1. AI训练或者区块链有了解过吗?知道一点就说一点,没关系~

AI训练

  • 了解基础流程:数据清洗→模型选择(如CNN)→训练(反向传播+梯度下降)→评估
  • 实践:用TensorFlow跑过手写数字识别MNIST,理解过拟合需加Dropout
    区块链
  • 核心认知:分布式账本+哈希链式结构+共识机制(PoW/PoS)
  • 价值点:去中心化、不可篡改(如商品溯源场景)
    态度:虽非主攻方向,但持续关注技术动态。例如看到贵司用区块链做供应链存证,非常感兴趣,已收藏相关技术博客学习。
  1. 前端接触过吗?知道React/Vue这些吗?你觉得后端开发需要懂哪些前端知识方便协作?

前端经验:独立开发过Vue2项目(Element UI),了解React核心思想(组件化、虚拟DOM)
后端必备前端协作知识
HTTP协议:理解状态码(429限流)、Header(Content-Type)、跨域(CORS预检)
API设计

  • 字段命名统一(snake_case vs camelCase)
  • 错误码规范(如1001=参数错误)
  • 分页格式(pageNum/pageSize)
    调试能力:能看浏览器Network面板定位接口问题(如401未带Token)
    协作意识:用Swagger/YAPI写清晰文档,联调前主动同步字段变更
    亲身教训:曾因返回时间戳未转字符串,导致前端iOS兼容问题。现在坚持‘接口即产品’,上线前用Postman全链路验证。

综合部分

  1. 实习时任务多、压力大,你一般怎么调整心态?

三步法:
理性拆解:用 Eisenhower 矩阵区分任务优先级(紧急/重要),列每日3件核心事
主动沟通:若负荷超限,及时同步导师:‘当前有A/B任务,您看C需求是否可延后?’
能量管理:番茄工作法(25分钟专注+5分钟拉伸),下班后跑步30分钟清空大脑
实例:蓝桥杯备赛期同时赶项目,通过每日站会同步进度,导师调整了任务顺序,最终双赢。我坚信:压力是成长的催化剂,但需科学管理

  1. 对加班怎么看?(比如项目紧急时)

我的态度是:对事不对人,重结果轻形式

  • 项目上线等关键节点,全力配合团队攻坚是责任所在(曾为修复线上Bug加班至深夜,次日复盘优化了监控告警)
  • 但更追求高效工作:通过写好文档、自动化脚本减少重复劳动;日常注重代码质量,避免‘救火式加班’
  • 长期看,健康可持续的工作节奏才能持续创造价值。贵司倡导的‘高效工作文化’(如技术分享会提升能力)正是我认同的方向。
  1. 和同事讨论技术方案有分歧,你会怎么处理?

四步共识法:
1️⃣ 倾听理解:先复述对方观点(‘您是担心方案A的扩展性?’),确认核心诉求
2️⃣ 数据说话:对比方案指标(如QPS、开发成本),用原型/压测数据验证
3️⃣ 聚焦目标:回归业务本质(‘用户最需要快速下单,方案B延迟低100ms’)
4️⃣ 升级决策:若僵持,整理利弊请导师裁定,并全力执行最终方案
案例:曾与同学争论用Redis还是本地缓存,我们写了对比文档,导师建议‘热点数据用Redis’,我欣然采纳并优化了缓存策略。技术无绝对对错,团队目标高于个人偏好

  1. 如果给你两周做一个新需求,你会怎么安排时间?

采用敏捷拆解+缓冲预留

  • Day1:需求澄清(画流程图确认边界)+ 技术方案设计(画架构图/写伪代码)
  • Day2-3:核心接口开发(先跑通主流程)+ 单元测试(覆盖率>70%)
  • Day4-10:功能迭代(每日站会同步进度)+ 联调(与前端对齐字段)
  • Day11-12:自测(边界case/异常流)+ 修复Bug
  • Day13:编写文档(接口说明/部署步骤)
  • Day14:预演演示 + 预留缓冲(应对突发问题)
    关键点:每天下班前花10分钟更新任务看板,让进度透明可控。
  1. 最近有学什么新技术吗?怎么学的?有啥小收获?

正在系统学习Spring Cloud Alibaba

  • 学法
    ① 官方文档精读(Nacos配置中心原理)
    ② 动手实践:将二手平台单体应用改造为微服务(用户服务/订单服务)
    ③ 源码追踪:Debug Nacos注册流程,画时序图加深理解
  • 小收获
    发现@RefreshScope动态刷新配置时,Bean会重建导致连接池抖动。通过查阅Issue,改用ConfigurationProperties绑定配置,避免服务波动。
    感悟:新技术学习要‘带着问题学’,在解决真实痛点中沉淀认知。
  1. 有考研计划吗?

目前无考研计划,已明确职业发展方向:深耕后端开发领域。

  • 大四课程已修完,毕业设计选题《高并发场景下分布式锁优化实践》与实习方向高度契合
  • 与家人充分沟通,全力投入实习与工作,期待在贵司长期成长。
  1. 来实习最希望提升哪方面?比如写代码、团队协作,还是别的?

聚焦三点成长:
🔹 技术深度:在导师指导下参与真实高并发场景(如秒杀),掌握分布式系统设计思维
🔹 工程素养:学习贵司代码规范、Code Review流程、线上问题排查方法论
🔹 协作能力:体验敏捷开发全流程,提升需求理解与跨角色沟通效率
底层诉求:不仅‘完成任务’,更理解‘为什么这样设计’。期待实习结束时,能独立负责一个模块从设计到上线的闭环,并为团队创造可见价值。

#JAVA##java##面经#

本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏

全部评论
接好运
点赞 回复 分享
发布于 今天 12:56 广东
专栏目录https://www.nowcoder.com/share/jump/1772859327707
点赞 回复 分享
发布于 今天 12:56 广东
本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏。
点赞 回复 分享
发布于 昨天 15:50 广东

相关推荐

牛客42327521...:在你没来公司之前你们公司连登录功能都没做?让一个实习生做登录页面?
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

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