




免费预览已结束,剩余14页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
现在的公司招聘,都要笔试面试.如果你不是那种编程功底非常深厚的人,又不好好准备一番,在笔试面试中往往会处于被动局面.虽然有些笔试题是故意为难我们,有点钻牛角尖.但是很多笔试题面试题确实能够很好地看出我们的基础. 在这里,我就略去那些钻牛角尖的题.从csdn论坛我近半年的收集中选出10道有代表性的题目,难度基本上是逐渐加大.对数组,指针,数据结构,算法,字符串,文件操作等问题都有覆盖.主要以c语言的实现为主,也有c+的题.大家可以先做做这10道题,测试一下自己的水平.1. 下面这段代码的输出是多少(在32位机上). char *p; char *q20; char *m2020; int (*n)10; struct MyStruct char dda; double dda1; int type ;; MyStruct k; printf(%d %d %d %d,sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k);2.(1)char a223=1,6,3,5,4,15,3,5,33,23,12,7 ;for(int i=0;i6)?puts(6):puts(6就是考察隐式转换int型变量转化成unsigned int,b成了正数2. b)运行下面的函数会有什么结果?为什么? void foo(void) char string10,str110; int i; for(i=0;i10;i+) str1i = a; strcpy(string, str1); printf(%s,string); 首先搞清strcpy函数的实现方法,char * strcpy(char * strDest,const char * strSrc) if (strDest=NULL)|(strSrc=NULL) throw Invalid argument(s); char * strDestCopy=strDest; while (*strDest+=*strSrc+)!=0); return strDestCopy;由于str1末尾没有0结束标志,所以strcpy不知道拷贝到何时结束printf函数,对于输出char* 类型,顺序打印字符串中的字符直到遇到空字符()或已打印了由精度指定的字符数为止下面是微软的两道笔试题.3. Implement a string class in C+ with basic functionality like comparison, concatenation, input and output. Please also provide some test cases and using scenarios (sample code of using this class).Please do not use MFC, STL and other libraries in your implementation.我的实现方案如下,这道题真地对c+的主要特性都进行了较好地考察.String.h:#ifndef STRING_H#define STRING_H#include using namespace std;class String public: String(); String(int n,char c); String(const char* source); String(const String& s); /String& operator=(char* s); String& operator=(const String& s); String(); char& operator(int i)return ai; const char& operator(int i) const return ai;/对常量的索引. String& operator+=(const String& s); int length(); friend istream& operator(istream& is, String& s);/搞清为什么将设置为友元函数的原因. /friend bool operator (const String& left, const String& right);/下面三个运算符都没必要设成友元函数,这里是为了简单. friend bool operator= (const String& left, const String& right); friend bool operator!= (const String& left, const String& right); private: char* a; int size;#endifString.cpp:#include String.h#include #include String:String() a = new char1; a0 = 0; size = 0;String:String(int n,char c) a = new charn + 1; memset(a,c,n); an = 0; size = n;String:String(const char* source) if(source = NULL) a = new char1; a0 = 0; size = 0; else size = strlen(source); a = new charsize + 1; strcpy(a,source); String:String(const String& s) size = strlen(s.a);/可以访问私有变量. a = new charsize + 1; /if(a = NULL) strcpy(a,s.a); String& String:operator=(const String& s) if(this = &s) return *this; else delete a; size = strlen(s.a); a = new charsize + 1; strcpy(a,s.a); return *this; String:String() delete a;/ String& String:operator+=(const String& s) int j = strlen(a); int size = j + strlen(s.a); char* tmp = new charsize+1; strcpy(tmp,a); strcpy(tmp+j,s.a); delete a; a = tmp; return *this; int String:length() return strlen(a);main.cpp:#include #include String.husing namespace std;bool operator=(const String& left, const String& right) int a = strcmp(left.a,right.a); if(a = 0) return true; else return false;bool operator!=(const String& left, const String& right) return !(left = right);ostream& operator(ostream& os,String& s) int length = s.length(); for(int i = 0;i length;i+) /os s.ai;这么不行,私有变量. os si; return os;String operator+(const String& a,const String& b) String temp; temp = a; temp += b; return temp;bool operator(const String& left,const String& right) int j = 0; while(leftj != 0) & (rightj != 0) if(leftj (const String& left, const String& right) int a = strcmp(left.a,right.a); if(a 0) return true; else return false; istream& operator(istream& is, String& s) delete s.a; s.a = new char20; int m = 20; char c; int i = 0; while (is.get(c) & isspace(c); if (is) do s.ai = c; i+; /*if(i = 20) cout Input too much characters! f;/需要输入. String g; g = a + b;/abcdwww if(a b) cout a b endl; else cout = b endl; if(e = a) cout e = a endl; else cout e != a endl; b += a; cout a endl; cout b endl; cout c endl; cout d endl; cout e endl; cout f endl; cout g endl; cout g0 endl; return 0; 4. Implement a single-direction linked list sorting algorithm. Please first define the data structure of linked list and then implement the sorting algorithm. 5.编写一个函数,返回两个字符串的最大公串!例如,“adbccadebbca”和“edabccadece”,返回“ccade” 1设计函数 int atoi(char *s)。 int atoi(const char *nptr); 函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再 遇到非数字或字符串结束时(0)才结束转换,并将结果返回。返回值 返回转换后的整型数。#include #include int myAtoi(const char* s) int result = 0; int flag = 1; int i = 0; while(isspace(si) i+; if(si = -) flag = -1; i+; if(si = +) i+; while(si != 0) if(si 9) | (si 0) break; int j = si - 0; result = 10 * result + j; i+; result = result * flag; return result;int main() char* a = -1234def; char* b = +1234; int i = myAtoi(a); int j = myAtoi(b); printf(%d n,i); printf(%d,j); return 0;2int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?3解释局部变量、全局变量和静态变量的含义。4解释堆和栈的区别。5论述含参数的宏与函数的优缺点。1实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。2写一个函数,将其中的t都转换成4个空格。3Windows程序的入口是哪里?写出Windows消息机制的流程。4如何定义和实现一个类的成员函数为回调函数?5C+里面是不是所有的动作都是main()引起的?如果不是,请举例。6C+里面如何声明const void f(void)函数为C程序中的库函数?7下列哪两个是等同的int b;A const int* a = &b;B const* int a = &b;C const int* const a = &b;D int const* const a = &b;8内联函数在编译时是否做参数类型检查?void g(base & b) b.play;void main() son s; g(s); return;笔试内容包括:1。技术试题:系统windows/linux,网络基础,通信基础,数据库2。能力试题:根据两故事发表看法3。英语作文筛选后进入面试。共有四轮面试:问题一:两笔记本电脑连起来后拼不通,你觉得可能有哪些问题?问题二:我们在南京,和深圳的网络是通的,但和北京的网络不通,你以怎样的顺序检查问题?问题三:解释什么叫“透明”?什么叫“网格”?问题四:交换和路由的区别?vlan的特点?问题五:画一个积分电路和一个微分电路。问题六:知道现在的路由器是第几代了吗?问题一:两笔记本电脑连起来后拼不通,你觉得可能有哪些问题?答:首选想到是软件问题,软件问题首选查找是否安装有防火墙程序,如否则查看驱动程序有无问题,然后如果是WINDOWS的系统,再查看TCP/IP协议IP地址是否在一个子网,如果以上都无问题,则查看硬件,顺序是网卡网线。问题二:我们在南京,和深圳的网络是通的,但和北京的网络不通,你以怎样的顺序检查问题?答:首选要知道三方的网络拓朴结构与设计规划,然后确定北京地区网络内部是否畅通,网络是否是新建立了,如果不是新建的网,首先要知道以前是否通,如通,则此次不通是在做过什么操作后不通的,确定后首先排除线路故障,然后再看双方连接的路由设置。问题三:解释什么叫“透明”?什么叫“网格”?答:透明对用户来说是感觉不到的,也就是说不论对网络加了什么设备或软件,用户都感觉不到,这样的好处是简化了用户的操作复杂性。网络的概念,是说通过无线或有线将多种服务综合连接到一起,让用户彼此之间可以交换信息。问题四:交换和路由的区别?vlan的特点?答:交换和路由最大的区别在于交换是通过ASIC专用硬件处理数据,路由是通过CPU用软件的形式处理数据。VLAN的特点为将一个物理网络从逻辑上划分出了多个广播域1请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。2请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢?3请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?4请问C+的类和C里面的struct有什么区别?5请讲一讲析构函数和虚函数的用法和作用。6全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?全局变量是在所有函数之外声明的变量,局部变量则是在函数体内声明的变量。全局变量放在内存的全程数据区,局部变量在栈上申请。全局数据区分为两部分全局数据区和静态数据区,静态数据区专门存放static变量。static的全局变量只在该文件范围内可见,不能用extern声明为外部变量。 编译器会自动初始化全局变量。 全局变量的内存分配是静态的,位于PE文件在数据区,在main()前由C、C+运行期函数初始化,如果没有初值,会被初始化为0。局部变量的内存分配是动态的,位于线程堆栈中。如果没有初始化的,初值视当前内存内的值而定。局部变量是在栈中,外部变量是放在数据段,手动分配malloc的才是放在堆中。78086是多少位的系统?在数据总线上是怎么实现的?8086是Intel的16位微处理器,有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据,内部数据总线都是按16位设计的,单外部数据总线只有8条。1请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。答:OSI七层网络结构图应用层 表示层 会话层 传输层 网络层 数据链路层物理层TCP/IP的五层结构图应用层运输层网络层 数据链路层物理层2请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢?答:IP是Internet Protocol的简称,是网络层的主要协议,作用是提供不可靠、无连接的数据报传送。TCP是Transmit Control Protocol(传输控制协议)的缩写,在运输层,TCP提供一种面向连接的,可靠的字节流服务;UDP是User Datagram Protocol(用户数据报协议)的缩写,在运输层,UDP提供不可靠的传输数据服务3请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?答:交换机属于第二层即数据链路层设备。它根据地址寻址,通过站表选择路由,站表的建立和维护由交换机自动进行。路由器属于第三层即网络层设备,它根据地址进行寻址,通过路由表路由协议产生。交换机最大的好处是快速,路由器最大的好处是控制能力强。4请问C+的类和C里面的struct有什么区别?答:struct的成员的默认访问说明符为Public,而class的成员的默认访问说明符为Private。其他没有区别5请讲一讲析构函数和虚函数的用法和作用。答:析构函数是在对象生存期结束时自动调用的函数,用来释放在构造函数分配的内存。虚函数是指被关键字virtual说明的函数,作用是使用C+语言的多态特性 6全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?答:一些变量在整个程序中都是可见的,它们称为全局变量。一些变量只能在一个函数中可知,称为局部变量。这就是他们的区别。在任何函数外面定义的变量就是全局变量,在函数内部定义的变量是局部变量,这是它们在程序中的实现过程。操作系统和编译器是根据程序运行的内存区域知道他们的,程序的全局数据放在所分配内存的全局数据区,程序的局部数据放在栈区。78086是多少位的系统?在数据总线上是怎么实现的?答:8086的机器字长是16位,8086使用40个引脚的16个做地址/数据复用引腿来传输数据,一次读写过程由一个基本总线周期完成,它由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD、WR及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。可见,地址与数据信号不会同时出现在一个时钟(CLK)周期,二者可以分时复用同一组引线。a4:c+中的类具有成员保护功能,并且具有继承,多态这类oo特点,而c里的struct没有 a5:析构函数一般在对象撤消前做收尾工作,比如回收内存等工作,虚拟函数的功能是使子类可以用同名的函数对父类函数进行重载,并且在调用时自动调用子类重载函数,如果是纯虚函数,则纯粹是为了在子类重载时有个统一的命名而已。(说得不是很确切,自己随便找本c+的书都有说明) a6:全局变量的生命周期是整个程序运行的时间,而局部变量的生命周期则是局部函数或过程调用的时间段。其实现是由编译器在编译时采用不同内存分配方法。全局变量在main函数调用后,就开始分配,如果是静态变量则是在main函数前就已经初始化了。而局部变量则是在用户栈中动态分配的(还是建议看编译原理中的活动记录这一块) a8:8086系统是16位系统,其数据总线是20位,实现过程,微机原理上有,我也差不多忘了,呵呵 1完成下列程序*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.#include #define N 8int main() int i; int j; int k; - | | | | | | - return 0;2完成程序,实现对数组的降序排序#include void sort( );int main() int array=45,56,76,234,1,34,23,2,3; /数字任/意给出 sort( ); return 0;void sort( ) _ | | | | |-|3费波那其数列,1,1,2,3,5编写程序求第十项。可以用递归,也可以用其他方法,但要说明你选择的理由。#include int Pheponatch(int);int main() printf(The 10th is %d,Pheponatch(10); return 0;int Pheponatch(int N)-| | |-4下列程序运行时会崩溃,请找出错误并改正,并且说明原因。#include #include typedef struct TNode* left; TNode* right; int value; TNode;TNode* root=NULL;void append(int N);int main() append(63); append(45); append(32); append(77); append(96); append(21); append(17); / Again, 数字任意给出void append(int N) TNode* NewNode=(TNode *)malloc(sizeof(TNode); NewNode-value=N; if(root=NULL) root=NewNode; return; else TNode* temp; temp=root; while(N=temp.value & temp.left!=NULL) | (N=temp.value & temp.left!=NULL) temp=temp.left; while(N=temp.value) temp.left=NewNode; else temp.right=NewNode; return; MSRA Interview Written Exam(December 2003,Time:2.5 Hours) 1写出下列算法的时间复杂度。 (1)冒泡排序;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年第四届渔菁英比赛试题库及答案
- 2025年高考时事政治时事政治考试题库及答案
- 2025血吸虫报告试题及答案
- 2025行政领导学机试题及答案
- 2025年国家开放大学本科《中国法律史》期末考试试题及答案
- 5.2 三角函数的概念 高中数学人教A版必修一课时训练(含解析)
- 如何怀孕的教学课件图片
- 小学教学全解课件下载
- 教学缩写句子微课课件
- 车辆维保基础知识培训课件
- 中国邮政储蓄银行理财考试真题模拟汇编(共542题)
- 河北2023年邯郸银行内部审计人员招聘考试参考题库含答案详解
- 总经理助理岗位竞聘PPT范文-竞聘总经理助理演讲稿
- 世界范围内社区支持农业CSA(下)
- 急性缺血性脑卒中溶栓治疗
- NB∕T 10209-2019 风电场工程道路设计规范
- GB/T 4668-1995机织物密度的测定
- GB/T 17107-1997锻件用结构钢牌号和力学性能
- 校园文化施工组织设计范本
- 轨行区作业安全专项方案
- 大地的耳朵-阅读答案
评论
0/150
提交评论