中兴面试写代码.docx
- 文档编号:10321546
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:11
- 大小:22.10KB
中兴面试写代码.docx
《中兴面试写代码.docx》由会员分享,可在线阅读,更多相关《中兴面试写代码.docx(11页珍藏版)》请在冰点文库上搜索。
中兴面试写代码
竭诚为您提供优质文档/双击可除
中兴,面试,写代码
篇一:
中兴面试准备
笔试:
数据结构,数据库,软件工程,c比较少
指针,宏,switch,strcpy函数
指针(详见文档)
char*constcp;(*读成pointerto)
cpisaconstpointertochar
constchar*p;
pisapointertoconstchar;变量的存储类别
1.局部变量
自动变量(auto,离开函数,值就消失,每次重新赋值)
静态局部变量(函数内static定义的变量,离开函数,值仍存在)
寄存器变量(register,离开函数,值就消失,只有局部自动变量和形式参数可以作为寄存器变量)
2.全局变量
静态外部变量(只限本文件引用)
外部变量(非静态的外部变量,允许其他文件引用)一.冒泡法
冒泡法的适合与局部有序的序列,越是有序,时间复杂度越低,所以时间复杂度介于o
(1)~o(n^2),而楼主的那种选择排序时间复杂度是不变的,总是o(n^2).这两种方法都是可以改进的,前面几楼提到的快速排序就是冒泡的改进。
冒泡(须要进行几次比较,即比较次数为i*j。
)
voidsort(intarr[],intn)
{
inti,j,temp;
for(i=0;i {
for(j=0;j {
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
选择
voidsort(intarr[],intn)
{
inti,j,temp;
for(i=0;i {
for(j=i+1;j {
if(arr[i]>arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
二.0和1不是素数三.字节对齐
什么是对齐,以及为什么要对齐:
1.现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。
2.对齐的作用和原因:
各个硬件平台对存储空间的处理上有很大的不同。
一些平台对某些特定类型的数据只能从某些特定地址开始存取。
其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台的要求对数据存放进行对齐,会在存取效率上带来损失。
比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位)如果存放在偶地址开始的地方,那么一个读周期就可以读出,而如果存放在奇地址开始的地方,就可能会需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该int数据。
显然在读取效率上下降很多。
这也是空间和时间的博弈。
二、对齐的实现
通常,我们写程序的时候,不需要考虑对齐问题。
编译器会替我们选择适合目标平台的对齐
策略。
当然,我们也可以通知给编译器传递预编译指令而改变对指定数据的对齐方法。
但是,正因为我们一般不需要关心这个问题,所以因为编辑器对数据存放做了对齐,而我们不了解的话,常常会对一些问题感到迷惑。
最常见的就是struct数据结构的sizeof结果,出乎意料。
为此,我们需要对对齐算法所了解。
这里面有四个概念值:
1)数据类型自身的对齐值:
就是上面交代的基本数据类型的自身对齐值。
2)指定对齐值:
#pragmapack(value)时的指定对齐值value。
3)结构体或者类的自身对齐值:
其成员中自身对齐值最大的那个值。
4)数据成员、结构体和类的有效对齐值:
自身对齐值和指定对齐值中较小的那个值。
有了这些值,我们就可以很方便的来讨论具体数据结构的成员和其自身的对齐方式。
有效对齐值n是最终用来决定数据存放地址方式的值,最重要。
有效对齐n,就是表示“对齐在n上”,也就是说该数据的"存放起始地址%n=0".而数据结构中的数据变量都是按定义的先后顺序来排放的。
第一个数据变量的起始地址就是数据结构的起始地址。
结构体的成员变量要对齐排放,结构体本身也要根据自身的有效对齐值圆整
四.swtich
switch(c)中的c的数据类型有哪些?
char,int,bool,long;不能是float,longdouble,double这类型的
你是否在所有的switch中都加了default语句?
是否在所有的case中都加了break语句(一般情况的做法)?
如果你不加break,将会发生什么?
不加break,则顺序执行下面的所有case,因为case常量表达式只是起到语句标号作用,并不在该处进行条件判断。
五.字符串相关问题,strcpy函数char*strcpy1(char*strdest,constchar*strsrc)
{
assert((strdest!
=null)//断言判断指针不能为空char*temp=strdest;
while((*strdest++=*strsrc++)!
=\0);//取每一个字逐一符赋值改变指针指,变量本身值也改变
//(先取值再赋值,循环,判断)
returntemp;
}
2【建议6-2-1】有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,
可以附加返回值。
例如字符串拷贝函数strcpy的原型:
char*strcpy(char*strdest,constchar*strsrc);
strcpy函数将strsrc拷贝至输出参数strdest中,同时函数的返回值又是strdest。
这样做并非多此一举,可以获得如下灵活性:
charstr[20];
intlength=strlen(strcpy(str,“helloworld”));
计算机网络
一.osi模型
osi模型的各个层次为:
n应用层这是osi模型中的最高层次,它负责管理网络应用程序之间的交流。
这一层并不是应用程序本身,尽管有一些应用程序可能会执行应用层的功能。
应用层协议的例子包括文件传输协议(Ftp)、超文本传输协议(http)、简单邮件传送协议(smtp)和telnet。
n表示层这层负责数据演示、加密与压缩。
n会话层会话层负责建立并管理终端系统之间的对话。
会话层协议在很多协议中都不使用。
会话层协议的例子包括netbios与远程过程调用(Rpc)。
n传输层这层负责程序或者过程之间的交流。
端口或者插口的数目可以用来识别这些特殊的过程。
传输层协议的例子包括传输控制协议(tcp)、用户数据报协议(udp)和顺序分组交换协议(spx)。
n网络层这层负责从来源主机访问,并向目的主机传送的数据包。
网络层从传输层得到数据,把它装在一个数据包或者数据报中。
逻辑网址通常被分配给这层的主机。
网络层协议的例子包括ip与ipx。
n数据链接层这层负责在相同的物理区段中的网卡之间传输数据。
数据链接层进行的对话通常都是基于硬件的地址进行的。
数据链接层把来自网络层的数据包装到一个帧中。
数据链接层协议的例子包括以太网、令牌环与点对点协议(ppp)。
在这层运行的设备包括连接桥与交换机。
n物理层这层定义了连接器和接线方式,还有关于电压和字节如何通过有线(或无线)介质传播的说明。
这层的设备包括中继器、集中器和hub。
在物理层运行的设备不需要了解传输路径。
二.移动联通电信的3g制式
gsm指的是第二代移动通信技术。
cdma也是第二代移动通信技术。
最初由联通运营,后来卖给电信。
。
联通3g就是wcdma网络。
是联通从欧洲引技术的第三代移动通信技术,是目前全球应用最广,技术最成熟的3g网络。
。
移动3g就是td-scdma网络,是中国自主研发的3g网络。
电信3g就是cdma2000网络。
也是引进技术,是从cdma的基础上升级的3g网络。
。
篇二:
中兴通讯面试笔试题含答案详解
以下是几个同学今天面完后回顾的题目,希望对大家有所帮助
1.dll什么意思,
dll是一个包含可由多个程序同时使用的代码和数据的库。
例如,在windows操作系统中,comdlg32dll执行与对话框有关的常见函数。
因此,每个程序都可以使用该dll中包含的功能来实现“打开”对话框。
这有助于促进代码重用和内存的有效使用。
通过使用dll,程序可以实现模块化,由相对独立的组件组成。
例如,一个计帐程序可以按模块来销售。
可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。
因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。
此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。
例如,您可能具有一个工资计算程序,而税率每年都会更改。
当这些更改被隔离到dll中以后,您无需重新生成或安装整个程序就可以应用更新。
2。
动态链接库与静态链接库的区别
静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(dll)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从dll中寻找相应函数代码,因此需要相应dll文件的支持。
静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都全部被直接包含在最终生成的exe文件中了。
但是若使用dll,该dll不必被包含在最终exe文件中,exe文件执行时可以“动态”地引用和卸载这个与exe独立的dll文件。
静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。
3。
死锁
所谓死锁:
是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。
此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象:
死锁。
”
3。
队列和栈的区别
这个事做编译环境时人工与编程好了的
内存中不存在这样的结构,内存是一张“空白纸”,停电就啥也没有了……
--------
报根据其目的主机的ip地址进行在internet中的路由选择。
传输层协议为应用层提供的是进程之间的通信服务。
为了在给定的主机上能识别多个目的地址,同时允许多个应用程序在同一台主机上工作并能独立地进行数据报的发送和接收,tcp/udp提供了应用程序之间传送数据报的基本机制,它们提供的协议端口能够区分一台机器上运行的多个程序。
也就是说,tcp/udp使用ip地址标识网上主机,使用端口号来标识应用进程,即tcp/udp用主机ip地址和为应用进程分配的端口号来标识应用进程。
端口号是16位的无符号整数,tcp的端口号和udp的端口号是两个独立的序列。
尽管相互独立,如果tcp和udp同时提供某种知名服务,两个协议通常选择相同的端口号。
这纯粹是为了使用方便,而不是协议本身的要求。
利用端口号,一台主机上多个进程可以同时使用tcp/udp
提供的传输服务,并且这种通信是端到端的,它的数据由ip传递,但与ip数据报的传递路径无关。
7。
物理层解释
7。
覆盖
在面向对象的编程中,一般出现在继承(inheritance)。
当子类声明了与基类相同名字的方法,而且使用了相同的签名时,就称派生类的成员覆盖(hide)了基类的成员。
面向对象编程(oop)的三大特性:
封装,继承,多态!
重载overload)和覆盖都能实现多态,但是真正和多态相关的是覆盖!
在c#语言中,
遇到子类覆盖掉基类中的方法(名称和签名相同),编译器会报错!
所以在c#中规定:
如果的确是要定义一个新的方法,那么建议使用new关键字;如果是需要覆盖基类中的方法,那么必须使用override关键字。
覆盖是代数几何中的基本概念之一。
两个同维数的代数簇之间的满态射f:
x→y称为x到y的覆盖。
y上每个点在f下的原像是一些点,这些点的个数是一个常数,记为degf,称为覆盖次数。
覆盖的技巧是研究代数几何的重要工具。
比如在研究基变换、典范映射,奇点等等问题时都会涉及到覆盖。
肖刚等人曾经用二次覆盖的技巧解决了很多重要的的代数曲面分类问题
1.堆和栈的区别,栈的后进先出;
栈栈是限定插入和删除操作都在表的同一端进行的线性表。
允许插入和删除元素的一端称为栈顶,另一端为栈底;栈底固定,栈顶浮动。
由于栈按照后进先出的原则存储数据,故也称为后进先出表。
栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈可以用来在函数调用的时候存储断点,做递归时要用到栈。
队列队列是限定在表的一端插入、另一端删除的线性表。
允许插入元素的一端称为队尾,允许删除元素的一端称为队头。
由于队列按照先进先出的原则存储数据,故也称为先进先出表。
克服队列假溢出的方法:
采用循环
队列。
堆堆是一棵经过排序的完全二叉树。
堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
根节点值最小的堆叫最小堆,根结点值最大的叫最大堆。
由于堆的这个特性,常用来实现优先权队列;堆也用于排序算法,如堆排序。
2.虚函数的作用;虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。
3.sql创建表;
4.数据库主键和外键,id是什么主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。
外键是一个用来建立两个表格之间关系的约束。
建立外键后,在插入数据时候会检测数据在主键表中是否存在,如果不存在则无法插入,通过这可以提高维护数据库的完整性和一致性5.chara[]="hello";sizeof(a)等于多少?
charstr[]="hello";inta=sizeof(str);
a的值是a=sizeof(str)
str是字符串,每个字符是1个字节,共5+1个\0,那a=6
6.char*p;p指向内存地址0001,问p++指向哪?
(32位机)
7.#defineFun(a,b)a+b问有问题么?
因为是宏,所以和类型没有关系,关键是代换后的运算优先级问题。
篇三:
中兴面试
1>某人在某个市场某个商家买了某台电脑,请用你熟悉的计算机语言表达出里面的关系.
其中有商家类,买家类,商品类。
还要有买方法,卖方法。
2>一个完整的单例模式
3>曹操南下攻打刘备,刘备派关羽守锦州,关羽派张飞去守城门。
刘备又派诸葛亮去向孙权求援。
孙权派兵攻打曹操!
请画出uml图
20xx年12月中兴在我们学校的笔试,最后的大题
(其实这些大公司的笔试不难,也不就是如此,只要学一下数据结构就可以搞定!
)
排序及查找方法
#include
#include
#definen11
/*用监视哨查找*/
intsearch(intarray[],intn,intk)
{inti;
i=n-1;
array[0]=k;
while(array[i]!
=k)i--;
return(i);
}
/*折半查找法*/
inthalfsearch(intarray[],intn,intk)
{inti,j,mid;
i=1;j=n;
while(i {mid=(i+j)/2;
if(k==array[mid])return(mid);
elseif(k elsei=mid+1;
}
return(0);
}
/*冒泡排序法*/
voidmpsort(intarray[])
{inti,j,a;
a=0;
for(i=1;i for(j=i+1;j if(array[i]>array[j])
{a=array[i];
array[i]=array[j];
array[j]=a;}
}
/*直接插入排序*/
voidinsertsort(intarray[])
{inti,j;
for(i=2;i {array[0]=array[i];
j=i-1;
while(array[0] {array[j+1]=array[j--];
array[j+1]=array[0];
}
}
}
/*建立*/
voidcreat(intarray[])
{inti;
printf("enterthearray:
\n");
for(i=1;i scanf("%d",
}
/*显示*/
voidprint(intarray[])
{inti;
printf("thenumbersaftersortis:
\n");
for(i=1;i printf("%d",array[i]);
printf("\n");
}
main()
{inta[11],i,x,chang;
/*printf("enterthearray\n");
for(i=1;i scanf("%d",*/
aga:
printf("\nchang:
1:
usewatchingmethodfinding\nfinding\n3:
usedirectnessintsertmethodsort\nmethodsort\n5:
exit\n");
scanf("%d",
switch(chang)
{case1:
{creat(a);
printf("pleaseintthesearchnumber:
\n");
scanf("%d",
printf("thenumberstationis:
%d\n",search(a,n,x));gotoaga;
}
case2:
{creat(a);2:
usehalfmethod4:
usebubbleup
insertsort(a);
print(a);
printf("pleaseintthesearchnumber:
\n");
scanf("%d",
printf("thenumberstationis:
%d\n",halfsearch(a,n,x));gotoaga;
}
case3:
{creat(a);
insertsort(a);
print(a);
gotoaga;
}
case4:
{creat(a);
mpsort(a);
print(a);
gotoaga;
}
case5:
{printf("exit!
\n");break;}
default:
{printf("error!
\n");gotoaga;}
}
}
二、线性链表的存储实现
structlnode{
elemtypedata;
structlnode*next;
};
typedefstructlnodelnode;
typedefstructlnode*linklist;
1初始化操作
statusinit_l(linklistl){
if(l=(linklist*)malloc(sizeof(lnode)))
{l->next=null;return1;}
elsereturn0;
}
2插入操作
statuslistinsert_l(linklist
while(p++j;}
if(!
p||j>i-1)returneRRoR;
s=(linklist)malloc(sizeof(lnode));
s->data=e;s->next=p->next;
p->next=s;
returnok;
}//listinsert_l
3删除操作
statuslistdelete_l(linklist
while(p++j;}
if(!
p->next||j>i-1)returneRRoR;
q=p->next;p->next=q->next;
e=q->data;free(q);
returnok;
}//listdelete_l
4取某序号元素的操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中兴 面试 代码