【百度测开面经】学习记录
1、TCP和UDP的区别?
*(计算机网络-七层协议含义及作用)*
运输层:有时也译为传输层,向主机进程提供通用的数据传输服务。该层主要有以下两种协议:
(1)TCP提供面向连接的、可靠的数据传输服务;
(2)UDP提供无连接的、尽最大努力的数据传输服务,但不保证数据传输的可靠性。
2、DNS
DNS (Domain Name Server) 域名解析,方便人类记忆,上网通常使用的方式是域名。DNS协议将域名网站自动转换为具体的IP地址。域名服务主要是基于UDP实现的,服务器端又号为53
(1) 域名的层级关系
DNS中的域名都是用句点来分隔的,比如 www.server.com ,这里的句点代表了不同层次之间的界限。在域名中,越靠右的位置表示其层级越高。
(2) 域名解析的工作流程:只指路,不带路
3、输入网址到页面打开,都有哪些过程?
(对整个上网概念以及背后流程的了解)
指路原文: link
上网大致分三个方面:
1:客户端(也称用户端,较常用的就是万维网使用的网页浏览器)。
2:网络传输层(两台计算机经过计算机网络进行的数据通信)。
3:服务端(为客户端提供服务,提供资源,保存客户端数据的一种服务程序)。
一:URL解析
名词解释:
URL :(Uniform Resource Locator)统一资源定位符,用于互联网上不同资源的标示。
1:浏览器本地解析URL(一般是做格式化检查以及确认用http还是https协议,默认是http协议)。
2:浏览器本地缓存查找url对应ip。
3:本地host文件查找对应ip。
4:本地路由器dns查看对应ip。
若上面都查不到,则要请求到dns服务器查找ip。
1:服务商dns检查缓存是否存在对应ip。
2:若不存在缓存或者缓存过期 则到根域名服务商上查找对应ip。
3:根域名服务商也是先检查缓存,若无,则检查域名为哪个dns服务商负责解析。然后请求转发。获得域名对应ip。
最后:ip返回到本地服务商的dns,本地服务商dns更新缓存。客户端成功拿到ip。(至于为啥一定要拿到ip,因为我们的tcp/ip协议很任性的只能识别ip)
二:网络传输通信
1:客户端拿到ip地址后,想要进行通信,先要和对方取得联系。看对方在不在,这个通常是由三次握手来实现。
三次握手补充:客户端和服务器一共发送三个包,同步连接双方的序列号和确认号并交换 TCP) 建立tcp连接。与目标服务器建立短连接。
通俗的说就是这样:
客户端:在家么,想去你家看看你。
服务器:在呀,欢迎来玩啊。
客户端:马上到。
2:三次握手完成后,tcp和服务器之间就建立了一个可靠地虚拟通道。浏览器知道了这个消息后。就将http请求消息打包,通过tcp协议发送给了服务端。
3:服务端收到请求报文后,处理报文信息,处理完成后将数据打包返回给客户端啊。
4:通信完成后,通过四次挥手,拆除tcp连接。客户端或服务器均可主动发起挥手动作。
5:最后,客户端拿到返回数据。
三:页面渲染
1:浏览器会将返回的HTML通过深度遍历解析成一个DOM树。
2:将CSS解析成 CSS Rule Tree 。
3:根据DOM树和CSSOM来构造 Rendering Tree。
补充(CSSOM是一个建立在web页面上的 CSS 样式的映射,它和DOM类似,但是只针对CSS而不是HTML)
4:最后通过Rendering Tree,浏览器就可以知道每个节点和各节点css的关系,再算出每个节点在屏幕的位置就可以绘制出每个节点了。
上述渲染过程为从上而下,逐步完成。即浏览器绘制了一部分就会显示一部分出来,再继续计算下面的部分。
4、C++面向对象的特征
(1)封装
封装就是将数据和行为有机结合起来,形成一个整体。把数据和处理数据的操作结合形成类,数据和函数都是类的成员。
封装类的访问属性:
1)public(公有):成员可以在类外访问。
2)private(私有):成员只能被该类的成员函数访问。也是类对象的默认访问权限
3)protect(保护):成员只能被该类的成员函数或派生类的成员函数访问。
(2)继承
某种类型对象获得另一个类型对象的属性和方法。已有的类称为基类,新建的类称为子类,子类会继承父类的方法和成员变量。举个例子,手机是基类,派生类可以是小米、华为、苹果等。
(3)多态
动态多态,是基于封装和继承的来实现的,多个子类对继承于一个父类的虚函数进行重写,来实现不同状态。
多态是基于虚函数来实现的。多态实现的两大条件为:
(1)调用函数的对象必须是指针或者引用。
(2)被调用的函数必须是虚函数,且完成了虚函数的重写。
5、指针和引用
(1)指针:
存放某个对象的地址,其本身就是变量(命了名的对象),本身就有地址,所以可以有指向指针的指针;所指向的地址和其指向的地址中所存放的数据都可以改变。
(2)引用:
变量的别名,从一而终,不可变,必须初始化
注:不存在指向空值的引用,但是存在指向空值的指针
6.Linux常用命令
(1) 查看目录内容:ls
(2) 切换目录:cd
(3) 创建和删除操作:touch、rm、mkdir
(4) 拷贝和移动文件:cp、mv
(5) 查看文件内容:cat、more、grep
(6) 重定向:>、>>
(7) 其他:管道|、pwd、clear
题目来自牛客用户分享的面经,答案为作者整理,如有不正确之处,欢迎大家批评指正。