zoukankan      html  css  js  c++  java
  • 面试题fugui02

    一、概念题
        1.描述对super、passyield、lambda关键字修饰的理解
        2.大致描述一下python GIL的机制,以及python中多线程和多进程的区别
            GIL全局解释器锁,是python解释器内置的线程锁,目的是保护线程安全,但也使python解释器在同一时刻只能处理一个线程,在处理一些科学计算等一些数据运算时python多线程无法发挥其作用,但处理IO密集型的数据时,因为阻塞时间远远大于python程序运算时间,所以GIL锁对多线程处理IO时,效率影响不大
            数据共享:因为进程间的资源是独立的,多进程数据共享复杂,需要用IPC;同步简单;多线程共享同一进程数据,所以共享数据简单,但这也会导致同步数据复杂
            内存/CPU:进程间占用内存多,CPU利用率低;多线程相比于进程占用内存少,CPU利用率高
            创建/销毁/切换:进程的创建、销毁和切换都很慢,复杂;线程的创建、销毁和切换都很简单,很快速
            编程调试:进程的编程和调试都很简单;线程的编程和调试都很困难
            可靠性:进程间不会相互影响;线程间一个挂掉,整个个挂掉
        3.python是如何进行内存管理的,以及大致描述一下python的GC机制
            python的垃圾回收(GC)机制以引用计数为主,隔代回收,标记清除为辅
            引用计数:当一个对象被引用时它的引用计数+1,当不被一个变量引用时它的引用计数减一,当一个对象的引用计数为0时,这个对象将会从内存中删除
            隔代回收:大部分对象的生命周期很短,对年轻代和老年代使用不同的算法可以提高效率。新创建的对象放在零代链表上,经过一段时间后gc检测零代链表中是否有循环引用,有则引用计数减一,当引用计数为0时释放内存大于零放到另一个链表中,在经过一段时间检查一代放入三代。这就是新生代和老年代
            标记清除:并不改动真实的应用计数,而是将集合中的对象的引用计数复制一份副本,改动该引用对象的副本。
        4.请分别描述一下装饰器和函数修饰器的实现过程以及应用场景
            装饰器就是把函数进行包装,为函数添加一些附加的功能。装饰器本质是一个闭包函数,被装饰函数将会被当做参数传入到装饰器函数中
    二、
        1.请用两个队列来实现一个栈(给出伪代码即可)
            class Solution:
                def __init__(self):
                    self._queue1 = []
                    self._queue2 = []
                def push(self,x):
                    if len(self._queue1) == 0:
                        self._queue1.append(x)
                    elif len(self._queue2) == 0:
                        self._queue2.append(x)
                    if len(self._queue2) == 1 and len(self._queue1) >=1:
                        Where self._queue1:
                            self._queue2.append(self._queue1.pop(0))
                    elif len(self._queue1) == 1 and len(self._queue2) > 1:
                        Where self._queue2:
                            self._queue1.append(self._queue2.pop(0))
                def pop(self):
                    if self._queue1:
                        return self._queue1.pop(0)
                    elif self._queue2:
                        return self._queue2.pop(0)
                    else:
                        return None
        2.实现一个 Singleton单例类。要求遵循语言编程规范
            import time
            import threading
            class Singleton():
                _instance_lock = threading.Lock()
                def __init__(self):
                    time.sleep(1)
                    print('init',self)
                def new(cls,*args,**kwargs):
                    if not hasattr(Singleton,'_instance'):
                        with Singleton._instance_lock:
                            if not hasattr(Singleton,'_instance'):
                                Singleton._instance = object.__new__(cls,*args,**kwargs)
                    return Singleton._instance
            class Singleton():
                _lock = threading.Lock()
                def __init__(self):
                    pass 
                @classmethod    
                def instance(cls,*args,**kwargs):
                    if not hasattr(Singleton):
                        whth Singleton._lock:
                            if not hasattr(Singleton,'_instance'):
                                Singleton._instance = Singleton(*args,**kwargs)
                    return Singleton._instance
        3.实现一个socket编程。要求实现server端的功能即可和遵循语言的编程规范
            from socket import *
            server = socket(AF_INET,SOCK_STREAM)
            server.bind('127.0.0.1',8080)
            server.listen(5)
            
            conn,addr = server.accept()
            Where Ture:
                data = conn.recv(1024)
                print('data'data)
                conn.send(data.upper())
            conn.close()
            server.close()
    三、设计题
        1.请为掌阅设计一个并发处理key-value引擎,要求每条请求数据小于16k,数据总量为1T,QRS为50要求:
            ①请给出该系统需要配备多少资源,服务器数量,服务器内存大小及硬盘空间等
            ②要求系统平滑可扩展,高可用
            ③尽可能的降低系统复杂度
            
  • 相关阅读:
    (八十五)c#Winform自定义控件-引用区块-HZHControls
    (八十四)c#Winform自定义控件-导航菜单(Ribbon菜单)-HZHControls
    (八十三)c#Winform自定义控件-导航菜单(扩展)-HZHControls
    (八十二)c#Winform自定义控件-穿梭框-HZHControls
    (八十一)c#Winform自定义控件-时间轴-HZHControls
    (八十)c#Winform自定义控件-分割线标签-HZHControls
    (七十九)c#Winform自定义控件-导航菜单-HZHControls
    (七十八)c#Winform自定义控件-倒影组件-HZHControls
    (七十七)c#Winform自定义控件-采样控件-HZHControls
    (七十六)c#Winform自定义控件-表单验证组件-HZHControls
  • 原文地址:https://www.cnblogs.com/ldq1996/p/8571496.html
Copyright © 2011-2022 走看看