工商银行杭州软开校招面经分享

0 阅读9分钟

近年来,央国企成为了很多求职者的首选,无论是校招还是社招。不过,在选择央国企的时候,还是尽量要选择垄断性或者盈利多的。

昨天看到一份 2024 年中国企业 500 强榜单中提到的最赚钱的十家央国企的名单,给大家分享一下。

排名企业名称成立时间主要业务描述2024年营收(万亿人民币)
1国家电网2002年电网的投资、建设与运营,覆盖我国大部分地区3.86
2中国石油化工集团1983年国内最大的成品油和石化产品供应商,世界第一大炼油公司3.04
3中国石油天然气集团1990年我国重要的油气生产商和供应商2.985
4中国建筑集团1982年世界上最大的工程承包商之一2.26
5中国工商银行1984年已转型成为世界最大的商业银行1.61
6中国建设银行1954年大型商业银行1.41
7中国农业银行1951年早期专注于农村金融服务,现为商业银行1.36
8中国铁路工程集团(中国中铁)1950年代基础设施建设领域的重要角色1.26
9中国银行1912年从民国时期的中央银行到现在的商业银行1.22
10中国铁道建筑集团(中国铁建)铁道兵时期涵盖多个领域的特大型建筑企业1.14

说实话,国企的面试难度还是普遍非常简单的,关键是能够是否能够获取到面试机会和进入面试!

接下来,分享一篇工行软开杭州面经,大家感受一下,问的问题都挺简单基础的。

自我介绍

面试时的自我介绍,其实是你给面试官的“第一印象浓缩版”。它不需要面面俱到,但要精准、自信地展现你的核心价值和与岗位的匹配度。通常控制在 1-2 分钟内比较合适。一个好的自我介绍应该包含这几点要素:

  1. 用简单的话说清楚自己主要的技术栈于擅长的领域,例如 Java 后端开发、分布式系统开发;
  2. 把重点放在自己的优势上,重点突出自己的能力,最好能用一个简短的例子支撑,例如:我比较擅长定位和解决复杂问题。在[某项目/实习]中,我曾通过[简述方法,如日志分析、源码追踪、压力测试]成功解决了[某个具体问题,如一个棘手的性能瓶颈/一个偶现的 Bug],将[某个指标]提升了[百分比/具体数值]。
  3. 简要提及 1-2 个最能体现你能力和与岗位要求匹配的项目经历、实习经历或竞赛成绩。不需要展开细节,目的是引出面试官后续的提问。
  4. 如果时间允许,可以非常简短地表达对所申请岗位的兴趣和对公司的向往,表明你是有备而来。

实习期间的贡献

如果你有实习经历的话,自我介绍之后,第二个问题一般就是聊你的实习经历。面试之前,一定要提前准备好对应的话术,突出介绍自己实习期间的贡献。

很多同学实习期间可能接触不到什么实际的开发任务,大部分时间可能都是在熟悉和维护项目。对于这种情况,你可以适当润色这段实习经历,找一些简单的功能研究透,包装成自己参与做的,大部分同学都是这么做的。不用担心面试的时候会露馅,只要不挑选那种明显不会交给实习生做的任务,你自己也能讲明白就行了。不过,还是更建议你在实习期间尽量尝试主动去承担一些开发任务,这样整个实习经历对个人提升也会更大一些。

示例:

  1. 负责订单模块核心流程开发,实现订单状态的精确流转,并保障与库存、支付等模块的数据一致性。
  2. 负责行为风控黑名单看板的开发,支持查看拉黑用户、批量拉黑以及取消拉黑。
  3. 基于 Redisson + AOP 封装限流组件,实现对核心接口(如付费、课程搜索)的限流,有效防止恶意请求冲击。

Java 和 C++ 有什么区别

虽然,Java 和 C++ 都是面向对象的语言,都支持封装、继承和多态,但是,它们还是有挺多不相同的地方:

  • Java 不提供指针来直接访问内存,程序内存更加安全
  • Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
  • Java 有自动内存管理垃圾回收机制(GC),不需要程序员手动释放无用内存。
  • C ++同时支持方法重载和操作符重载,但是 Java 只支持方法重载(操作符重载增加了复杂性,这与 Java 最初的设计思想不符)。
  • ……

方法重载和重写区别

区别点重载 (Overloading)重写 (Overriding)
发生范围同一个类中。父类与子类之间(存在继承关系)。
方法签名方法名必须相同,但参数列表必须不同(参数的类型、个数或顺序至少有一项不同)。方法名、参数列表必须完全相同
返回类型与返回值类型无关,可以任意修改。子类方法的返回类型必须与父类方法的返回类型相同,或者是其子类
**访问修饰符 **与访问修饰符无关,可以任意修改。子类方法的访问权限不能低于父类方法的访问权限。(public > protected > default > private)
绑定时期编译时绑定或称静态绑定运行时绑定 (Run-time Binding) 或称动态绑定

更多 Java 基础相关的面试题可参考这几篇文章:

进程和线程的区别

下图是 Java 内存区域,我们从 JVM 的角度来说一下线程和进程之间的关系吧!

Java 运行时数据区域(JDK1.8 之后)

从上图可以看出:一个进程中可以有多个线程,多个线程共享进程的方法区 (JDK1.8 之后的元空间)资源,但是每个线程有自己的程序计数器虚拟机栈本地方法栈

总结:

  • 线程是进程划分成的更小的运行单位,一个进程在其执行的过程中可以产生多个线程。
  • 线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。
  • 线程执行开销小,但不利于资源的管理和保护;而进程正相反。

线程的状态

Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的其中一个状态:

  • NEW: 初始状态,线程被创建出来但没有被调用 start()
  • RUNNABLE: 运行状态,线程被调用了 start()等待运行的状态。
  • BLOCKED:阻塞状态,需要等待锁释放。
  • WAITING:等待状态,表示该线程需要等待其他线程做出一些特定动作(通知或中断)。
  • TIME_WAITING:超时等待状态,可以在指定的时间后自行返回而不是像 WAITING 那样一直等待。
  • TERMINATED:终止状态,表示该线程已经运行完毕。

线程在生命周期中并不是固定处于某一个状态而是随着代码的执行在不同状态之间切换。

Java 线程状态变迁图(图源:挑错 |《Java 并发编程的艺术》中关于线程状态的三处错误):

Java 线程状态变迁图

由上图可以看出:线程创建之后它将处于 NEW(新建) 状态,调用 start() 方法后开始运行,线程这时候处于 READY(可运行) 状态。可运行状态的线程获得了 CPU 时间片(timeslice)后就处于 RUNNING(运行) 状态。

更多 Java 并发相关的面试题可参考这几篇文章:

Linux 如何查看占用内存最高的程序

在 Linux 系统中,有几个命令可以查看占用内存最高的程序:

  • top [选项]:用于实时查看系统的 CPU 使用率、内存使用率、进程信息等。
  • htop [选项]:类似于 top,但提供了更加交互式和友好的界面,可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。
  • ps [选项]:用于查看系统中的进程信息,包括进程的 ID、状态、资源使用情况等。ps -ef/ps -aux:这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同。如果想要查看特定的进程可以使用这样的格式:ps aux|grep redis (查看包括 redis 字符串的进程),也可使用 pgrep redis -a

Linux 如何搜索文件

grep 是 Linux/Unix 系统中一个非常强大且常用的文本搜索命令,它可以根据指定的字符串或正则表达式,在文件或命令输出中进行匹配查找,适用于日志分析、文本过滤、快速定位等多种场景。

基本语法:

grep [选项] "搜索内容" 文件路径

示例:

# 忽略大小写搜索 syslog 中所有包含 error 的行
grep -i "error" /var/log/syslog
# 在当前目录及其子目录下所有文件中搜索 password
grep -r "password" .
# 查找所有与 java 相关的进程
ps -ef | grep "java"

常见选项:

选项说明
-i忽略大小写
-v反向匹配,只显示不包含匹配项的行
-n显示匹配行的行号
-c统计匹配到的行数
-l只显示匹配的文件名
-r递归搜索目录中的文件

推荐阅读:Linux 基础知识总结