中兴软创笔试前的一些准备

【练习1】

1、try{

a+=4;
return 1;
}catch(Exception e){
e.printStackTrace();
return -1;
}finally{
return 0;
}


执行结果:返回finally 中的 0


2、truncat table 删除表中所有的记录
答:
a.DELETE
 ?DML语言
 ?可以回退
 ?可以有条件的删除


     DELETE FROM 表名
   WHERE 条件


b.TRUNCATE TABLE
 ?DDL语言
 ?无法回退
 ?默认所有的表内容都删除
 ?删除速度比delete快。


   TRUNCATE TABLE 表名


drop>truncate>delete


3、视图中的select可以存在order by、group by
4、创建只读视图:with read only
5、to_data('05-20-2009 11:56:56','MM-DD-YYYY HH24:MI:SS')
6、修改列类型,修改列值
update sala set salary = +90000


7、为什么使用多线程?
答:线程是为了能同步完成多项任务,而不是为了提高运行效率,是为了提高资源使用率来提高系统的效率,线程是在同一时间需要完成多项任务的时候实现的。
线程的好处:
使用线程可以把占据长时间的程序中的任务放到后台中去处理
a、用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理进度
b、程序的运行速度可能加快
c、在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等
线程的缺点:争用条件、死锁、活动锁、资源耗尽。
8、协议
OSI网络的七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
ppp(公私合作关系):数据链路层
ICMP(Internet控制信息协议):网络层

HTTP:应用层

【练习2】

1、char *GetMemory(void)
{
char p[]="hello world";
return p;
}
void Test(void)
{
char *str =NULL;
str = GetMemory();
printf(str);
}
请问Test运行结果?
答:可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是NULL,但其原先的内存已经被清除,新内容不可知。


2、析构函数什么时候运行,实现什么功能?
构造涵数->初始化->对象生成的时候调用
析构函数->清理->对象生命周期结束时调用
3、全局变量与局部变量的区别
全局变量和局部变量的区别主要在于生存周期不同,全局变量在整个程序生成期间可见,局部变量在自己的作用域内可见。全局变量的内存分配是静态的,位于PE文件在数据区,在main()前由C、C++运行期函数初始化,如果没有初值,会被初始化为0。局部变量的内存分配是动态的,位于线程堆栈中。如果没有初始化的,初值视当前内存内的值而定。


3、对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现?
答案:将操作多个表的操作放入到事务中进行处理。


4、TCP/IP建立连接的过程?
答案:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端接收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。


5、ICMP是什么协议?处于哪一层?
答案:Internet控制报文协议,处于网络层(IP层)。


6、触发器怎么工作的?
答案:触发器主要是通过事件进行触发而被执行的,当对某一表进行诸如UODATE、INSERT、DELETE这些操作时,数据库就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。


7、winsock建立连接的主要实现步骤?
答案:服务器端:socket()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。
客户端:socket()建立套接字,连接(connet)服务器,连接上后使用send()和recv(),在套接字上读写数据,直至数据交换完毕,close socket()关闭套接字。
服务端:accept()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接,该新2产生的套接字使用send()和recv()写读数据,直至数据交换完毕,close socket()关闭套接字。


8、动态链接库的两种方式?
a、载入时动态链接(load-time dynameic lining),模块非常明确调用某个导出函数,使得他们呢就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。
b、运行时动态链接(run-time dynamic linking),运行时可以通过LoadLinbrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProAddress获取DLL函数的出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了。


9、IP组播有哪些好处?
答案:Internet上产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽的集聚消耗和网络拥挤问题。组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。所以说组播技术的核心就是针对如何节约网络资源的前提下保证服务质量。

【练习3】

1、const和#define的区别?
答:define只是用来做文本替换, define 常量的生命周期止于编译期,它存在于程序的代码段,在实际程序中它只是一个常数,一个命令中的参数并没有实际的存在;
const 常量存在于程序的数据段,并在堆栈中分配了空间。 const 常量在程序中确确实实的存在并可以被调用、传递。const常量有数据类型,而宏常量没有数据类型。编译器可以对const常量进行类型安全检查。


2、#include<filename.h>和include “finename.h”有什么区别?
答:#include<filename.h>系统检索头文件时 会先从系统文件里开始找,再找其他地方。用于系统文件较快。
#include"filename.h"系统检索头文件时先从程序所处目录开始查找。用于自定义文件较快。


3、编写一个宏,输入2个参数,输出结果为两个参数的乘积。
#define Count(x,y) (x)*(y)


4、char str[] = "Hello" ,计算sizeof(str)的数值
答:sizeof(str) = 6


5、写出float x与“零值”比较的if语句。
if((x>-0.000001)&&(x<0.000001))


6、写出char *p与"零值"比较的if语句
if(p==NULL)


7、写一个函数,判定运行环境(16位以上字长)是little-endian还是big-endian?
答:
int p = 0x12345678;
char *ptr;
ptr = (char *)&p;
printf("ptr=0x%x\n",*ptr);


8、结构体和联合体的主要区别?
答:结构体是多个数据的集合,可以保存多个数据
而联合union只保存一个数据,但是可以按照不同类型来读取。
比如你的联合里面有一个int和一个float,你第一次写进int,然后第二次写进float,那么int就不可用了(或者说读出来已经不是你存的int值了),因为这个union所在的内存区域值已经是第二次写进的float了。
结构体变量所占内存长度是各成员占的内存长度的总和。
共同体变量所占内存长度是各最长的成员占的内存长度。


9、操作系统的主要组成部分?
答:内核、驱动程序、外围、接口库


10、操作系统中进程调度策略有哪几种?
1,SCHED_OTHER 分时调度策略,
2,SCHED_FIFO实时调度策略,先到先服务
3,SCHED_RR实时调度策略,时间片轮转


11、进程间主要通讯方式?
答:共享内存、消息队列、管道、信号、信号量、内存映射、socket


12、写出进程的主要状态?
答:等待、就绪、运行。


13、Internet采用哪种网络协议?该协议的主要层次结构?
答:TCP/IP协议。网络接口层、网络层、传输层、应用层。


14、以太网物理地址和IP地址采用什么协议?
答:ARP和RARP


15、IP地址的编码分为哪两部分?
答:主机号和网络号


16、写出以太网数据帧格式?
答:前导码(7字节)、帧起始定界符(1字节)、目的MAC地址(6字节)、源MAC地址(6字节)、类型/长度(2字节)、数据(46~1500字节)、帧校验序列(4字节)


17、8031和8051的主要区别?
答:8031片内无ROM,必须扩展,而8051内部有。


18、分析一下程序的执行结果
#include <iostream.h>
class bass
{
public:
base(){cout<<"constructing base class"<<endl;}
~base(){cout<<"destructing base class"<<endl;}
};
class subs:public base
{
public:
subs(){cout<<"constructing sub class"<<endl;}
~subs(){cout<<"destructing sub class"<<endl;}
};
void main()
{
subs s;
}


答:
constructing base class
constructing sub class
destructing sub class
destructing base class


19、指出下面程序的错误
#define SIZE 5
struct String
{
char *pData;
};
void main()
{
char acValue1[SIZE] = {'H','E','L','L','O'};
char acValue2[SIZE] = {'W','O','R','L','D'};


struct  String a,b,c;
a.pData=(char *)malloc(SIZE*sizeof(char));
memcpy(a.pData,acValue1,SIZE);
b.pData = (char *)malloc(SIZE*sizeof(char));
memcpy(b.pData,acValue2,SIZE);
b=a;
free(a.pData);
c= b;
}
答:将a free掉后,b,c指向空


20、指出下面两段程序的区别
【1】
main()
{
int loop = 1;
int arr[10];
int i=0;
while(loop<5)
{
for(;i<=10;i++)
{
arr[i]=1;
}
loop++;
}
}
【2】
main()
{
int arr[10];
int loop = 1;
int i=0;
while(loop<5)
{
for(i=0;i<=10;i++)
{
arr[i]=1;
}
loop++;
}
}
答:【2】中会给数组arr[]幅值五十次,【1】中只给数组幅值10次。


21、指出下面程序的错误(哈数GetValue返回unsigned char 类型的值)
#define MAXNUM 400
unsigned char ucIndex,ucInputVar,Array[MAXNUM];
for(ucIndex=0;ucIndex<=MAXNUM;ucIndex++)
{
aucArray[ucIndex]=aucArray[ucIndex]+1;
}
ucInputVar = GetValue();
for(ucIndex=0;ucIndex>(ucInputVar-1);ucIndex++)
{
aucArray[ucIndex]=aucArray[ucIndex]*2+1;
}

【练习4】

1、面向连接和非连接的服务的特点是什么?
答:网络提供的服务分两种: 面向连接的服务和无连接的服务. 
对于无连接的服务(邮寄), 发送信息的计算机把数据以一定的格式封装在帧中, 把目的地址和源地址加在信息头上, 然后把帧交给网络进行发送. 无连接服务是不可靠的. 
对于面向连接的服务(电话), 发送信息的源计算机必须首先与接收信息的目的计算机建立连接. 这种连接是通过三次握手(three hand shaking)的方式建立起来的. 一旦连接建立起来, 相互连接的计算机就可以进行数据交换. 与无连接服务不同, 面向连接的服务是以连接标识符来表示源地址和目的地址的. 面向连接的服务是可靠的, 当通信过程中出现问题时, 进行通信的计算机可以得到及时通知


2、预防死锁的若干方法?
答:1、有序资源分配法
    2、银行家算法
产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。


3、以太网数据帧格式?
答:前导码(7字节)、帧起始定界符(1字节)、目的MAC地址(6字节)、源MAC地址(6字节)、类型/长度(2字节)、数据(46~1500字节)、帧校验序列(4字节)


4、主键和唯一引索的区别?
答:主键不能为空,唯一引索可以为空,当创建主键或者唯一约束的时候会自动创建唯一引索


5、中断装置的主要职能?
【1】检查是否有中断事件发生;
【2】若有中断发生,保护好被中断进程的断点及现场信息,以便进程在适当时候能恢复执行;
【3】启动操作系统的中断处理程序。


6、父类中定义为public、protected、private的函数,在public、protected、private方式派生类中的访问权限?


public方式,继承父类后,父类中的public,protected内的变量和成员函数对子类一样效果。
protected:继承后,父类中的public类型自动降为子类protectd类型
private继承后,父类中的public,protected自动降为子类中的private类型。


7、8&3=0


8、已经初始化了一个数组Data,问怎么用Sizeof()求出数组的元素个数?
答:Sizeof(Data)/sizeof(数组数据类型)


9、销毁一个子类的对象时,先调用子类的析构函数,在调用父类的析构函数


5、软件实践中不提倡使用(i++)+(++i)......的原因是?



【实际笔试】

现在回想当时的笔试也比较模糊了,我记得中兴软创主要考试的分为两大部分:

第一部分是:考数据库的。一些比较基础的考核。包含表的创建、增、删、改、查。如果你有认真学一下数据库的话,基本上这个部分随便考你都是可以通过的。

第二部分是C/C++的基础了。我大概只记得后面的一道是:不调用库函数实现整形与字符串的转换。

【二面】

二面试,我是在福大那边参加的。一个是女的,应该是HR、一个是他们的技术负责人。面试过程比较顺利。人资问了很多问题,我基本上都回答过了。然后是他的技术问题。问的第一个是关于单链表的查找倒数第M个元素;第二个是双链表的逆序。

【三面】

是他们的老总的面试。进入这边面试,让我感觉很奇怪。可能是老板吧!就是不一样,室内很黑,老板电灯开都不想开,很是奇怪。这个面试老板谈内容也不是技术的事情。问了一下问题。你兴趣爱好?平时读什么书目?等等

【寄望】

以上是我的一些总结,希望对阅读者有些帮助。
















































































































































































展开阅读全文

没有更多推荐了,返回首页