这是一位球友投稿的东方财富服务端开发暑期实习面经,问的内容还是比较多的,难度也相对比较大。下面是正文。

最近参与了东方财富服务端开发暑期实习的招聘,并最终收获了 Offer。整个过程持续了大约一周,从技术一面、技术二面到最终的 HR 沟通,体验下来感觉公司非常注重候选人基础知识的广度与深度,同时也对实际问题的解决能力有较高要求。在此,我将整个面试过程进行复盘,希望能为志在东财或相关岗位的同学提供一些有价值的参考。

背景介绍

  • 面试岗位: 服务端开发实习生 (Java)
  • 面试流程: 技术一面 -> 技术二面 -> HR -> Offer
  • 面试形式: 线上/线下均有,我经历的是线下面试

技术一面

一面的面试官非常和蔼,整体氛围比较轻松。面试时长约一小时,主要围绕 Java 基础、中间件、数据库等核心技术栈进行提问,考察知识的广度。问题由浅入深,覆盖面很广。

Java 基础与 JVM

  • 面向对象: 我从封装、继承、多态三板斧切入去聊了挺多,面试官整体比较满意。
  • 重载与重写: 我从方法签名、编译/运行期、以及与多态的关联等角度进行了解答。
  • 集合与并发
    • hashCode()方法的作用是什么?它和equals()方法有什么关系?我回答了其在哈希表中的作用,并强调了两者需要同时重写的原则。面试官追问了哈希冲突的解决方案,我提到了链地址法和开放地址法。
    • TreeSet是如何实现排序的?我解释了其底层基于红黑树,并需要对象实现Comparable接口或在构造时传入Comparator
    • LinkedBlockingQueueConcurrentLinkedQueue的区别?这个问题有点难了,考察了对 JUC 包的熟悉程度,我主要从是否阻塞、内部实现(前者基于 ReentrantLock,后者基于 CAS)、容量是否无界这三个角度去回答。
  • JVM 内存模型与垃圾回收
    • “介绍一下 JVM 的运行时数据区”,我按照线程共享和私有的方式进行了划分和介绍。
    • “为什么要进行垃圾回收?” 这是一个引导性问题,之后面试官深入问了 CMS 和 G1 回收器的核心区别,我从应用场景、回收目标(停顿时间 vs 吞吐量)、内存布局(连续 vs 分区)等方面做了对比。

数据库

  • 事务特性与隔离级别: “谈谈数据库事务的 ACID 特性是如何实现的?” 我分别解释了原子性(Undo Log)、持久性(Redo Log)、隔离性(锁/MVCC)和一致性(由其他三者保证)的底层原理。紧接着,面试官让我说明了 SQL 标准的四种隔离级别以及它们分别解决了哪些并发问题(脏读、不可重复读、幻读)。
  • 索引与调优: “B+树的结构是怎样的?为什么数据库索引常用它?” 我从非叶子节点只存索引、叶子节点存储数据且形成有序链表等角度,分析了其在范围查询和 I/O 效率上的优势。面试官还让我分享了一些 SQL 调优的实际经验。
  • 分布式锁: “如果让你用 MySQL 设计一个分布式锁,你会怎么做?” 我提出了利用主键或唯一索引的唯一性约束来实现,并简单介绍了具体的方案。

缓存

  • 高可用与持久化: “Redis 如何保证高可用?” 我介绍了主从复制、哨兵(Sentinel)机制和集群(Cluster)三种模式。接着,面试官问了 RDB 和 AOF 两种持久化策略的优劣和适用场景。
  • 缓存生产问题: 经典缓存三件套(穿透、击穿、雪崩)的成因和解决方案是必考题。我结合布隆过滤器、缓存预热、热点数据永不过期、加锁更新、以及限流降级等策略进行了解答。
  • 数据结构与热点 Key: “ZSet 的底层数据结构是什么?” 我回答了跳表(SkipList)和压缩列表(ZipList)。面试官进一步问了热点 Key 问题的解决方案,我提到了多级缓存、本地缓存以及将热点 Key 打散等方法。

其他

  • RocketMQ: “请介绍一下 RocketMQ 的整体架构和核心组件”,我说明了 NameServer、Broker、Producer 和 Consumer 的作用。
  • 网络与框架
    • HTTP 与 HTTPS 的核心区别是什么?我从安全性、证书、端口和连接过程等方面进行了解答。
    • Nginx 常用的负载均衡算法有哪些?我列举了轮询、加权轮询、IP 哈希等。

算法手撕

  • 题目: 零钱兑换 II (LeetCode 518)
  • 要求: 给定不同面额的硬币和一个总金额,计算可以凑成总金额的硬币组合数。
  • 分析: 这是一道典型的完全背包问题,考察动态规划能力。我定义了dp[i]为凑成金额i的组合数,并写出了状态转移方程。虽然一开始有些紧张,但在面试官的引导下最终完成了代码。

一面小结

一面主要考察候选人技术栈的广度和对基础知识的掌握牢固程度,问题多但通常不会无限深入。建议准备时要全面复习,对每个知识点都要有清晰的理解。

技术二面

二面在一天后进行,面试官看起来是部门的技术负责人,气场很强。这一轮不再局限于八股文,而是更侧重于对项目经验的深入挖掘、对技术原理的抽象理解以及解决复杂场景问题的能力。

项目与实习经历深挖

面试官花了大量时间在我的实习经历和项目上,问题非常细致:

  • “介绍一下你参与的那个秒杀项目,它的整体流程是怎样的?”
  • “在你的项目中,分库分表是如何实现的?基于哪个中间件(如 Sharding-JDBC)?分片键是如何选择的?”
  • “秒杀场景下如何解决超卖问题?库存一致性是如何保证的?”
  • “你负责的模块中,遇到过最有挑战性的问题是什么?你是如何分析和解决的?”
  • “你们的系统 QPS 和响应时间大概是多少?做过压力测试吗?”

这一环节不仅要求你对项目了如指掌,更要展现出你在项目中的思考和成长。

框架

  • “谈谈你对 Spring 框架的理解”,这个问题非常开放,我从 IOC 和 AOP 两个核心思想切入,阐述了它们如何解耦和简化企业级开发。
  • “Spring AOP 是如何实现的?” 我回答了基于 JDK 动态代理和 CGLIB 两种方式,并说明了它们分别针对接口和类的代理机制。面试官追问:“动态代理只能用反射吗?”
  • “Spring Boot 加载配置文件的优先级了解么?”我只提到当前项目根目录下 config/ 子目录的配置文件优先级最高,其他的有点忘了。

分布式

  • “在分布式系统中,如何生成全局唯一的 ID?”,我列举了 UUID、数据库自增、Redis 生成以及雪花算法(Snowflake)等方案,并重点分析了雪花算法的构成和优缺点。

编程语言

  • “Java 里有协程(Coroutine)这个概念吗?你了解过其他语言的协程实现吗?” 这个问题考察了技术的视野和前瞻性。
  • “除了 Java,还学习过其他语言吗?掌握程度如何?”

算法手撕

  • 题目: 合并两个有序数组,并求出中位数 (类似 LeetCode 4. 寻找两个正序数组的中位数)
  • 要求: 时间复杂度需要达到 O(log(m+n))。
  • 分析: 这道题的难点在于时间复杂度的要求,暴力合并再找中位数是无法满足的。正确解法是利用二分查找的思想,在两个数组中寻找合适的分割线。这道题对算法思维的要求比一面高出不少。

二面小结

二面是压力最大的一轮,面试官非常聪明,能迅速抓住你回答中的关键点并进行延伸。这一轮的核心是考察你的项目真实性、解决问题的能力以及技术思考的深度。单纯背诵八股文很难过关,必须有自己的理解和沉淀。

HR 沟通与总结

二面的技术部分结束后,HR 进行了简短的沟通,主要是一些常规问题:

  • 对工作地点有什么要求?
  • 对金融和证券行业有什么了解?
  • 未来的职业规划是怎样的?
  • 目前有拿到其他公司的 Offer 吗?

整个过程比较轻松,主要是为了了解候选人的稳定性和求职意向。

参考资料

下面这几篇文章基本涵盖了上面提到的绝大部分面试题的参考答案(注:这部分为 Guide 补充):

最终感想与建议

从这次面试经历来看,我总结出东方财富在招聘时比较看重以下几点:

  1. 扎实的基础: 无论是 Java、JVM、数据库还是网络,基础知识都是面试的重中之重。
  2. 深入的理解: 不仅要知其然,更要知其所以然。对框架、中间件的底层原理有深入理解会非常加分。
  3. 真实的项目经验: 项目经历是展示你解决问题能力的最佳舞台,一定要准备充分,能够清晰地阐述项目的背景、难点和你的贡献。
  4. 优秀的编码能力: 两轮技术面都有算法题,说明公司对候选人的编码基本功有明确要求。

最后,希望这篇复盘能对大家有所启发。求职之路不易,保持学习,不断沉淀,祝愿各位都能拿到心仪的 Offer!

东方财富服务端开发暑期实习面试,已拿offer!!的更多相关文章

  1. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  2. Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

    前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...

  3. 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq

    常量,字段,构造方法   常量 1.什么是常量 ​ 常量是值从不变化的符号,在编译之前值就必须确定.编译后,常量值会保存到程序集元数据中.所以,常量必须是编译器识别的基元类型的常量,如:Boolean ...

  4. 从架构师视角看是否该用Kotlin做服务端开发?

    前言 自从Oracle收购Sun之后,对Java收费或加强控制的尝试从未间断,谷歌与Oracle围绕Java API的官司也跌宕起伏.虽然Oracle只是针对Oracle JDK8的升级收费,并释放了 ...

  5. 微服务项目开发学成在线_day01_CMS服务端开发

    05-CMS需求分析-什么是CMS 什么是CMS?CMS (Content Management System)即内容管理系统,不同的项目对CMS的定位不同.CMS有哪些类型? 每个公司对每个项目的C ...

  6. 俯瞰 Java 服务端开发

    原文首发于 github ,欢迎 star . Java 服务端开发是一个非常宽广的领域,要概括其全貌,即使是几本书也讲不完,该文将会提到许多的技术及工具,但不会深入去讲解,旨在以一个俯瞰的视角去探寻 ...

  7. 在线教学、视频会议 Webus Fox(2) 服务端开发手册

    上次在<在线教学.视频会议软件 Webus Fox(1)文本.语音.视频聊天及电子白板基本用法>里介绍了软件的基本用法.本文主要介绍服务器端如何配置.开发. 1. 配置 1.1 IIS配置 ...

  8. Android 服务端开发之开发环境配置

    Android 服务端开发之开发环境配置 这里是在Eclipse的基础上安装PhpEclipse插件方法,PHPEclipse是Eclipse的 一个用于开发PHP的插件.当然也可以采用Java开发a ...

  9. Swift3.0服务端开发(三) Mustache页面模板与日志记录

    本篇博客主要介绍如果在Perfect工程中引入和使用Mustache页面模板与日志记录系统.Mustache页面模板类似于PHP中的smarty模板引擎或者Java中的JSTL标签.当然Mustach ...

  10. 如何有效快速提高Java服务端开发人员的技术水平?

    我相信很多工作了3-5年的开发人员都会经常问自己几个问题: 1.为什么总是感觉技术没有质的提高? 2.如何能够有效和快速的提高自身的技术水平? 3.如何进入到一个牛逼的大公司,认识牛逼的人? 这篇文章 ...

随机推荐

  1. [每日算法 - 华为机试] leetcode463. 岛屿的周长

    入口 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer.https://le ...

  2. APT32 RTC+低功耗调试笔记

    1.项目需求    采用APT32F1023单片机,内部27K时钟驱动RTC,内部6M定时器作为主频.周期检测外部供电是否恢复,如果恢复则使用正常工作模式,否则仅开启RTC,关闭其他外设,进入低功耗待 ...

  3. 端口telnet不通排查过程

    现状 简单描述下最近在做啥,我手里维护的一些系统的线上服务器,还在使用centos7,7.3/7.6/7.9都有,运维侧选定的替换系统是openEuler20.03-LTS-SP1.按理说,运维直接在 ...

  4. rabbitmq的消息的有顺序性

    一.rabbitmq:拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点:或者就一个queue但是对应一个consumer,然后这个consumer内部用内 ...

  5. 使用JSR303进行校验

    4.JSR303 1).给Bean添加校验注解:javax.validation.constraints,并定义自己的message提示 2).开启校验功能@Valid 效果:校验错误以后会有默认的响 ...

  6. Eclipse 中 JAVA AWT相关包不提示问题(解决)

    原因: 由于在2021年7月15日 OpenJDK管理委员会全票通过批准成立由Phil Race担任初始负责人的 Client Libraries Group(客户端类库工作组). 新的工作组将继续赞 ...

  7. elemengui分页

    <!-- 分页模块 --> <template> <div class="block" style="margin-top:20px&quo ...

  8. python爬虫,beatifulsop获取标签属性值(取值)案例

    前面的案例里,均采用正则匹配的方式取值 title = re.findall('">(.*?)</a>', i, re.S)[0]#标题 url = re.findall( ...

  9. 创建第一个属于自己的JavaWeb小程序吧

    需要使用的 技术 工具: idea 2022  开发工具 MySql 5.6  数据库工具 Apache Tomcat 8.5.85   web应用部署工具 主要功能有: 用户登录 用户注册 展示列表 ...

  10. Go工程选择开源分库分表中间件可用性测试

    近期在寻找Go工程可以用的开源分库分表中间件,找了3个:ShardingSphere-Proxy,Kingshard,Gaea,下面给出测试过程和对比结果 ShardingSphere-Proxy h ...