【每日面试】东方财富二面 Java

【每日面试】东方财富二面 Java
最新回答
逗比卖萌无所不能

2021-06-06 01:31:17

东方财富二面Java岗位核心考点涵盖Java生态技术栈、分布式系统、高并发架构及项目实战能力,面试官通过技术深度追问与项目细节挖掘考察候选人真实水平。具体内容如下:

一、面试流程与核心问题
  1. 基础环节

    自我介绍:需突出技术栈与项目角色,例如强调作为项目负责人时在技术选型、团队协调中的贡献。

    项目深挖:针对外包项目,面试官可能追问技术难点(如高并发场景处理)、团队协作问题(如需求变更管理)及优化方案(如数据库查询效率提升)。

  2. 技术栈考察

    MyBatis缓存机制

    一级缓存(SqlSession级别):默认开启,执行增删改操作后自动清空,避免脏读。

    二级缓存(Mapper级别):需手动配置<cache/>标签,跨SqlSession共享数据,适用于读多写少场景。

    追问点:缓存穿透(查询不存在的数据)、雪崩(大量缓存同时失效)的解决方案。

    线程池原理

    核心参数:核心线程数、最大线程数、队列容量、拒绝策略(如AbortPolicy直接抛出异常)。

    深挖方向:线程池选型依据(如FixedThreadPool适用于稳定任务,CachedThreadPool适用于突发任务)、任务拒绝时的降级策略。

    Redis亿级数据操作

    固定前缀Key查询:使用SCAN命令替代KEYS(避免阻塞),结合MATCH参数过滤前缀,例如SCAN 0 MATCH user:* COUNT 1000。

    集群环境优化:分片存储时需通过哈希标签(如{user}:1001)确保相同前缀的Key落在同一节点。

    Redis分布式锁

    单机版:SETNX key value(value需为唯一标识,如UUID) + EXPIRE(防止死锁)。

    集群版:Redlock算法(需在多数节点上获取锁,且总耗时小于锁的TTL)。

    问题点:时钟漂移导致锁提前释放、网络分区时的脑裂问题。

    ZooKeeper分布式锁

    实现方式:创建临时顺序节点,最小节点号持有锁,监听前一个节点释放事件。

    对比Redis:ZK适合强一致性场景(如金融交易),Redis性能更高但可能存在锁丢失风险。

    Redis集群部署

    架构:至少3个主节点 + 每个主节点配1个从节点,支持数据分片(16384个槽位)与故障自动转移。

    运维要点:集群伸缩时的槽位重分配、网络分区时的脑裂处理。

    分布式与集群区别

    分布式:多节点协作完成同一任务(如微服务架构),强调横向扩展与解耦。

    集群:多节点提供相同服务(如Redis集群),强调高可用与负载均衡。

  3. 架构设计能力

    电商服务器架构

    关键点:分层设计(接入层、服务层、数据层)、负载均衡(Nginx)、缓存(Redis)、异步处理(消息队列)、降级限流(Sentinel)。

    追问方向:如何应对秒杀场景(预减库存、队列削峰)、数据一致性保障(最终一致性 vs 强一致性)。

    URL到页面展示全流程

    详细步骤:DNS解析 → TCP连接 → HTTP请求 → 服务器处理(静态资源走CDN,动态资源走应用服务器) → 响应返回 → 浏览器渲染(HTML解析、CSS渲染、JS执行)。

    优化点:DNS预解析、TCP连接复用、HTTP/2多路复用、CDN加速、懒加载。

    IP请求到服务器流程

    关键环节:网卡接收数据包 → 内核协议栈处理(IP路由、TCP握手) → 应用层处理(如Nginx反向代理)。

    同源策略:浏览器限制跨域请求(协议、域名、端口需一致),可通过CORS或JSONP解决。

  4. 业务理解与软技能

    公司业务考察:需提前了解东方财富的金融业务(如基金代销、股票交易),结合技术栈说明如何支持业务(如高并发交易系统设计)。

    项目经验总结:重点描述问题解决过程(如通过Redis缓存热点数据降低数据库压力),体现技术深度与团队协作能力。

二、面试特点与应对策略
  1. 技术深度优先

    面试官通过“为什么选择这种方案?”“是否有更好的替代方案?”等问题考察技术理解,需准备原理性回答(如线程池拒绝策略的适用场景)。

  2. 项目真实性验证

    针对项目细节追问(如“如何监控线程池任务积压?”),需提前梳理项目中的技术难点与优化点。

  3. 业务关联性

    结合东方财富的金融场景回答架构问题(如“如何设计一个低延迟的股票行情推送系统?”),体现技术落地能力。

三、提升建议
  1. 技术准备

    复习Java核心(多线程、JVM)、框架原理(MyBatis、Spring)、分布式系统(Redis、ZK)、网络协议(HTTP、TCP)。

    实践亿级数据场景(如用Redis模拟高并发读写),掌握性能优化方法。

  2. 项目复盘

    整理项目中的技术决策(如为什么用ZK而不用Redis实现分布式锁),准备STAR法则(情境、任务、行动、结果)描述。

  3. 业务研究

    体验东方财富的产品(如东方财富APP),分析其技术架构(如行情推送是否用WebSocket)与业务痛点。

图:东方财富二面技术考察重点

此次面试对技术深度与项目实战要求较高,建议通过源码阅读(如Redis集群源码)、性能压测(如用JMeter模拟高并发)提升竞争力。