📅  最后修改于: 2023-12-03 15:05:07.360000             🧑  作者: Mango
我是一名应聘OYO SDE-1的程序员,经过几轮电话面试后,通过了初步筛选。随后,我被邀请来校内参加了一次面试。
第一轮面试持续了1个小时,主要是关于数据结构和算法的问题。以下是我被问到的问题:
我通过运用数据结构和算法的知识,一一回答了这些问题。我的回答准确无误,但是由于些微的紧张,我有些语速过快。
第二轮面试则考察了我的编程能力,我需要在一台笔记本电脑上,用Java语言完成3道题目的编程。
我在规定时间内顺利完成了这三道题目,代码还能很好地运行。同时,我也可以在屏幕上调试代码,通过一些简单的打印语句来排查错误。
第三轮面试则考察了我的软件架构能力。在面试中,我需要根据一些需求,设计出适合的软件架构。
我用软件架构的知识分析了这两个场景,并设计了满足需求的软件架构。
这次 OYO 校园面试是一次非常有意义的经历。通过经历了这样的挑战和考验,我更加坚定地相信,只要经过不断学习和提升,就一定会成为一名优秀的程序员。
以下是第二轮面试的代码片段:
public int countOne(int num) {
int count = 0;
while (num != 0) {
count++;
num = num & (num - 1);
}
return count;
}
public String sortString(String str) {
if (str == null || str.length() == 0) {
return str;
}
char[] charArray = str.toCharArray();
Arrays.sort(charArray);
int numCount = 0;
for (char c : charArray) {
if (Character.isDigit(c)) {
numCount++;
} else {
break;
}
}
Arrays.sort(charArray, numCount, charArray.length);
return new String(charArray);
}
public int[] splitArray(int[] nums) {
if (nums == null || nums.length == 0) {
return nums;
}
int[] result = new int[nums.length];
int index1 = 0;
int index2 = nums.length - 1;
for (int num : nums) {
if (num % 2 == 1) {
result[index1++] = num;
} else {
result[index2--] = num;
}
}
return result;
}