//printf("HelloWorld!
\n");
return0;
}
一.阿尔卡特朗讯笔试真题
1.Explain“What’sWINXPOS?
”toyourgrandmotherinbriefandcommonlanguage
操作系统是控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用
2.
new,malloc,参见《高质量C++C编程指南_林锐》第七章内存管理
3.
publicinherit和privateinherit
公有继承public)、私有继承(private)和保护继承(protected)是常用的三种继承方式。
1.对于公有继承方式:
·基类成员对其对象的可见性与一般类及其对象的可见性相同,公有成员可见,其他成员不可见。
这里保护成员与私有成员相同。
·基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员可见:
基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态;基类的私有成员不可见:
基类的私有成员仍然是私有的,派生类不可访问基类中的私有成员。
·基类成员对派生类对象的可见性对派生类对象来说,基类的公有成员是可见的,其他成员是不可见。
所以,在公有继承时,派生类的对象可以访问基类中的公有成员;派生类的成员函数可以访问基类中的公有成员和保护成员。
2.对于私有继承方式:
·基类成员对其对象的可见性与一般类及其对象的可见性相同,公有成员可见,其他成员不可见。
·基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员是可见的:
基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问;基类的私有成员是不可见的:
派生类不可访问基类中的私有成员。
·基类成员对派生类对象的可见性对派生类对象来说,基类的所有成员都是不可见的。
所以,在私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承。
3.对于保护继承方式:
这种继承方式与私有继承方式的情况相同。
两者的区别仅在于对派生类的成员而言,
·基类成员对其对象的可见性与一般类及其对象的可见性相同,公有成员可见,其他成员不可见。
·基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员是可见的:
基类的公有成员和保护成员都作为派生类的保护成员,并且能被这个派生类的子类所访问;基类的私有成员是不见的:
派生类不可访问基类中的私有成员。
·基类成员对派生类对象的可见性对派生类对象来说,基类的所有成员都是不可见的。
所以,在保护继承时,基类的成员也只能由直接派生类访问,而无法再往下继承。
总结:
public、private、protected三种(它们直接影响到派生类的成员、及其对象对基类成员访问的规则)。
(1)public(公有继承):
继承时保持基类中各成员属性不变,并且基类中private成员被隐藏。
派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。
(2)private(私有继承):
继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。
派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。
(3)protected(保护性继承):
继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。
派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。
4.
sizeof和strlen
Sizeof与Strlen的区别与联系(转)
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
2.sizeof是算符,strlen是函数。
3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。
sizeof还可以用函数做参数,比如:
shortf();
printf("%d\n",sizeof(f()));
输出的结果是sizeof(short),即2。
4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。
5.大部分编译程序在编译的时候就把sizeof计算过了是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因
charstr[20]="0123456789";
inta=strlen(str);//a=10;
intb=sizeof(str);//而b=20;
6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。
7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。
这是因为sizeof是个操作符不是个函数。
8.当适用了于一个结构类型时或变量,sizeof返回实际的大小,
当适用一静态地空间数组,sizeof归还全部数组的尺寸。
sizeof操作符不能返回动态地被分派了的数组或外部的数组的尺寸
9.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,
如:
fun(char[8])
fun(char[])
都等价于fun(char*)
在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小
如果想在函数内知道数组的大小,需要这样做:
进入函数后用memcpy拷贝出来,长度由另一个形参传进去
fun(unsigedchar*p1,intlen)
{
unsignedchar*buf=newunsignedchar[len+1]
memcpy(buf,p1,len);
}
我们能常在用到sizeof和strlen的时候,通常是计算字符串数组的长度
看了上面的详细解释,发现两者的使用还是有区别的,从这个例子可以看得很清楚:
charstr[20]="0123456789";
inta=strlen(str);//a=10;>>>>strlen计算字符串的长度,以结束符0x00为字符串结束。
intb=sizeof(str);//而b=20;>>>>sizeof计算的则是分配的数组str[20]所占的内存空间的大小,不受里面存储的内容改变。
上面是对静态数组处理的结果,如果是对指针,结果就不一样了
char*ss="0123456789";
sizeof(ss)结果4===》ss是指向字符串常量的字符指针,sizeof获得的是一个指针的之所占的空间,应该是
长整型的,所以是4
sizeof(*ss)结果1===》*ss是第一个字符其实就是获得了字符串的第一位'0'所占的内存空间,是char类
型的,占了1位
strlen(ss)=10>>>>如果要获得这个字符串的长度,则一定要使用strlen
5.typeid(*pb)
intb=3;
int*p=&b;
cout<typeid操作符
typeid表达式形如:
typeid(expr);
这里expr是任意表达式或者类型名。
如果表达式的类型是类类型且至少包含有一个虚函数,则typeid操作符返回表达式的动态类型,需要在运行时计算;否则,typeid操作符返回表达式的静态类型,在编译时就可以计算。
typeid操作符的返回结果是名为type_info的标准库类型的对象的引用(在头文件typeinfo中定义)。
标准并没有确切定义type_info,它的确切定义编译器相关的,但是标准却规定了其实现必需提供如下四种操作:
t1==t2
如果两个对象t1和t2类型相同,则返回true;否则返回false
t1!
=t2
如果两个对象t1和t2类型不同,则返回true;否则返回false
t.name()
返回类型的C-style字符串,类型名字用系统相关的方法产生
t1.before(t2)
返回指出t1是否出现在t2之前的bool值
type_info类提供了public虚析构函数,以使用户能够用其作为基类。
它的默认构造函数和拷贝构造函数及赋值操作符都定义为private,所以不能定义或复制type_info类型的对象。
程序中创建type_info对象的唯一方法是使用typeid操作符(由此可见,如果把typeid看作函数的话,其应该是type_info的友元)。
type_info的name成员函数返回C-style的字符串,用来表示相应的类型名,但务必注意这个返回的类型名与程序中使用的相应类型名并不一定一致(往往如此,见后面的程序),这是由实现所决定的,标准只要求实现为每个类型返回唯一的字符串。
例如:
#include
usingnamespacestd;
classBase{};
classDerived:
publicBase{};
intmain()
{
cout< < < < < < < < < < < <
return0;
}
在MinGW2.05下的运行结果:
i
j
l
m
c
h
f
d
Ss
4Base
7Derived
St9type_info
Terminatedwithreturncode0
Pressanykeytocontinue...
注意:
当把typeid作用于指针的解引用*p时,若指针p为0,则:
如果p指向的类型是带虚函数的类类型,则typeid(*p)在运行时抛出一个bad_typeid异常;否则,typeid(*p)的结果与p的值是不相关的,在编译时就可以确定。
typeid表达式的这点性质与sizeof表达式相似但又有区别,sizeof一定是在编译时进行计算,也就是说,其只考虑表达式的静态类型,与表达式的动态类型无关(即使有虚函数存在)。
6.
*,&,参见《高质量C++C编程指南_林锐》6.6引用与指针的比较
7.析构函数:
析构函数(destructor)与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。
析构函数往往用来做“清理善后”的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud(),以区别于构造函数。
它不能带任何参数,也没有返回值(包括void类型)。
只能有一个析构函数,不能重载。
如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。
所以许多简单的类中没有用显式的析构函数。
8.
RARP在IPLayer/LinkLayer/PhysicalLayer/TCPLayer?
在IPLayer
9.networkaddress和broadcastaddress
网络地址
一个IP地址的网络部分被称为网络号或者网络地址主机可以与具有相同的网络号的设备直接通讯
在没有连接设备的情况下,即使共享相同的物理网段,网络号不同则无法进行通讯
IP地址的网络地址使路由器可以将分组置于正确的网段上IP地址网络号后的主机号可以使路
由器能够二层帧封装的分组传送到网络上的一台特定的主机使主机号与MAC地址进行正确的映射
中的关键问题在于使用子网掩码来确定或者获取远程主机的网络地址信息
网络地址之后的部分为主机地址
作为同一个网络的网络地址必须是相同的,但是作为同一个网络的主机地址必须是不同的
在同一个网络中的主机才能够直接进行通信,这种情况下的网络称为平面网络,比如:
192.168.1.1/24
和192.168.1.2/24,网络ID一样,主机ID不同
如不是同一个网络的主机之间通信必须通过设备对数据进行转发,这种情况下的网络称为层次网络
合法的广播地址就是主机的网络地址加上最大的主机号。
网络地址通过机器的ip地址与子网掩码按位与得出,
我们以ip地址为10.78.202.175子网掩码为255.255.255.0
为例来分析一下上面的几个概念
首先将这两个东西换算成二进制代码
ip地址:
00001010.01001110.11001010.10101111
子网掩码:
11111111.11111111.11111111.00000000
按位与之后得出网络地址:
00001010.01001110.11001010.0000000
十进制表示就是10.78.202.0
这个网络地址理论上可以有255台主机,但是除去网络地址
0和广播地址255之后,实际上只能有253台主机
那么我们可以知道175就是你这台机器的主机号,
广播地址就是最大的主机号,也就是10.78.202.255。
有没有255.255.255.255可能成为一个合法的广播地址呢?
答案是不可能因为0.0.0.0不是一个合法子网掩码。
10.process和thread
进程是一个可执行的程序,由私有虚拟地址空间、代码、数据和其他操作系统资源(如进程创建的文件、管道、同步对象等)组成。
一个应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程。
线程是操作系统分时调度分配CPU时间的基本实体。
一个线程可以执行程序的任意部分的代码,即使这部分代码被另一个线程并发地执行;一个进程的所有线程共享它的虚拟地址空间、全局变量和操作系统资源。
之所以有线程这个概念,是因为以线程而不是进程为调度对象效率更高:
由于创建新进程必须加载代码,而线程要执行的代码已经被映射到进程的地址空间,所以创建、执行线程的速度比进程更快。
一个进程的所有线程共享进程的地址空间和全局变量,所以简化了线程之间的通讯。
11.
renameafolderinaUnixsystem
12.
chmod755tt.sh
13.
synchronization(termintelecommunication),generaltypeofsynchronization
同步通信是一种比特同步通信技术,要求发收双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。
简单一点说,
同步传输就是,数据没有被对方确认收到则调用传输的函数就不返回。
接收时,如果对方没有发送数据,则你的线程就一直等待,直到有数据了才返回,可以继续执行其他指令
异步传输就是,你调用一个函数发送数据,马上返回,你可以继续处理其他事,
接收时,对方的有数据来,你会接收到一个消息,或者你的相关接收函数会被调用。
易懂一点说,
异步传输:
你传输吧,我去做我的事了,传输完了告诉我一声
同步传输:
你现在传输,我要亲眼看你传输完成,才去做别的事
同步是一对一的,异步是一对多的,就是一夫多妻和一夫一妻.
14.
non-uniformquantizing(非均匀量化)
非均匀量化是一种在输入信号的动态范围内量化间隔不相等的量化。
换言之,非均匀量化是根据输入信号的概率密度函数来分布量化电平,以改善量化性能。
2007年
1、写出存储结构从高速到低速的四个划分
顺序、链接、索引、散列
2、好像是问linux下脚本语言里每次显示日志都要显示日期的话用什么命令
四个选项:
logfilelogfile|date,logefile||date
logfile|date
3、多任务系统分为那两类?
基于进程和基于线程
4、5、6都是给出一段C++,写输出结果的
7、给出路由表和目的地址,根据路由表判断从哪个端口发送的
8、选择一个有效的IP地址
10、选择三个路由协议,选项记不全了,只记得RIP,OSPF,IGMP,DNS
我只知道OSPF是,其他都没有听说过,汗……
RIP和OSPF
11、programming
找出100到1000里素数的个数
*int
GetPrimeNumber(int
maxNum)
12、模拟信号到数字信号的三个步骤
抽样量化编码
现代通信网的四个部分
传送网业务网应用层支撑网
三种多址
频分时分码分
三种交换
电路交换,报文交换,分组交换(数据报,虚电路和ATM)
15.
CRT1024*768,24Bit,85hz,问bandwidth?
一般CRT110Mhz,WHY?
带宽的全称叫“视频放大器频带宽度”,代表的就是显示器的电子枪每秒钟内能够扫描的像素个数。
带宽的计算公式为:
带宽=水平分辨率×行频
16.
BHCA,ERL?
BHCA:
BusyHourCallAttempts 忙时试呼次数
BHCA是程控交换机控制部件呼叫处理能力的重要指标
与BHCA类似的指标还有CAPS(每秒建立呼叫数量),CAPS乘以3600就是BHCA了。
影响BHCA值的因素主要有:
1)系统容量影响。
用户数量越多,扫描程序的开销与端口数量相关,时钟级固定开销也就越大,导致单位时间能处理的呼叫数目减少。
2)控制结构影响。
多处理机结构,存在额外通信开销。
3)处理机性能影响。
包括指令功能、工作频率、存储器寻址范围和I/O端口数量。
4)软件设计水平。
重要因素,包括程序结构、算法、数据结构和采用的编程语言等。
定义
话务量单位erl(爱尔兰)定义:
话务量的大小取决于单位时间(1小时)内平均发生的呼叫次数λ和每次呼叫平均占用信道时间SA=S(小时/次)*λ(次/小时)话务量的单位为爱尔兰(erl)。
A是平均1小时内所有呼叫需占用信道的总小时数,1爱尔兰表示平均每小时内用户要求通话的时间为1小时。
17.
commonnetworkelementsinGSM?
图1-1GSM系统的组成
1.移动交换子系统MSS
完成信息交换、用户信息管理、呼叫接续、号码管理等功能。
2.基站子系统BSS
BSS系统是在一定的无线覆盖区中由MSC控制,与MS进行通信的系统设备,完成信道的分配、用户的接入和寻呼、信息的传送等功能。
3.移动台MS
MS是GSM系统的移动用户设备,它由两部分组成,移动终端和客户识别卡(SIM卡)。
移动终端就是“机”,它可完成话音编码、信道编码、信息加密、信息的调制和解调、信息发射和接收。
SIM卡就是“人”,它类似于我们现在所用的IC卡,因此也称作智能卡,存有认证客户身份所需的所有信息,并能执行一些与安全保密有关的重要信息,以防止非法客户进入网路。
SIM卡还存储与网路和客户有关的管理数据,只有插入SIM卡后移动终端才能接入进网。
4.操作维护子系统
GSM子系统还包括操作维护子系统(OMC),对整个GSM网络进行管理和监控。
通过它实现对GSM网内各种部件功能的监视、状态报告、故障诊断等功能。
18.
名词解释:
3G,NGN,GPRS,OSIMODEL,VoIP,QoS
通用分组无线服务技术(GeneralPacketRadioService)的简称,它是GSM移动电话用户可用的一种移动数据业务。
GPRS可说是GSM的延续。
GPRS和以往连续在频道传输的方式不同,是以封包(Packet)式来传输,因此使用者所负担的费用是以其传输资料单位计算,并非使用其整个频道,理论上较为便宜。
GPRS的传输速率可提升至56甚至114Kbps。
VoIP(VoiceoverInternetProtocol)简而言之就是将模拟声音讯号(Voice)数字化,以数据封包(DataPacket)的型式在IP数据网络(IPNetwork)上做实时传递。
VoIP最大的优势是能广泛地采用Internet和全球IP互连的环境,提供比传