6.6 Bussiness Object笔试记
10点多从小初得知BO有笔试,一看时间,只有2个小时赶到张江
到张江地铁,已经是1点10分了,出地铁看到最高的那栋楼,估计就是张江大厦了?!
进去,看楼层,只看到F21有BO的研发部。坐电梯上去,电梯上看到三个人也上21层,就问了句:你们也是来Bussiness Object笔试的吧?回答不是 *%#@%^
到21楼,发现他们打卡进去,才明白他们是内部员工。那个汗啊。。。
进去后,其中一人指我向那边一个房间,我以为在那里笔试,就进去,发现没人。过了会出来,遇到一位阿姨,她问我怎么进来的,我说我是来笔试的。她说在15楼,我下楼去。
电梯里,一位应该是HR的女子问我是交大的?我说是的,来笔试。然后一起下去,电梯上很尴尬。。。
到15楼,她进去,我顺便一起进去。在一个会议室门口,她让我进去,进去后才发现里面已经坐满交大同学了。。。
笔试开始、、、
一、选择题
关键词: distributed system multiple thread software testing
二、编程题
1. 搜索算法
改写原始的逐个搜索算法(时间复杂度为O(n)),让你的搜索算法时间复杂度达到O(log2n)
2. 字符串替换函数 补写
到张江地铁,已经是1点10分了,出地铁看到最高的那栋楼,估计就是张江大厦了?!
进去,看楼层,只看到F21有BO的研发部。坐电梯上去,电梯上看到三个人也上21层,就问了句:你们也是来Bussiness Object笔试的吧?回答不是 *%#@%^
到21楼,发现他们打卡进去,才明白他们是内部员工。那个汗啊。。。
进去后,其中一人指我向那边一个房间,我以为在那里笔试,就进去,发现没人。过了会出来,遇到一位阿姨,她问我怎么进来的,我说我是来笔试的。她说在15楼,我下楼去。
电梯里,一位应该是HR的女子问我是交大的?我说是的,来笔试。然后一起下去,电梯上很尴尬。。。
到15楼,她进去,我顺便一起进去。在一个会议室门口,她让我进去,进去后才发现里面已经坐满交大同学了。。。
笔试开始、、、
一、选择题
关键词: distributed system multiple thread software testing
二、编程题
1. 搜索算法
改写原始的逐个搜索算法(时间复杂度为O(n)),让你的搜索算法时间复杂度达到O(log2n)
2. 字符串替换函数 补写
1 char *replace(char arr[], int arrsize, char search[], int ssize, char rep[], int rsize)
2 {
3



4
5 }
2 {
3




4
5 }
如果arr字符串中未找到search字串,返回arr
否则返回新字符串,其中search字串部分由rep串代替
example:
arr : a c o s e u s a p l e s
search : u s a
rep: d e
返回: a c o e d e p l e s
我用BF字符串匹配算法实现:
1 #include <iostream>
2 using namespace std;
3
4
5 char *replace(char arr[], int arrsize, char search[], int ssize, char rep[], int rsize)
6 {
7 if(arrsize < 0 || ssize < 0 || rsize < 0)
8 {
9 cerr << "Invailed index" << endl;
10 return NULL;
11 }
12
13 int i = 0;
14 int j = 0;
15 int start = -1;
16
17 //BF pattern string match algorithm
18 while( i < arrsize && j < ssize )
19 {
20 if(arr[i] == search[j])
21 {
22 if(j == 0)
23 {
24 start = i; //record the 1st char of pattern
25 cout << start << " " ;
26 }
27 i++;
28 j++;
29 }
30 else
31 {
32 j = 0;
33 i = i - j + 1;//回到start下一位置并自加
34 }
35 }
36
37
38
39 //start = j - i;
40
41 if(j >= ssize)
42 {
43 cout << "ok, match succuss, the start index: " << start << endl;
44 }
45 else
46 {
47 return arr;
48 }
49
50 //create array and copy elements
51 char *retArr = new char[arrsize - ssize + rsize];
52 for(i = 0; i < start; i++)
53 {
54 retArr[i] = arr[i];
55 }
56
57 for(i = 0; i < rsize; i++)
58 {
59 retArr[start + i] = rep[i];
60 }
61
62 for(i = 0; i < arrsize - ssize - start; i++)
63 {
64 retArr[start + rsize + i] = arr[start + ssize + i];
65 }
66
67 return retArr;
68
69 }
70
71
72 int main()
73 {
74 char arr[12] = {'a', 'c', 'u', 's', 'e', 'u','s', 'a', 'p', 'l', 'e', 's'};
75
76 char search[3] = {'u', 's', 'a'};
77
78 char rep[2] = {'c', 'h'};
79
80 char *retArr = replace(arr, 12, search, 3, rep, 2);
81
82 int i;
83
84 for(i = 0; i < 11; i++)
85 {
86 cout << retArr[i] << " ";
87 }
88
89 return 0;
90
91 }
2 using namespace std;
3
4
5 char *replace(char arr[], int arrsize, char search[], int ssize, char rep[], int rsize)
6 {
7 if(arrsize < 0 || ssize < 0 || rsize < 0)
8 {
9 cerr << "Invailed index" << endl;
10 return NULL;
11 }
12
13 int i = 0;
14 int j = 0;
15 int start = -1;
16
17 //BF pattern string match algorithm
18 while( i < arrsize && j < ssize )
19 {
20 if(arr[i] == search[j])
21 {
22 if(j == 0)
23 {
24 start = i; //record the 1st char of pattern
25 cout << start << " " ;
26 }
27 i++;
28 j++;
29 }
30 else
31 {
32 j = 0;
33 i = i - j + 1;//回到start下一位置并自加
34 }
35 }
36
37
38
39 //start = j - i;
40
41 if(j >= ssize)
42 {
43 cout << "ok, match succuss, the start index: " << start << endl;
44 }
45 else
46 {
47 return arr;
48 }
49
50 //create array and copy elements
51 char *retArr = new char[arrsize - ssize + rsize];
52 for(i = 0; i < start; i++)
53 {
54 retArr[i] = arr[i];
55 }
56
57 for(i = 0; i < rsize; i++)
58 {
59 retArr[start + i] = rep[i];
60 }
61
62 for(i = 0; i < arrsize - ssize - start; i++)
63 {
64 retArr[start + rsize + i] = arr[start + ssize + i];
65 }
66
67 return retArr;
68
69 }
70
71
72 int main()
73 {
74 char arr[12] = {'a', 'c', 'u', 's', 'e', 'u','s', 'a', 'p', 'l', 'e', 's'};
75
76 char search[3] = {'u', 's', 'a'};
77
78 char rep[2] = {'c', 'h'};
79
80 char *retArr = replace(arr, 12, search, 3, rep, 2);
81
82 int i;
83
84 for(i = 0; i < 11; i++)
85 {
86 cout << retArr[i] << " ";
87 }
88
89 return 0;
90
91 }
3. 写三个类 Shape, Square, Circle,每个类中有成员函数area(),计算各自面积
写一个函数计算一个Square或Circle数组的面积和sum
1 #define PI 3.14159265
2 class Shape
3 {
4 public:
5
6 private:
7
8 }
9
10 class Square : public Shape
11 {
12 public:
13
14 private:
15
16 }
17
18 class Circle : public Shape
19 {
20 public:
21
22 private:
23
24 }
25
26 double sum(Shape arr[], int size)
27 {
28
29 }
2 class Shape
3 {
4 public:
5

6 private:
7

8 }
9
10 class Square : public Shape
11 {
12 public:
13

14 private:
15

16 }
17
18 class Circle : public Shape
19 {
20 public:
21

22 private:
23

24 }
25
26 double sum(Shape arr[], int size)
27 {
28

29 }
我当时准备用多态实现,后来回去在VC6.0上怎么都不行。现改成函数模板实现如下:
1 #include <iostream>
2 #include <typeinfo>
3 using namespace std;
4
5 #define PI 3.14159265
6
7 class Shape
8 {
9 public:
10 virtual double area() = 0;
11
12 };
13
14 class Square : public Shape
15 {
16 public:
17 Square() {}
18 Square(double val) : a(val) {}
19 virtual double area() { return a*a; }
20 private:
21 double a;
22 };
23
24 class Circle : public Shape
25 {
26 public:
27 Circle() {}
28 Circle(double val) : r(r) {}
29 virtual double area() { return PI*r*r; }
30 private:
31 double r;
32 };
33
34 template <typename T>
35 double foo(T arr[], int size)
36 {
37 double sum = 0;
38 for(int i = 0; i < size; i++)
39 {
40 //cout << typeid(arr[i]).name() << " ";
41 sum += arr[i].area();
42 }
43
44 return sum;
45 }
46
47 int main()
48 {
49 Square arr[3];
50 arr[0] = Square(1);
51 arr[1] = Square(2);
52 arr[2] = Square(3);
53
54 cout << foo(arr, 3) << endl;
55
56 //Shape * s = new Square(3);
57 //cout << typeid(*s).name() << " " << s->area();
58 Circle arr1[3];
59 arr1[0] = Circle(1);
60 arr1[1] = Circle(2);
61 arr1[2] = Circle(3);
62
63 cout << foo(arr1, 3);
64
65 return 0;
66
67 }
2 #include <typeinfo>
3 using namespace std;
4
5 #define PI 3.14159265
6
7 class Shape
8 {
9 public:
10 virtual double area() = 0;
11
12 };
13
14 class Square : public Shape
15 {
16 public:
17 Square() {}
18 Square(double val) : a(val) {}
19 virtual double area() { return a*a; }
20 private:
21 double a;
22 };
23
24 class Circle : public Shape
25 {
26 public:
27 Circle() {}
28 Circle(double val) : r(r) {}
29 virtual double area() { return PI*r*r; }
30 private:
31 double r;
32 };
33
34 template <typename T>
35 double foo(T arr[], int size)
36 {
37 double sum = 0;
38 for(int i = 0; i < size; i++)
39 {
40 //cout << typeid(arr[i]).name() << " ";
41 sum += arr[i].area();
42 }
43
44 return sum;
45 }
46
47 int main()
48 {
49 Square arr[3];
50 arr[0] = Square(1);
51 arr[1] = Square(2);
52 arr[2] = Square(3);
53
54 cout << foo(arr, 3) << endl;
55
56 //Shape * s = new Square(3);
57 //cout << typeid(*s).name() << " " << s->area();
58 Circle arr1[3];
59 arr1[0] = Circle(1);
60 arr1[1] = Circle(2);
61 arr1[2] = Circle(3);
62
63 cout << foo(arr1, 3);
64
65 return 0;
66
67 }
浙公网安备 33010602011771号