面试经验总结

http://www..com/article/5311315411/ 【C++面试知识】虎牙现场面
https://www.cnblogs.com/TenosDoIt/p/3456704.html C++智能指针
https://www.cnblogs.com/xiehongfeng100/p/4645555.html 智能指针
https://blog.csdn.net/ninili123456/article/details/53196090 判断大小端
大小端和数据字节对齐用在网络编程
大小端应用场合 :大小端常用于网络主机之间传输数据
网络协议 判断网络数据是否正确
哈希表一个key对应多个value冲突方法:
1、开放定址法:一旦发生冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将数据存入;
2、再散列函数法:换一个散列函数计算,如除留余数、折叠、平方取中等;
3、链地址法:将冲突的value存在一个单链表中,在散列表中存储这个单链表的头指针,无论有多少冲突,都在当前位置给单链表增加节点即可;
4、公共溢出区法:将所有冲突的关键字建立一个公共的溢出区(溢出表)来存放。

volatile作用:易变性。下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从内存中读取。“不可优化”特性。使编译器不对这个变量进行各种激进的优化,甚至将变量直接消除,保证程序员写在代码中的指令,一定会被执行。”顺序性”,能够保证Volatile变量间的顺序性,编译器不会进行乱序优化。
static对全局变量进行修饰改变了其作用域范围,由原来的整个工程可见变为本源文件可见。对于局部变量是存放在栈区的,其生命周期到该语句块执行结束,如用static修饰,便存放在静态数据区,其生命周期一直持续到整个程序执行结束。C++对类中的某个函数用static进行修饰,则表示该函数属于一个类而不是属于此类的任何特定对象static修饰函数使得函数只能在包含该函数定义的文件中被调用。
const修饰一般常量及数组,修饰符const可以用在类型说明符前、后都行;
const修饰指针变量及引用变量& :如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。不能在类声明中初始化const数据成员。const数据成员的初始化只能在类构造函数的初始化表中进行。Const作用:定义常量具有不可变性。 便于进行类型检查,消除安全隐患;可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。可以避免意义模糊的数字出现,很方便地进行参数的调整和修改。 同宏定义一样,可以不变则已,一变都变!
用extern会加速程序的编译过程,节省时间。此变量/函数是在别处定义的,要在此处引用。
内联函数是代码被插入到调用者代码处的函数。通过避免被调用的开销来提高执行效率,内联函数会检查参数类型,所以更安全(宏定义不检查);宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。
heap-完全二叉树,使用最大堆排序,以数组(vector)的形式存放。
hash table-散列表,是根据关键码值(Key value)而直接进行访问的数据结构,在O(1)下查找到元素。将待存数据的key经过映射函数变成一个数组(一般是vector)的索引,
多态性:指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。
C++的多态分为静态多态(编译时多态)和动态多态(运行时多态)两大类。静态多态通过重载、模板来实现;动态多态就是通过虚函数来体现。虚函数作用:允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。方便使用多态性。当调用一个虚函数时,被执行的代码必须和调用函数的对象的动态类型相一致。通过vtbl(virtual table)和vptr(virtual table pointer)来实现的。纯虚函数是在基类中声明的虚函数,构造函数不能是虚函数,必须有实体。 。而且,在构造函数中调用虚函数,实际执行的是父类的对应函数,因为自己还没有构造好。 析构函数可以是虚函数,将一个函数定义为纯虚函数,是将这个类定义为抽象类,不能实例化对象 。析构函数可以是纯虚的,但纯虚析构函数必须有定义体,因为析构函数的调用是在子类中隐含的。 构造函数或析构函数为私有函数,所以该类是无法被继承的,
内存分配:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。
一个由C/C++编译的程序占用的内存分为以下几个部分:
1、栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。
2、堆区(heap):一般是由程序员分配释放,若程序员不释放的话,程序结束时可能由OS回收,值得注意的是他与数据结构的堆是两回事,分配方式倒是类似于数据结构的链表。
3、全局区(static):也叫静态数据内存空间,存储全局变量和静态变量,全局变量和静态变量的存储是放一块的,程序结束后由系统释放。
4、文字常量区:常量字符串就是放在这里,程序结束后由系统释放。
5、程序代码区:存放函数体的二进制代码。

指针和引用的区别:相同点:1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。区别:1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;4. 引用没有 const,指针有 const;5. 引用不能为空,指针可以为空;6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;7. 指针和引用的自增(++)运算意义不一样;8.从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。
override(重写/覆盖)1、方法名、参数、返回值相同。2、子类方法不能缩小父类方法的访问权限。3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。4、存在于父类和子类之间。5、方法被定义为final不能被重写。
overload(重载)1、参数类型、个数、顺序至少有一个不相同。 2、不能重载只有返回值不同的方法名。3、存在于父类和子类、同类中。
动态链接是只建立一个引用的接口,而真正的代码和数据存放在另外的可执行模块中,在运行时再装入;而静态链接是把所有的代码和数据都复制到本模块中,运行时就不再需要库了。
小端模式:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端;
五种I/O 模式:
1、阻塞I/O (Linux下的I/O操作默认是阻塞I/O,即open和socket创建的I/O都是阻塞I/O)
2、 非阻塞 I/O 3、 I/O 多路复用 4、信号驱动 I/O (SIGIO) 5、异步 I/O
new是分配在*存储区而malloc分配在堆上;malloc和free是库函数,而new和delete是C++操作符;. new自己计算需要的空间大小,malloc需要指定大小;new在动态分配内存的时候可以初始化对象,调用其构造函数,delete在释放内存时调用对象的析构函数。而malloc只分配一段给定大小的内存,并返回该内存首地址指针,如果失败,返回NULL;new可以调用malloc来实现,但是malloc不能调用new来实现;C++允许重载new/delete操作符,malloc不允许重载。
平衡二叉树:其中每一个结点的左子树和右子树的高度差至多等于1。我们将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF。平衡二叉树的目的是为了减少二叉查找树层次,提高查找速度
红黑树:是平衡树。1、红节点的孩子节点不能是红节点;2、从根到前端节点的任意一条路径上的黑节点数目一样多。红黑树是每个节点都带颜色的树,节点颜色或是红色或是黑色,是一种查找树。红黑树从根节点到叶子节点的最长的路径不多于最短的路径的长度的两倍。对于红黑树,插入,删除,查找的复杂度都是O(log N)。红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
字典树(Trie)可以保存一些字符串->值的对应关系。
多进程:优点:内存隔离,单个进程的异常不会导致整个应用的崩溃。方便测试,编程简单。
缺点:进程间调用,通讯和切换均比多线程大,耗资源。使用场所:目标子动能交互少,如果资源和性能许可,可以设计由多个子应用程序来组合完成目的。
多线程 :优点:提高系统的并行性,并且开销小。数据共享方便(不需要进程间的通信)
缺点:没有内存隔离,单个线程的崩溃会导致整个应用程序的退出。编程复杂;调试困难;线程执行的随机性可能导致逻辑混乱,甚至发生死锁现象;使用场所:在存在大量IO,网络等耗时操作,或者需要和用户交互时,使用多线程有利于提高系统的并行性和用户界面快速响应从而提高友好性。
进程线程区别:一个进程可以包含多个线程,它们共享这个进程的资源。进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。进程是资源分配的最小单位,线程是程序执行的最小单位。CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式进行。但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。“互斥锁” Mutex,防止多个线程同时读写某一块内存区域。“信号量”(Semaphore),用来保证多个线程不会互相冲突。
进程间通信—使用共享内存:
面试经验总结
计算机网络体系结构:OSI,TCP/IP,五层协议的体系结构
答:OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。
应用层(网络服务与最终用户的一个接口)FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
表示层(数据的表示.安全.压缩、翻译。)JPEG.ASCll.MPEG、加密格式等
会话层(建立.管理.终止会话。)
传输层(提供端到端的可靠报文传递和错误恢复):TCP、UDP
网络层(进行逻辑地址寻址,实现不同网络之间的路径选择。):IP、ICMP、 (路由器)
数据链路(建立逻辑连接.进行硬件地址寻址.差错校验等功能。)VLAN、MAC (网桥,交换机)
物理层(通过媒介传输比特,确定机械及电气规范):RJ45、CLOCK、IEEE802.3 (中继器,集线器)
TCP连接的三次握手:
第一次握手:客户端发送一个tcp的syn标志位置为1的包(连接请求),指明客户打算连接服务器的端口;
第二次握手:当服务器收到连接请求之后,返回确认包(ack)应答,即将syn和ack标志位同时致为1(授予连接),并为这次连接分配资源;
第三次握手:客户端收到服务器的授予连接请求之后,再次发送确认包(ack)(syn标志位为0,ack标志位为1),并分配资源,这样tcp就建立连接了。
1、tcp是基于连接的,可靠性高;udp是基于无连接的,可靠性较低;
2、由于tcp是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差;同时过程复杂,也使其易于被攻击;而udp无连接,无建立连接的过程,因而实时性较强,也稍安全;如果对实时性要求高和高速传输的场合下需要使用udp;如果需要传输大量数据且对可靠性要求高的情况下应该使用tcp;在可靠性要求较低,追求效率的情况下应该使用udp。
为什么用udp:UDP能够对握手过程进行精简,减少网络通信往返次数;收发快速,无阻塞。
采用TCP,一旦发生丢包,TCP会将后续包缓存起来,等前面的包重传并接收到后再继续发送,延迟会越来越大。本系统带宽足够,丢包较少。少量的丢包也不会产生影响。激光扫描仪 VLP-16 的工作模式是 UDP 客户端模式,控制器 CM3 作为服务器,创建 UDP Server Socket 套接字并且绑定 VLP-16 的IP 地址和端口号,读取由 VLP-16 发送过来的数据。
面试经验总结
pwd 得到当前目录。… 上一次 / 系统根目录 ~ 用户主目录
Top 显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
查看当前进程ps 执行退出exit 清屏 clear
cat 文件名 #显示全部文件内容
more 文件名 #分页显示文件内容
less 文件名 #与 more 相似,更好的是可以往前翻页
tail 文件名 #仅查看尾部,还可以指定行数
head 文件名 #仅查看头部,还可以指定行数
Grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。
使用 & 在命令结尾来让程序自动运行
Netstat 监控TCP/IP网络可以显示路由表、实际的网络连接以及每个网络接口设备的状态信息。
netstat -a # 列出所有端口 netstat -l # 只显示监听端口 netstat -p显示进程ID\名称
Structure 与 Union主要有以下区别:

  1. struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。
  2. 对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。
    构造数据类型,也叫联合体:用途:使几个不同类型的变量共占一段内存(相互覆盖)
    结构体是一种构造数据类型,用途:把不同类型的数据组合成一个整体-------自定义数据类型

如何判断一棵树是平衡二叉树
如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

面向对象的三个特征,分别有什么作用?
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承:继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展
多态:允许将子类类型的指针赋值给父类类型的指针。
实现多态,有二种方式,覆盖,重载。

引用和多态的区别?
答:引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
多态是允许你将父对象设置成和它一个或更多的子对象相等的技术,赋值之后, 父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单地说就是一句话,允许将子类类型的指针赋值给父类型的指针。多态在C++中是通过虚函数实现的。

同步通信与异步通信区别:
1.同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。 2.同步通信效率高;异步通信效率较低。3.同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。4.同步通信可用于点对多点;异步通信只适用于点对点。

IP地址的分类:
A类地址:以0开头, 第一个字节范围:1~126(1.0.0.0 - 126.255.255.255);
B类地址:以10开头, 第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);
C类地址:以110开头, 第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);
D类地址:以1110开头,第一个字节范围:224~239(224.0.0.0 - 239.255.255.255);(作为多播使用)
E类地址:保留
其中A、B、C是基本类,D、E类作为多播和保留使用。
以下是留用的内部私有地址:
A类 10.0.0.0–10.255.255.255
B类 172.16.0.0–172.31.255.255
C类 192.168.0.0–192.168.255.255
IP地址与子网掩码相与得到网络号:
ip : 192.168.2.110&
Submask : 255.255.255.0
网络号 :192.168.2 .0
注:主机号,全为0的是网络号(例如:192.168.2.0),主机号全为1的为广播地址(192.168.2.255)

ARP是地址解析协议,简单语言解释一下工作原理:
答:1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。
描述RARP协议:
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。RARP只能用于具有广播能力的网络。
各种协议的介绍:
ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,
DHCP协议:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段,使用UDP协议工作。具体用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作*管理的手段。

四次挥手
断开一个TCP连接则需要“四次握手”。
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了,但是,此时主动关闭方还可 以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

在浏览器中输入www.baidu.com后执行的全部过程:
1、客户端浏览器通过DNS解析到www.baidu.com 的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.181.27.48,然后通过TCP进行封装数据包,输入到网络层。
2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3、客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
4、客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。

DNS域名系统,简单描述其工作原理:
当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。

网络排错常用思路及每一步的作用或目的。
先ping回环地址,检查TCP/IP驱动是否正常;
再ping本网段其他主机,检查内网通信是否正常;
再ping默认网关,检查出口路由是否正常;
再ping其他网段其他主机,检查远程连通性。

请描述Linux系统优化的12个步骤。
⑴登录系统:不使用root登录,通过sudo授权管理,使用普通用户登录。
⑵禁止SSH远程:更改默认的远程连接SSH服务及禁止root远程连接。
⑶时间同步:定时自动更新服务器时间。
⑷配置yum更新源,从国内更新下载安装rpm包。
⑹调整文件描述符数量,进程及文件的打开都会消耗文件描述符。
⑻精简开机启动服务(crond、sshd、network、rsyslog)
⑼Linux内核参数优化/etc/sysctl.conf,执行sysct -p生效。

如果一台办公室内主机无法上网(打不开网站),请给出你的排查步骤?
①首先确定物理链路是否联通正常。
②查看本机IP,路由,DNS的设置情况是否达标。
③telnet检查服务器的WEB有没有开启以及防火墙是否阻拦。
④ping一下网关,进行最基础的检查,通了,表示能够到达服务器。
⑤测试到网关或路由器的通常情况,先测网关,然后再测路由器一级一级的测试。
⑥测试ping公网ip的通常情况(记住几个外部IP),
⑦测试DNS的通畅。ping出对应IP。
⑧通过以上检查后,还在网管的路由器上进行检查。
3.请简要描述Linux系统下源代码编译方式安装软件的大致步骤
tar释放源码包
cd切换到解压目录
./configure配置
make编译
makeinstall安装
如何查看端口占用情况和处理方法。
①.使用netstat命令查看端口占用情况。netstat -tln
②.我们还需要知道是什么程序占用,加上-p参数 netstat -tlnp
③.如果比较多的时候我们也可以用grep过滤一下 然后找到端口进程 netstat -tlnp|grep 10221
④.然后kill掉占用端口的进程即可,正常情况下就可以启动新进程好了
网络故障时排除故障的流程
首先确认是不是名称解析出了问题 dig hostname
是不是IP或者网卡的问题 ifconfig #查看网卡的设置和网卡的IP地址
若网卡正常还有正确获取IP地址则可能是Default gateway网关不正确
如果以上设置都正确则看看内核里是否载入了网卡驱动 cat /etc/modprobe.conf #查看是否载入网卡驱动 如果以上都不是则重新启动网卡看看有没有错误提示
ifdown eth0 #停用网卡 ifup eth0 #启动网卡
在正常情况下无论是停用或是启动系统都不会提示任何信息
开机故障时排除故障的流程
首先查看是不是开机管理程序出了问题
在RHEL4中会使用GRUB当作默认的开机管理程序
接下来确认有没有正确的载入内核 开机时发生panic则表示根目录没有挂载成功
检查/sbin/init设置有没有错误 检查/etc/inittab设置有没有错误
并且检查根目录有没有损坏 如果/etc/rc.d/rc.sysinit执行不成功则有可能是 /bin/bash文件损坏 /etc/fstab设定有误 都不是以上问题的话则检查/etc/rc.d/rc文件 检查/etc/rc.d/rcn1-6.d有没有问题
文件系统故障时,排除故障的流程
文件系统故障,通常是因为电脑宕机或不正常关机
当文件系统故障时,先卸载文件系统
#fsck –y 来测试指定的文件系统 当文件系统修复后,再挂载文件系统 #fsck 可以用来测试并修复Linux的文件系统 修复文件系统,全程文字记录 umount /home #卸载文件系统 ls /home #查看目录是不是空的确定是否被卸载
fsck -y /dev/sda8 #检查并修复文件系统对应的文件
fsck 1.39 (29-May-2006) e2fsck 1.39 (29-May-2006) /home: clean, 31/130560 files, 32156/522080 blocks mount /dev/sda2 /home #挂载修复完成的文件系统
ls /home #查看是否修复成功 apache lost+found soft tmail tmail_v4.5.1_release.tar www
Linux 下进程间的通信方式有以下几种
管道、信号、共享内存、消息队列、信号量、套接字socket、文件锁

死锁:
条件:互斥条件、请求与保持条件、不剥夺条件、循环等待条件
预防:要求进程申请资源时遵循某种协议,从而打破产生死锁的四个必要条件中的一个或几个,保证系统不会进入死锁状态。
避免:安全序列、银行家算法
检测与解除:撤销所有的死锁进程、进程回退(Roll Back)再启动、剥夺死锁进程的所有资源可以解除死锁

ping 使用的协议为icmp,通过域名解析,需要用到DNS,局域网中使用arp进行主机间的通信。TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接

红黑树和avl树都属于自平衡二叉树;
两者查找、插入、删除的时间复杂度相同;O(log2n)
包含n个内部结点的红黑树的高度是o(logn);
TreeMap是一个红黑树的实现,能保证插入的值保证排序
红黑树不追求“完全平衡 ”,只要求部分地达到平衡,降低对旋转的要求,提高性能。
红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高
在AVL树中任何节点的两个儿子子树的高度最大差别为一
面试经验总结
HTTP状态码:200(“OK”)一切正常。 404(“Not Found”)当客户端所请求的URI(统一资源标识符)不对应于任何资源时,发送此响应代码。410用于服务器端知道客户端所请求的资源曾经存在,但现在已经不存在了的情况。
HTTP和HTTPS的区别:
HTTP:超文本传输协议,是在互联网上应用最广泛的一种网络协议。是一个客户端和服务端请求和应答的标准(TCP),用于从WWW(超文本)服务器传输超文本到本地浏览器。它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,可以看做是HTTP的安全版,即HTTP+SSL(安全套接层)。HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS作用:建立一个信息安全通道,保证数据传输的安全。确认网站的真实性。区别:
1、HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密传输协议。
2、HTTPS协议需要申请证书,一般免费证书少,因而需要一定费用。
3、连接方式完全不同,用的端口也不一样。前者是80,后者是443。
4、HTTP连接是无状态的,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,安全性高于HTTP协议。
HTTP的工作原理:1、Client与Server建立连接,单击某个超链接,HTTP的工作开始。
2、连接建立后,Client发送一个请求给Server,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符,Client信息和可能的内容。3、Server接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括Server信息、实体信息和可能的内容。4、Client接收Server返回的信息通过浏览器显示在用户的显示屏上,然后Client和Server断开连接。
HTTPS的工作原理:1、Client使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接。2、Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。3、客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。4、客户端的浏览器根据双方同意的安全等级,建立会话**,然后利用网站的公钥将会话**加密,并传送给网站。5、Web服务器利用自己的私钥解密出会话**。6、Web服务器利用会话**加密与客户端之间的通信。
Https优缺点:优点:可认证用户和服务器,确保数据发送到正确的客户机和服务器;可防止数据在传输过程中不被窃取、改变,确保数据的完整性。大幅增加了中间人攻击的成本。
缺点:握手阶段比较费时,页面的加载时间延长;HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;SSL证书需要钱,功能越强大的证书费用越高,加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。
打开一个网页的过程:
面试经验总结