奇安信and大疆笔试 - 20200816 - 后端开发and测开

奇安信没有投,从旁划水,做了一道编程,不算难。好像暴露了。

题目

题解

没有处理tab,这道题应该用栈处理更好一些。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Main {
private static String UndoRedoStr(String str){
String[] words = str.split(" ");
String newStr = "";
String preWord = ""; // 被操作单词
int flag = 0; // 操作标记
int undo = 0; // "undo"操作前置标记
for(int i = 0;i < words.length; i++){
if(words[i].equals("undo")){
newStr = newStr.replace(preWord, "");
flag = 1;
undo = 1;
}else if(words[i].equals("redo") ){
if(undo == 1) newStr = newStr + preWord;
flag = 1;
undo = 0;
}
if(flag == 0) {
newStr = newStr + " " + words[i];
preWord = words[i];
}
flag = 0;
}
return newStr;
}

public static void main(String[] args) {
String str = "hello redo world undo redo redo end";
System.out.println(UndoRedoStr(str));
}
}

关于大疆

投的时候没有发现开发岗位,只好投的测开,主要考察Linux + Python。题不难,没有编程题,感觉拿不到面试啊!!!隔壁测试都有编程题,虽然也不难。见到了软件B卷,那个还是有点难度,题目描述也很抽象,能A一半的样子。

题目

问答题

  1. Python中线程和进程使用什么方法,二者的区别,围绕IO或CPU密集型的应用。
  2. Python中的浅拷贝和深拷贝,前段时间看Java的相关内容顺便瞅了一眼,正好就用上了。
  3. 实现斐波那契数列的生成器。注意,是生成器!勉强算作编程题。

做了一道测试的编程,同样的从旁划水。应该问题不大。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class MainDji {

private static boolean isAnagram(String s, String t) {
int[] cnts = new int[26];
for(char c : s.toCharArray()){
cnts[c - 'a'] ++;
}
for(char c : t.toCharArray()){
cnts[c - 'a'] --;
}
for(int cnt : cnts){
if(cnt < 0){
return false;
}
}
return true;
}

public static void main(String[] args) {
// write your code here
String s = "rkqodlw";
String t = "world";
System.out.println(isAnagram(s, t));
}
}