阶段测试
以下的简答题,请使用语言+代码(实验过程)的方式表述出来
-
请你简述你对LVS的理解
LVS(Linux virtual server)
它是一个负载均衡、高可用性集群,主要针对大业务量的网络应用(比如新闻。电子商务、网上银行…)LVS是建立在一个主控服务器(双机)及若干个真实服务器组成。真实服务器负责提供服务,主控服务器会根据指定的调度算法对真实的服务器进行控制。LVS集群结构对用户来说是透明的,客户端只与单个IP(虚拟IP)进行通信。客户端向lvs发出服务请求主控服务器会通过特定的算法来指定某个真实服务器来应答,而客户端只与负载均衡的IP进行通信
-
请你说出Keepalived的工作原理和工作流程
Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。Keepalived起初就是为了LVS调度节点高可用而设计的,专门用来监控集群系统中各个服务节点的状态。如果某个服务节点出现异常,或工作出现故障,Keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,也就是替LVS做了对后端realserver的健康状态监测。而当故障节点恢复正常后,Keepalived又可以自动将此服务节点重新加入到服务器集群中。这些工作全部自动完成,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点
-
Lvs和keepalived的区别和联系是什么
Lvs是负载均衡的一个群集而keepalived是保证集群高可用的软件用来防治单点故障
-
Python里面如何拷贝一个对象?
引入copy模块
import copy
copy.copy() 浅拷贝
copy.deepcopy() 深拷贝
-
介绍一下except的用法和作用?
异常处理,配合try使用
-
Python中pass语句的作用是什么?
pass 不做任何事情,一般用做占位语句
-
如何知道一个python对象的类型?
print(type(对象))
-
介绍一下Python下range()函数的用法?
range()
半闭合区间
1)range(x)表示0到x的所有值
例如:range(5)
返回0 1 2 3
2)range(x,y)返回x到y-1的所有值
例如:range(1,4)
返回1 2 3
3)range(x,y,z)返回x到y的每次间隔z的所有值
例如:range(1,5,2)
返回1 3
-
如何用Python来进行查询和替换一个文本字符串?
a.find(查询的字符串,开始位置,结束位置) 查询(没有返回-1)
a.rfind(查询的字符串,开始位置,结束位置) 从右往左查询
a.index(查询的字符串,开始位置,结束位置) 查询(没有报错)
a.rindex(查询的字符串,开始位置,结束位置) 从右往左查询
a.replace(需要替换的字符串,新的字符串,替换的次数)
-
Python里面如何生成随机数?
调用random模块
import random
随机整数 random.randint(x,y) 返回x到y的随机整数
随机小数 random.uniform(x,y) 返回x到y的随机浮点数
随机字符 random.choice(x) 返回x的随机字符
随机数 random.random() 返回[0,1)的随机实数
随机范围的间隔数 randome.randrange(x,,y,num)
返回x到y的随机数,并且每个数字都间隔num
random.shuffle(list) 将指定的列表打乱顺序
-
平衡点问题
平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点 要求:返回任何一个平衡点
使用sum函数累加所有的数。 使用一个变量fore来累加序列的前部。直到满足条件fore<(total-number)/2;
numbers = [1,3,5,7,8,25,4,20]
sum = sum(numbers)
a = 0
for i in numbers:
if a < (sum - i)/2:
a += i
else:
break
if a == (sum - i)/2:
print("平衡点为:",i)
else:
print("没有平衡点")
-
Python 的特点和优点是什么?
python的特点:
python是解释型语言,不需要进行编译
python是交互式语言,可以与用户进行及时的交互性操作
python是面向对象的,所有的时候都是对象
python的优点:
简单
免费开源
面向对象
可扩展性强
-
深拷贝和浅拷贝的区别是什么?
深拷贝可以将列表的结构进行拷贝,多级的列表不会受到影响
-
列表和元祖有什么不同?
列表可以被修改,元组不可修改
列表用中括号包裹,元组用小括号包裹
-
什么是负索引?
负索引就是从右往左开始的索引,从-1开始,为右边第一位
-
如何随机打乱列表中元素,要求不引用额外的内存空间?
# 引入随机模块
import random
# 使用shuffle()
random.shuffle(list)
-
Python 区分大小写吗?
区分
-
如何删除字符串中的前置空格
使用:str.strip()
-
如何将字符串转换为小写?
使用:str.lower()
-
解释 Python 中的//,%和**运算符
//:整除
%:取余
**:幂
-
你如何管理不同版本的代码?
GitHub
-
描述数组、链表、队列、堆栈的区别?
-
你知道几种排序,讲一讲你最熟悉的一种?
冒泡排序、快速排序、堆排序、选择排序、归并排序、插入排序
冒泡排序:依次比较相邻的两个数,每次循环后把最大的数交换到最右边
冒泡排序:
list = [7,3,5,1,9]
for i in range(1,len(list)):
for j in range(0,len(list)-1):
if list[j] > list[j+1]:
list[j],list[j+1]=list[j+1],list[j]
print(list)
-
线上服务可能因为种种原因导致挂掉怎么办?
使用:try except异常处理
-
简单谈下GIL
解决多线程之间数据完整性和状态同步的一把锁
-
请打印输出一个4*4的正方形(使用两种方法)
第一种方法:
import turtle
turtle.setup(width=0.6, height=0.6)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.done()
第二种方法:
import turtle
turtle.setup(width=0.6, height=0.6)
a = 0
while a < 4:
turtle.forward(100)
turtle.right(90)
a += 1
turtle.done()
-
请打印输出一个直角三角形(使用两种方法)
第一种方法:
import turtle
turtle.setup(width=0.6, height=0.6)
turtle.seth(270)
turtle.forward(100)
turtle.seth(0)
turtle.forward(100)
turtle.seth(135)
turtle.forward(145)
turtle.done()
import turtle
第二种方法:
import turtle
turtle.setup(width=0.6, height=0.6)
turtle.forward(100)
turtle.seth(90)
turtle.forward(100)
turtle.seth(225)
turtle.forward(145)
turtle.done()