面试总体概述
案例背景
本条目依据招银网络科技(招商银行全资子公司、总行级软件中心)运维研发工程师岗位的面试备考资料整理,完整流程为网申 → 在线测评(笔试)→ 技术一面 → 技术二面 → HR 面 → 资料审核 → 录用签约。技术一面近年明显偏向「在线看代码/补代码」,推荐无代码提示环境下手写 Java;技术二面是整个环节最关键的一环,面试官多为部门主管,会拷问式深挖项目并考察「你怎么理解运维」;HR 面表现稳定通过概率较高。
基本信息
- 公司:招银网络科技(深圳)有限公司
- 岗位:运维研发工程师
- 招聘类型:校招
- 用工形式 / 部门:直招
- 工作地点:深圳 · 杭州 · 成都
- 面试形式:线上 + 线下
- 面试轮次:5 轮
- 平均时长:10 分钟
- 题目数量:共 48 题,均附参考答案
- 整体难度:★★★★☆ 偏难
- 是否参加笔试:是
- 笔试形式:计算机专业基础知识选择题 + 约 2 道编程题(投递后约 1 周)
- 题型构成:Java 语法 / JVM / 集合 + 计算机网络(TCP/IP、HTTP) + 操作系统(进程线程、死锁) + 数据库(SQL、索引、事务) + 编程题约 2 道(数组、字符串、模拟、排序、简单动态规划)
面试轮次与结构
| # | 轮次 | 类型 | 时间 | 时长 |
| --- | --- | --- | --- | --- |
| 1 | 技术一面 · 手撕代码真题 | 技术面 | 未注明 | 10–30 分钟 |
| 2 | 技术一面 · 常见手写算法与拓展题 | 技术面 | 未注明 | 未注明 |
| 3 | 技术一面 · 高频八股考点 | 技术面 | 未注明 | 未注明 |
| 4 | 技术二面 · 项目深挖与运维认知 | 技术面 | 未注明 | 未注明 |
| 5 | HR 面 | HR 面 | 未注明 | 未注明 |
高频考点
| 考点 | 分类 | 出现轮次 | 次数 |
| --- | --- | --- | --- |
| 手撕代码与在线补代码能力 | 技术基础 · 编码 | 技术一面 · 手撕代码真题、技术一面 · 常见手写算法与拓展题 | 13 |
| Java 语言细节(接口/内部类/并发) | 技术八股 · Java | 技术一面 · 手撕代码真题、技术一面 · 常见手写算法与拓展题 | 7 |
| 云原生与容器(Docker / K8s) | 技术八股 · 云原生 | 技术一面 · 高频八股考点 | 2 |
| 智能运维:日志、监控、排障 | 岗位核心 · 运维 | 技术一面 · 高频八股考点 | 3 |
| 网络与操作系统基础 | 技术八股 · 计网/OS | 技术一面 · 高频八股考点 | 3 |
| MySQL 事务、索引与慢查询 | 技术八股 · 数据库 | 技术一面 · 高频八股考点 | 3 |
| 分布式架构与一致性 | 技术八股 · 分布式 | 技术一面 · 高频八股考点 | 2 |
| 项目深挖与运维岗位认知 | 综合面 · 项目深挖 | 技术二面 · 项目深挖与运维认知 | 10 |
| 求职动机、稳定性与薪资预期 | HR 面 · 综合素养 | HR 面 | 6 |
备考建议
| 优先级 | 易失分点 | 准备动作 |
| --- | --- | --- |
| P0 | 在 IDE 提示下练代码,现场写不出来 | 务必提前在无代码提示环境(牛客在线代码区)手写 Java,把 Task/TaskManager、Cache 接口找错、join、内部类编译产物这几类找错题过一遍 |
| P0 | 项目被深挖到答不上 | 二面前把项目的架构图、核心技术点、改进点、使用场景、团队分工与争执全部吃透,每个点都能讲清「为什么难、我怎么解决」 |
| P0 | 答不出「你怎么理解运维」 | 用软件工程方法解决运维问题:运维平台/工具链 + 智能化;岗位构成可按研发 50% + 系统工程 30% + 业务保障 20% 来讲 |
| P1 | 笔试选择题失分 | 用 2–3 天快速过一遍计算机基础四门课的核心考点,概念准确到细节,比如各层协议与端口号 |
| P1 | 否认候选人值守轮换意愿 | 提前想清楚对值守轮换(约两三周轮一次到晚上 8–9 点)的真实接受度,如实表达并说明对轮值制度的理解 |
| P2 | 城市选择答得太随意 | 结合家庭因素与长期发展说明为什么选择深圳/杭州/成都,忌讳回答「哪里都行」 |
| P2 | 期望薪资答不上或乱报 | 按城市给一个合理区间(参考 15K–25K/月区间),并说明判断依据,避免完全不了解行情 |
第 1 轮:技术一面 · 手撕代码真题
面试形式与时长
- 轮次名称:技术一面 · 手撕代码真题
- 面试类型:技术面
- 时长:10–30 分钟
- 形式:线上
- 本轮题量:7 题
重点考查维度
- 手撕代码 —— 本组 4 道题
- 技术八股 —— 本组 3 道题
形式为牛客网视频面试 + 在线共享代码区,面试官直接敲代码让候选人补全/找错/手写。题量不大但偏实践,不考纯背诵,而是给出一段代码现场分析。有同学反馈「和网上面经不一样,完全在敲代码」。
考察基本编码习惯与封装意识;考察 JDK 8/9 接口语法细节是否记牢;考察并发基础是否理解到状态层面。
面试真题与参考答案
Q1 真题一:给定 Task 类与 TaskManager 类,补充 addTask 方法和返回 task 列表的方法。
- 手撕代码 · Java 基础
- 提问形式:编码题
- 考察重点:考察基本编码习惯与封装意识
参考答案
参考实现:
class TaskManager {
private List<Task> tasks = new ArrayList<>();
public void addTask(Task task) {
tasks.add(task);
}
public List<Task> getTasks() {
// 注意:返回副本,防止外部修改内部状态
return new ArrayList<>(tasks);
}
}
考点:封装性、List 操作、防御性拷贝。
追问方向
- 线程安全:可换用 CopyOnWriteArrayList 或加锁
- 去重:按 id 重写 equals/hashCode 后用 Map 存储
追问链(2 条)
- 线程安全怎么处理?如何按 id 去重?
- 集合防御性拷贝
Q2 真题二:Cache 接口找错——面试官写了一个含 default 方法、private 方法、无修饰方法、内部类和 static 工厂方法的 Cache 接口,请指出代码中的错误。
- 手撕代码 · Java 基础
- 提问形式:找错题
- 考察重点:考察 JDK 8/9 接口语法细节是否记牢
参考答案
参考答案要点:
- 接口中的普通方法默认是 public abstract,不能有方法体——这是最主要的一处错误
- JDK 8 起接口允许 default(必须有方法体)和 static(必须有方法体)方法
- JDK 9 起允许 private / private static 方法(必须有方法体)
- static 方法属于接口本身,不能被实现类重写,只能通过接口名调用;default 方法可以被实现类重写
- 接口里可以定义内部类(默认 public static),也可以定义常量(默认 public static final)
- MemoryCache 必须是 Cache 的实现类,否则编译报错
接口规则 JDK 版本差异
Q3 真题三:调用线程 t.join() 之后会发生什么?
- 技术八股 · 并发
- 考察重点:考察并发基础是否理解到状态层面
参考答案
- t.join() 的作用:让当前执行线程(调用者)暂停执行,等待线程 t 执行完毕(进入 TERMINATED)后才继续
- 本质上调用的是 wait(),当前线程会释放锁并进入 WAITING 状态;t 运行结束后由 JVM 调用 notifyAll() 唤醒
- join() 可传入毫秒参数(join(long millis)),表示最多等待时间
- 易错点:join() 只会让调用它的线程等待,不影响其他线程;join 不会终止 t 线程
线程通信 WAITING
Q4 真题四:一个外部类 Outer 中含一个静态内部类 Inner,编译后生成几个 class 文件?文件名分别是什么?
- 技术八股 · Java 基础
- 考察重点:考察对语言实现细节的了解
参考答案
- 生成 2 个 class 文件:Outer.class 和 Outer$Inner.class
- 规律:成员内部类 / 静态内部类 / 局部内部类都会产生独立的 class 文件,命名规则为「外部类名$内部类名.class」
- 匿名内部类也产生 class 文件,命名为 Outer$1.class、Outer$2.class……按出现顺序编号
- 补充:静态内部类不持有外部类引用,可以定义 static 成员;非静态内部类必须通过 Outer.new Inner() 实例化
内部类编译产物
Q5 真题五:讲一讲线程池与定时任务线程池,包括七大核心参数与执行流程。
- 技术八股 · 并发
- 考察重点:考察并发编程的实战理解深度
参考答案
- 常用线程池:推荐 ThreadPoolExecutor 手动创建(阿里规约禁止使用 Executors 默认工厂,因为 newFixedThreadPool / newSingleThreadExecutor 的队列无界可能导致 OOM,newCachedThreadPool 最大线程数为 Integer.MAX_VALUE 可能耗尽资源)
- 定时任务线程池:ScheduledThreadPoolExecutor(核心线程数固定、队列无界、支持 schedule / scheduleAtFixedRate / scheduleWithFixedDelay)
- 七大核心参数:corePoolSize(核心线程数)、maximumPoolSize(最大线程数)、keepAliveTime(空闲线程存活时间)、unit(时间单位)、workQueue(任务队列:ArrayBlockingQueue / LinkedBlockingQueue / SynchronousQueue / DelayedWorkQueue)、threadFactory(线程工厂)、handler(拒绝策略:AbortPolicy 抛异常、CallerRunsPolicy 调用者执行、DiscardPolicy 静默丢弃、DiscardOldestPolicy 丢弃最老任务)
- 执行流程:提交任务 → 核心线程未满则直接创建线程执行 → 否则入队 → 队列满且线程数小于最大值则创建非核心线程 → 达到最大则触发拒绝策略
线程池拒绝策略
Q6 真题六:写出分页查询 SQL,并说明深分页怎么优化
手撕代码 · SQL
提问形式:编码题
考察重点:考察 SQL 基本功与性能优化意识
参考答案
MySQL 语法(偏移量 + 行数):
SELECT * FROM task ORDER BY id LIMIT (pageNum - 1) * pageSize, pageSize;
深分页优化方式之一(书签式分页):
SELECT * FROM task WHERE id > (SELECT id FROM task ORDER BY id LIMIT 1000000, 1) LIMIT 20;
考点:LIMIT offset, count 两个参数的含义与顺序;ORDER BY 保证分页结果稳定。
可追问深分页(大 offset)性能问题与优化:延迟关联、游标/书签式分页。
追问链(1 条)
- 深分页的性能问题怎么解决?
分页深分页优化
Q7 真题七:配置类里定义了两个 RedisTemplate Bean,Service 中如何注入指定的那个?@Autowired 与 @Resource 的区别是什么?
手撕代码 · Spring
提问形式:编码题
考察重点:考察 Spring 常用注解的细节与实际排障能力
参考答案
@Service
public class TaskService {
// 方式一:按类型注入 + 按名称限定
@Autowired
@Qualifier("redisTemplate1")
private RedisTemplate redisTemplate1;
// 方式二:按名称注入(@Resource 默认 byName)
@Resource(name = "redisTemplate2")
private RedisTemplate redisTemplate2;
}
- @Autowired 默认按类型(byType)注入,同类型多个 Bean 时会报 NoUniqueBeanDefinitionException,需配合 @Qualifier 指定名称,或用 @Primary 标注默认 Bean
- @Resource 默认按名称(byName)注入,名称匹配不到再按类型,属于 JSR-250 规范,是 JDK 注解而非 Spring 注解
- RedisTemplate 在 Spring Boot 自动配置中默认 Bean 名为 redisTemplate(StringRedisTemplate 处理 String 类型)
依赖注入 Spring
三、第 2 轮:技术一面 · 常见手写算法与拓展题
3. 1 面试形式与时长
| 项目 | 内容 |
| --- | --- |
| 轮次名称 | 技术一面 · 常见手写算法与拓展题 |
| 面试类型 | 技术面 |
| 形式 | 线上 |
| 本轮题量 | 6 题 |
3. 2 重点考查维度
- 手撕代码 —— 本组 4 道题
- 技术八股 —— 本组 2 道题
以下题目来自各年面经汇总,覆盖递归边界、排序、设计模式、数据结构对比等,答题时务必说明时间复杂度并主动交代边界条件。
考察边界意识与基本编码能力;考察排序基本功与复杂度分析;考察设计模式与并发细节
3. 3 面试真题与参考答案
Q1 求 1~20 的阶乘之和(注意溢出)
手撕代码 · 算法
提问形式:编码题
考察重点:考察边界意识与基本编码能力
参考答案
要点:
- 用 long 存累加结果,20 的阶乘约为 2.43e18,接近 long 上限(9.22e18),更安全的选择是 BigInteger
- 边界条件:0 的阶乘等于 1,递归边界写 factorial(0) = 1
- 时间复杂度 O(n),可以在一次循环中同时维护当前阶乘值与累加和,避免重复计算
long fact = 1, sum = 0;
for (int i = 1; i
钻技术而不关心业务落地
参考答案
提前准备项目所在行业的三个维度:技术路线、商业化进展、主要玩家。
回答模板:
- 行业现状与主流技术路线(有哪些流派、各自的优劣)
- 商业化到什么阶段(谁在赚钱、靠什么赚钱)
- 头部玩家有哪些、各自的特点
例如是自动驾驶方向,就要能说清技术路线差异、商业化落地进展与主要玩家。
如果实在不了解,坦诚说明并讲自己的调研方法,比硬编更稳。
行业认知
Q11 你期望的薪资是多少?
自我认知 · 薪资预期
考察重点:考察薪资预期是否合理、是否有判断依据
参考答案
参考区间 15K–25K / 月,结合城市说一个合理数字。
回答要点:
- 先说区间并说明判断依据(城市生活成本、岗位市场行情、个人能力匹配度)
- 表达对平台和成长空间的看重:「在不明显低于市场水平的前提下,我更看重平台的技术纵深和长期成长」
- 不要给一个完全脱离行情的数字,也不要回答「按公司标准来」显得没做功课
面经给出的参考区间随年份和城市会有变化,实际作答请以当年行情为准。
薪资谈判
Q12 自我评价:请用三个词概括自己,每个词配一个事例。
自我认知 · 概括表达
考察重点:考察概括能力与事例支撑
参考答案
建议选与岗位相关的三个词,并为每个词配一个 STAR 小例子:
- 靠谱(例如:实习期间负责的模块按期交付,没有出现返工)
- 主动(例如:发现循环日志会打满磁盘,主动加了 logrotate 与告警)
- 学习能力强(例如:两周内从未接触过的容器技术做到独立部署上线)
避雷:不要用完全同质化的形容词堆叠,也不要把缺点包装成优点。
自我评价
备考提示
备考阶段,我发现很多同学容易陷入「不知道从哪准备」的困境。机会永远留给有准备的人,希望读到这篇文章的每一位同学都能拿到心仪的 offer。
以上内容整理自学员和应届同学反馈的真实面经,结合招银网络科技(深圳)有限公司的最新考情整理,仅供参考学习。祝各位求职者顺利拿到心仪 offer!