📅  最后修改于: 2023-12-03 14:59:10.622000             🧑  作者: Mango
最近我参加了 Accolite 公司的实习和全职面试,以下是我的面试体验和总结,希望对准备面试的程序员有所帮助。
我首先提交了我的简历和申请,然后通过了 Accolite 的简历筛选。接下来,我需要在他们的在线测试平台上进行一些测试,包括:
在成功通过在线测试后,我被邀请进行技术面试。技术面试分为两个部分,每个部分持续约 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 编写一些查询语句来解决以下问题:
代码片段如下:
// 用户表和订单表查询总订单数和总金额
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 公司的实习和全职工作机会。我认为,如果你准备参加类似的面试,你需要:
希望我的面试体验和总结可以对准备面试的程序员有所帮助。