📌  相关文章
📜  Accolite 实习+FTE 面试体验(2020 年校外)(1)

📅  最后修改于: 2023-12-03 14:59:10.622000             🧑  作者: Mango

Accolite 实习+FTE 面试体验(2020 年校外)

最近我参加了 Accolite 公司的实习和全职面试,以下是我的面试体验和总结,希望对准备面试的程序员有所帮助。

简历筛选和在线测试

我首先提交了我的简历和申请,然后通过了 Accolite 的简历筛选。接下来,我需要在他们的在线测试平台上进行一些测试,包括:

  • 编程语言测试:我使用的是 Java,测试平台会测试我的 Java 基础知识。
  • 数据结构和算法测试:测试平台会让我解决一些常见的算法问题,例如回溯、动态规划、二叉树等等。所有的测试时间限制在 90 分钟内。
技术面试

在成功通过在线测试后,我被邀请进行技术面试。技术面试分为两个部分,每个部分持续约 45 分钟。

技术面试一

我的第一个面试官从我的简历中挑选了一些项目来讨论,并问我一些深入的问题。此外,他也让我写了一些代码来实现以下算法问题:

  • 给定一个字符串,找到最长的不含重复字符的子串。
  • 给定一个排好序的数组和一个目标值,找到目标值在数组中的位置。

代码片段如下:

// 找到最长的不含重复字符的子串
public static String longestSubstringWithoutRepeatingChars(String s) {
    if (s == null || s.length() == 0) {
        return "";
    }
    int start = 0, end = 0, maxLength = 0;
    int[] charIndex = new int[128];
    Arrays.fill(charIndex, -1);

    while (end < s.length()) {
        char c = s.charAt(end);
        if (charIndex[c] >= start) {
            start = charIndex[c] + 1;
        }
        charIndex[c] = end;
        maxLength = Math.max(maxLength, end - start + 1);
        end++;
    }
    return s.substring(start, end);
}

// 在排序数组中查找元素的位置
public static int binarySearch(int[] nums, int target) {
    if (nums == null || nums.length == 0) {
        return -1;
    }
    int left = 0, right = nums.length - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] == target) {
            return mid;
        } else if (nums[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1;
}
技术面试二

我的第二个面试官向我展示了一个项目,要求我了解该项目的架构和实现。然后,他让我提出一些优化和改进的建议。最后,他要求我用 Java 或 SQL 编写一些查询语句来解决以下问题:

  • 给定两个表,一个是用户表,一个是订单表,查询每个用户的总订单数和总金额。
  • 给定一个产品表,一个销售表和一个客户表,查询销售额超过 1 万元的产品以及购买过此产品的客户数。

代码片段如下:

// 用户表和订单表查询总订单数和总金额
SELECT u.user_id, COUNT(o.order_id) as total_orders, SUM(o.order_amount) as total_amount
FROM user u
LEFT OUTER JOIN orders o ON u.user_id = o.user_id
GROUP BY u.user_id;

// 产品表、销售表和客户表查询销售额超过 1 万元的产品以及购买过此产品的客户数
SELECT p.product_id, p.product_name, COUNT(DISTINCT s.customer_id) as customer_count, SUM(s.sales_amount) as sales_amount
FROM product p
INNER JOIN sale s ON p.product_id = s.product_id
WHERE s.sales_amount > 10000
GROUP BY p.product_id, p.product_name;
最终面试

在成功通过技术面试后,我通过 Skype 进行了一个最终的面试,与 Accolite 的招聘团队和管理层交谈。在该面试中,我们讨论了我的过往经历、目标和期望,以及我如何适应公司文化和项目。

总结

整个面试流程很严谨,我需要展示我的技术能力和沟通技巧。通过这个过程,我学到了很多东西,并得到了 Accolite 公司的实习和全职工作机会。我认为,如果你准备参加类似的面试,你需要:

  • 准备你的编程基础知识,特别是数据结构和算法。
  • 熟悉你所使用的编程语言,包括各种库和框架。
  • 准备你的简历,并从中选择一些项目可以进行深入讨论。
  • 学会沟通和解决问题的能力,以及适应公司文化和项目的能力。

希望我的面试体验和总结可以对准备面试的程序员有所帮助。