收藏 分享(赏)

公司应聘面试笔试题汇总.doc

上传人:HR专家 文档编号:7586741 上传时间:2019-05-21 格式:DOC 页数:208 大小:346KB
下载 相关 举报
公司应聘面试笔试题汇总.doc_第1页
第1页 / 共208页
公司应聘面试笔试题汇总.doc_第2页
第2页 / 共208页
公司应聘面试笔试题汇总.doc_第3页
第3页 / 共208页
公司应聘面试笔试题汇总.doc_第4页
第4页 / 共208页
公司应聘面试笔试题汇总.doc_第5页
第5页 / 共208页
点击查看更多>>
资源描述

1、C+ 1. 简述堆和栈的区别。c+程序的内存格局通常分为 4 个区:1)全局数据区(data area):用来存放全局变量,静态数据,常量2)代码区(code area ):用来存放成员函数,其他函数代码3)栈区(stack) (又称局部变量区):用来存放局部变量,函数参数,返回数据和返回地址4)堆区(heap area):该区是自由存储区 2. 简述虚函数的本质和实现机制。 虚函数是在基类中冠以关键字 virtual 的成员函数,它提供了一种接口。虚函数可以在一个或多个派生类中被重定义 3. 列举 C+中向函数传递参数的各种方式,并比较它们之间的区别和优缺点。分为:1)按值传递(将实参的值直

2、接复制到参数的存储单元中,函数体对这些存储单元进行读写操作。函数结束后,分配给参数的存储单元被释放,因此函数体对这些参数的任何修改都不会影响实参本身) ,2) 按地址传递:1 指针参数传递(将函数的形参定义为指针,在函数调用时传递的是实参的地址,函数体就可以根据该地址对实参的本身进行操作,从而改变实参的值) ,2 引用参数传递(由于引用只是某个变量或对象的别名,函数被调用时,系统不会复制实参,而是将形参绑定在实参上,直接对实参进行操作) ,3 数组参数传递(向函数传递的是第一个元素的地址,即数组的首地址)4. static 关键字有几种用途?请简述每种用途。根据存储方式的不同,可以将局部变量分

3、为:自动变量(auto) ,寄存器变量(register),局部静态变量(static)。auto 通常省略,寄存器变量的访问的速度比较快,通常用于频繁使用的变量。static 的用途:1)实现多个对象之间的数据共享 。使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。2)可以节省内存。因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。5. 简述引用和指针的异同。 6. 简述函数重载(overloading )和覆盖(overriding )的区别。 在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参

4、数列来确定具体调用哪个函数,这种机制叫重载,重载不关心函数的返回值类型。覆盖是指派生类中存在重新定义的函数,其函数名、参数列、返回值类型必须同父类中的相对应被覆盖的函数严格一致,覆盖函数和被覆盖函数只有函数体(花括号中的部分)不同,当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖函数版本,这种机制就叫做覆盖。 7. 什么是深拷贝?什么是浅拷贝? 用一个对象的内容初始化另一个同类对象,也称为缺省的按成员拷贝,不是对整个类对象的按位拷贝。这种拷贝称为浅拷贝。8. 请画出二维数组 char a43的内存结构图,并指出 a32和 a23在内存中的位置。 9. 简述包含

5、和私有继承的异同。 10. 用模板实现一个通用的栈,要求实现 empty, size, push, pop, top 五个成员函数,并用异常机制来报告错误(比如在一个大小为 0 的栈上执行 pop 操作) 。 #include#includeusing namespace stdtemplateclass stackpublic:int size;T *base;T *top;empty()size()Push()pop()top()private:int st100;main()标准库 11. 用 string 类编写一个程序,它从标准输入接收一行输入,然后统计出其中单词的个数,单词的分隔符

6、只有逗号、点号和空格三种。 12. 简述 STL 的容器 container、迭代器 iterator、算法 algorithm 和函数器 functor 的作用以及它们之间的关系,举例说明。 13. 下面的代码存在什么问题,如何修正? list list1; for (int i = 0; i :iterator it = list1.begin(); it != list1.end(); +it) if (*it % 2 = 0) list1.erase(it); Win32 14. 比较 ANSI 和 Unicode 的区别,并说明 C Runtime Library 和 Win32 A

7、PI 如何支持二者。15. 简述线程同步的四种机制。 16. 简述虚拟内存机制,并描述在 win95 和 winnt 下内存空间的结构。 17. 简述 DLL 的实现机制以及输出 DLL 中函数的两种方法。 网络 18. 简述 TCP 和 UDP 之间的区别。19. 简述 Winsock 的六种主要 IO 处理模式。WinSock 是 Windows Sockets 的缩写,它作为 Windows 和 TCP/IP 之间的接口。而我们都知道 TCP/IP 在互联网举足轻重的作用,如果希望了解 Socket,那么 Berkeley Socket 不可不提,它是在 UNIX 下对 TCP/IP 进

8、行编程的标准模式。WinSock 的设计和它很象,这样可以使 UNIX 上的应用程序在 Windows 平台上使用。但是,两者也有一些区别,如WinSocket 利用了 Windows 的一些特点,而这些特点对于 UNIX 来说是没有的。WinSock 是一个 DLL,它运行于 Windows 3.x,Windows for Workgroups,Windows NT 和Windows 95 下。WINSOCK.DLL 是与 TCP/IP 的接口,通过这个接口和网络进行连接。下图显示它的工作原理:WINSOCK.DLL 实际上是作为 WinSock 应用程序和 TCP/IP 协议栈之间的中间层

9、。用户的应用程序告诉 WINSOCK.DLL 需要做什么,WINSOCK.DLL 将这些命令传送到 TCP/IP 协议栈,由 TCP/IP 协议栈传送到网络。但是重要的事情是用户必须注意用户使用的WINSOCK.DLL 必须和 TCP/IP 的版本号一致。不要以后它们都叫 WinSocks 它们就是一样的。所以,如果用户在使用 Microsoft 的 TCP/IP,就不能使用 Trumpet Winsock。同样,如果用户正在使用 SLIP 连接,而希望由 Chameleon Sampler 的 Winsock 切换到 Trumpet Winsock,用户必须删除 Chameleon 的 WI

10、NSOCK.DLL,然后再安装新的WINSOCK.DLL。20. 描述一个你以前实现过的服务器的结构图,并分析其中可能存在的瓶颈。/VC/C+的面试题1、估计一下广州有多少理发师,如果允许,你还需要那些调研工作?并给出你的推导过程。你认为你的 估算结果可信吗? 2、看过那些软件方面的书籍 3、什么是软件,软件开发包括那些步骤,并说出你对这些步骤的理解 软件,是人们为了告诉电脑要做什么事而编写的,电脑能够理解的一串指令,有时也叫代码、程序。软件(software) 是计算机系统中与硬件(hardware) 相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(doc

11、ument)。需求分析 1) ,需求文档:知道软件有什么需求,要实现什么功能,达到什么目的 2) ,设计概要:软件需要什么样的模块来组合,用那些算法,画出流程图 3) ,详细设计:确定函数名字,变量名等细节问题 4) ,编码:不用说了吧 5) ,测试:找出缺陷并改正 6) ,发布 4、OSI 网络结构的七层模型分别是什么,并说出你认为划分为 7 层的理由。 5、软件过程中了解、使用过版本控制或建模工具吗?对你工作有什么帮助? 6、软件过程中你都写过什么文档?分别是什么目的及其对你的帮助? 7、我们知道,C+将内存划分为三个逻辑区域:堆、栈和静态存储,请说出它们的区别及你的理解。 8、字符串 A

12、 是由 n 个小写英文字母( a z)构成的,定义为 char An。你能用更少的空间表示这个字符串吗?请写出从 char An到你的新的储存格式的转换函数。 (请用 C/C+编程,不允许上机操作) 12、对现在的 Stack(栈)数据结构进行改进,加一个 min()功能,使之能在常数,即 O(1),时间内给出栈中的最小值。可对 push()和 pop()函数进行修改,但要求其时间复杂度都只能是 O(1)。 typedef structSElemType *base;SElemType *top;int stacksize;SqStack;Status min()int min_temp=*b

13、ase;*top=*base;while(*topcreate_file()char file2gb;/广州南沙软件园面试试题(C+部分)要求 15 分钟完成。/1、简述 ICQ 或 OICQ 的工作原理。ICQ 是英文 I Seek You 的连音缩写,它使用户不但可以在网上进行即时交谈,还可以传送档案,发送语音留言,甚至还能利用 ICQ 特有的搜寻引擎上网搜寻,或设定新闻标题、接收股票信息和体育新闻。工作原理:ICQ 在安装时需要到 ICQ 服务器中登录基本数据,以便能够取得个人专用的 UIN(网络通用号码) ,UIN跟 E-mail 类似,别人可以通过 UIN 进行定位,用户可以决定是否

14、将这个 UIN 对特定网友开放。另外,在用户将 UIN 对特定网友开放的同时,也可以取得对方的 UIN,并加入到联络名单当中。以后只要网友一上网,ICQ 便会主动通知用户,这就是有很多人都将它称为“网络 BP 机”的原因。2、WINDOWS 下 C+如何申请内存?3、怎么使用 VC+获得一个命令按钮的句柄?4、JAVA 和 C+有什么区别?5、LINUX 的常见目录有什么?/ 根目录/bin 存放必要的命令/boot 存放内核以及启动所需的文件等/dev 存放设备文件/etc 存放系统的配置文件/home 用户文件的主目录,用户数据存放在其主目录中/lib 存放必要的运行库/mnt 存放临时的

15、映射文件系统,我们常把软驱和光驱挂装在这里的 floppy 和 cdrom 子目录下。/proc 存放存储进程和系统信息/root 超级用户的主目录/sbin 存放系统管理程序/tmp 存放临时文件的目录/usr 包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档。/var 包含系统产生的经常变化的文件,例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后的手册页以及一些应用程序的数据文件等等。建议单独的放在一个分区。6、有什么办法可以让一个程序一直运行并能够处理多个用户的 login 和 logout 操作?7、typedef structvoid (*ver)();in

16、t *p1;abc;abc s=f1,int p1;void f1(int *a)Please use the pointer s1 reference(call) the function f1 and pass the parameter(变量)p1 to the function. The call syntax ( 語法;句法,组成部分有条理的排列)should not contain f1 and p1./联想笔试题/1 设计函数 int atoi(char *s)。 2int i=(j=4,k=8,l=16,m=32); printf( “%d”, i); 输出是多少?答案:32

17、3解释局部变量、全局变量和静态变量的含义。 4解释堆和栈的区别。 5论述含参数的宏与函数的优缺点。/贝尔笔试题/一、请填写 BOOL , float, 指针变量 与“零值”比较的 if 语句。(10 分)请写出 BOOL flag 与“零值”比较的 if 语句。(3 分)标准答案:if ( flag )if ( !flag ) 如下写法均属不良风格,不得分。if (flag = TRUE)if (flag = 1 )if (flag = FALSE)if (flag = 0)请写出 float x 与“零值”比较的 if 语句。(4 分)标准答案示例:const float EPSINON =

18、 0.00001; if (x = - EPSINON) / 2 分while( (*strDest+ = * strSrc+) != 0 ) / 2 分NULL ;return address ; / 2 分(2)strcpy 能把 strSrc 的内容复制到 strDest,为什么还要 char * 类型的返回值?答:为了实现链式表达式。 / 2 分例如 int length = strlen( strcpy( strDest, “hello world”) );六、编写类 String 的构造函数、析构函数和赋值函数 (25 分)已知类 String 的原型为:class Stringp

19、ublic:String(const char *str = NULL); / 普通构造函数String(const String / 拷贝构造函数 String(void); / 析构函数String / 赋值函数private:char *m_data; / 用于保存字符串;请编写 String 的上述 4 个函数。标准答案:/ String 的析构函数String:String(void) / 3 分delete m_data;/ 由于 m_data 是内部数据类型,也可以写成 delete m_data;/ String 的普通构造函数String:String(const char

20、*str) / 6 分if(str=NULL)m_data = new char1; / 若能加 NULL 判断则更好*m_data = 0;elseint length = strlen(str);m_data = new charlength+1; / 若能加 NULL 判断则更好strcpy(m_data, str);/ 拷贝构造函数String:String(const String m_data = new charlength+1; / 若能加 NULL 判断则更好strcpy(m_data, other.m_data);/ 赋值函数String / (2) 释放原有的内存资源 /

21、 3 分delete m_data;/ (3)分配新的内存资源,并复制内容 / 3 分int length = strlen(other.m_data);m_data = new charlength+1; / 若能加 NULL 判断则更好strcpy(m_data, other.m_data);/ (4)返回本对象的引用 / 3 分/2005 华为/一、 判断题(对的写 T,错的写 F 并说明原因,每小题 4 分,共 20 分)1、有数组定义 int a22=,2,3;则 a01的值为 0。 ( )2、int (*ptr) (),则 ptr 是一维数组的名字。 ( )3、指针在任何情况下都可

22、进行,=, using namespace std; class base public: virtual void print() const cout a.c long temp255; b.c extern *temp; 2 a.c long temp255; b.c extern temp256; 3 a.c long temp255; b.c extern temp; 2, 在第一个声明处编译出了奇怪的错误,为什么? #include #include “myfun1.h“ #include “myfun2.h“ int myInt1; int myInt2; 3, printf(“

23、0x%x“, ( 请问打印了什么? 4, 结构体内某项偏移地址 5, 汇编,用 ax,bx,cx,dx, 求 1000*1000/30(四舍五入), 结果放在 ax 中. 6, 1,2,3,4,5,6,7,8,9 从栈里出来的可能性. 7, 求一个 struct 的 sizeof.(略) 8, 编最优化 Bubble(int *pIntArray,int L),要求:交换元素不能用临时变量,如果有序, 需要最优.Software programming test on C+: 1.How good do you see yours programming skills?Please circl

24、e your answers C: Fair/Good/Excellent C+: Fair/Good/Excellent 2.Please estimate your programming experince: How many lines of code are your biggest C Program ever written excluding the standard linked library? How many lines of code are your biggest C+ program ever written excluding t he standard li

25、nked library? 3.Please explain the following terms Data Encapsulation Inheritance Polymorphism 4.What is a virtual base class?How do you declare such a class?How would you u se it in a design? 5.What is a template or container class?How do you declare such a class? 6.Which are the access control lev

26、els for C+ language? 7.What is RTTI?How do you achieve RTTI in your design? 8.What are the major differences between static and non-static member function s? 9.How do you call a regular member function from a static member function? Please use psendo-code to provide your answer 10.How do you declare

27、/define a type of pointer to a class member function? Please use psendo-code to provide your answer 11.Please explain the following tyoes: Here is a short lise of combinations and their meanings: 1.Reference-Can change the referenced object 2.Const-Reference 3.Const-Pointer- 4.Pointer-Const- 5.Const

28、-Pointer-Const- CFoo Instance CFoo /1 const CFoo /2 const CFoo *pConstPointer= /3 CFoo *const pPointerConst= /4 const CF00 *const pPointerConst= /5 12.What are top-down and bottom-up approach?How do you usually use them? 13.Please use pseudo-code to design a set of stack operations with template 14.

29、Please use pseudo-code to design a set of double linked list operations wit h template Optional Questions:(for extra credits) 15.Please write a unix makefile for Question13 16.Please explain these common sections:text,data,bss.What is OSI Model?Which layer is responsible for the information reliable

30、 delivery? 2.List the differences of TCP and UDP 3.Please list the differences between convertional C language and object-oriented language(OOL),sau C+? 4.Please list the three major features and meanings of C+ 5.Please list the program areas of the run time environment and give a brief explanation

31、of the function of each area 6.Write a piece of code(or macro)to convert the decimal number to hex format 7.In a real time operating based embedded system,2 tasks will access the RS-232C port.Design a mutual exclusive mechanism for tasks sending command string to the device. (Pseudo code is okay) 8.

32、A multi-task application is running on top of a real-time operating system, how many possbile states can a task have?Please draw a state transition diagram to explain. How the tasks communicate to each?/网易华工/1 在字符串 S 中寻找最长的字符串 x,条件是 x 存在于 S 中。即是如:abcabcdcd 中的 abc。 2。求 Fibonacci 数列中第 k 个与前面所有数互质的数(除前

33、面两个数 1,1 ) 。 3。有 100 个真币和一个假币,只知道真币与假币不等重,要求只称两次,得出是真币重还是假币重。/C/C+/C+/C 试题 本试题仅用于考查 C+/C 程序员的基本编程技能。内容限于 C+/C 常用语法,不涉及数据结 构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对 C+/C 的理解程度,但 不能反映考生的智力和软件开发能力。 笔试时间 90 分钟。请考生认真答题,切勿轻视。 一、请填写 BOOL , float, 指针变量 与“零值”比较的 if 语句。 (10 分) 提示:这里“零值”可以是 0, 0.0 , FALSE 或者“空指针” 。例如 int

34、 变量 n 与“零值 ”比较的 if 语句为: if ( n = 0 ) if ( n != 0 ) 以此类推。 请写出 BOOL flag 与“零值”比较的 if 语句: 请写出 float x 与“零值”比较的 if 语句: 请写出 char *p 与“零值”比较的 if 语句: 二、以下为 Windows NT 下的 32 位 C+程序,请计算 sizeof 的值(10 分) char str = “Hello” ; char *p = str ;int n = 10;请计算 sizeof (str ) = sizeof ( p ) = sizeof ( n ) = void Func

35、( char str100)请计算 sizeof( str ) = void *p = malloc( 100 );请计算 sizeof ( p ) = 三、简答题(25 分) 1、头文件中的 ifndef/define/endif 干什么用? 2、#include 和 #include “filename.h” 有什么区别? 3、const 有什么用途?(请至少说明两种) 4、在 C+ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明? 5、请简述以下两个 for 循环的优缺点 / 第一个 for (i=0; i ing(); / 第二个 if (condition

36、)for (i=0; i for (i=0; i 优点:缺点: 优点:缺点: 四、有关内存的思考题(20 分) void GetMemory(char *p)p = (char *)malloc(100);void Test(void) char *str = NULL;GetMemory(str); strcpy(str, “hello world“);printf(str);请问运行 Test 函数会 有什么样的结果?答: char *GetMemory(void) char p = “hello world“;return p; void Test(void)char *str = NU

37、LL;str = GetMemory(); printf(str);请问运行 Test 函数会有什么样的结果?答: Void GetMemory2(char *p, int num)*p = (char *)malloc(num);void Test(void)c har *str = NULL;GetMemory(strcpy(str, “hello“); printf(str); 请问运 行 Test 函数会有什么样的结果?答: void Test(void)char *str = (char *) malloc(1 00); strcpy(str, “hello”); free(str)

38、; if(str != NULL) strcpy(str, “ world”); printf(str);请问运行 Test 函数会有什么样的结果?答: 五、编写 strcpy 函数( 10 分) 已知 strcpy 函数的原型是 char *strcpy(char *strDest, const char *strSrc); 其中 strDest 是目的字符串,strSrc 是源字符串。 (1)不调用 C+/C 的字符串库函数,请编写函数 strcpy (2)strcpy 能把 strSrc 的内容复制到 strDest,为什么还要 char * 类型的返回值? 六、编写类 String 的

39、构造函数、析构函数和赋值函数( 25 分) 已知类 String 的原型为: class String public: String(const char *str = NULL); / 普通构造函数 String(const String / 拷贝构造函数 String(void); / 析构函数 String / 赋值函数 private: char *m_data; / 用于保存字符串 ; 请编写 String 的上述 4 个函数。/微软/太久不用 C 和 C+写程序,脑袋一团糟,对着屏幕手都僵了,写出漏洞百出的代码,于是决定找些题连连,找回编程的感觉。上周日是微软 2005 校园招聘的

40、第一场笔试,其中有一道编程题目:给定一单链表的表头指针和指向其中一个节点的指针,要求以该指针为头将原链表逆序排列,例如: N1-N2-N3-N4-N5-NULL pHEAD = N1,pSTART = N3,返回 N3-N2-N1-N5-N4-NULL N1-N2-N3-N4-N5-NULL pHEAD = N1,pSTART = N5,返回这个 N5-N4-N3-N2-N1-NULL N1-N2-N3-N4-N5-NULL pHEAD = N1,pSTART = N1,返回这个 N1-N5-N4-N3-N2-NULL 不允许额外分配存储空间,不允许递归,可以使用临时变量。看了一下版上的讨论,

41、思路就被固定在那个里面了,基本的算法就是将整个链表逆序,并将头节点链接到尾节点,新的头节点的下一个节点链接到空。一开始被逆序搞昏了头,顾此失彼,赶着去杂志社见社长,就带着问题上了公车,在车上拿笔比划,有了大致的思路,晚上回到宿舍把完整的代码写了出来,还是比较简洁的。原题似乎还要求体现基本异常处理,不知道该怎么办了。难道还要判断一下头指针是否为空,和 pStart 是否在链表中?typedef struct node int value;struct node *next; node;void ReverseList(node *pHead, node *pStart)node *t1, *t2

42、, *it=*pHead;t1 = it-next;while(t1 != 0)t2 = t1-next;t1-next = (it = pStart?0:it);it = t1;t1 = t2;(*pHead)-next = it;*pHead = pStart;附加了测试代码后的完整程序,抄了一部分 chaoslawful 的,呵呵#include #include #include typedef struct node int value;struct node *next; node;void ReverseList(node *pHead, node *pStart)node *t1, *t2, *it=*pHead;t1 = it-next;while(t1 != 0)t2 = t1-next;t1-next = (it = pStart?0:it);it = t1;t1 = t2;(*pHead)-next = it;*pHead = pStart;void PrintList(node *pHead)node *it=pHead;while(it)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报