2025年恒生电子面试经验面试题及答案.docxVIP

2025年恒生电子面试经验面试题及答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2025年恒生电子面试经验面试题及答案

技术一面(40分钟,后端开发岗,面试官为30岁左右的Java工程师)

Q1:聊聊你项目中用SpringBoot做过的性能优化,具体遇到了什么问题?怎么定位的?

A:我负责过一个金融数据聚合平台的后端开发,初期用户反馈查询持仓数据接口响应时间偶尔超过2秒(SLA要求1.5秒)。首先用Arthas监控接口调用,发现慢调用集中在非交易时间的早盘前查询(7:30-8:30)。进一步分析SQL日志,发现查询条件中“account_id+update_time”的联合索引未覆盖,导致全表扫描;同时,Redis缓存的失效策略是默认的LRU,但该接口的查询参数(account_id,product_type)组合有明显的热点特征(前20%的用户贡献80%的查询)。优化分三步:①给DB添加(account_id,product_type,update_time)的复合索引,将查询时间从800ms降到120ms;②调整Redis缓存策略为按(account_id,product_type)分组的固定过期时间(交易时间30秒,非交易时间5分钟),并引入本地Caffeine缓存做二级缓存,热点数据本地命中后避免访问Redis;③在网关层对重复请求做3秒内的去重,减少15%的无效调用。优化后接口P99从1.8秒降到800ms,错误率从0.3%降到0.05%。

Q2:JVM内存模型中,元空间和永久代的区别?如果线上应用出现MetaSpace内存溢出,你会怎么排查?

A:元空间(MetaSpace)是JDK8及以上替代永久代(PermGen)的内存区域,主要区别在于:①存储位置:永久代在JVM堆内,受MaxPermSize限制;元空间在本地内存(NativeMemory),默认无固定上限(但受系统内存限制);②存储内容:永久代存类元数据、常量池、静态变量;元空间存类元数据(Klass、Method、Field等),字符串常量池和静态变量移至堆;③GC策略:永久代GC由CMS负责,容易触发FullGC;元空间由类加载器生命周期管理,无用类加载器卸载时回收。

排查MetaSpace溢出步骤:①用jstat-gcutilPID1000查看GC情况,若YGC频繁但MetaSpace使用持续增长,可能是类加载过多未卸载;②用jmap-clstatsPID查看存活类加载器及加载的类数量,定位是否有自定义类加载器未正确释放(比如动态编译的金融策略脚本加载器);③检查Arthas的ognl表达式`@sun.reflect.generics.factory.GenericsFactory@getCacheSize()`,确认泛型元数据是否过度缓存;④结合应用日志,看是否有动态提供类的场景(如使用CGLIB代理金融交易规则、ASM提供策略类),若有则检查类加载器是否被容器正确管理(如Spring的DefaultListableBeanFactory是否及时销毁);⑤若上述无异常,可能是JVM参数配置过小,可通过-XX:MaxMetaSpaceSize调整(一般建议设置为系统内存的1/4,比如16G内存设4G)。

Q3:设计一个分布式锁,用于金融交易系统的订单防重,需要考虑哪些关键点?

A:核心要解决“正确性”和“性能”的平衡,金融场景对并发冲突容忍度极低(比如同一用户同一时间提交两笔相同订单)。关键点包括:

①互斥性:同一时刻仅一个客户端持有锁,需避免Redis主从切换时的锁丢失(可参考Redlock算法,但实际中更常用Redisson的MultiLock,或使用ZooKeeper的顺序节点实现);

②超时机制:锁必须有过期时间(如30秒),防止客户端崩溃后锁无法释放,但需考虑业务执行时间超过锁过期的情况(可通过守护线程自动续期,如Redisson的WatchDog机制);

③可重入性:同一客户端同一线程可多次获取同一锁(比如订单接口调用内部服务时需再次加锁),需记录线程ID和重入次数;

④防误删:释放锁时需校验当前客户端是否持有锁(通过Lua脚本比较锁的value是否为客户端ID),避免A释放了B的锁(比如A的锁过期后B获取锁,此时A完成业务后错误释放B的锁);

⑤性能:金融交易峰值(如早盘集合竞价)QPS可能达10万+,需减少锁粒度(按用户ID或订单ID分片),避免全局锁;同时锁的获取/释放操作需低延迟(Redis的单线程命令、ZooKeeper的顺序节点监听);

⑥高可用:锁服务需集群部署,避免单点故障(Redis的哨兵模式、ZooKeeper的集群)。

技术二面(50分钟,高级技术专家,侧重系统设计和金融业务结合)

Q1:假设要开发一套券商的智能

文档评论(0)

小武哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档