笔试相关笔记

一、父类子类指针函数调用注意事项

点击打开链接 http://blog.csdn.net/taoyingzhushui/article/details/8100434
1,如果以一个基础类指针指向一个衍生类对象(派生类对象),那么经由该指针只能访问基础类定义的函数( 静态联翩

2,如果以一个衍生类指针指向一个基础类对象,必须先做强制转型动作(explicit cast),这种做法很危险,也不符合生活习惯,在程序设计上也会给程序员带来困扰。(一般不会这么去定义)

3,如果基础类和衍生类定义了相同名称的成员函数,那么通过对象指针调用成员函数时,到底调用那个函数 要根据指针的原型来确定,而不是根据指针实际指向的对象类型确定



虚拟函数就是为了对“如果你以一个基础类指针指向一个衍生类对象,那么通过该指针,你只能访问基础类定义的成员函数”这条规则反其道而行之的设计。

如果你预期衍生类由可能重新定义一个成员函数,那么你就把它定义成虚拟函数( virtual )。
polymorphism就是让处理基础类别对象的程序代码能够通透的继续适当地处理衍生类对象。

纯虚拟函数:
virtual void myfunc ( ) =0;
纯虚拟函数不许定义其具体动作,它的存在只是为了在衍生类钟被重新定义。 只要是拥有纯虚拟函数的类,就是抽象类,它们是不能够被实例化的只能被继承)。 如果一个继承类没有改写父类中的纯虚函数,那么他也是抽象类,也不能被实例化。
抽象类不能被实例化,不过我们可以拥有指向抽象类的指针,以便于操纵各个衍生类。
虚拟函数衍生下去仍然是虚拟函数,而且还可以省略掉关键字“virtual”。


二、static

int fun() {
   static int a = 1;
   a++;
}
静态变量只初始化一次。
在第一次进入这个函数的时候,变量a被初始化为1!并接着自增1!

以后每次进入该函数,a就不会被再次初始化了,仅进行自增1的操作!

三、IP地址分类

最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。
其中A、B、C3类(如下表格)由InternetNIC在全球范围内统一分配,D、E类为特殊地址。
类别
最大网络数
IP地址范围
最大主机数
私有IP地址范围
A
126(2^7-2)
0.0.0.0-127.255.255.255
16777214
10.0.0.0-10.255.255.255
B
16384(2^14)
128.0.0.0-191.255.255.255
65534
172.16.0.0-172.31.255.255
C
2097152(2^21)
192.0.0.0-223.255.255.255
254
192.168.0.0-192.168.255.255

A类IP地址

一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每个网络可以容纳主机数达1600多万台。
A类IP地址 地址范围1.0.0.0到127.255.255.255[1] (二进制表示为:00000001 00000000 00000000 00000000 - 01111110 11111111 11111111 11111111)。最后一个是广播地址。
A类IP地址的子网掩码为255.0.0.0,每个网络支持的最大主机数为256的3次方-2=16777214台。

B类IP地址

一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为6万多台。
B类IP地址地址范围128.0.0.0-191.255.255.255(二进制表示为:10000000 00000000 00000000 00000000----10111111 11111111 11111111 11111111)。 最后一个是广播地址。
B类IP地址的子网掩码为255.255.0.0,每个网络支持的最大主机数为256的2次方-2=65534台。

C类IP地址

一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。
C类IP地址范围192.0.0.0-223.255.255.255(二进制表示为: 11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111)。
C类IP地址的子网掩码为255.255.255.0,每个网络支持的最大主机数为256-2=254台

D类IP地址

D类IP地址在历史上被叫做多播地址(multicast address),即组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从224.0.0.0到239.255.255.255。

特殊的网址

  1. 每一个字节都为0的地址(“0.0.0.0”)对应于当前主机
  2. IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址
  3. IP地址中凡是以“11110”开头的E类IP地址都保留用于将来和实验使用。
  4. IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试,如:127.0.0.1可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器。
  5. 网络ID的第一个8位组也不能全置为“0”,全“0”表示本地网络。
四、如果让你来测试淘宝站内的搜索系统,请问你能想到哪些方法来进行测试?
我们假设淘宝网的搜索入口页面如下图所示: 
1、功能测试
对搜索框(宝贝、店铺)内:
    (1)输入一个存在的产品,ex:“衣服”,检查link
    (2)输入一个不存在的产品,ex:“ufhaiudsbngbdsjinvoxzcnoivhasuihfiawjeigobasiu"
    (3)其他边界条件测试:输入空符号,输入过长字符串,各种空格的随机插入等
对语音输入功能的测试:
    同样语音输入包含以上方面。
    比如兼容性:加入各种方言,外语,不明声音等。
2、性能测试
    (1)负载测试:模拟用户并发操作,验证搜索框的负载能力。
    (2)压力测试:在一定负载下,用自动化测试脚本7*24,验证功能测试的准确程度和服务器的效率。
    (3)连接速度测试:模拟用户操作,查看连接速度。
3、安全性测试
    (1)cookie测试:是否加密,是否起作用
    (2)表单测试:构造form和链接,检查可用性及安全问题。
    (3)链接测试:检查链接是否可用
    (4)正则表达式测试:构造非法正则表达式等。
4、可用性测试
    站在用户角度,检查信息是否有效可用
5、兼容性测试
    用户浏览器的版本/输入字符集的差异……

其他本人没有想到的问题可以在项目组中通过提交bug的方式解决。
最后联系开发人员,检查解决完手头上的问题,最后做回归测试。


%=========================另外一个答案=============

1.功能方面,是否能按指定条件查到正确、完整的结果,具体:

1.1录入条件为可查到结果的正常关键字、词、语句,检索到的内容、链接正确性;
1.2录入条件为不可查到结果的关键字、词、语句;
1.3录入条件为一些特殊的内容,如空、特殊符、标点符、极限值等,可引入等价类划分的方法等;

2.性能方面,可利用测试工具或各种测试手段考虑功能在各方面的表现,具体:

2.1压力测试:在不同发用户数压力下的表现(评价指标如响应时间等)
2.2负载测试:看极限能承载多大的用户量同时正常使用
2.3稳定性测试:常规压力下能保持多久持续稳定运行
2.4内存测试:有无内存泄漏现象
2.5大数据量测试:如模拟从庞大的海量数据中搜索结果、或搜索出海量的结果后列示出来,看表现如何等等。

3.易用性方面,交互界面的设计是否便于、易于使用,具体:

3.1依据不同的查询结果会有相关的人性化提示,查不到时告知?查到时统计条数并告知?有疑似输入条件错误时提示可能正确的输入项等等处理;
3.2查询出的结果罗列有序,如按点击率或其他排序规则,确保每次查询出的结果位置按规则列示方便定位,显示字体、字号、色彩便于识别等等;
3.3标题查询、全文检索、模糊查询、容错查询、多关键字组织查询(空格间格开)等实用的检索方式是否正常?
3.4输入搜索条件的控件风格设计、位置摆放是否醒目便于使用者注意到,有否快照等快捷查看方式等人性化设计?

4.兼容性方面,跨平台、多语言等多样性环境组合情况下测试使用的正常性,具体:

4.1WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用
4.2IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下、各种显示分辨率条件下的应用
4.3SQL/ORACLE/DB2/MYSQL等各类数据库存储情况下的兼容性测试
4.4简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试
4.5IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试
4.6与各相关的监控程序的兼容性测试,如输入法、杀毒、监控、防火墙等工具同时使用

5.安全性方面,往往容易被忽视的环节,具体:

5.1被删除、加密、授权的数据,不允许被查出来的,是否有安全控制设计;
5.2录入一些数据库查询的保留字符,如单引号、%等等,造成查询SQL拼接出的语句产生漏洞(SQL注入),如可以查出所有数据等等,这方面要有一些黑客攻击的思想并引入一些工具和技术,如爬网等。
5.3通过白盒测试技术,检查一下在程序设计上是否存在安全方面的隐患;
5.4对涉及国家安全法律禁止的内容是否进行了相关的过滤和控制

6.异常性测试,各种破坏性的操作的影响测试,具体:

6.1查询过程中断网、关机
6.2查询过程中强行中断关闭页面
6.3查询过程中强行杀死相关进程


五、环形队列个数
队列头指针为front,队列尾指针为rear,队列容量为M,则元素个数为|rear-front+M|%M,注意,这个%是求余运算。
整理如下:
队空:front==rear
队满: (rear+1) mod M ==front
队中元素个数n=(rear-front+<span style="font-family: Arial;">M </span>)mod M 
入队:rear=(rear+1) % M ;
出队:front=(front+1) % M ;

六、霍夫曼编码

http://coolshell.cn/articles/7459.html

例子: 

假设某段通信电文仅由 6 个字母 ABCDEF 组成,字母在电文中出现的频率分别为2,3,7,15,4,6。根据这些频率作为权值构造哈夫曼编码,最终构造出的哈夫曼树带权路径长度与字母 B 的哈夫曼编码分别为______。 

本例中是在通信领域使用所以采用唯一编码,按照哈弗曼编码过程得到的哈弗曼树如下: 

 

由上图可知,带权路径长度 L=2*4+3*4+4*3+6*3+7*3+15*1=86

B的哈弗曼编码为:1011 


七、同步进程与互斥

http://wenku.baidu.com/view/abca9141a8956bec0975e332


八、堆栈的生长方向

堆:向上生长,从低地址到高地址。

栈:向下生长。

堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

在没有MMU的时代,为了最大的利用内存空间,堆和栈被设计为从两端相向生长
人们对数据访问是习惯于向上的,比如你在堆中new一个数组,是习惯于把低元素放到低地址,把高位放到高地址,所以堆向上生长比较符合习惯。而栈则对方向不敏感,一般对栈的操作只有PUSH和pop,无所谓向上向下,所以就把堆放在了低端,把栈放在了高端。MMU出来后就无所谓了,只不过也没必要改了。

9、联合体union

   当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的:

     1)联合体是一个结构;

     2)它的所有成员相对于基地址的偏移量都为0;

     3)此结构空间要大到足够容纳最"宽"的成员;

     4)其对齐方式要适合其中所有的成员;

下面解释这四条描述:

     由于联合体中的所有成员是共享一段内存的,因此每个成员的存放首地址相对于于联合体变量的基地址的偏移量为0,即所有成员的首地址都是一样的。为了使得所有成员能够共享一段内存,因此该空间必须足够容纳这些成员中最宽的成员。对于这句“对齐方式要适合其中所有的成员”是指其必须符合所有成员的自身对齐方式。

下面举例说明:

如联合体

union U
{
    char s[9];
    int n;
    double d;
};

s占9字节,n占4字节,d占8字节,因此其至少需9字节的空间。然而其实际大小并不是9,用运算符sizeof测试其大小为16.这是因为这里存在字节对齐的问题,9既不能被4整除,也不能被8整除。因此补充字节到16,这样就符合所有成员的自身对齐了。从这里可以看出联合体所占的空间不仅取决于最宽成员,还跟所有成员有关系,即其大小必须满足两个条件:1)大小足够容纳最宽的成员;2)大小能被其包含的所有基本数据类型的大小所整除。


10、FIFO、LRU、OPT这三种置换算法的缺页次数

http://zhidao.baidu.com/question/309256792.html

http://yinzhezq.blog.163.com/blog/static/1648628902010112961039187/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值