学运维能不能通过大厂面试,进来试试——面经总结(二)

下面将分享一些19年初去腾讯面试的小伙伴遇到的问题,有兴趣的朋友可以一起作答,欢迎大佬指出问题。作为一名下半年将要找工作的大三狗,内心十分慌张,借此平台,向各位大佬学习请教,一起进大厂。哈哈~

1.你了解Linux系统的开机引导过程吗?

(下图的过程只是概述,在前面的博文《面经总结(一)》中,专门对这个问题有一个详细的介绍。)
在这里插入图片描述

2.TCP与UDP的区别是什么?UDP的优点?

1)TCP/IP协议传输层中两个最常用的协议是UDP和TCP,UDP提供无连接的、不可靠的通信服务,TCP则提供面向连接的、可靠的通信服务

2)UDP是一个轻量级的传输层协议,它为应用层提供简单、无连接、不可靠的进程到进程的通信服务。如果应用进程需要低时延、小开销,同时没有对有序和可靠传输的需求,则适合采用UDP协议。
UDP 协议也被称为“尽力而为”的用户数据报服务。与IP协议提供的“尽力而为”数据报服务相似,UDP不提供UDP报文的差错恢复,不保证有序传输,不提供流量控制:UDP采用无连接方式,即UDP发送者和接收者之间通信时没有握手信号,无需事先建立连接。

UDP有以下优点: (1)没有连接建立的时延,速度快; (2) 无状态记忆、协议简单: (3) 头部只有8个字节,开销小: (4) 无流量控制:理论上UDP可以用任意速率发送,但存在引起拥塞和报文丢失的风险

UDP 最常用于流媒体应用, 这类应用的特点是可以容忍丢失,对时延很敏感,并且由于UDP是无连接的,支持多播和广播应用时简单、开销很小,恰好可以满足此类应用的要求。UDP的另一类应用是互联网中控制和管理协议消息的承载,如DNS和SNMP。由于UDP不保证可靠传输,应用层必须增加可靠性机制和特定的差错恢复机制来保证可靠通信。

3)与UDP相比,TCP相对复杂,能够为进程之间的通信提供可靠的、面向连接的字节流服务,适用于对时延不敏感,可靠性需求高的应用。基于TCP来实现进程间的通信时,应用层就不必考虑流量控制、数据丢失和错序等问题。缺点是由于协议复杂,TCP 的控制开销和传输时延较大,实时多媒体应用基本不使用TCP协议。

TCP协议提供的主要功能包括:连接管理;基于端口的复用和分解;可靠传输,包括差错控制、流量控制,顺序控制等。

3.TCP协议中为什么必须是"三次握手",不能是两次?(顺便提一句TCP三次握手、四次挥手个人认为有必要了解一下)

在这里插入图片描述

“ 三次握手” 算法中的第三次握手看起来似乎是多余的,但主要原因是, 在连接建立之前,TCP仅能依靠IP协议不可靠的网络服务,这意味着算法必须考虑服务器返回的第二次握手信号可能会因为丢失、超时等原因不能按时送达客户机的情况。假如没有第三次握手信号,出现上述的情况时,客户机会认为连接请求失败,而选择放弃或发起新的连接请求。此时服务器在发出第二次握手信号后就认为连接建立成功,再为连接分配资源,但实际的情况是连接建立仅仅成功了一半(Half Open)。这种打开了一半的连接 一样会占用服务器的资源,且很容易被攻击者利用。使用三次握手,在没有收到第三次握手信号前,服务器不会为连接分配资源,如果没有按时收到第三次握手信号,则服务器就删除这种打开了一半的连接。

4.进程之间的通信方式

信号,管道,消息队列,共享内存

5.影响服务器性能的指标

吞吐量(固定时间内,处理完毕的事务个数),cpu占用率,内存占用率。

6.http与https的区别

HTTP是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
的连接很简单,是无状态的。

HTTPS协议需要到ca申请证书,一般免费证书很少,需要交费。
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

7.进程和线程的区别

进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。

线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。

同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的。
进程切换时,消耗的资源大,效率高

两者均可并发执行。

8.都知道哪些高可用方案,keepalived的原理

keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器 从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成

9.mysql的备份方法

根据是否需要数据库离线:

冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行;
温备(warm backup): 服务在线,但仅支持读请求,不允许写请求;
热备(hot backup):备份的同时,业务不受影响。

利用select into outfile实现数据的备份与还原
利用mysqldump工具对数据进行备份和还原
利用lvm快照实现几乎热备的数据备份与恢复

10.Nginx和Apache的区别?

apache 相对于nginx 的优点:

rewrite ,比nginx 的rewrite 强大
动态页面,nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多超稳定

nginx相对于apache的优点:

(1) 轻量级,同样起web 服务,比apache占用更少的内存及资源 ,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 这归功于Nginx为我们选择了 epoll and kqueue 作为开发模型.
(2) 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
(3) 高度模块化的设计,编写模块相对简单
(4) 社区活跃,各种高性能模块出品迅速啊
(5) Nginx本身就是一个反向代理服务器
(6)负载均衡能力突出,Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

核心区别:apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程

小结:总的来说,根据大佬们所说,不管你是开发也好,或者是其他的,总之这一行,除了你专业所向必须精通外,网络基础、算法、操作系统一些基础知识也要掌握。慢慢来吧,慢慢积累,就算面试用不上,多学一点相关知识总没有坏处。不知大佬们怎么看?=-=

(还有一些高频率问题,我先研究研究····,未完待续…)

猜你喜欢

转载自blog.csdn.net/meltsnow/article/details/88557525