马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
深信服科技校园招聘笔试题 一、 选择题(单选多选都有,每题2分,时间:120分钟) 1. 正则表达式 (a | b) + [0 - 9]*c 可匹配下列哪些字符串?( ) A. abac B. 90c C. aba10c D. ac 2. 已知a, b 都是double类型,下列哪些判断a, b相等的方法是正确的?( ) A. a == b B. fabs(a-b) < DBL_EPSILON C. fabs(a-b) <= FLT_EPSILON D. fabs(a-b) <= DBL_EPSILON E. fabs(a-b) < FLT_EPSILON 3. 下列哪些是可能引起错误的代码? ( ) A. char c = 233; tables[c] = c; B. #define equal(a, b) a==b; int a = 3, b=7; printf(“a&3 %s b&3\n”, equal(a&3, b&3)? “==” : “!=”); C. 已知Derived 是Base的派生类 Base *p = new Derived; delete (Derived *)p; D. std::string str1(“hello”), str2; memcpy(&str2, &str1, sizeof(str1)); 4. 下列哪些指令执行之后,标志寄存器的ZF一定会置位为1? ( ) A. XOR EAX EAX B. CMP EAX EAX C. MOV EAX 0H D. TEST EAX EAX 5. 下列哪些数据结构最适合医疗仪器设备中的大型数据量插入、查找?( ) A. 数组 B. 哈希表 C. 红黑树/二叉平衡树 D. 链表 6. 下列哪些排序算法的平均时间复杂度是O(Nlog2N) ( ), 哪些是稳定排序( ) A. 冒泡排序 B. 希尔排序 C. 快速排序 D. 插入排序 E. 堆排序 7. 下列哪些说法是正确的:( ) A. 二分查找法在一个长度为1000的有序整数数组查找一个整数,比较次数不超过100次 B. 在二叉树中查找元素的时间复杂度为O(log2N); C. 对单向链表,可以使用冒泡法排序; D. 对双向链表,可以使用快速排序. 8. 已知Derived是Base的派生类,且Base、Derived都有缺省构造函数,Base有个成员函数fool ,原型为:void Base::fool(), Derived有个成员函数foo2,原型为:void Derived::foo2(). 请问下述哪些代码是可以正常编译通过的?( ) A. Derived *p = new Base; B. Base *p = new Derived; C. void (Derived::*pfn)() = &Base::foo1; D. void (Base::*pfn)() == &Derived::foo2; 9. 下列哪些函数调用之后,buf一定是以’\0’ 结束(假设src是字符串,buf足够长): ( ) A. memcpy(buf, src, strlen(src)); B. strcpy(buf, src); C. strncpy(buf, src, strlen(src)); D. strcat(buf, src); 10. X86平台, 下列哪几种情况下需要对全局变量I的访问进行加锁:( ) A. A线程:if(I++) return; B线程:if(I++) return; B. A线程:if(I) return; B线程 if(I) return; C. A线程:if(I++) return; B线程:if(I) return; D. A线程:I = 1; B线程:I = 0; 二、 填空题(每题2分,共20分) 1. 下列程序的运行结果是:_________ void fun(int* pa, int& b, int c) { *pa = 5; b = 5; c = 5; } int main() { int a = 1; int b = 2; int c = 3; fun(&a, b, c); printf(“%d %d %d\n”, a, b, c); return 0; } 2. 数值转换: 十进制123转成十六进制_______ 十六进制F3转成十进制______ 八进制456转成十六进制______ 3. 位运算(32位X86平台) 1) 0x321 & 0x2f = ______ 2) 0x321 ^ 0x3f = ______ 3) ~0x321 = ______ 4. 调用printf函数可以分解为九个过程,请写出它们的排列顺序_________ A. call指令 B. EBP出栈 C. 函数参数压栈 D. 收回局部变量空间 E. 在栈上保留局部变量空间 F. EBP压栈 G. 函数参数出栈 H. ret指令 I. 打印输出字符串 5. 请挑出下述代码执行过程中会发生的事件,并按顺序排列______ struct Base{ int val; Base() : val(0){} ~Base(); }; struct Derived : public Base{ Derived() {} ~ Derived(){} }; Base *p = new Derived; delete p; 6. 下列代码的运行结果是:______ struct Foo{ Foo(const char* name, int *p) : m_name(name), m_p(p) { printf(“%s:%d”, name, ++*p); } ~Foo() { printf(“%s:%d”, m_name, --*p); } const char* m_name; int* m_p; }; void fun(int *p) { Foo a(“a”, p); new Foo(“b”, p); } int main() { int a = 1; fun(&a); printf(“%d\n”, a); return 0; } 7. 下列程序的运行结果是______ int main() { int a[5][2] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int* p = a[]; int (*p2)[2] = &a[1]; ++p; ++p2; printf(“%d”, *p); printf(“%d”, **p2): printf(“%d”, p2[1][2]); return 0; } |