📜  Qualcomm 面试体验 2019(校园内)(1)

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

Qualcomm 面试体验 2019(校园内)

最近我参加了 Qualcomm 在校园内举行的面试,以下分享我的面试体验和感受。

面试流程

Qualcomm 在校园招聘中通常采用如下流程:

  1. 简历筛选
  2. 笔试
  3. 技术面试
  4. 部门经理面试
  5. HR 面试

我参加的是软件技术岗位,筛选后参加了笔试,通过后参加了技术面试。

笔试题目

笔试时,我们可以自带计算器,但是不能上网查资料。笔试时间为 2 小时,总共有四道题目。以下是其中两道题目的描述。

1. 加密与解密 (C/C++)

为了保证通信安全,需要对发送的数据进行加密。现在有一个加密方法,加密时将原始数据的每个字节加上一个固定的 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;
    }
}
2. 反转字符串 (Java)

请编写一个函数,输入一个字符串,将该字符串翻转输出。

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 感兴趣,不妨尝试一下他们的面试流程。