笔试知识笔记

这篇笔记涵盖了C++编程的相关知识点,包括头文件的包含方式、指针与引用的区别、MVC设计模式的解释、浏览器处理URL的过程、字符串处理及内存管理。此外,还介绍了TCP/IP三次握手的详细步骤,帮助理解网络连接建立的过程。
摘要由CSDN通过智能技术生成

1.头文件

#include 后的文件名用尖括号(<>)括起来,说明这个头文件是系统提供的,编译程序时,编译器会直接到系统目录下去查找该头文件并加载之。

#include 后的文件名用引号("")引起来,一般用于自定义头文件,当编译程序时,编译器会先到当前工程目录下去寻找该文件,如果找不到会再到系统目录下去寻找。

好多头文件是以字母c开头的,如:cmath,cstdio,cstring等,因为这些是继承的c的头文件,用来区分c++自己的头文件,c++中可以使用#include <math.h>来直接使用c的头文件,但是不赞成使用该方法,建议使用#include <cmath>.....

多个源文件同时用到的全局整数变量,它的声明和定义都放在头文件中,是好的编程习惯

2.不同类型操作关系

任何复杂的表达式都可以分解为多个如下的格式
N1 op N2

N1和N2是操作数,op是运算符
Nx=N1 op N2, Nx的类型规则如下
1.如果N1和N2是同一类型,Nx和N1同一类型
2.如果N1和N2类型不同,N1和N2中类型优先级低的转化为类型优先级高的,是的N1和N2的类型一致,在进行运算
类型优先级从小到规则如下
char<unsigned char<short<unsiged short<int<unsigned int<long<unsigned long<float<double

eg.1
char w; int x; float y; double z;
w*x+z-y结果类型分析如下
表达式分解如下
t1=w*x   //w转化为int类型,结果t1是int类型
t2=t1+z  //t1转化为double类型,结果t2是double类型
t3=t2-y  //y转化为double类型,结果t3是double类型
t3为最终的结果

eg.2
18/4*sqrt(4.0)/8
分解为
t1=sqrt(4.0) //sqrt函数返回值为double类型,t1为double类型
t2=18/4      //18和4类型一致,t2为int类型
t3=t2*t1     //t2转化为double类型,结果t3为double类型
t4=t3/8      //8被转化为double类型, 结果为doble类型

eg.3
1+(int)(4/2.0)
分解为
t1=4/2.0      //2.0是double类型常量,4转化为double类型,结果t1是double类型
t2=(int)t1    //t1被强制转化为int类型,t2是int类型
t3=t2+1       //t2和1的类型一致,结果是int类型

3. 指针与引用的区别

指针是一个实体,而引用仅是个别名
●引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;
●引用没有const,指针有const,const的指针不可变;
●引用不能为空,指针可以为空;
●“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小;
●指针和引用的自增(++)运算意义不一样;
●引用是类型安全的,而指针不是 (引用比指针多了类型检查
从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存区域。指针:指向另一个内存空间的变量,我们可以通过它来索引另一个内存空间的内容,本身有自己的内存空间。 

4. MVC设计模式

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

5.描述在浏览器中敲入一个网址并按下回车后所发生的事情

步骤1:需要查找域名的IP地址,DNS查找过程如下:
(1)浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存各自固定的一个时间(2分钟到30分钟不等)。
(2)系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。
(3)路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
(4)ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。
(5)递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。
步骤2:浏览器给web服务器发送一个HTTP请求。请求中也包含浏览器存储的该域名的cookies。可能你已经知道&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值