运维开发面试常见问题汇总(一直在更新)
1.我看你做过LVS,说一下你对LVS的理解?2 DR模式和NAT模式的区别。优缺点3.MySQL数据库也玩过是吧,说一下主从复制原理?4. binlog里面日志格式有哪些,有什么区别?基于row格式和基于SQL语句的格式紧张说反了,被纠正了5. nginx里面,配upstream的时候,长连接要你配你会怎么配6. 计算机网络的tcp和udp说一下7. tcp是状态机里面,closedwait和
1.我看你做过LVS,说一下你对LVS的理解?
2 DR模式和NAT模式的区别。优缺点
NAT模式要求:
1.LVS服务器需要有不同的网段。
2.真实服务器的网关必须设置为LVS的ip地址。
优点:
1.安全
2.可以实现不同网段的数据请求。
缺点:
因为在 VS/NAT 中请求和响应报文都需要通过负载调度器,伸缩能力有限, 当服务器结点数目升到 20 时,调度器本身
有可能成为系统的新瓶颈。
DR模式
1.客户端将访问vip报文发送给LVS服务器;
2.LVS服务器将请求报文的mac地址改为后端真实服务器的mac地址;
3.后端真实服务器得到访问报文后进行ip查看,再确认自己有vip之后进行请求处理;
4.后端真实服务器在处理完数据请求后,直接响应客户端。
要求:
1.LVS服务器和后端真实的服务器要处在同一vlan中。
2.LVS和后端服务器上都要有vip,并且后端真实服务器上的vip不能对外进行广播。
优点:
1.LVS服务器只是修改了mac地址,所以非常快速,并且LVS不会成为瓶颈。
缺点:
1.要求较高,LVS服务器必须和后端真实服务器处于同一vlan中;
2.后端真实服务器直接响应客户端,对于后端真实服务器来说,并不安全。
Nginx、HAProxy、LVS三者的优缺点
https://blog.csdn.net/qlj324513/article/details/81541282
3.MySQL数据库也玩过是吧,说一下主从复制原理?
4. binlog里面日志格式有哪些,有什么区别?
Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW!
Statement:每一条会修改数据的sql都会记录在binlog中。
Row:不记录sql语句上下文相关信息,仅保存哪条记录被修改。
Mixedlevel: 是以上两种level的混合使用,
5. nginx里面,配upstream的时候,长连接要你配你会怎么配
Nginx配置到上游服务器的长连接如下:
upstream tomcats {
server 192.168.1.190:8080;
keepalive 32;
}
server {
listen 80;
server_name www.tomcats.com;
location / {
proxy_pass http://tomcats;
proxy_http_version 1.1;
# 设置Connection为空串,以禁止传递头部到后端
# http1.0中默认值Connection: close
proxy_set_header Connection "";
}
}
# 默认情况下 Nginx 访问后端都是用的短连接(HTTP1.0),一个请求来了,Nginx 新开一个和后端的连接,
# 请求结束连接回收。HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以# 传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
配置与上游服务器的长连接需要在upstream模块中配置keepalive
这个参数和之前http里面的 keepalive_timeout 不一样。
这个参数的含义是,连接池里面最大的空闲连接数量。
【upstream配置】
upstream中,有一个参数特别的重要,就是keepalive。
这个参数和之前http里面的 keepalive_timeout 不一样。
这个参数的含义是,连接池里面最大的空闲连接数量。
6. 计算机网络的tcp和udp说一下
https://blog.csdn.net/weixin_43215948/article/details/106966135
7. tcp是状态机里面,closedwait和 timewait说一下,区别
closedwait第二次挥手服务端发送ACK确认请求时的状态
timewait第四次挥手时客户端的状态
8 . 来个场景题把,当upsteam到后端的时候,后端没有关闭连接会怎么样?
Nginx upstream与后端的连接默认为短连接,通过HTTP/1.0向后端发起连接,并把请求的"Connection" header设为"close"。Nginx与前端的连接默认为长连接,一个用户跟Nginx建立连接之后,通过这个长连接发送多个请求。如果Nginx只是作为reverse proxy的话,可能一个用户连接就需要多个向后端的短连接。如果后端的服务器(源站或是缓存服务器)处理并发连接能力不强的话,就可能导致瓶颈的出现。
9. 聊一下CPU,内存,io,网络,
CPU利用率和CPU负载的关系
CPU利用率:显示的是程序在运行期间实时占用的CPU百分比
CPU负载:显示的是一段时间内正在使用和等待使用CPU的平均任务数。CPU利用率高,并不意味着负载就一定大。举例来说:如果我有一个程序它需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是趋近于“1”,因为CPU仅负责一个工作嘛!如果同时执行这样的程序两个呢?CPU的使用率还是100%,但是工作负载则变成2了。所以也就是说,当CPU的工作负载越大,代表CPU必须要在不同的工作之间进行频繁的工作切换。
https://blog.csdn.net/qq_36800800/article/details/89669166
11 那我们聊一下负载,uptime和top,那三个数字是怎么,怎么算出来的,怎么判断健康
15 文件系统说一下,ext4与xfs的区别
EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本。
(1)Ext4的文件系统容量达到1EB,而文件容量则达到16TB
(2)理论上支持无限数量的子目录
(3)Ext4文件系统使用64位空间记录块数量和i-节点数量
(4)Ext4的多块分配器支持一次调用分配多个数据块
XFS (1)根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
(2)采用优化算法,日志记录对整体文件操作影响非常小
(3) 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间
(4)能以接近裸设备I/O的性能存储数据
在linux系统中,链接分两种 :一种被称为硬链接(Hard Link),另一种被称为符号链接或软链接(Symbolic Link)。
1)默认不带参数情况下,ln命令创建的是硬链接。
2)硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号与源文件不同。
3)ln命令不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到。
4)删除软链接文件,对源文件及硬链接文件无任何影响;
5)删除文件的硬链接文件,对源文件及软链接文件无任何影响;
6)删除链接文件的原文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状);
7)同时删除原文件及其硬链接文件,整个文件才会被真正的删除。
8)很多硬件设备中的快照功能,使用的就类似硬链接的原理。
9)软连接可以跨文件系统,硬链接不可以跨文件系统。
linux正在执行的程序突然不能执行了,端口也不能访问,日志文件也查不到,需要从哪
网络是否有问题,火墙问题,端口是否占用,进程运行状态
进程和线程的区别
1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)
2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。
而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
3、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
4、但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
输入www.baidu.com后的过程详解
1、客户端浏览器通过DNS解析到www.baidu.com的IP地址202.108.22.5,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到202.108.22.5,然后通过TCP进行封装数据包,输入到网络层。
2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3、客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,无非就是通过查找路由表决定通过那个路径到达服务器。
4、客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
事件顺序:
(1) 浏览器获取输入的域名www.baidu.com
(2) 浏览器向DNS请求解析www.baidu.com的IP地址
(3) 域名系统DNS解析出百度服务器的IP地址 (详细介绍DNS)-通过网关出去
(4) 浏览器与该服务器建立TCP连接(默认端口号80)
(5) 浏览器发出HTTP请求,请求百度首页
(6) 服务器通过HTTP响应把首页文件发送给浏览器
(7) TCP连接释放
(8) 浏览器将首页文件进行解析,并将Web页显示给用户。
Session和cookie分别是什么,是用来干什么的,说明两者的区别;
cookie和session都是用来跟踪浏览器用户身份的会话方式。
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
(4)单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
(5)所以:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中
1.df 命令如何查看 文件系统的格式 df -T df 主要是一个查看系统磁盘挂载情况的命令
2.free 命令中的 ***是什么? 查看内存的使用情况 free -m
3.Python里面的os模块的使用
Ansible和saltstack的区别
https://blog.csdn.net/chao199512/article/details/81771357
从速度快慢 安全性能 语法的学习 模块使用 操作的用户
6.如何使用vi命令替换一个字符串
:%s/原字符/替换字符/g %全文的行 g 全文的列
1,5s/:/##/g 1到5行
/adm/,/sync/s/:/##/g adm到sync之间的;换成#
7.http的状态码
$?是什么什么意思 输出结果
10.Lvs的dr模式
11.轮询模式都有哪些
12.Docker的启动方式,删除docker容器的方式
13.Yum数据库损坏如何恢复
Dhcp的搭建
https://blog.csdn.net/weixin_43215948
Dns的工作方式
https://blog.csdn.net/weixin_43215948/article/details/106682312
16.Ps指令如何查看具体进程的pid
pgrep -u uid
17.Netstat中的u是啥意思,t是啥意思
Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。以上功能使 netstat 成为网管和系统管理员的必备利器。
18.如何使用sed命令删除一个含有abc的行
sed -e '/abc/d' 文件名
19.用linux的防火墙做了什么,现在还在做么?
iptables 和firewalld 火墙策略的设定
K8s和swam有没有接触
centos和rhel系统的区别
最重要的区别就是版权问题,redhat的红帽图标是有版权的,centos是redhat的社区版。redhat里面有收费服务,而centos里面没有。
6.LVS的三种模式 nat dr tunnel隧道模式
7.LVS的三种模式的优缺点
8.LVS的三个模式里,RS(Real server)的回应报文那些经过了LVS
9.Keepalived介绍下你使用它做了什么,怎么实现的。
10.Docker和传统虚拟机的区别是什么
11.Docker是怎么实现隔离的?
详细的展开介绍:https://blog.csdn.net/JKX_geek/article/details/104555817
进程的隔离; 它其实是借助了Linux内核的Namespace
技术来实现的,这里我结合一段C程序来模拟一下进程的隔离。这就是容器隔离进程的基本原理了,Docker主要就是借助 Linux 内核技术Namespace来做到隔离的,其实包括我后面要说到文件的隔离,资源的隔离都是在新的命名空间下通过mount
挂载的方式来隔离的。
文件的隔离; mount
挂载
资源的限制 cgroup
12.Kubernetes介绍一下,有什么优势
13.Docker和传统虚拟机的优势和缺点是什么
14.问一下网络,交换机和路由器的区别?
15.路由器和交换机关注的重点是什么。。(其实HR问的是交换机怎么维护一个地址转发表,但当时没get到点)
16.路由协议了解那些?答:rip,ospf,bgp
17.你给我介绍下rip和ospf的区别
18.你给我讲一下ospf的Dr***过程(😂我cue错了点,说到正尽兴被打断了。。)
常用有哪些网络诊断工具答:ping,traceroute,tcpdump
ping: 使用这个命令判断网络的连通性
netstat
这个命令用来查看当前建立的网络连接
tcpdump
tcpdump
(dump traffic on a network)是一个强大的命令行抓包工具,千万不要被它的名称误导以为只能抓取tcp包,它能抓任何协议的包
route
route命令用于查看和修改路由表:
traceroute
ping命令用于探测两个主机间连通性以及响应速度,而traceroute会统计到目标主机的每一跳的网络状态(print the route packets trace to network host),这个命令常常用于判断网络故障,比如本地不通,可使用该命令探测出是哪个路由出问题了。
20.给我讲一下traceroute,tcpdump实现的原理?
21.traceroute给我讲一下它是如何在ttl过期后,得知发送下一个报文的?
22.ping作用是什么?如果ping不通,可能原因是?(送分了,可能怕我尴尬。。)
23.ansible使用它做过什么?
24.使用ansible管理主机的优势和缺点?
25.使用ansible能做什么?(开个脑洞)
26.用过ansible同类软件么?
- 网络配置相关:ifconfig、ip
- 路由相关:route、netstat、ip
- 查看端口工具:netstat、lsof、ss、nc、telnet
- 下载工具:curl、wget、axel
- 防火墙:iptables、ipset
- 流量相关:iftop、nethogs
- 连通性及响应速度:ping、traceroute、mtr、tracepath
- 域名相关:nslookup、dig、whois
- web服务器:python、nginx
- 抓包相关:tcpdump
- 网桥相关:ip、brctl、ifconfig、ovs
一面
1.vim的使用,如何删除整个文件内容,如何复制粘贴,如何到达行首
:%d yy gg
2.yum命令都是用的什么源,阿里的有用么?
3.uptime命令和top命令问了一些
4.如何使用shell脚本精确查到一个使用80端口的进程并杀掉
10 #!/bin/bash
11 read -p "please input a port number:" port
12 pid=$(netstat -antlupe |grep :$port | awk '{print $7}' | awk -F "/" '{print $1}')
13 if [ -n "$pid" ];then
14 kill -9 $pid &> /dev/null
15 echo port $port is killed
16 else
17 echo port $port is not exist
18 fi
5.对nginx的了解,主要用来做什么,用了什么模块
6.sed和awk的区别
grep 主要用于搜索某些字符串
sed,awk 用于处理文本
7.sed如何替换hello为world
sed ’s/hello/world/g' passwd 把文件中的a替换成
8.LB主要用的什么实现的,keepalive原理,有没有对调度机做热备
10.防火墙做了什么工作,如何设置一个ip不能访问该主机
写火墙策略: 方法一:对firewalld讲 firewall-cmd --permanment --add-source=ip地址 --zone=block
允许访问 firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.0/24 -p tcp --dport 22 -j ACCEPT
iptables:
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 172.25.254.20 -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -j REJECT
buffer和cache的区别
https://blog.csdn.net/xifeijian/article/details/8209758
12.主从数据库如何实现,如何grant对数据库远程访问,mha的原理,如果一个数据库还在持续不断的写入数据,你怎么备份
13.还是想问你一个python题,给你两个列表,然后你对比输出不一样的元素并生成一个新列表。
list1 = [1, 2, 3]
list2 = [2,3,5,6]
list = []
for i in list1:
if i not in list2:
list.append(i)
for i in list2:
if i not in list1:
list.append(i)
print(list)
print ([i for i in list1 if i in list2])
14.如何查看一个进程下有多少个线程
pstree -p pid | wc -l
15.ansible的部署流程
描述Linux运行级别0-6的各自含义
0:关机模式
1:单用户模式<==破解root密码
2:无网络支持的多用户模式
3:有网络支持的多用户模式(文本模式,工作中最常用的模式)
4:保留,未使用
5:有网络支持的X-windows支持多用户模式(桌面)
6: 重新引导系统,即重启
描述Linux系统从开机到登陆界面的启动过程
⑴开机BIOS自检,加载硬盘。
⑵读取MBR,MBR引导。
⑶grub引导菜单(Boot Loader)。
⑷加载内核kernel。
⑸启动init进程,依据inittab文件设定运行级别
⑹init进程,执行rc.sysinit文件。
⑺启动内核模块,执行不同级别的脚本程序。
⑻执行/etc/rc.d/rc.local
⑼启动mingetty,进入系统登陆界面。
1.dns做了什么,怎么实现的,在哪个文件夹下 /etc/named.conf
2.修改dns服务器怎么改的
Linux中nfs ,ftp 和samba有什么区别
NFS:Network File System 是已故的Sun公司制定的用于分布式访问的文件系统,它的本质是文件系统。主要在Unix系列操作系统上使用,基于TCP/IP协议层,可以将远程的计算机磁盘挂载到本地,像本地磁盘一样操作。
samba是Unix系统下实现的 Windows文件共享协议-CIFS,由于Windows共享是基于NetBios协议,是基于Ethernet的广播协议,在没有透明网桥的情况下(如VPN)是不能跨网段使用的。它主要用于unix和windows系统进行文件和打印机共享,也可以通过samba套件中的程序挂载到本地使用。
FTP的目的是在Internet上共享文件而发明的一种协议,基于TCP/IP。世界上绝大多数系统都会有支持FTP的工具存在,通用性很强。目前少有人把VPS修改成支持FTP组件的形式,主要是因为FTP一开始就不是为了文件系统而设计的。
apche和nginx
nginx 相对 apache 的优点:
轻量级,同样起web 服务,比apache 占用更少的内存及资源抗并发,
nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速啊
apache 相对nginx 的优点:
rewrite ,比nginx 的rewrite 强大
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多
超稳定
1、作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue 作为开发模型.
Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.
2、Nginx 配置简洁, Apache 复杂 ,Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够不间断服务的情况下进行软件版本的升级 . Nginx 静态处理性能比 Apache 高 3倍以上 ,Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端来使用 ,Apache 的组件比 Nginx 多.
3、最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程 .
4、nginx的优势是处理静态请求,cpu内存使用率低,apache适合处理动态请求,所以现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。
4.如何找到文件夹中大于100兆的文件并删除
find / -type f -size +100M | xargs rm -
5.数据链路层和数据传输层的校验方法的区别
产生差错的帧会被丢弃,然而过去OSI的观点是:必须让数据链路层向上提供“可靠”传输,所以在CRC检测基础上,增加了帧编号、确认和重传机制。收到正确的帧就要向发送端发送确认。发送端在一定的期限内若没有收到对方的确认,就认为出现了差错,因为就进行重传,直到收到对方的确认为止。但现在的通信线路的质量已经大大提高,由通信质量不好而产生差错的概率已经大大降低,所以互联网采取区别对待的方法:
1.对于通信质量良好的有线传输链路,数据链路层协议不采用确认和重传机制,不要求数据链路层向上提供可靠的传输,因为局域网信道质量很好,因此产生比特差错的概率是很小的,因此以太网提供的是尽最大努力的交付,是不可靠的交付。如果在数据链路层出现了差错就靠上层协议来完成改正差错的任务。例如,如果高层使用TCP协议,那么TCP发现丢失了一些数据的时,经过一段时间后,TCP就把这些数据重新传递给以太网进行重传。但以太网不知道这是重传帧,而是当做新的数据帧来发送。
2.对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠的传输服务。
以上虽然保证了比特的无差错传输,但事实上,这并不是向上提供了可靠传输 。
真正的可靠传输是:数据链路层的发送端发送什么。接收端就要接收到什么。不仅仅要提供比特无差错,还要保证帧无丢失、无乱序、无重复
可靠传输就要提及运输层的TCP的差错检测。
6.长连接和短连接及适用情况
短连接
连接->传输数据->关闭连接
HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。
长连接
连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。
长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,处理时直接发送数据包就OK了,不用建立TCP连接。数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
7.https加密过程
HTTPS在通信过程中使用的是对称加密,当然,它的密钥是无法直接获取的,因为它的密钥是通过非对称加密进行传输的,中间还有很多复杂的过程,保证密钥是绝对安全的。那么,问题来了,非对称加密那么安全,为什么要多此一举来使用这种复杂的对称加密方式呢,原因很简单。非对称加密的通信过程会影响网络通信的性能。
https://blog.csdn.net/SenchunHuang/article/details/86640997
8.4次挥手大量Time_wait的解决方法
TCP/IP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的 TIME_WAIT状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源。这个时候我们可以考虑优化TCP/IP 的内核参数,来及时将TIME_WAIT状态的端口清理掉。
通过优化相关的内核参数来解决这个问题。1) 开启tw重用: net.ipv4.tcp_tw_reuse = 1
2) 开启tw回收: net.ipv4.tcp_tw_recycle = 1 销毁掉 TIME_WAIT。
9.说说LVS调度算法,优缺点
一、轮叫调度(Round-Robin Scheduling ) 二、加权轮叫调度(Weighted Round-Robin Scheduling ) 三、最小连接调度(Least-Connection Scheduling ) 四、加权最小连接调度(Weighted Least-Connection Scheduling) 五、基于局部性的最少链接(Locality-Based Least Connections Scheduling )
10.乐观锁悲观锁
悲观锁:共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程
乐观锁:总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。
适用场景:像乐观锁适用于写比较少的情况下(多读场景),即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果是多写的情况,一般会经常产生冲突,这就会导致上层应用会不断的进行retry,这样反倒是降低了性能,所以一般多写的场景下用悲观锁就比较合适。
11.数据库如何在读时确保数据时最新的(说是在committed之前添点什么东西,我一直在回答隔离性,结果不对)
3、k8s网络通信原理(pod内,pod间)
4、docker原理,与虚拟机区别
5、mysql主从原理
6、编程题:判断string是否有重复字符出现
4、LVS的NAT、TUN、DR原理及区别
5、keeplived高可用原理(VRRP)
6、nginx为什么比httpd快(epoll)
Nginx与Apache都用到了多路复用IO模式,但是两个不同的是,Nginx用的是epoll,而Apache用的是select
elect:当应用程序写文件指令发出的期间,select模式会每隔一定时间去询问、查看文件上是够写入成功,如果写入成功,通过轮循来实现,并且线性扫描所有的socket,这个期间不管,这个socket是否活动,这个期间将阻塞
epoll:当应用程序写文件指令发出的期间,epoll会等待,直到数据返回。期间不会做多次询问与查看,而是通过fd 的 callback来实现,并且返回的不是直接的数据,而是返回的一个代表就绪符的数量,拿到这些值后epoll在去指定的数组中依次取得相应的文件描述符,这个中间使用了内存映射(mmap),所以只有活跃的soket才会触发
7、四层、七层反向代理的区别
四层:IP+PORT转发
七层:协议+内容交换
七层:会将请求报文拆开至应用层,分析用户请求的资源,然后haproxy会代替用户请求后端服务器的资源;后端服务器把资源返还给haproxy,haproxy会对资源再次
进行封装,然后返还给客户端;七层代理是由haproxy进行处理的,并且需要建立两次TCP连接,一次是客户端,一次是后端的服务器。
四层:会把请求报文拆开至传输层,根据请求的服务器的IP加端口号进行转发;四层代理是由后端服务器进行处理,包括报文的封装都是后端服务器进行封装;四层代
理相当于是一个路由器。
8、iptables原理,工作在几层
9、k8s架构+网络模型,描述通信过程;假如遇到问题怎么处理
10、redis主从原理
11、描述一个遇到的问题以及处理过程和思路
12、职业规划
13、反问(SRE理念与传统运维的区别)
多线程与多进程
下面的问题参考 https://blog.csdn.net/hanguofei/article/details/102989797
1. 你有用过哪些监控
2. zabbix 是怎么实现监控这个流程的
创建主机组
创建主机并加入主机组
创建监控项
告警触发器配置
配置告警动作
3. zabbix是怎么实现报警的
触发器
表达式,如果内存不足** 300M** ,用户超过 30 个等
当出发条件发生后,会导致一个触发条件
触发事件会执行某个动作
动作
触发器的条件被触发后的行为
可以是发送邮件,也可以是重启某个服务
4. zabbix的数据收集,日志收集,你是用的什么
事前及时预警发现故障,事后提供详实的数据用于追查定位问题
5. ELK 是一套什么东西
ELK 是 **Elasticsearch、Logstash、Kibana ** 三大开源框架首字母大写简称。
其中 Elasticsearch 是一个基于 ** Lucene**、分布式、通过 ** Restful ** 方式进行交互的近实时搜索平台框架。
像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用 Elasticsearch 作为底层支持框架,可见 Elasticsearch 提供的搜索能力确实强大,市面上很多时候我们简称 Elasticsearch 为 es 。
Logstash 是 ELK的中央数据流引擎,用于从不同目标(文件/数据存储/ MQ )收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ / redis / elasticsearch / kafka 等)。
Kibana 可以将 elasticsearch 的数据通过友好的页面展示出来,提供实时分析的功能
6. 当磁盘满了的时候,你是怎么获取到的这个信息
使用 zabbix 监控磁盘容量,在容量 80% 的时候设置个阈值。
当容量达到阈值就自动报警,可以通过发送短信或邮件进行通知。
7. docker,k8s了解吗
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
Docker 主要有如下几个概念:
引擎:创建和管理容器的工具,通过读取镜像来生成容器,并负责从仓库拉取镜像或提交镜像到仓库中;
镜像:类似于虚拟机镜像,一般由一个基本操作系统环境和多个应用程序打包而成,是创建容器的模板;
容器:可看作一个简易版的 ** Linux ** 系统环境(包括 root 用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子;
仓库:集中存放镜像文件的场所,分为公共仓库和私有仓库,目前最大的公共仓库是官方提供的 **Docker Hub ** ,此外国内的阿里云、腾讯云等也提供了公共仓库;
宿主机:运行引擎的操作系统所在服务器
8. docker怎么查看容器的信息
9. 当一个服务崩溃了,你会怎么去排查
- 首先简单排查物理设备,网线是否完好,也可用 netstat ,netstat -i显示网卡列表信息,netstat -s 显示网络统计信息
- 查看开机信息,/var/log/dmesg , /var/log/boot.log dmesg 命令用于显示开机信息。kernel会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用 dmesg来查看。开机信息亦保存在 /var/log 目录中,名称为 dmesg 的文件里
- 查看系统操作日志 /var/log/ messages ,检查系统或在哪个用户进行了哪些操作
- iostat 命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。要特别注意 iostat 统计结果中的
- %iowait 值,太大了表明你的系统存储子系统性能低下
- %user:CPU处在用户模式下的时间百分比
- %nice:CPU处在带NICE值的用户模式下的时间百分比
- %system:CPU处在系统模式下的时间百分比
- %iowait:CPU等待输入输出完成时间的百分比
- %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
- %idle:CPU空闲时间百分比
10. python 中装饰器,生成器,迭代器解释一下
装饰器: 给函数增加新功能,不修改被装饰对象的源代码和调用方法
生成器: 生成器其实是一种特殊的迭代器,它不需要__iter__() 和__next__() 方法,只需要一个yiled 关键字
迭代器: 任何实现了__iter__() 和__next__() 方法的对象都是迭代器,iter() 返回迭代器自身, next() 返回容器中的下一个值
11. python算法知道哪些,讲一个你熟悉的
12. python中线程池和进程池的区别
使用 **ProcessPoolExecutor **进程池,使用 ThreadPoolExecutor 线程池,都提供异步调用。
进程池是由服务器预先创建的一组子进程,一般来说这些子进程的数目在** 3~10** 个之间。
线程池中的线程数量应该和 ** CPU** 数量差不多。
线程池主要用于
- 需要大量的线程来完成任务,且完成任务的时间比较短。
应用场景:WEB 服务器完成网页请求这样的任务,使用线程池技术是非常合适的。因为单个任务小,而任务数量巨大,一个热门网站的点击次数会很多。但对于长时间的任务,比如一个Telnet 连接请求,线程池的优点就不明显了。因为 Telnet 会话时间比线程的创建时间大多了。
- 对性能要求苛刻的应用,比如要求服务器迅速响应客户请求。
- 接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用。
进程池中的所有子进程都运行着相同的代码,并具体相同的属性·,比如优先级、**PGID **等。
当有新的任务到来时,调用过程如下:
主进程使用某种算法(比如随机算法、轮流算法)来主动选择子进程。
主进程和所有子进程通过一个共享的工作队列来同步,子进程睡眠在工作队列上,当有新任务到来时,会唤醒一个正在等待任务的拥有接管权的子进程,它从工作队列中取出任务并执行,而其他子进程将继续睡眠。
13. 你在哪里用到了线程池,为什么要用线程池,结合你实际用到的场景说一下
服务器创建和销毁工作线程的开销很大,如果服务器与很多客户端通信,并且与每个客户端通信的时间很短,那么就会在创建和销毁线程的时候造成很大的开销。
线程池中预先创建了一些工作线程,他们不断的从工作队列中取出任务,然后执行,当执行完之后,会继续执行工作队列中的下一个任务,减少了创建和销毁线程的次数,每个线程都可以一直被重用,避免了创建和销毁的开销。另外,可以根据系统的实际承载能力,方便的调节线程池中线程的数目,防止因为消耗过量的系统资源而导致系统崩溃的问题。
线程池在系统启动时会创建大量空闲的线程,当线程对象传递给线程池之后,线程池就会启动其中一个线程来执行该对象的 ** run ** 或者 call 方法。执行完毕后,该线程并不会消亡,而是返回线程池,变成空闲状态。等待执行下一个 ** run **或者 **call ** 方法。
减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。
运用线程池能有效的控制线程最大并发数,可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约 **1MB ** 内存,线程开的越多,消耗的内存也就越大,最后死机)。
对线程进行一些简单的管理,比如:延时执行、定时循环执行的策略等,运用线程池都能进行很好的实现
14. 全局锁解释一下,为什么会有全局锁
15. django的中间件你有用过哪一些
CSRF保护中间件
CsrfViewMiddleware
通过向POST表单添加隐藏的表单字段并检查请求的正确值来增强对跨站点请求伪造的保护
SessionAuthentication
session中间件。会给request添加一个处理好的session对象
16. django的优化有没有做过,前端怎么优化,后端怎么优化
17. 用户发出一个请求,django 是怎么接收的
- 用户通过浏览器请求一个页面
- 请求到达** Request Middlewares** ,中间件对** request ** 做一些预处理或者直接 response请求
- URLConf 通过** urls.py ** 文件和请求的 **URL **找到相应的 ** View **
- **View Middlewares ** 被访问,它同样可以对 **request ** 做一些处理或者直接返回 **response **
- 调用 View 中的函数
- **View ** 中的方法可以选择性的通过 **Models ** 访问底层的数据
- 所有的 ** Model-to-DB ** 的交互都是通过 manager 完成的
- 如果需要,Views 可以使用一个特殊的 **Context **
- Context 被传给 **Template ** 用来生成页面
18. 解释一下 MTV
所谓的 MTV (** Model–Template–View** ),翻译一下就是模型、模板、视图。
一般是用户通过浏览器向我们的服务器发起一个请求**(request)**,
这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。
19. 你用django做了一个什么系统平台
20. linux 的内核优化有没有做过,具体是优化什么
- 主要是指在 ** Linux** 系统中针对服务应用而进行的系统内核参数调整,优化没有的标准
- 根据实际需求优化才是最合适的
- 编辑内核配置文件
- 参数及简单说明
- 生效配置
具体如下
- 登录系统:不使用 root 登录,通过 **sudo ** 授权管理,使用普通用户登录。
- 禁止 ** SSH ** 远程:更改默认的远程连接 SSH 服务及禁止 **root ** 远程连接。
- 时间同步:定时自动更新服务器时间。
- 配置 ** yum ** 更新源,从国内更新下载安装 ** rpm** 包。
- 关闭 ** selinux ** 及 ** iptables** ( iptables 工作场景如有 wan ip,一般要打开,高并发除外)
- 调整文件描述符数量,进程及文件的打开都会消耗文件描述符。
- 定时自动清理 ** /var/spool/clientmquene/** 目录垃圾文件,防止节点被占满(c6.4 默认没有sendmail,因此可以不配。)
- 精简开机启动服务(crond、sshd、network、rsyslog)
- Linux 内核参数优化 ** /etc/sysctl.conf** ,执行 sysct -p 生效。更改字符集,支持中文,但是还是建议使用英文,防止乱码问题出现。
- 锁定关键系统文件(chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 处理以上内容后,把 **chatter **改名,就更安全了。)
- 清空** /etc/issue ** ,去除系统及内核版本登陆前的屏幕显示。
21. 前端的框架你有用过哪些?有没有用过Vue
22. tcp 和 udp 的区别
23. tcp三次握手和四次挥手的区别
24. 四次挥手中为什么会多了一个time_wait
25. 工作过程中有经常遇到过哪些故障
26. CICD 流程讲一下,并且使用 ansible 部署更新了多少台服务器
28. 你做的监控平台监控了哪些指标
监控项目 | 详细内容 |
---|---|
主机监控 | ** CPU**,内存,磁盘的剩余空寂按/利用率和I/O,swap使用率。系统up时间,进程数,负载 |
网卡监控 | ping的往返时间及包成功率,网卡流量,包括流入、流出量和错误的数据包数 |
文件监控 | 监控文件大小,hash值,匹配查询,字符串存在否 |
url监控 | 检测指定url访问过程中的返回码,下载时间及文件大小,支持内容匹配 |
应用程序 | 端口和内存使用率,cpu使用率,服务状态,请求数,并发连接数,消息队列的字节数,client事务处理数,service状态 |
数据库 | 检测数据库中指定表空间,数据库的游标数,session数,事务数,死锁数,缓冲池命中率,库擦车命中率,当前连接数,进程的内存利用率等性能参数 |
日志 | 错误日志匹配,特定字符串匹配 |
硬件 | 温度,风扇转速,电压 |
27. jenkins主要做了什么
1.熟悉的语言,可本之外有了解过网络的相关知识吗,熟悉的数据库。(语言能力不好,比较熟悉的就是shell脚本)
2.shell 相关的问题。如:如何判断shell中命令执行的成功与失败;shell内部传参及引用;shell中执行一个命令如何将它的返回值赋给一个变量;如何判断一个文件或目录是否存在;for和where的结构;shell中如何将一个命令在后台执行;shell中的加法操作,列出你知道的所有方法
3.awk,sed,正则表达式都会问到(正则表达式中 ? * + 的区别)
4.了解linux系统的启动过程吗?
5.如何查看Linux当前系统版本号和内核版本号;已知80端口被一个进程占用,查找哪个进程占用了80端口;查看进程占用cpu的情况
6.linux定时任务
7.如何让环境变量在机子重启后任然生效
8.TCP和UDP的区别
9.常用服务使用的式TCP还是UDP(telnet , ssh ,http ,ftp ,tftp ,dns )
10.TCP为什么建立连接时3次,断开连接时4次?(为什么断开时ACK和FIN要分两次发送?)
11.TCP//UDP中端口号最多到多少,哪些时系统保留,哪些时可以自用的
12.介绍iptables时干什么的,具体配置过什么(具体命令,又多少个表,分别是哪四个。NAT,为什么要用nat)
13.http(get和post的区别),http和https又什么区别;http中session和cookie有什么区别;返回码1XXX,2XX,3XX,4XX,5XX分别代表什么意思
14.简单介绍LAMP的架构(使用php访问过mysql吗,php访问mysql的语句是什么)
15.python了解到什么程度,写过多少代码(浅copy和深copy的区别;列表和元组的区别)
16.MySQL相关的问题。如:MySQL常用的引擎,对应的结构是什么;mysql的备份;主从复制的原理;mysql调优措施,慢查询,如何执行,具体的语句;
17.ZABBIX和ansible。zabbix的原理,如何部署,整个架构模块直接如何传输的;主动模式还是被动模式;数据存储在哪里
18.流量控制和拥塞控制的机制
19.keepalived的工作原理,lvsde工作原理,用过哪种工作模式,DR和NAT又什么区别
20.nginx为什么有那么高得并发性,主要用Nginx干什么,反向代理,nginx负载均衡有哪些算法
21.DNS得工作原理,CDN原理。
22.介绍自己在学习过程中遇到得比较大得困难,如何解决
du -sh 和 ls -l 的区别
du:统计每个文件占用磁盘空间的大小。
ls -s:显示每个文件分配的磁盘空间的大小,以block为单位。
ls -l:显示文件的实际大小。
1.讲项目
2.TCP/UDP,三次握手,四次挥手以及握手和挥手后后两个客户端处于什么状态
3.进程、线程区别与联系
4.mysql两个搜索引擎区别
5.Python的一些问题,深浅拷贝,列表生成式,多线程多进程这些
6.cdn加速原理
7.项目中为什么要用Mysql双主架构,不用主从架构
8.keepalive是用来做什么
9.看你写了几种负载均衡技术,nginx,lvs,haproxy等等,是自己学习还是实践中用过
10.lvs有几种模式,说说NAT模式工作原理,和FULL-NAT模式有什么区别
11.为什么选择运维,不去开发。对于运维的看法,怎么理解运维
12.http状态码
13.lvs工作在哪一层,这一层有什么协议(这里我脑子抽了说了三层,然后说了一堆路由协议,面试官说不对吧,我一想赶紧改成四层哈哈尴尬,然后说基于ip+端口,那必然是四层哈哈😂)
14.linux怎么查看进程,服务,用什么命令,你一般用什么参数?查看某个端口对应的服务怎么看?怎么查看某个服务调用的文件? (ps aux |top ) (netstat -antlup | grep :80) lsof
链表存储的大数加减法
字符串存储的带优先级算术表达式计算
判断二叉树是否为平衡二叉树
https://blog.csdn.net/weixin_40274123/article/details/93594954
基础知识:
tcp四次挥手过程。
最后一次挥手为什么要等待2MSL
数据库索引的实现
B树B+树的区别
五种io模型
说一下事物隔离,怎么实现事物隔离?
-
自我介绍
-
OSI七层模型(自我介绍里提到的)
-
如何学习新东西 讲述自己学习linux
-
追加 搭建虚拟机遇到的问题 用过的linux的命令有哪些
-
追加vim快捷键有哪些 批量操作的以及替换
-
linux免密登录 用过吗
-
了解sed awk吗 (不)
-
grep了解吗 与egrep区别
-
find指令相关 查找最大文件命令
第一种:ls : ls -lSh /bin | head -5
第二种:find
find 本身就是查找命令,可以递归查找一个目录的子目录,所以用它是自然的。
比如,查找 / 目录下最大的一个文件:
sudo find / -type f -printf “%s\t%p\n” | sort -n | tail -1
第三种:du
du 命令可以查看磁盘空间的使用情况,自然也可以用来查看磁盘上占用空间较多的文件和文件夹。
比如,查找 /home 下前 20 个最大的文件:
sudo du -a /home | sort -n -r | head -n 20
-
文件的ctime与mtime了解吗 (下来了解了之前真没了解过)
-
文件权限讲一下 一个文件 有两个用户 怎样使这两个用户可以操作这个文件[改属组 引导下答出来 一时间没反应过来]
-
/etc/passwd里的内容 :每段代表的意思
用户名 密码 用户id 用户组id 用户说明 用户家目录 用户的默认脚本
-
shell写过什么脚本 实现什么功能 写过for循环吗 回答用python比较多
-
用python怎么往文件里添加内容 [回答用os模块 但是我感觉我的回答不太对] 用python写过什么脚本 实现什么功能 写过for循环吗 实现了什么 除了os模块还用过什么 用过json模块吗(没) python实现远程登录 ansible实现过什么功能(没 只是了解 过)
-
DNS原理
一面
ping
怎么判断应用起来()
给一个新虚拟机你会做什么?修改主机名 设置网络 配置一些基本的服务
让部署一个应用,你需要做什么?没有硬件防火墙怎么限制网络速率?linux你做过吗? 在Linux中解决依赖性 查看是否源码编译 看给的安装包是什么 rpm 源码包
stp协议
什么是路由 是指把数据从一个地方传送到另一个地方的行为和动作,而路由器,正是执行这种行为动作的机器,
什么是vlan和子网
访问一个服务?不通可能是哪些原因?
linux查看已安装软件 rpm -qa | grep 包名
docker了解多少
目录下有许多子目录和文件,只修改文件权限
容器和虚拟化区别
k8s了解多少?k8s用来干什么的?
部署大量服务器,用过哪些工具?ansible原理是什么?
阿里云GCP等有什么区别
http和https有什么区别
tcp为什么比udp慢?只用udp行不行?
反向代理和负载均衡区别?
反向代理:多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色
反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!
为什么要用cdn?
mysql了解吗?
kill 和kill -9区别
什么是负载均衡 LB(Load Balance,负载均衡)是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。
最近学的新知识
为什么会选择游戏运维
有什么问题要问我的?
二面:
按简历问的
自动化构建有做哪些东西?
处理过的网络故障说一下
localhost和127.0.0.1一样吗
使用过哪些抓包工具wireshark,tcpdump
加强系统安全性方面可以做哪些?
selinux 用过吗?怎么配置
docker做了哪些东西?怎么做的?Mysql监控哪些项?docker底层原理?隔离、资源限制怎么做的
ssh密钥登录过程?
看你网站使用了https,https交互过程
项目怎么升级的?ansible,playbooks ,
redis持久化
作者:Techiah
链接:https://www.nowcoder.com/discuss/176162?type=post&order=time&pos=&page=1&channel=1011&source_id=search_post
来源:牛客网
Python:
- 深拷贝,浅拷贝
- 装饰器
- 内置装饰器
- 生成器/协程
- GIL锁
- 框架相关
- 一些常用模块
算法:
- 快排,要很具体
- 外部排序
- LRU/LFU,要求代码
- 不借助外部空间调整数组元素/大小
- k个硬币除了一个重的别的都一样,一个天平,最少几次找出来
- 3-sum问题,4-sum问题
- k-sum问题
-
- arr[N]中有1...N的数,除了一个以外都只出现了一次(另一个没出现),O(1)空间O(n)时间找出它
- arr[N 1]中有1...N的数,除了一个以外只出现了一次,O(1)空间O(n)时间找出它
- arr[]中除了一个数以外只出现了一次,O(1)空间O(n)时间找出它
- arr[]中除了一个数以外都出现了两次,O(1)空间O(n)时间找出它
- arr[]中除了一个数以外都出现了两次,且数组有序,O(1)空间O(logn)时间找出它
- 单调队列
- 赛马找前3/5名问题
数据结构:
- BST的操作
- 链表相关
- 堆的操作
- 跳表原理
- 红黑树原理
- 哈希表原理(这里有一个热点问题,就是比如我分布式情况下对某个值频繁操作,直接给数据结构加锁影响太大,应该怎么处理)
- 哈希表的拉链法、开放地址法
- B/B 树的原理,结构,优势,对比
- 乐观锁悲观锁
MySQL:
- 索引原理,参考B 树相关
- SQL解析顺序
- 联合索引相关
- Innodb和MyISAM对比
- 锁的级别
- 各种sql语句等等
操作系统:
- 线程和进程
- 协程和进程/线程
- 进程/线程/协程间通信
- 进程的几个状态
- 自旋锁和互斥锁
- 内存缺页情况
- Linux的32位机内存地址空间
- PV操作
- 内核态和用户态
- 死锁检测
- 大端小端,网络字节序,x86
- Linux排查问题
- gcc编译相关
计算机网络:
- tcp三次握手四次挥手
- 为什么三次握手/四次挥手
- 挥手中的等待2msl
- tcp状态自动机
- tcp拥塞控制,流量控制
- tcp的流式传输
- tcp的可靠性原理
- udp和tcp区别
- udp是否可靠
-
udp如何做可靠传输 (用tcp的方法)
1、实现方法:
(1)类似于TCP,运用确认机制、重传机制和窗口确认机制;
(2)给数据包进行编号,按顺序接收并存储,接收端收到数据包后发送确认信息给发送端,发送端接收到确认信息后继续发送,若接收端接收的数据不是期望的顺序编号,则要求重发;(主要解决丢包和包无序的问题)
http的状态码
网络模型
TIME_WAIT和TIME_CLOSE相关
长连接短连接
epoll/select原理
et/lt区别,原理
socket相关
请求到页面渲染的过程
http/https区别
常用加密算法及原理
分布式设计:
- Redis相关操作
- MySQL主从
- MQ有哪些,相关操作
- Mongodb相关操作
- 反向***,nginx
- 负载均衡
- 一致性哈希
- 高并发及各种场景下tcp/udp选择,理由
- 语言相关的框架
更多推荐
所有评论(0)