1.python装饰器是什么?写过什么装饰器?
修改其他函数功能的函数,可以更简洁得给函数修改功能。
2.python中yield作用是什么?
yield可以将函数变成生成器,用生成器迭代时,可以复用,且占用内存小。
3.python新式类与经典类的区别?
继承 object 类的是新式类,不继承 object 类的是经典类。
经典类的type是classobj,新式类的type是type。
新式类的方法解析顺序是从左到右、广度优先。经典类的是从左到右,深度优先。
新式类增加了__slots__内置属性, 可以把实例属性的种类锁定到__slots__规定的范围之中。通常每一个实例都会有一个__dict__属性,用来记录实例中所有的属性和方法,也是通过这个字典,可以让实例绑定任意的属性。而__slots__属性作用就是,当类有比较少的变量,用__slots__属性代替__dict__属性,节省内存消耗。
4.shell中$0,$n, $#, $*, $@, $?, $$的含义?
$0是当前脚本名
$n是第n个输入参数
$#是输入参数个数
$*和$@是输入参数列表,不同在于,用""括起来时,$*将列表作为整体在""内,而$@将每个参数分别放在""内。
$?是上一个命令执行后的返回状态码
$$是当前进程PID
5.添加新硬盘后,怎么设置为开机自动挂载?
将硬盘挂载信息更新到/etc/fstab
6.哪些原因会导致ext4格式磁盘无法写入?需要如何处理?
1.无剩余空间,需要进行数据清理或迁移
2.硬件损坏,需要替换新盘
3.inode耗尽,需要重新格式化增加inode数,或格式化为xfs格式
7.crontab配置格式是什么?cron大概的执行过程?
格式:分钟 小时 日 月 周几 命令
过程:crond每分钟检查一次各条配置,如果当前时间符合该配置的执行条件,则启动一个子进程去执行任务
8.如何找到消耗CPU/内存/IO最多的进程?
top动态查看进程,输入P可按CPU占用排序,输入M可按内存占用排序
iotop可动态显示进程的实时io
pidstat -u可周期显示进程的cpu占用
pidstat -r可周期显示进程的内存占用
pidstat -d可周期显示进程的io
9.正向代理和反向代理的区别?nginx是哪种?为什么采用这种代理?
正向代理客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
反向代理客户端是明确的,但客户端不清楚服务器的信息。
nginx是反向代理,可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。
10.nginx的热部署是什么?
是配置文件修改后,不需要stop Nginx,不需要中断请求,就能让配置文件生效。 (-s reload)。修改配置文件后,-s reload重新加载配置文件,生成新的worker进程,处理新请求。老worker在处理完当前请求后杀掉。
11.TCP连接什么时候进入time_wait状态,为什么持续时间是2msl?time_wait可能会引发什么问题?如何处理?
主动断开连接的一方回复了最后的ACK后就进入time_wait状态,将持续2MSL后进入CLOSED状态。持续2msl以确保本次连接的报文在新连接建立前已被丢弃,避免新连接收到过期报文。
当time_wait过多会导致端口耗尽,无法建立新连接。
修改内核参数net.ipv4.tcp_tw_reuse = 1,这个参数表示重用TIME_WAIT的连接,但重用条件较为苛刻
net.ipv4.tcp_tw_recycle=1,这个参数表示开启TIME_WAIT回收功能,开启了这个参数后,将大大减小TIME_WAIT进入CLOSED状态的时间。但有使某些客户端无法建立连接的风险
调节net.ipv4.tcp_tw_timeout,减小TIME_WAIT到CLOSED的等待时间