2021-06-06 01:31:17
东方财富二面Java岗位核心考点涵盖Java生态技术栈、分布式系统、高并发架构及项目实战能力,面试官通过技术深度追问与项目细节挖掘考察候选人真实水平。具体内容如下:
一、面试流程与核心问题基础环节
自我介绍:需突出技术栈与项目角色,例如强调作为项目负责人时在技术选型、团队协调中的贡献。
项目深挖:针对外包项目,面试官可能追问技术难点(如高并发场景处理)、团队协作问题(如需求变更管理)及优化方案(如数据库查询效率提升)。
技术栈考察
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集群),强调高可用与负载均衡。
架构设计能力
电商服务器架构
关键点:分层设计(接入层、服务层、数据层)、负载均衡(Nginx)、缓存(Redis)、异步处理(消息队列)、降级限流(Sentinel)。
追问方向:如何应对秒杀场景(预减库存、队列削峰)、数据一致性保障(最终一致性 vs 强一致性)。
URL到页面展示全流程
详细步骤:DNS解析 → TCP连接 → HTTP请求 → 服务器处理(静态资源走CDN,动态资源走应用服务器) → 响应返回 → 浏览器渲染(HTML解析、CSS渲染、JS执行)。
优化点:DNS预解析、TCP连接复用、HTTP/2多路复用、CDN加速、懒加载。
IP请求到服务器流程
关键环节:网卡接收数据包 → 内核协议栈处理(IP路由、TCP握手) → 应用层处理(如Nginx反向代理)。
同源策略:浏览器限制跨域请求(协议、域名、端口需一致),可通过CORS或JSONP解决。
业务理解与软技能
公司业务考察:需提前了解东方财富的金融业务(如基金代销、股票交易),结合技术栈说明如何支持业务(如高并发交易系统设计)。
项目经验总结:重点描述问题解决过程(如通过Redis缓存热点数据降低数据库压力),体现技术深度与团队协作能力。
面试官通过“为什么选择这种方案?”“是否有更好的替代方案?”等问题考察技术理解,需准备原理性回答(如线程池拒绝策略的适用场景)。
针对项目细节追问(如“如何监控线程池任务积压?”),需提前梳理项目中的技术难点与优化点。
结合东方财富的金融场景回答架构问题(如“如何设计一个低延迟的股票行情推送系统?”),体现技术落地能力。
复习Java核心(多线程、JVM)、框架原理(MyBatis、Spring)、分布式系统(Redis、ZK)、网络协议(HTTP、TCP)。
实践亿级数据场景(如用Redis模拟高并发读写),掌握性能优化方法。
整理项目中的技术决策(如为什么用ZK而不用Redis实现分布式锁),准备STAR法则(情境、任务、行动、结果)描述。
体验东方财富的产品(如东方财富APP),分析其技术架构(如行情推送是否用WebSocket)与业务痛点。
此次面试对技术深度与项目实战要求较高,建议通过源码阅读(如Redis集群源码)、性能压测(如用JMeter模拟高并发)提升竞争力。