1.在减速电压VG2P=0时,能否记录到Ip的谁说没有规则说课稿起伏?

弗兰克—赫兹实验1914年,弗兰克(Franck,J.)和赫兹在研究中发现电子与原子发生非弹性碰撞时能量的转移是量子化的。他们的精确测定表明,电子与汞原子碰撞时,电子损失的能量严格地保持4.9eV,即汞原子只接收4.9eV的能量。这个事实直接证明了汞原子具有玻尔所设想的那种“完全确定的、互相分立的能量状态”,是对玻尔的原子量子化模型的第一个决定性的证据。由于他们的工作对原子物理学的发展起了重要作用,曾共同获得1925年的物理学诺贝尔奖[1]。在本实验中可观测到电子与汞蒸汽原子碰撞时的能量转移的量子化现象,测量汞原子的第一激发电位,从而加深对原子能级概念的理解。【仪器】弗兰克—赫兹管(简称F—H管)、加热炉、温控装置、F—H管电源组、扫描电源和微电流放大器、微机X—Y记录仪。F—H管是特别的充汞四极管,它由阴极、第一栅极、第二栅极及板极组成。为了使F—H管内保持一定的汞蒸气饱和蒸气压,实验时要把F—H管置于控温加热炉内。加热炉的温度由控温装置设定和控制。炉温高时,F—H管内汞的饱和蒸气压高,平均自由程较小,电子碰撞汞原子的概率高,一个电子在两次与汞原子碰撞的间隔内不会因栅极加速电压作用而积累较高的能量。温度低时,管内汞蒸气压较低,平均自由程较大,因而电子在两次碰撞间隔内有可能积累较高的能量,受高能量的电子轰击,就可能引起汞原子电离,使管内出现辉光放电现象。辉光放电会降低管子的使用寿命,实验中要注意防止。F—H管电源组用来提供F—H管各极所需的工作电压。其中包括灯丝电压UF,直流1V~5V连续可调;第一栅极电压UG1,直流0~5V连续可调;第二栅极电压UG2?,直流0~15V连续可调。扫描电源和微电流放大器,提供0~90V的手动可调直流电压或自动慢扫描输出锯齿波电压,作为F—H管的加速电压,供手动测量或函数记录仪测量。微电流放大器用来检测F—H管的板流,其测量范围为10-8A、10-7A、10-6A三挡。微机X—Y记录仪是基于微机的集数据采集分析和结果显示为一体的仪器。供自动慢扫描测量时,数据采集、图像显示及结果分析用。【原理】玻尔的原子理论指出:①原子只能处于一些不连续的能量状态E1、E2……,处在这些状态的原子是稳定的,称为定态。原子的能量不论通过什么方式发生改变,只能是使原子从一个定态跃迁到另一个定态;②原子从一个定态跃迁到另一个定态时,它将发射或吸收辐射的频率是一定的。如果用Em和En分别代表原子的两个定态的能量,则发射或吸收辐射的频率由以下关系决定:hv=|Em-En|(45—1)式中:h为普朗克常量。原子从低能级向高能级跃迁,也可以通过具有一定能量的电子与原子相碰撞进行能量交换来实现。本实验即让电子在真空中与汞蒸气原子相碰撞。设汞原子的基态能量为E1,第一激发态的能量为E2,从基态跃迁到第一激发态所需的能量就是E2-E1。初速度为零的电子在电位差为U的加速电场作用下具有能量eU,若eU小于E2-E1这份能量,则电子与汞原子只能发生弹性碰撞,二者之间几乎没有能量转移。当电子的能量eU≥E2-E1时,电子与汞原子就会发生非弹性碰撞,汞原子将从电子的能量中吸收相当于E2-E1的那一份,使自己从基态跃迁到第一激发态,而多余的部分仍留给电子。设使电子具有E2-E1能量所需加速电场的电位差为U0,则eU0=E2-E1(45—2)式中:U0为汞原子的第一激发电位(或中肯电位),是本实验要测的物理量。实验方法是,在充汞的F—H管中,电子由热阴极发出,阴极K和第二栅极G2之间的加速电压UG2K?使电子加速。第一栅极对电子加速起缓冲作用,避免加速电压过高时将阴极损伤。在板极P和G2间加反向拒斥电压UpG2?。当电子通过KG2空间,如果具有较大的能量(≥eUpG2?)就能冲过反向拒斥电场而达到板极形成板流,被微电流计pA检测出来。如果电子在KG2空间因与汞原子碰撞,部分能量给了汞原子,使其激发,本身所剩能量太小,以致通过栅极后不足以克服拒斥电场而折回,通过电流计pA的电流就将显著减小。实验时,使栅极电压UG2K?由零逐渐增加,观测pA表的板流指示,就会得出如图45—2所示Ip~UG2K?关系曲线。它反映了汞原子在KG2空间与电子进行能量交换的情况。当UG2K?逐渐增加时,电子在加速过程中能量也逐渐增大,但电压在初升阶段,大部分电子达不到激发汞原子的动能,与汞原子只是发生弹性碰撞,基本上不损失能量,于是穿过栅极到达板极,形成的板流Ip随UG2K?的增加而增大,如曲线的oa段。当UG2K?接近和达到汞原子的第一激发电位U0时,电子在栅极附近与汞原子相碰撞,使汞原子获得能量后从基态跃迁到第一激发态。碰撞使电子损失了大部分动能,即使穿过栅极,也会因不能克服反向拒斥电场而折回栅极。所以Ip显著减小,如曲线的ab段。当UG2K?超过汞原子第一激发电位,电子在到达栅极以前就可能与汞原子发生非弹性碰撞,然后继续获得加速,到达栅极时积累起穿过拒斥电场的能量而到达板极,使电流回升(曲线的bc段)。直到栅压UG2K?接近二倍汞原子的第一激发电位(2U0)时,电子在KG2间又会因两次与汞原子碰撞使自身能量降低到不能克服拒斥电场,使板流第二次下降(曲线的cd段)。同理,凡(45—3)处,Ip都会下跌,形成规则起伏变化的Ip~UG2K?曲线。而相邻两次板流Ip下降所对应的栅极电压之差,就是汞原子的第一激发电位U0。处于第一激发态的汞原子经历极短时间就会返回基态,这时应有相当于eU0的能量以电磁波的形式辐射出来。由式(45—2)得eU0=hν=h·c/λ(45—4)式中:c为真空中的光速;λ为辐射光波的波长。利用光谱仪从F—H管可以分析出这条波长λ=253.7(nm)的紫外线。【实验要求】1)测绘F—H管Ip~UG2K?曲线,确定汞原子的第一激发电位(1)加热炉加热控温。将温度计棒插入炉顶小孔,温度计棒上有一固定夹用来调节此棒插入炉中的深度,固定夹的位置已调整好,温度计棒插入小孔即可。温度计棒尾端电缆线连接到“传感器”专用插头上,将此传感器插头插入控温仪后面板专用插座上。接通控温电源,调节控温旋钮,设定加热温度(本实验约180℃),让加热炉升温30min,待温控继电器跳变时(指示灯同时跳变)已达到预定的炉温。(2)测量F—H管的Ip~UG2K?曲线。实验仪的整体连接可参考图45—3,将电源部分的UF调节电位器、扫描电源部分的“手动调节”电位器旋钮旋至最小(逆时针方向)。扫描选择置于“手动”挡。微电流放大器量程可置于10-7A或10-8A挡(对充汞管)。待炉温到达预定温度后,接通两台仪器电源。根据提供的F—H管参考工作电压数据,分别调节好UF、UG1、UG2?,预热3~5min。(a)手动工作方式测量。缓慢调节“手动调节”电位器,增大加速电压,并注意观察微电流放大器出现的峰谷电流信号。加速电压达到50V~60V时约有10个峰出现。在测量过程中,当加速电压加到较大时,若发现电流表突然大幅度量程过载,应立即将加速电压减少到零,然后检查灯丝电压是否偏大,或适当减小灯丝电压(每次减小0.1V~0.2V为宜)再进行一次全过程测量。逐点测量Ip~UG2K?的变化关系,然后,取适当比例在毫米方格纸上作出Ip~UG2K?曲线。从曲线上确定出Ip的各个峰值和谷值所对应的两组UG2K?值,把两组数据分别用逐差法求出汞原子的第一激发电位U0的两个值再取平均,并与标准值4.9V比较,求出百分差。若在全过程测量中,电流表指示偏小,可适当加大灯丝电压(每次增大0.1V~0.2V为宜)(b)自动扫描方式测量。将“手动调节”电位器旋到零,函数记录仪先不通电,调节“自动上限”电位器,设定锯齿波加速电压的上限值。可先将电位器逆时针方向旋到最小,此时输出锯齿波加速电压的上限值约为50V,然后将“扫描选择”开关拨到“自动”位置。当输出锯齿波加速电压时,从电流表观察到峰谷信号。锯齿波扫描电压达到上限值后,会重新回复零,开始一次新的扫描。在数字电压表、电流表上观察到正常的自动扫描及信号后,可采用函数记录仪记录。记录仪的X输入量程可置于5V/cm档,Y输入量程可按电流信号大小来选择,一般可先置于0.1V/cm档。开启记录仪,即可绘出完整的Ip变化曲线。【注意事项】(1)实验装置使用220V交流单相电源,电源进线中的地线要接触良好,以防干扰和确保安全。(2)函数记录仪的X输入负端不能与Y输入的负端连接,也不能与记录仪的地线(⊥)连接,否则要损坏仪器。(3)实验过程中若产生电离击穿(即电流表严重过载现象)时,要立即将加速电压减少到零。以免损坏管子。(4)加热炉外壳温度较高,移动时注意用把手,导线也不要靠在炉壁上,以免灼伤和塑料线软化。
相关问题略懂社热议相关搜索
hey! 我们在略懂,邀你速体验软件笔试题(1)
1、局部变量能否和全局变量重名?
答:能,局部会屏蔽全局。要用全局变量,需要使用"::"。局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。
2、如何引用一个已经定义过的全局变量?
答:extern,可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。
3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
答:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。
4、语句for( ;1 ;)有什么问题?它是什么意思?
答:死循环,无限循环,和while(1)相同。
5、do……while和while……do有什么区别?
答:前一个循环一遍再判断,后一个判断以后再循环。
6、请写出下列代码的输出内容
nclude&stdio.h&
int a,b,c,d;
printf("b,c,d:%d,%d,%d",b,c,d);
答:10,12,120
判断题(对的写T,错的写F并说明原因,每小题4分,共20分)
1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。
2、int (*ptr) (),则ptr是一维数组的名字。
答:错误,ptr是一个函数指针。
3、指针在任何情况下都可进行&, &,
&=, &=, = =运算。
答案:错误。如果不谈比较的意义,答案是肯定的。就算在没有赋初值得时候也是可以比较的。比较的意义:不同类型的指针不强制类型转换
(没有意义),没有意义的指针(比方说同类型的没有初始化的指针)比较(没有意义)。一般不在相同的存储区域(堆、栈、静态存储空间)内
(没有意义)。因为函数指针就不能这样操作。只有当指针指向一个函数的时候不能对它进行这些操作。
4、switch(c) 语句中c可以是int, long, char, float, unsigned
int 类型。
答:错误,因为C只可以是整型。
5、#define print(x)& printf("the
no, "#x",is ")
答:正确!简单说,它的意思就是使用参数被双引号包住。#@是使参数用引号包住。##是粘结。
填空题(共30分)
1、在windows下,写出运行结果,每空2分,共10分。
char str[ ]= "Hello";
sizeof(str) =(&
sizeof(p)&
sizeof(n)&
void func(char str[100])
sizeof(str)=(&&
void setmemory(char **p, int num)
*p=(char *) malloc(num);
void test(void)
char *str=NULL;
setmemory(&str,100);
strcpy(str,"hello");
printf(str);
运行test函数有什么结果?(hello)10分
设int arr[]={6,7,8,9,10};
&&*(ptr++)+=123;
&&printf("%d,%d",*ptr,*(++ptr));
10分//先计算++ptr,指针变动,就输出两个了
编程题(第一小题20,第二小题30分)
1、& 不使用库函数,编写函数int
strcmp(char& *source, char *dest)
&相等返回0,不等返回-1;
int strcmp(char *source, char *dest)
while(*source==*dest &&
*source!='\0' && *dest!='\0')
if(*source=='\0' &&
*dest=='\0')
&&& return
&&& return
int strcmp(char *source, char *dest)
while(*source++ == *dest++);
&&& return
*(--source) - *(--dest);
int strcmp(char *source, char *dest)
while ( (*source != '/0')
&& (*source == *dest))
source++; dest++;
return ( (*source) - (*dest) ) ? -1 : 0;
2、&&&&&&&
写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1
int fun(char *p)
int len = strlen(p) - 1;
char *q = p +
if (!p) return -1;
while (p & q)
if ((*p++) != (*q--))
1.请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。
应用层 ……………应用层 …………数据
表示层 ……………应用层 …………数据
会话层 ……………应用层 …………数据
传输层 ……………传输层 …………段
网络层…………… 互联网层……… 包
数据链路层 ………网络接口层 ……帧
物理层 ……………网络接口层 ……比特流
2.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢?
IP协议(Internet
Protocol)又称互联网协议,是支持网间互连的数据报协议,它与TCP协议(传输控制协议)一起构成了TCP/IP协议族的核心。它提供网间连接的完善功能,包括IP数据报规定互连网络范围内的IP地址格式。
IP是网络层协议,工作在数据链路层的上面。
IP协议的作用就是向传输层(TCP层)提供统一的IP包,即将各种不同类型的MAC帧转换为统一的IP包,并将MAC帧的物理地址变换为全网统一的逻辑地址(IP地址)。这样,这些不同物理网络MAC帧的差异对上层而言就不复存在了。正因为这一转换,才实现了不同类型物理网络的互联。
TCP和UDP都是传输层协议.
TCP(Transmission Control
Protocol,传输控制协议)是面向连接的协议,在收发数据前,必须和对方建立连接。
UDP(User Data
Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
3.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?
交换机 通过二层寻址 存储 转发 碎片隔离 等实现
路由器是通过三层路由查找IP方式实现。
交换机在二层实现,路由在三层
交换机是在数据链路层实现的路由器在网络层实现。
4.请问C++的类和C里面的struct有什么区别?
C++中的类有构造函数,析构函数,继承等等。
C中的struct中,没有构造函数等C++类才有的元素。
然而,C++中的class和struct基本上是等同的,除了一点
它们数据成员的默认访问权限是不同的。
class的默认访问权限为private,而struct为public.
5.请讲一讲析构函数和虚函数的用法和作用。
假设有一个名为A的类,那么A的析构函数为如下形式
&A::~A(){}, 没有参数也无返回值。
析构函数主要作用是在对象销毁前释放其占用的资源。
要将类的成员函数定义为虚函数,只需在函数声明前加上关键字virtual.
虚函数的作用是为了实现多态,可以在运行时决定具体调用哪个函数(动态绑定)。
6.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
全局变量和局部变量的区别主要在于它们的作用域和生存期不同。
全局变量对于整个程序均可见,而局部变量只对它所在的函数或者语句块可见。
全局变量的生存期与程序的生存期相同,而局部变量的生存期在退出函数或语句块后便结束。
通过将全局变量和局部变量置于内存中不同的段来实现的,全部变量存放与全局数据区,局部变量位于栈内。
操作系统和编译器识别变量的过程不清楚,麻烦哪位补充一下。
一些变量在整个程序中都是可见的,它们称为全局变量。一些变量只能在一个函数中可知,称为局部变量。这就是他们的区别。
在任何函数外面定义的变量就是全局变量,在函数内部定义的变量是局部变量,这是它们在程序中的实现过程。
操作系统和编译器是根据程序运行的内存区域知道他们的,程序的全局数据放在所分配内存的全局数据区,程序的局部数据放在栈区。
7.8086是多少位的系统?在数据总线上是怎么实现的?
8086是16位的系统
8086地址总线有20位,CPU有1M的寻址空间,然而8086只有16位,为了能够寻址1M内存空间,必须通过分段来完成,即:物理地址=16位的段基址左移4位
+ 16位的段内偏移量,这样就可以寻址全部的地址空间了。
----****----auto存储类型说明的变量都是局部于某个程序范围内的,只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。C语言中,在函数体的某程序段内说明auto存储类型的变量时可以省略关键字auto。
----****----static:称为静态存储类型,在C语言中,既可以在函数体内,也可在函数体外说明static
存储类型的变量。在函数体内说明的static
存储类型的变量也是一种局部变量,与auto最大不同点是:static存储类型的变量在内存中是以固定地址存放的,而不是以堆栈方式存放的;只要整个程序还在继续运行静态变量就不会随着说明它的程序段的结束而消失,static类型的变量只被初始化一次,且变量的值有继承性。
----****----register称为寄存器型,使用register关键词说明的变量主要目的是想将所说明的变量放入寄存器存储空间中,我们知道寄存器数量有限,且位于CPU的内部,这样可以加快程序的运行速度。但正因为寄存器的资源相对较少,所以编译器会判断程序所指定的需要放在寄存器中的内容有没有必要放入寄存器中去,也就是说,编译器来决定是否将指定内容放入到寄存器中,如果没有没有必要放入寄存器中,就使用auto类型作处理。
----****----
volatile表明某个变量的值可能在外部被改变,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。它可以适用于基础类型如:int,char,long......也适用于C的结构和C++的类。当对结构或者类对象使用volatile修饰的时候,结构或者类的所有成员都会被视为volatile。关键字在多线程环境下经常使用,因为在编写多线程的程序时,同一个变量可能被多个线程修改,而程序通过该变量同步各个线程。
读程序,写结果:
int func(int a)
switch(a) {
case 1: b=30;
case 2: b=20;
case 3: b=16;
default: b=0;
}则func(1)=?答:func(1)=0,因为没有break语句,switch中会一直计算到b=0。这是提醒我们不要忘了break。呵呵。
a[0]=0; a[1]=1; a[2]=2;
int *p, *q;
则a[q-p]=?答:a[q-p]=a[2]=2;这题是要告诉我们指针的运算特点。
定义 int **a[3][4],
则变量占有的内存空间为:_____答:此处定义的是指向指针的指针数组,对于32位系统,指针占内存空间4字节,因此总空间为3&4&4=48。
1.static有什么用途?(请至少说明两种)
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用
1.限制变量的作用域。2.设置变量的存储域。
2.引用与指针有什么区别?
引用必须被初始化,指针不必。
引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3. 描述实时系统的基本特性
答 、在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
全局变量储存在静态数据区,局部变量在堆栈。
5.什么是平衡二叉树?
左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源。
7.什么函数不能声明为虚函数?
只有类的成员函数才能说明为虚函数;2:静态成员函数不能是虚函数;3:内联函数不能为虚函数;4:构造函数不能是虚函数;5:析构函数可以是虚函数,而且通常声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?
时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x&0.000001&&x&-0.000001)
10.Internet采用哪种网络协议?该协议的主要层次结构?
Tcp/Ip协议,主要层次结构为: 应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?
ARP (Address Resolution Protocol)(地址解析協議)
12.IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.不能做switch()的参数类型是:
switch的参数不能为实型。
14、队列和栈有什么区别?
答 :队列先进先出,栈后进先出
15.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
答 :c用宏定义,c++用inline
某32位系统下, C++程序,请计算sizeof 的值(5分).
int n = 10;
sizeof ( p ) = ?(1)
sizeof ( n ) = ?(2)
void Foo ( char str[100]){
sizeof( str ) = ?(3)
void *p = malloc( 100 );
sizeof ( p ) = ?(4)
答:4& (指针类型的长度都是4个字节)
(int类型4个字节)
(传到函数里面的是指针,还是4个字节)
(指针,或叫地址就是4个字节)
回答下面的问题. (4分)
(1).头文件中的 ifndef/define/endif 干什么用?预处理
答:防止头文件被重复引用
(2). #include
&filename.h&和 #include “filename.h”
有什么区别?
答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。
(3).在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern
"C"修饰的变量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C
连接交换指定符号extern“C”来解决这个问题。
5. 编写strcat函数(6分)
已知strcat函数的原型是char *strcat (char *strDest, const
char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
(1)不调用C++/C 的字符串库函数,请编写函数 strcat
答: VC源码:
char * __cdecl strcat (char * dst, const char *
char * cp =
while( *cp )
while( *cp++ = *src++ !=‘\0’) ;
return( dst );
(2)strcat能把strSrc 的内容连接到strDest,为什么还要char *
类型的返回值?
答:方便赋值给其他变量
1.MFC中CString是类型安全类么?
答:不是,其它数据类型转换到CString可以使用CString的成员函数Format来转换.
2.C++中为什么用模板类。
答:(1)可用来创建动态增长和减小的数据结构
(2)它是类型无关的,因此具有很高的可复用性。
(3)它在编译时而不是运行时检查数据类型,保证了类型安全
(4)它是平台无关的,可移植性
(5)可用于基本数据类型
3.CSingleLock是干什么的。
答:同步多个线程对一个数据类的同时访问.
4.程序什么时候应该使用线程,什么时候单线程效率高。
答:1.耗时的操作使用线程,提高应用程序响应
2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。
3.多CPU系统中,使用线程提高CPU利用率
4.改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。
其他情况都使用单线程。
5.Windows是内核级线程么。
答:见下一题
6.Linux有内核级线程么。
答:线程通常被定义为一个进程中代码的不同执行路线。从实现方式上划分,线程有两种类型:“用户级线程”和“内核级线程”。用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。这种线程甚至在象
DOS 这样的操作系统中也可实现,但线程的调度需要用户程序完成,这有些类似 Windows 3.x
的协作式多任务。另外一种则需要内核的参与,由内核完成线程的调度。其依赖于操作系统核心,由内核的内部需求进行创建和撤销,这两种模型各有其好处和缺点。用户线程不需要额外的内核开支,并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求,但是当一个线程因
而处于等待状态时,整个进程就会被调度程序切换为等待状态,其他线程得不到运行的机会;而内核线程则没有各个限制,有利于发挥多处理器的并发优势,但却占用了更多的系统开支。Windows
NT和OS/2支持内核线程。Linux 支持内核级的多线程。
7.C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中?
答:栈: 存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理;堆:
程序运行时动态申请,new 和 malloc申请的内存就在堆上。
8.使用线程是如何防止出现大的波峰。
答:意思是如何防止同时产生大量的线程,方法是使用线程池,线程池具有可以同时提高调度效率和限制资源使用的好处,线程池中的线程达到最大数时,其他线程就会排队等候。
9.函数模板与类模板有什么区别?
答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。
10.一般数据库若出现日志满了,会出现什么情况,是否还能使用?
答:只能执行查询等读操作,不能执行更改,备份等写操作,原因是任何写操作都要记录日志。也就是说基本上处于不能使用的状态。
11. SQL Server是否支持行级锁,有什么好处?
答:支持,设立封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证数据的一致性和准确性,行级封锁确保在用户取得被更新的行到该行进行更新这段时间内不被其它用户所修改。因而行级锁即可保证数据的一致性又能提高数据操作的迸发性。
12. 关于内存对齐的问题以及sizeof()的输出
答:编译器自动对齐的原因:为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;然而,对齐的内存访问仅需要一次访问。
13.对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现?
答:将操作多个表的操作放入到事务中进行处理
13.TCP/IP 建立连接的过程?(3-way shake)
答:在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状态,完成三次握手。
14.ICMP是什么协议,处于哪一层?
答:Internet控制报文协议,处于网络层(IP层)
15.触发器怎么工作的?
答:触发器主要是通过事件进行触发而被执行的,当对某一表进行诸如UPDATE、 INSERT、
DELETE 这些操作时,数据库就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL
语句所定义的规则。
16.winsock建立连接的主要实现步骤?
答:服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。客户端:socker()建立套接字,连接(connect)服务器,连接上后使用send()和recv(),在套接字上写读数据,直至数据交换完毕,closesocket()关闭套接字。服务器端:accept()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接。该新产生的套接字使用send()和recv()写读数据,直至数据交换完毕,closesocket()关闭套接字。
17.动态连接库的两种方式?
答:调用一个DLL中的函数有两种方法:
1.载入时动态链接(load-time dynamic
linking),模块非常明确调用某个导出函数,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。
2.运行时动态链接(run-time dynamic
linking),运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了。
18.IP组播有那些好处?
答:Internet上产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽的急剧消耗和网络拥挤问题。组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。所以说组播技术的核心就是针对如何节约网络资源的前提下保证服务质量。
19.什么是预编译,何时需要预编译?
答案: 预编译又称为预处理 , 是做些代码文本的替换工作。
1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
20.char *char const *const char *p
上述三个有什么区别?
答案: char * //常量指针,p的值不可以修改 char const *
p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p一样。
21.char str1[] = "abc"; char str2[] = "abc";
const char str3[] = "abc"; const char str4[] = "abc"; const char
*str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char
*str8 = "abc"; cout & & ( str1 ==
str2 ) & & cout
& & ( str3 == str4 ) &
& cout & & (
str5 == str6 ) & & cout
& & ( str7 == str8 ) &
结果是:0 0 1 1
str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
a[5]={1,2,3,4,5};&&&
int *ptr=(int
*)(&a+1);&&&
printf("%d,%d",*(a+1),*(ptr-1));
答案:2,5 。*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5。
&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)
int *ptr=(int *)(&a+1);
则ptr实际是&(a[5]),也就是a+5 原因如下:
&a是数组指针,其类型为 int (*)[5];
而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同 a是长度为5的int数组指针,所以要加
5*sizeof(int) 所以ptr实际是a[5]
但是prt与(&a+1)类型是不一样的(这点很重要) 所以prt-1只会减去sizeof(int*)
a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].
23.请问以下代码有什么问题:
char *str=&a;
strcpy(str,"hello");
printf(str);
答案:没有为str分配内存空间,将会发生异常。问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。
char* s="AAA";
&&&&&&&&&&
printf("%s",s);
printf("%s",s);
有什么错?
答案:"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。 cosnt
char* s="AAA"; 然后又因为是常量,所以对是s[0]的赋值操作是不合法的。
25关键字static的作用是什么?答案:定义静态变量
26关键字const有什么含意?答案:表示常量不可以修改的变量。
27关键字volatile有什么含意?并举出三个不同的例子?答案:提示编译器对象的值可能在编译器未监测到的情况下改变。
28.int (*s[10])(int) 表示的是什么啊?
答案:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int
param)的函数。
29.交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;
答案:有两种解法, 一种用算术算法, 一种用^(异或) a = a + b = a - a
or a = a^b;// 只能对int,char.. b = a^b; a = a^b; or a
30.c和c++中的struct有什么不同?
答案:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private.
31.列举几种进程的同步机制,并比较其优缺点。
答案:& 原子操作
信号量机制&&&
管程,会合,分布式系统
32.进程死锁的原因?
答案:资源竞争(系统资源不足)及进程推进顺序非法。
33.死锁的4个必要条件是什么?
答案:互斥、请求保持、不可剥夺、环路。
34.死锁的处理策略?
答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁
操作系统中进程调度策略有哪几种?
答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈
36.类的静态成员和非静态成员有何区别?
答案:类的静态成员每个类只有一个,非静态成员每个对象一个
。一般说来静态成员是属于类所有的非静态成员则属于类的实例。
37.纯虚函数如何定义?使用时应注意什么?
答案:virtual void f()=0; 是接口,子类必须要实现。
38.数组和链表的区别?
答案:数组-数据顺序存储,大小固定;链表-数据可以随机存储,大小可动态改变。
39.ISO的七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺点?
答案:应用层/表示层/会话层/运输层/网络层/物理链路层/物理层。
tcp /udp属于运输层。TCP
服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。与 TCP 不同, UDP 并不提供对 IP
协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。
tcp: 提供稳定的传输服务,有流量控制,缺点是包头大,冗余性不好.
udp: 不提供稳定的服务,包头小,开销小。&
40、要对绝对地址0x100000赋值,我们可以用 (unsigned
int*)0x100000 = 1234;
那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?
答案:*((void (*)( ))0x100000 ) ( );
首先要将0x100000强制转换成函数指针,即: (void (*)())0x100000 然后再调用它: *((void
(*)())0x100000)(); 用typedef可以看得更直观些: typedef void(*)() voidFuncP
*((voidFuncPtr)0x100000)();
41、线程与进程的区别和联系? 线程是否具有相同的堆栈?
dll是否有独立的堆栈?
答案:进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。每个线程有自己的堆栈。
DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?以上讲的是堆栈,如果对于堆来说,每个DLL有自己的堆,所以如果是从DLL中动态分配的内存,最好是从DLL中删除,如果你从DLL中分配内存,然后在EXE中,或者另外一个DLL中删除,很有可能导致程序崩溃
42、unsigned short A = 10;
printf("~A = %u\n", ~A); char c=128; printf("c=%d\n",c);
输出多少?并分析过程。
答案:第一题,~A =0xfffffff5,int值
为-11,但输出的是uint。所以输出
第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-128。这两道题都是在考察二进制向int或uint转换时的最高位处理。&
43、用两个栈实现一个队列的功能?要求给出算法和思路!
答案:设2个栈为A,B, 一开始均为空. 入队: 将新元素push入栈A; 出队:
(1)判断栈B是否为空; (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;
(3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的。
44、在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?
答案:函数名: atol 功 能: 把字符串转换成长整型数 用 法: long atol(const
char *nptr); 程序例: #include &stdlib.h&
#include &stdio.h& int main(void) {
char *str = ""; l = atol(lstr); printf("string = %s
integer = %ld\n", str, l); return(0); }
45、软件测试都有那些种类?
答案:黑盒:针对系统功能的测试&&&
白合:测试函数功能,各函数接口
46、确定模块的功能和模块的接口是在软件设计的那个队段完成的?
答案:概要设计阶段
1.Ethternet链接到Internet用到以下那个协议?&
A.HDLC;B.ARP;C.UDP;D.TCP;E.ID&
2.属于网络层协议的是:&
A.TCP;B.IP;C.ICMP;D.X.25&
3.Windows消息调度机制是:
&A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;
答案:b,a,c
1.IP Phone的原理是什么? 答案:IPV6
2.TCP/IP通信建立的过程怎样,端口有什么作用?答案:三次握手,确定是哪个应用程序使用该协议
3、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
答案:全局变量(外部变量)的说明之前再冠以static
就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,
当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,
在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝.
4、队列和栈有什么区别?
答案:队列先进先出,栈后进先出&
华为笔试网络题-选择题
层模型中,网络层的功能有( )
A.确保数据的传送正确无误&
B.确定数据包如何转发与路由
C.在信道上传送比特流&&&
D.纠错与流控
2.FDDI 使用的是___局域网技术。( )
A.以太网;&&&
B.快速以太网;&&&
C.令牌环;&&&
D.令牌总线。
3.下面那种LAN
是应用CSMA/CD协议的()
A.令牌环&&&
C.ETHERNET&&&
4.TCP 和UDP 协议的相似之处是
A.面向连接的协议&&&
B.面向非连接的协议&&
&C.传输层协议&&&
D.以上均不对
5.应用程序PING
发出的是___报文.( )
请求报文。&&& B.TCP
应答报文。&&&
C.ICMP 请求报文。& D.ICMP 应答报文。
6.以下说法错误的是(多) ( )
A.中继器是工作在物理层的设备&&
&B.集线器和以太网交换机工作在数据连路层
C.路由器是工作在网络层的设备&&&
D.桥能隔离网络层广播
7.当桥接收的分组的目的MAC地址在桥的映射表中没有对应的表项时,采取的策略是(
A.丢掉该分组&
B.将该分组分片&&&
C.向其他端口广播该分组&&&
D.以上答案均不对
8.LAN Switch 在网络层次模型中的地位(
A.物理层&&&
B.链路层&&&
C.网络层&&&
D.以上都不是
9.小于___的TCP/UDP端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。(
A.199&&&&&
&C.1024&&&&&
10.当一台主机从一个网络移到另一个网络时,以下说法正确的是 (
A.必须改变它的IP 地址和MAC
B.必须改变它的IP 地址,但不需改动MAC 地址
C.必须改变它的MAC 地址,但不需改动IP
地址&&& D.MAC
地址.IP 地址都不需改动
1、防火墙是怎么实现的?
防火墙就是在请求进入计算机或者服务器之前做了一个判断,看看是不是不断访问并且审核响应请求次数就是这样简单。知识其中很多知识需要了解,大概原理就是这样。
2、用C语言写一个递归算法求N!
float fac(int n)
printf("n&0,dataerror!");
else if(n==0 || n==1) f=1;
else f=fac(n-1)*n;
return(f);
上海华为的一道关于指针方面的编程题
3、int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int*
A, int nSize),使A把0移至后面,非0整数移至
数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
#include&& "stdafx.h"
#include&& "assert.h"
Func(int*&&
int&& nSize)
assert(A&&
&&for(int i=0, *p = A, *q,
nVi&nSi++)
&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
=&& nSize)
&&&&&&&&&&&
return&& -1;
for(++i;i&nSi++)
&&&&&&&&&&&
if(*(++p)&&
&&&&&&&&&&&&&&&&&
nLeft=nSize&&
for(i=0;&&
&&&&&&&&&&&
*q++&& =0;
return&& nV
4、随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能用字符串库函数。
unsigned char Symmetry (long n)
i=n; temp=0;
while(i) //不用出现长度问题,将数按高低位掉换
&&&&&&&&&&
temp=temp*10+i;
&&&&&&&&&&
return(temp==n);
5、求2~2000的所有素数.有足够的内存,要求尽量快
int findvalue[2000]={2};
static int find=1;
bool adjust(int value)
assert(value&=2);
if(value==2)
for(int i=0;i&=i++)
&&&&&&&&&&
if(value%findvalue[i]==0)
&&&&&&&&&&
findvalue[find++];
选择题:(每题2分,共100分)
1、以下属于物理层的设备是( )
A、中继器&&&&&
B、以太网交换机&&&&
C、桥&&&&&&
2、在以太网中,是根据(
)地址来区分不同的设备的。&&&
A、LLC地址&&&&&
B、MAC地址&&&&&&&&
C、IP地址&& D、IPX地址
3、以下为传输层协议的是()
A、IP&&&&&&&&&&
B、ICMP&&&&&&&&&&&&
C、UDP&&&&
D、SPX &&&
4、以下对MAC地址描述正确的是()
A、由32位2进制数组成&&&&&&&&&&&&&
B、由48位2进制数组成
C、前6位16进制由IEEE负责分配&&&&&
D、后6位16进制由IEEE负责分配
5、以下属于数据链路层功能的是()
A、定义数据传输速率&&&&&&&&&&&&&&&&
B、定义物理地址
C、描述网络拓扑结构&&&&&&&&&&&&&&&&
6、IEEE802.3u标准是指()
A、以太网&&&&&&&&&&
B、快速以太网&&&&&&&&&
C、令牌环网&&&&&&&&&&&&
7、如果要将两计算机通过双绞线直接连接,正确的线序是()
A、1--1、2--2、3--3、4--4、5--5、6--6、7--7、8--8
B、1--2、2--1、3--6、4--4、5--5、6--3、7--7、8--8
C、1--3、2--6、3--1、4--4、5--5、6--2、7--7、8--8
D、两计算机不能通过双绞线直接连接
8、在V.35和V.24规程中,控制信号RTS表示()
A、数据终端准备好; B、数据准备好;
C、数据载体检测;&&
D、请求发送;& E、清除发送。
9、路由器作为网络互连设备,必须具备以下哪些特点。()
A、至少支持两个网络接口&&&&&&&&&
B、协议至少要实现到网络层
C、至少支持两种以上的子网协议&&
D、至少具备一个备份口
E、具有存储、转发和寻径功能&&&&&&
F、一组路由协议
G、必须有较高的协议处理能力
10、路由器的作用有()
A、异种网络互连
&&&&&&&&&&&&
B、子网间的速率适配
C、连接局域网内两台以上的计算机&&&
D、隔离网络,防止网络风暴,指定访问规则(防火墙)&&&&&&&&&&
E、子网协议转换&&&
F、加快网络报文的传递速度&&&&&&
G、路由(寻径):路由表建立、刷新、查找
H、报文的分片与重组
11、调用上一条历史命令的快捷键是()
A、CTRL-P&&&
B、CTRL-O&&&
C、ALT-P&&&
12、交换机工作在OSI七层的哪一层?()
A、一层&&&
B、二层&&&
C、三层&&&
D、三层以上
13、以下对CSMA/CD描述正确的是( )
A、在数据发送前对网络是否空闲进行检测&&&
B、在数据发送时对网络是否空闲进行检测
C、在数据发送时对发送数据进行冲突检测&&&
D、发生碰撞后MAC地址小的主机拥有发送优先权
14、以下对STORE AND FORWARD描述正确的是( )
A、收到数据后不进行任何处理,立即发送&&&
B、收到数据帧头后检测到目标MAC地址,立即发送
C、收到整个数据后进行CRC校验,确认数据正确性后再发送
D、发送延时较小&&&
E、发送延时较大
15、以下对交换机工作方式描述正确的是( )
A、可以使用半双工方式工作&&&
&&&&&&&&&&&
&&&B、可以使用全双工方式工作
C、使用全双工方式工作时要进行回路和冲突检测&&
&D、使用半双工方式工作时要进行回路和冲突检测
16、VLAN的主要作用有()
A、保证网络安全&&&
B、抑制广播风暴&&&
C、简化网络管理&&&
D、提高网络设计灵活性
17、在交换机中用户权限分为几个级别( )
18、在路由器的配置过程中查询以S开头所有命令的方法是()
A、直接使用?&&&
C、S ?&&& D、DIR
19、第一次配置路由器时可以使用的方法为( )
A、使用CON口本地配置&&&
B、使用CON口远程配置&&&
C、使用AUX口远程配置&&&
D、使用TELNET远程配置
20、在何种状态下可以为路由器改名()
A、普通模式&&&
B、超级模式&&&
C、全局模式&&&
D、接口模式
21、某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有
26台计算机,每个子公司在一个网段中,则子网掩码应设为()。
A、255.255.255.0&&&
B、255.255.255.128&&&
C、255.255.255.192&&&
D、255.255.255.224
22、与10.110.12.29 mask
255.255.255.224属于同一网段的主机IP地址是()。
A、10.110.12.0&&&
B、10.110.12.30&&&
C、10.110.12.31&&&
D、10.110.12.32
23、ARP协议的作用是()
A、将端口号映射到IP地址&&&
B、连接IP层和TCP层&&
C、广播IP地址&&&
D、将IP地址映射到第二层地址
24、当路由器接收的IP报文的TTL值等于1时,采取的策略是()
A、丢掉该分组&&&
B、将该分组分片&&&
C、转发该分组&&&
D、以上答案均不对
25、在NetWare 网络中,客户需要访问某个类型的服务器时,首先要发送一个
()广播报文来寻找服务器
26、IPX地址网络地址有()个字节
C、4&&& D、6
27、对于帧中继描述正确的是( )
A、使用具有本地意义的DLCI描述PVC&&&
B、使用具有全局意义的DLCI描述PVC
C、使用具有本地意义的DLCI描述SVC&&&
D、使用具有全局意义的DLCI描述SVC
28、对于INVERSE ARP的描述正确的是( )
A、通过广播方式解析对端网络地址&&&
B、通过多播方式解析对端网络地址
C、通过LMI信令解析对端网络地址&&&
D、通过广播方式解析对端DLCI
29、下列对于PAP协议描述正确的是( )
A、使用两步握手方式完成验证&&&
&B、使用三步握手方式完成验证
C、使用明文密码进行验证&&&
D、使用加密密码进行验证
30、X.25与帧中继对比描述正确的是()
A、X.25是面向连接的协议,传输正确性、稳定性高于帧中继
B、X.25具有两层结构,较帧中继简单
C、X.25对于IP而言传输效率低于帧中继
D、X.25可以提供比帧中继更多的服务
31、X.25使用映射的作用是()
A、映射本地IP到对端端口值,以便路由器发送数据时确认发送端口
B、映射本地IP到本地端口值,以便路由器发送数据时确认发送端口
C、映射对端IP到本地端口值,以便X.25交换网络查找数据发送路径
D、映射对端IP到对端端口值,以便X.25交换网络查找数据发送路径
32、各个路由协议衡量路由的好坏标准是( )
A、路由&&&
B、路由器优先级&&&
C、路由权&&&
D、包转发率
33、以下是基于链路状态算法的动态路由协议是()
B、ICMP&&&
C、IGRP&&&
34、三种路由协议 RIP 、OSPF 、IGRP
各自得到了一条到达目标网络,在华为路由器默认情况下,网络最终选选定()路由作为最优路由。
B、OSPF&&&
C、IGRP&&&
D、静态路由
35、路由环问题会引起()
A、循环路由器&&&
B、慢收敛&&&
C、路由器重起&&&
D、路由不一致
36、OSPF 协议适用于基于 IP 的( )
A、大型网络&&&
B、中小型网络&&&
C、更大规模的网络&&&
D、isp与isp之间
37、在rip中metric等于()为不可达
38、对于ISDN BRI描述正确的是()
A、2B+D&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
C、使用同轴电缆作为物理传输介质&&&
&D、使用普通电话线作为物理传输介质
39、设置话机模拟入呼叫时需要检查的被叫号码或子地址的命令是()
pots1-answer&&&
pots2-answer&&&
answer1&&&
D、isdn answer2
40、使能DDR的命令是()
A、Access-list&&&
in-band&&&
C、Dialer-group&&&
D、Dialer-list
44、RIP 协议适用于基于 IP 的()
A、大型网络&&&
B、中小型网络&&&
C、更大规模的网络&&&
D、isp与isp之间
45、以下的协议中,哪些是面向连接的协议( )。
B、Ethernet&&&
D、Frame-relay
题目:请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。用c语言编写(不能用数字转换成字符串)。
#include&stdio.h&
#include&math.h&
//函数havesamenum确认num是否满足条件
int havesamenum(int num)
&int i=0,j;
&char a[10] = {0};
&while(num&0)
& a[j]+=1;
& num=num/10;
&while(a[i]&=1&&i&10)
&if (i&10)
& return 1;
& return 0;
void main(void)
&& int i,j,m;
&m=(int)sqrt(99999);
&for(i=1;i&m;i++)
if (1==havesamenum(j))
printf("m\t",j);
}2 写出程序删除链表中的所有接点
void del_all(node *head)
while(head!=NULL)
free(head);
cout&&"释放空间成功!"&&
8、光缆的基本结构由缆芯、加强元件和护套组成。
9、常用的光缆结构形式有层绞式光缆、束管式光缆、骨架式光缆和带状式光缆。
10、在网状网的拓扑结构中,N个节点完全互连需要N(N-1)/2 条传输线路。
11、在星型网的拓扑结构中,N个节点完全互连需要N-1 条传输线路。
12、ATM技术是电路交换技术和分组交换技术的结合。
Struct和Union内存存储问题
1,对于union,对齐的大小是最大的基本元素的对齐大小;对象的大小必须是该基本元素大小的整数倍;
2,对于struct,对齐的大小也是最大的基本元素的对齐大小,对象的大小需要考虑元素的对齐,并且需要是最大基本元素的整数倍;同时有#pragma
pack修饰的情况,关于struct请详细参考另外一个帖子。
3,这里所说的struct和union的对齐,是指其作为其他复杂对象中的元素的时候要求的对齐,对于本身大小的计算并没有关系。本身的大小只和其所包含的基本元素的对齐有关系。
&char a[9]; //对齐大小是1,大小是9个字节
& //对齐大小是4,大小是4个字节
所以该union的对齐大小是4个字节;大小为大于等于max(9,4)=9并为4的整数倍,所以是12字节。
union U1_Another
&char a[9]; //对齐大小是1,大小是9个字节
& //对齐大小是8,大小是8个字节
所以该union的对齐大小是8个字节,大小是大于等于9并为8的整数倍,即为16字节;
&U1 //对齐大小是4个字节,大小是12字节
& //对齐大小是8个字节,大小是8字节
所以该union的对齐大小是8个字节,大小是16;
&char a[13];
//对齐大小是1字节,位置是[0,12]
//对齐大小是8字节,位置是[16,23]
所以该结构体是8字节对齐,大小为24个字节;
&S1 //对齐大小是8字节,位置是[0,23]
&U1 //对齐大小是4字节,位置是[24,35]
所以该结构体的对齐大小是8字节,大小是40字节;
※winsock建立连接的主要步骤
服务器端:socket()建立套接字,绑定bind()并监听listen(),用accept()等待客户端连接.
客户端:socket()建立套接字,连接connect()服务器,连接上后使用send()和recv(),在套接字上读写数据,直至数据交换完毕,closesocket()关闭套按字.
服务器端:accept()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接.该新产生的套接字使用send()和recv()读写数据,直至数据交换完毕,closesocket()关闭套接字.
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 谁说没有规则说课稿 的文章

 

随机推荐