📜  汇丰SDE面试经验(1)

📅  最后修改于: 2023-12-03 15:26:56.169000             🧑  作者: Mango

汇丰SDE面试经验

最近,我参加了汇丰银行的SDE(Software Development Engineer)面试并成功通过了面试。在这篇文章中,我想分享一下我的面试经验,希望能够帮助到那些正在准备SDE面试的同学们。

面试流程

我的SDE面试总共分成三轮。第一轮是HR面,主要是了解我的背景和工作经验。第二轮是技术面试,主要是测试我的编程能力和技术知识。第三轮是Manager面试,主要是了解我的领导能力和团队协作能力。

技术面试

接下来,我将重点讲述我的技术面试经历。

算法题

在技术面试中,我被问到了一道算法题。题目大致如下:给定一个N个整数的数组,要求找到其中两个数的和等于给定的目标数。如果找到了这样的一对数,就返回这两个数的下标。如果没有找到,就返回null。要求用时间复杂度O(N)和空间复杂度O(N)的算法来解决这个问题。

我在面试中,首先用了暴力破解的方法。即遍历整个数组,对于每个数,再遍历一次数组,找到另一个数,使得两者之和等于目标数。这种方法的时间复杂度为O(N^2),明显不符合要求。

接着,我想到了用HashSet来解决这个问题。具体来说,对于每个数x,先看HashSet中是否有目标数-x。如果有,就说明找到了这样一对数,返回它们的下标。如果没有,就将x插入到HashSet中,继续遍历后面的数。这种方法的时间复杂度为O(N),空间复杂度也为O(N),符合题目要求。

数据库问题

另外,在面试中我还遇到了数据库问题。问题大致如下:有两个表A和B,表A中有一个userid列,表B也有一个userid列。要求找到既存在于表A又存在于表B中的所有userid值。

我在面试中,首先想到了用INNER JOIN来解决这个问题。具体来说,将表A和表B按照userid列做INNER JOIN操作,取出所有符合条件的userid值即可。

但是,面试官不满足我的答案。他希望我再想一想,有没有更好的解决方法。最后,我想到了使用EXISTS关键字来解决这个问题。具体来说,对于表A中的每个userid值,都在表B中查询是否存在。如果存在,那么这个userid值就是所需的结果之一。

总结

在SDE面试中,我遇到了算法题和数据库问题。通过思考和分析,我最终给出了符合要求的解决方法。总得来说,通过这次面试的经历,我学到了很多东西,也发现了自己知识上的不足。我会继续努力,不断地提升自己的技能水平,成为更好的程序员。