zoukankan      html  css  js  c++  java
  • 常见的面试题

    进程中的管道: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))
    

      

      

      

      

      

  • 相关阅读:
    <强化学习>无模型下计算给定策略对应的价值函数,Model free Prediction,评估一个给定策略的表现
    <强化学习>马尔可夫决策过程MDP
    <组合数学>排列组合(2)/可重组合,不相邻组合,SJT算法
    <组合数学>排列组合(1)/格路模型,范德蒙德恒等式
    <组合数学>计数/加减乘除计数/加法法则/乘法法则/减法法则
    <组合数学>开门帖
    <组合数学>幻方
    Windows装机必备
    利用Jmeter操作MySQL数据库
    利用Jenkins插件实现多个job并行后再触发job
  • 原文地址:https://www.cnblogs.com/lnrick/p/9379322.html
Copyright © 2011-2022 走看看