汇丰银行外包面经
结果:已通过
面试岗位:Java开发岗 (初级)
面试形式:一轮线上面试,Zoom,需要摄像头,可能会要求屏幕共享
面试时间:1h24min
面试前的准备
在面试前TEKSystem那边的HR会简单跟你介绍一下整个面试的流程
主要有以下几个方面
1. 关于面试部门的一个简要介绍
因为在汇丰内部会有很多很多的业务线和部门,不同的业务部门所负责的开发内容会有差别,而且对于不同职级的要求也不一样,关于这一点可以直接询问和你对接的HR即可。
举例来说我的这个项目组更多的是偏向底层高并发多线程的接口开发,因此我的面试内容会大量的偏向锁,多线程,Stream流和数据结构等问题展开。
我同事面试的内容就会相对发散一些 (职位比我高),不仅问了Java的基础还包括了部分运维的内容以及其他开发语言 (Python)
2. HR收集到的过往面试者的一些反馈
因为HR手上对接的肯定不止一个人,所以面试前HR也会把过往一些面试者面试完的反馈提供给你,比如面试的时间,面试使用的语言,面试的内容等等。
其实最主要的就是面试的内容,这种感觉就像是考试前老师在给你划重点一样,详细的面试内容我会放在文章的最后。
关于其他人的面经这一块,好像很多外包都会提供,毕竟外包也希望你能通过面试这样他才能算有效业绩吧~
3. 面试的具体流程
- 面试是远程的,要开摄像头,用的是Zoom。虽然理论上手机也能使用Zoom,但是考虑到可能需要远程做题,所以建议还是使用电脑会保险一些。
- 一般来说面试的时长会控制在半个小时到一个小时内,我的一个半小时纯属意外,像我的同事就是卡点半小时准时结束的。
- 自我介绍+项目介绍,这一部分的英文是肯定跑不了的,但好在这些内容是死的,就像我上一篇文章中讲到的,用GPT翻译好然后对着镜子背熟即可。
- 关于技术面试部分就是各位彦祖们展现实力的时刻啦,八股文全都给我背起来~
- 面试结束前,循例面试官会问你有没有想要问的问题,HR的建议就是问一下部门的信息呀,入职后的主要工作内容等就差不多啦。
关于面试时语言的补充
在面试前,HR跟我说尽你所能大胆说就好,之前面试的人在聊技术的时候大部分都已经换成普通话了…
我真信了这鬼话QAQ
我面试的时候自我介绍完开始聊技术,全程都是英语,就我这半桶水的英文,有几个问题听都听不懂
好在两个面试官都很有耐心,在发现我对问题的理解上有困难,会放慢语速尝试解释给我听,我也真的把我这辈子学过的单词能用上的都用上了
然后转折点来了,在回答一个问题的时候,我想说哈希冲突,但是 “冲突” 两个字的英文我是真不知道了…没办法只好说了普通话。
面试官看我确实不太行了,他也开始用普通话,但是他的说的是标准的港普 (香港人说普通话),听完他讲普通话给我的感觉就是:要他讲普通话,跟要我讲英语一样的难受。
好在我会粤语,我就试探性的跟他说 “If you dont mind, We can use Cantonese”,然后我们就切换了粤语模式完成了剩下的面试了哈哈哈哈~
关于我面试的具体细节
其实我的个人习惯面试都会录音,但是鉴于这场面试的情况比较复杂,用了三种语言,且一半的时间都是在现场做题,所以我只能大概回忆一些面试中问到的知识点
- 垃圾回收相关的内容,描述垃圾回收的过程 (英语)。
- Collection集合都有哪些有什么区别数据结构是什么样子的 (英语)。
- HashMap和HashTable的区别,引申到了线程安全的问题 (英语)。
- 现场做题:提供一段代码,分析这段代码,你觉得有没有问题,如果有问题哪里有问题怎么解决。我的这段代码是单例模式的双重检查锁,问的很细,要说明每一个if的作用,并且假设去掉一个if代码成不成立等 (粤语)。
- 现场做题:也是提供一段代码并进行分析,我分析到会有死锁的问题,然后被问到如何解决死锁,针对这段代码要如何解决。这里引申了很多锁和线程的内容,代码中用的是synchronize,我补充了可以使用Lock,并分析了Lock和synchronize的区别等 (粤语)。
- 现场做题:关于响应式编程+线程的组合题,需要我本地开IDEA然后解决问题,大概就是一个Consumer和一个Supplier的类,分别创建一个线程,然后如何保证线程安全的问题 (粤语)。
由于我做题的速度很慢 (这也是我面试时间比别人长的原因之一吧),而且基本都是靠被八股文的
所以一旦要现场做题就懵逼了,面试官也看出来这一点
然后语重心长的和我说: “以后不要只会背书,这样还是解决不了问题的”。
我赶忙点头: “猴猴猴,我知啦”。
后来我同事就说这个面试官肯定对你的眼缘不错,不然不会跟你聊这么久的,说他们去面试别人的时候,如果没有兴趣,早就结束了~我也是很无奈啊,合不合他眼缘我不知道,但是我面试完之后脚都软了…
个人感觉
其实这次的面试经历没什么普适性,因为过于偏向某一个方面了,像我之前准备的微服务的内容什么SpringBoot,SpringCloud,数据库,MQ和Redis这些面试高频会被问到的内容都没有问到,所以仅供参考啦~
HR提供的过往面试题
PS:答案我就不献丑了哈哈哈,相信这些问题对各位来说那都是基础中的基础了~
Java基础
- 聊一聊反射机制
- 抽象与接口的区别
- final、finally、finalize分别是什么
- JDK1.8新特性,Lambda表达式
- 集合的处理
- 多线程中Future的使用
- ConcurrentHashMap和HashMap
- Lock和Synchronized的比较
- 一个类在多线程下怎么保证只能被一个线程调用一次
- 假设有个A线程,现在有B线程到A锁住的地方,如果让B等一段时间自动放弃我要怎么写
- 线程池相关
- I/O相关 (BIO, NIO. AIO的区别及应用场景)
Redis
- Redis的理解 (简要概述)
- Redis分布式锁
- Redis SETNX原理
微服务
- 微服务之间互相调用场景及实现
- 项目怎么部署的,自动化部署用了啥
- JUNIT常用功能
- JWT
- Spring IOC、AOP如何理解
- 讲一下spring aop,还有spring aop 的注解
- 讲一下spring里的profile
- 怎么在运行时拿到active profile
- Spring里用到什么设计模式,工作中用到什么设计模式
- SpringBoot 做了什么功能,如何实现业务
- SpringBoot为什么会熔断,怎么处理的
- SpringBoot有哪些组件
- SpringBoot的自动装配
- 什么是SPI
- Java Bean 和 Spring Bean有什么区别
- SpringCloud 负载均衡(Zookeeper、Nacos)
JVM
- 内存结构
- 类加载的过程
- 垃圾回收算法
- 垃圾收集器
- JVM调优
一些开放性的题目
- 如何学习
- 比较tricky的问题,如何解决的
关于技术点的问题补充
如果时间允许的话,可以简单补充一下这些问题的英文关键字,会对你的面试有一定的帮助,因为毕竟汇丰是一个外企,英语是工作语言,因此在你不能表达完整的句子时,一些技术上的 key words 的使用也是一个加分项~
写在最后
这次的面经分享就这么多啦,希望大家都能拿到自己心仪的offer~
如果有任何问题欢迎大家随时评论或私信我
码字不易,别忘了一键三连呀~~~~