Python初级面试语法<一>

发布时间:2019-03-03 10:22:00编辑:auto阅读(2030)

    可变对象与不可变对象

    可变对象存的是地址,地址不变,但地址指向的值可以变(引用类型)。类型:list、dict、set等

    不可变对象直接存值,值变了,就是另一个对象了(值类型)。int、float、tuple、string等

    直接赋值,浅拷贝,深拷贝

    在含有可变对象讨论这个问题更显得有意义。

    直接赋值:直接传递对象的引用。浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变。深拷贝,原始对象的改变不会造成深拷贝里任何子元素的改变。

    __init__和__new__区别

    __new__控制新实例的生成,__init__初始化一个新实例。可以用__new__实现单例模式。

    设计模式

    大话设计的工厂、代理、单例、观察者...... 。想起了这篇文章 20年前GoF提出的设计模式,对这个时代是否还有指导意义?

    编码、解码

    字符编码有GBK、ASCII、UTF-8、 Unicode等。encode和decode分别指编码和解码。明文--->选中一种编码加密-->密文,反之解码。

    列表推导(list comprehension)和生成表达式(generator expression)的优劣

    列表推导一下子生成完了列表,免去以后计算的时间,提高了性能,浪费了内存。而生成表达式延迟了列表的生成时间,需要它才一个个生成出来,节省了内存,降低了性能。

    什么是装饰器?

    装饰器就是把函数包装一下,为函数添加一些附加功能,装饰器就是一个函数,参数为被包装的函数,返回包装后的函数。

    如果装饰器和被装饰的函数还有其他参数呢(也可以问如果在函数之后再进行装饰,该如何做)?

    再包装一层 (个人觉得这里说得通俗易懂 https://zhidao.baidu.com/question/580801144.html)

    使用装饰器实现单例模式的代码

    def singleton(cls, *args, **kwargs):
        instance = {}
        def _instance():
            if cls not in instance:
                instance[cls] = cls(*args, *kwargs)
            return instance[cls]
        return _instance
    

    使用装饰器和使用其他方法实现单例区别?

    未能找到比较好的解答,求推荐。感觉这篇写得不错 https://www.cnblogs.com/huchong/p/8244279.html

    手写一个邮箱验证正则

    邮箱前缀允许中文、英文、数字 ,中间必须有@符号 ,最后必须是域名 域名名称 只可以是英文和符号_ -的组合。(题外话:没必要太纠结邮箱格式,邮箱格式一直都在变,以前不许有中文,现在都允许有了)

    ^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
    

    ( 随意看看: ^表示开始,$表示结束。[ 标记匹配字符表达式的开始,] 标记匹配字符表达式的结束。

    +表示匹配前面表达式的字符要出现一个或多个,\表示转义。( 和 )分别标记子表达式的开始和结束。)

    多进程与多线程的区别

    多线程之间可以共享资源,多进程各自独占资源。

    CPU密集型适用多进程还是多线程?

    多进程,原因:要提高CPU密集型操作效率,任务同时进行的数量尽可能等于CPU的核心数,使用多线程,也不能并行运算。

    内存管理(或垃圾回收):引用计数/孤立引用环 /分代回收

    指向该对象的引用总数为引用计数,对象之间相互引用形成了孤立引用环。

    当某一代对象经历过垃圾回收,依然存活,那么它就被归入下一代对象,分代回收使得存活越就的对象越迟被回收。这篇内存管理讲得不错http://www.cnblogs.com/vamei/p/3232088.html

    进程之间的通信方式

    消息队列、信号量、管道、socket等

    什么是协程?为什么比线程快?

    一种程序组件,比线程快其一因为没有线程上下文切换的开销。https://www.cnblogs.com/zingp/p/5911537.html

     

    问题来源:https://blog.csdn.net/csdnsevenn/article/details/79068624~

关键字