如何成功从华为云计算岗位转型到银行科技岗位:面试经验和行业见解分享

最近我参与了许多候选人的面试,收获颇丰,特此分享一些经验与见解。

今年,我们团队在西安的招聘需求较大。作为招聘组长,我对候选人进行了多轮筛选。西安是一座人才济济的城市,拥有众多985、211高校,如西安交通大学、长安大学、西北工业大学等,因此大部分候选人的学历背景都相当优越。然而,与北京、上海和杭州等互联网氛围浓厚的城市相比,西安的科技氛围相对薄弱。

目前,我收到的简历主要涉及以下几类候选人:

  1. 银行科技公司的员工或外包人员;
  2. 来自华为西安研究所、腾讯云等大型企业,有云计算、大数据和DevOps背景的候选人,许多人具备管理经验;
  3. 互联网公司的外包岗位候选人;
  4. 其他较不知名公司的求职者。

最近,华为某部门宣布将迁离西安,这使得该部门的团队面临迁移至其他城市的窘境。对于已经成家的员工来说,这是一个巨大的挑战,他们只能选择辞职,因而我也收到了不少相关候选人的简历。

以下是我摘录的部分候选人简历内容:

使用技术:Spark、Hadoop、Clickhouse、Kubernetes等。工作职责:

  1. 主导大数据架构设计及技术选型;
  2. 为数据流处理提供优化方案;
  3. 推动新方案的设计与实施;
  4. 团队管理。

擅长技能:

  1. 熟悉C++、Java、Linux相关技术栈;
  2. 熟悉Spring、Spring Boot、Spring Cloud等框架;
  3. 掌握Kafka、Flink、Spark等大数据相关技术;
  4. 熟悉代码管理工具,如Maven、Git等;
  5. 具备良好的团队管理能力和经验。

自我评价:编程能力强,热爱技术,待人真诚,抗压能力突出,团队管理能力良好。

从简历上看,候选人整体表现优秀,拥有良好的学历背景、大型企业的工作经验、团队管理经历以及丰富的项目经验。然而,在沟通过程中,我发现整个交流并不顺畅。

:请简单介绍一下自己的情况。

候选人:我在XX年毕业,之后经历了几家公司……从XX年开始在XX研究所从事云计算和大数据相关工作,参与了XX项目。

:请详细介绍一个您主导或参与较多的项目,包括项目中使用的技术栈、服务在业务流程中的作用,以及服务间的调用方式。

候选人:这个服务主要包括四个子服务,服务间通过HttpClient进行通信……

通过这样的自我介绍和项目背景介绍,我通常会打下基础,因为候选人所提及的项目我并不熟悉,听得模糊,便假装理解。

:请问你们微服务是如何划分的,具体有哪些服务?服务间是如何通信的?

候选人:我们的服务部署在云上……

再次感到似懂非懂,作为面试官真是困难,不如直接问一些技术问题。

:我问你几个技术问题吧。给定一个长度为n的数组nums,包含[0, n]中的n个数,且数组无重复,找出这个范围内缺失的那个数。(类似LeetCode题268,简化版)

图片

候选人:可以新建一个长度为n+1的数组,存储[0, n+1]的数,然后循环查找原数组中的每个元素。

我追问:这个时间复杂度太高了,O(n²),而且需要额外的空间,有没有更好的方法?

候选人:让我想想,(大约过了一分钟),不依赖外部数组,通过遍历原数组,用数组下标加1与当前下标的元素值对比,不相等时结束循环,最坏情况下的时间复杂度是O(n)。

我追问:还有更优的方法吗?

候选人:我再想想,(大约过了30秒)想不出来了。

我再次失望,其实我期待得到的答案是用递归实现的二分查找。

:Java中的TreeMap和LinkedHashMap有什么区别?

候选人:TreeMap是有序的,LinkedHashMap我记不太清了。

此时我想考核候选人的编码能力,长期不编码的人容易遗忘。

:Java有哪些锁?能讲一下吗?

候选人:我们常用的是synchronized。

:你使用过Java AQS中的锁吗?候选人:好像有个可重入的,但记不太清了。

到这里,我感觉候选人主要是在做管理,已经很少参与开发。

:使用Spring做依赖注入时,@Resource和@Autowired有什么区别?候选人:@Autowired是按类型注入,@Resource是按名字注入。

我追问:这两者一般适合什么场景?

候选人:我们一般使用@Autowired比较多,@Resource用得较少。

:(考虑到候选人背景是云计算)请问K8s中的Deployment和StatefulSet有什么区别?(这个问题其实是为了缓解面试尴尬

候选人:StatefulSet用于有状态的应用……

最后我询问:请问你离职的原因是什么?

候选人:相比银行,华为的稳定性较差。为了降低成本,我们部门要撤掉,整体迁移到XX和YY两个城市,我家在西安,不太想搬。

最终,我并没有通过这个候选人,原因如下:

  1. 我招聘的岗位需要具备丰富的经验,能够在入职后带团队;
  2. 带团队不仅仅是管理,还需要作为技术经理冲在一线,具备良好的技术能力和行业背景;
  3. 团队对每位成员都要求有代码考核,不允许存在不编码的同事;
  4. 作为招聘者,我希望能找到一个基础扎实的人,能对团队有良好的指导。

最后,分享几点个人看法:

  1. 技术可以放弃,但需满足几个前提条件:
    • 现有工作稳定,不会被淘汰;
    • 即使被淘汰,也有广泛的人脉资源,能迅速找到下家管理岗位;
    • 不用担心经济问题,已实现财富自由或可选择创业。
  2. 面试中如果只是泛泛而谈,不如直接说自己不会或者记不清;
  3. 社会对大龄程序员的要求越来越高,技术与业务能力都很重要,高级职位多数要求懂管理;
  4. 除非迫不得已,不要轻易换行业,特别是AI、ChatGPT等热门领域。换行业意味着之前的积累可能会丧失;
  5. 今年机会较为稀缺,面试前需做好充分准备,不要参与没有准备的竞争。