📅  最后修改于: 2023-12-03 15:19:38.963000             🧑  作者: Mango
最近我参加了 Qualcomm 在校园内举行的面试,以下分享我的面试体验和感受。
Qualcomm 在校园招聘中通常采用如下流程:
我参加的是软件技术岗位,筛选后参加了笔试,通过后参加了技术面试。
笔试时,我们可以自带计算器,但是不能上网查资料。笔试时间为 2 小时,总共有四道题目。以下是其中两道题目的描述。
为了保证通信安全,需要对发送的数据进行加密。现在有一个加密方法,加密时将原始数据的每个字节加上一个固定的 Key 生成密文,解密时将密文的每个字节减去该 Key 即可。请写出加密与解密的代码。
void encrypt(char* data, int length, char key) {
for (int i = 0; i < length; i++) {
data[i] += key;
}
}
void decrypt(char* data, int length, char key) {
for (int i = 0; i < length; i++) {
data[i] -= key;
}
}
请编写一个函数,输入一个字符串,将该字符串翻转输出。
public static String reverseString(String s) {
if (s == null) return null;
char[] chars = s.toCharArray();
int i = 0, j = chars.length - 1;
while (i < j) {
char tmp = chars[i];
chars[i] = chars[j];
chars[j] = tmp;
i++;
j--;
}
return new String(chars);
}
技术面试时,主要考察面试者的编码能力和编程思路。面试官会给出一个问题,然后要求面试者在规定的时间内写出代码,并考虑代码的效率和可读性。
我遇到的一个问题是一个求解斐波那契数列的函数,同时要求能够支持计算大数据。以下给出我的代码实现。
public static BigInteger fibonacci(int n) {
if (n <= 1) return BigInteger.valueOf(n);
BigInteger a = BigInteger.ZERO, b = BigInteger.ONE, c;
for (int i = 2; i <= n; i++) {
c = a.add(b);
a = b;
b = c;
}
return b;
}
Qualcomm 的面试流程非常严谨,笔试和面试也都很有挑战性,需要面试者有扎实的编程基础和快速实现代码的能力。然而,在这样的挑战之下,我也收获了很多,进一步锤炼了自己的技能和能力。如果你对 Qualcomm 感兴趣,不妨尝试一下他们的面试流程。