综合知识问答题

来源:互联网 发布:软件评测中心 编辑:程序博客网 时间:2024/04/29 08:30
  • HTTP中Get和Post的区别

Get和Post都是浏览器向网页服务器提交数据的方法。

Get把要提交的数据编码在url中,比如 http://hi.baidu.com/mianshiti?key1=value1&key2=value2 中就编码了键值对 key1,value1 和key2,value2。受限于url的长度限制,Get方法能传输的数据有限(不同浏览器对url长度限制不同,比如微软IE设为2048)。
Post把要提交的数据放在请求的body中,而不会显示在url中,因此,也没有数据大小的限制。

由于Get把数据编码在URL中,所以这些变量显示在浏览器的地址栏,也会被记录在服务器端的日志中。所以Post方法更加安全。

  • IP,TCP和UDP协议的定义和主要作用

IP协议是网络层的协议。IP协议规定每个互联网网上的电脑都有一个唯一的IP地址,这样数据包就可以通过路由器的转发到达指定的电脑。但IP协议并不保证数据传输的可靠性。
TCP协议是传输层的协议。它向下屏蔽了IP协议不能可靠传输的缺点,向上提供面向连接的可靠的数据传输。
UDP协议也是传输层的协议。它提供无连接的不可靠传输。

  • c++中引用和指针有什么不同?指针加上什么限制等于引用?

引用不是一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。引用一经确定就不能修改。
指针是一个变量,需要在内存中分配空间,此空间中存储所指对象的地址。由于指针是一个普通变量,所以其值还可以通过重新赋值来改变。

把指针定义为const后,其值就不能改变了,功能和引用类似,但有本质的区别。


  • memcpy 和 memmove 有什么区别?

memcpy和memmove都是将源地址的若干个字符拷贝到目标地址。
如果源地址和目标地址有重叠,则memcpy不能保证拷贝正确,但memmove可以保证拷贝正确。

memcpy copies count bytes from src to dest; wmemcpy copies count wide characters (two bytes). If the source and destination overlap, the behavior of memcpy is undefined. Use memmove to handle overlapping regions.

Copies count bytes (wmemmove) or characters (wmemmove) from src to dest. If some regions of the source area and the destination overlap, both functions ensure that the original source bytes in the overlapping region are copied before being overwritten.

  • 全局变量和局部变量有什么区别?

全局变量是整个程序都可访问的变量,生存期从程序开始到程序结束;局部变量存在于模块中(比如某个函数),只有在模块中才可以访问,生存期从模块开始到模块结束。
全局变量分配在全局数据段,在程序开始运行的时候被加载。局部变量则分配在程序的堆栈中。因此,操作系统和编译器可以通过内存分配的位置来知道来区分全局变量和局部变量。


  • 析构函数和虚函数的用法和作用?

析构函数是在类对象消亡时由系统自动调用。主要用来做对象的清理工作,比如来释放对象申请的动态空间。
基类中用virtual修饰的函数称为虚函数。在派生类中可以对虚函数进行重新定义,这样同样的函数接口可以在不同的派生类中对应不同的实现。当通过基类的指针来调用虚函数时,程序会根据指针实际指向的对象来决定调用哪个实现。


  • 在C++中,struct和class有什么不同?

 C++中,如果没有标明函数或者变量是的访问权限级别,在struct中,是public的;而在class中,是private的。

  • 我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。请问:能不能同时用static和const修饰类的成员函数?


分析:答案是不可以。C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this指针的。也就是说此时static的用法和static是冲突的。


我们也可以这样理解:两者的语意是矛盾的。static的作用是表示该函数只作用在类型的静态变量上,与类的实例没有关系;而const的作用是确保函数不能修改类的实例的状态,与类型的静态变量没有关系。因此不能同时用它们。

  • 静态成员函数能不能同时也是虚函数?


分析:答案是不能。调用静态成员函数不要实例。但调用虚函数需要从一个实例中指向虚函数表的指针以得到函数的地址,因此调用虚函数需要一个实例。两者相互矛盾。


  • 如何引用一个已经定义过的全局变量?

可以用引用头文件的方式,也可以使用extern关键字。
用引用头文件方式,如果将那个变量写错了,那么在编译期间会报错。
用extern方式,如果将变量名写错了,那么在编译期间不会报错,而在连接期间报错。


  • 数据库冷备份和热备份的不同点以及各自的优点

热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备 份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归 档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)

  • AJAX的原理、如何实现刷新及其优点

AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

使用了AJAX技术的网页,利用Javascript和服务器通信,获取数据,然后再通过修改网页的DOM中的某些元素来实现刷新网页的特定部分。

使用了AJAX技术后,由于只需要更新网页的一部分,而不是全部,所以和服务器交互的数据比较少。这就降低了服务器的负载,并提高了用户端的响应速度。另外,AJAX并不需要在浏览器中安装插件。

更多关于AJAX内容,可以参考:
http://baike.baidu.com/view/1641.htm


  • C语言中 #include "filename.h" 与 #include <filename.h> 有什么不同?

#include "filename.h" 首先在程序原文件所在目录下查找,如果找不到,再到系统目录中查找。
#include <filename.h> 直接去系统目录中查找。

  • c++中,一个没有拷贝构造函数和重载=运算符的string类,会出现什么问题,如何解决?

如果没有定义拷贝构造函数和重载=运算符,则系统会自动生成逐位拷贝的函数。
当我们用string初始化string时,(比如 string a("abc"); string b = a;),两个对象会指向同样的内存地址。在两个对象的析构函数中,我们会对同一个内存块调用两次删除,导致不确定的结果。
当我们将一个string赋值给另外一个string时,(比如 string a("abc"); string b(“cde"); b = a;)除了上面的多次调用析构函数的问题外,由于原来对象b指向的数据没有被正确删除,会导致内存泄漏。

解决办法:
1. 添加这两个函数。
2. 不使用这两个函数。
- 不用string初始化string:可以使用string a(”abc"); string b(a.c_str()); 代替。
- 不用string给string赋值,包括不能通过传值方法传递string参数:尽量使用指针。


  • n是一个奇数,求证n(n^2-1)能被24整除。

也就是证明n(n^2-1)能被8和3整除。

因为n是奇数,假设n=2x+1,其中x为整数。
n(n^2-1)
=(2x+1)((2x+1)^2-1)
=(2x+1)(4x^2+4x+1-1)
=(2x+1)4x(x+1)
显然x(x+1)能被2整除,所以(2x+1)4x(x+1)能被8整除。

x除以3的余数可能是0,1,2,对应x,x+1,2x+1能被3整除。也就是说(2x+1)4x(x+1)能被3整除。
所以n(n^2-1)能被24整除。


  • 从输入url到显示网页,后台发生了什么?

简单来说有以下步骤:
1. 查找域名对应的IP地址。这一步会依次查找浏览器缓存,系统缓存,路由器缓存,ISP DNS缓存,根域名服务器。
2. 向IP对应的服务器发送请求。
3. 服务器响应请求,发回网页内容。
4. 浏览器解析网页内容。
当然,由于网页可能有重定向,或者嵌入了图片,AJAX,其它子网页等等,这4个步骤可能反复进行多次才能将最终页面展示给用户。

更详细的解释可以参照:
http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html
http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/





*****************************************************************************************************************************************************************************************

以上内容参考了

何海涛博客

http://hi.baidu.com/mianshiti/home