进程中的管道:Pipe
IPC通信的一种机制,队列就是基于管道来完成通信的,但是管道是原生的通信方式
在进程之间会产生数据不安全的情况,需要自己手动加锁来处理
管道在数据传输过程中,还涉及到一个端口管理,这个需要我们在代码中做处理才能使用代码更加完善
进程中的队列:管道+锁,进程之间的数据安全
进程中的信号量原理:锁+计数器
单例模式:
class A: __isinstangs = None def __new__(cls, *args, **kwargs): if A.__isinstangs == None: obj = object.__new__(cls) A.__isinstangs = obj return A.__isinstangs
三次握手,四次挥手:
三次握手: (面试回答) 首先,必须先由客户端发起连接的请求 接下来,服务器接收到请求之后,回复给客户端两个标识,一个syn表示 服务器接收到请求,一个ack表示服务器在做准备工作,两个标识一起 回复给客户端 最后,客户端接收到服务器的回复,客户端准备连接的所有资源,开始进行连接 发送给服务器一个ack表示客户端的连接准备工作已经完成 (此时表示客户端和服务器可以相互连接了) 如果面试官问你,哪句代码体现了三次握手? 回答: 服务器端的accept,客户端connect 四次挥手: (面试回答) (1)首先由连接双方任意一方发起断开连接的请求,发起方发送的请求表示 是我没有数据要继续发送了,可以断开连接了,但是你如果还有数据可以继续向我发送数据. (2)接收方回复给发起方,表示接到了发起放的断开请求,开始着手准备断开事宜 (3)接收方准备完成后,给发起方发送一个标识,表示接受方没有数据继续发送了 可以断开连接了 (4)发起方接收到消息后,准备断开连接,回收资源 如果面试官问你,哪句代码体现了四次挥手? 回答: close()
斐波那契数列1, 2, 3, 5, 8, 13, 21.....根据这样的规律,编程求出400万以内最大的斐波那契数,并求出他是第几个斐波那契数。
a, b = 1, 2 count = 1 while b < 4000000: a, b = b, a + b count += 1 print(f'{a}是400万以内最大的斐波那契数,是第{count}个斐波那契数')
默认值参数的坑
以下的代码的输出将是什么:___(3分) # def extendList(val, list=[]): # list.append(val) # return list # # # list1 = extendList(10) # list2 = extendList(123, []) # list3 = extendList('a') # print(list1, list2, list3) 运行结果:[10, 'a'] [123] [10, 'a'] # print “list1 = % s” % list1 # print “list2 = % s” % list2 # print “list3 = % s” % list3
二分查找:
# l1 = [2, 3, 5, 10, 15, 16, 18] # # def two_find(l,aim,start=0,end=None): # end = len(l) - 1 if end is None else end # mid_index = (end - start) // 2 + start # ''' # 第一次: aim:15 start: 0 end: 6 min_index: 3 中间值:10 aim > 10 # 第二次: aim:15 start: 4 end: 6 min_index: 5 中间值:16 aim < 16 # 第三次: aim:15 start: 4 end: 5 min_index: 4 中间值:15 aim = 15 # ''' # if start <= end: # if aim > l[mid_index]: # return two_find(l, aim, start=mid_index+1, end=end) # elif aim < l[mid_index]: # return two_find(l, aim, start=start, end=mid_index) # elif aim == l[mid_index]: # return mid_index # else: # return None # else: # return None # print(two_find(l1,15))