• 7.22 python面试题


    2018-7-22 16:32:24 把面试题敲完了,,好强悍!

    Python 10期考试题
    
    1.常用字符串格式化有那些?并说明他们的区别
    # format 直接调用函数
    # %s 语法塘
    # %r
    a = 1
    print(a)
    class A : pass
    a = A()
    print(a)
    
    2.请写出[元组,列表,字典,集合]的定义方法,新增方法,更改方法,删除方法
    
    3.利用python打印前一天的本地时间,格式'2018-01-03(面试题)
    # 时间戳时间 - (60*60*24) 转换成格式化时间
    # 时间戳时间 - (60*60*24) 转换成格式化时间strftime
    
    4.python中re模块的search()和match()的区别(面试题)
    #相同点: 接收两个参数,正则表达式,带匹配的字符串
             只匹配一个符合条件的项
    #区别: search 根据所写的正则匹配符合条件的第一个
           match  根据所写的正则 从头开始 匹配, 相当于在正则表达式的开始位置加了一个
    # hello
    # search 只要句中有hello就能匹配上 aaaabbbmbhellomm
    # march  只有句首有hello才能匹配上  hellosdadasd
    
    5.什么是lambda函数,有什么好处?
    # 匿名函数 简洁明了 可以和内置函数,可以有效地减少冗余的代码
    
    6.说明__init__和__new__的作用
    # __init__ 初始化方法   self默认参数
    # __new__ 构造方法      cls 创建对象
    # __del__ 析构方法      删除一个对象的之前执行的
    
    7.简书反射是怎么回事?
    # 用字符串数据类型的变量名或函数名来调用对应的属性
    # A.b  getattr(A,'b)
    
    8.解释python中深拷贝和浅拷贝的区别
    # 深copy 不管一个数据类型有多少层,都另外开辟新的空间来储存一份和原来一模一样的数据
    # 浅copy 只是重新开辟一块空间来copy第一层的数据
    
    9.用最简洁的方式生成一个列表[4,16,32,64,128]
    
    # 2**2 = 4
    # 2**3 = 8
    # 2**4 = 16
    # 2**5 = 32
    # 2**6 = 64
    # 2**7 = 128
    # 在等于3的时候循环跳过
    list = []
    for i in range(2,8):
        if i != 3
            list.append(2**i)  # list.append(pow(2,3))
    
    10.python中如何实现随机数并打印,默认的随机数范围是多少?
    # random.random()   0-1
    
    11.新式类和经典类(旧式类)的区别(一种一分)
    # 新式类 : 默认继承object
               在继承的过程中,寻找一个方法遵循广度优先
               内置mro方法来标识广度优先的顺序
    # 经典类 : 在继承的过程中,寻找一个方法遵循深度优先
    
    12.装饰器在什么时候被执行的
    # 加载函数的时候被执行
    
    13.什么是"并发"?什么是"并行"
    # 在python中:(把你知道的说出来,侃侃而谈的感觉)
    # 并发 (多线程 看起来是一起执行的,GIL限制了在同一时刻限制了多个线程只能有一个线程被cpu执行)
    #       是在同一时间只能有一个CPU在处理任务
    # 并行 (多进程 多个进程在同一时刻可以占用多个CPU)
    #       是真正意义上的在同一时刻有多个CPU在处理任务
    
    14.以个人理解描述Event的执行原理
    # 有一个状态控制wait方法是否阻塞
    
    15.什么是粘包,如何避免?(先说答案,再编其他的)
    # TCP协议  : 面向连接的流传输,数据是无边界的
    # 如何避免 : 自定义协议  struct模块
    # UDP协议  :
    
    16.什么是进程?
    # 运行中的程序
    # 是最小的资源分配单位
    # 为多个任务之间的数据安全和内存隔离做约束
    
    17.什么是线程?
    # cpu调度的最小单位
    # 轻量级的进程
    # 是进程的一部分
    # 在多个进程之间可以共享进程中的数据
    
    18.简述你对管道,队列的理解;
    # 管道 双向通信的数据容器 多进程的IPC中用到了
    #      数据不安全
    # 队列 : 先进先出 基于管道和锁实现的一个数据在线程进程之间的安全容器
    
    19.编程题: 写一个装饰器实现功能:打印程序的运行时间
    
    import time
    def time(func):
        def dinner(*args, **kwargs):
        start = time.time()
            ret = func(*args, **kwargs)
            print(time.time() - start)
            return ret
        return inner
    
    @time       # wahaha = time(wahaha)
    def wahaha():
        pass
    
    20.读一下代码,写出答案并简述原因(面试题建议不使用电脑)
    下面代码会输出什么?
    
    def f (x,l = []):       # 2          3                 3 [0,1]
        for i in range(x):  # i=0, i=1   i=0 ,i=1,i=2      i =0,i=1,i=2
            l.append(i*i)   #[0,1]       [3,2,1,0,1,4]      [0,1,0,1,4]
        print l             # [0,1]      [3,2,1,0,1,4]      [0,1,0,1,4]
    f(2)
    f(3,[3,2,1])
    f(3)
    
    21.使用python简单实现打印九九乘法表
    
    22.简述python GIL的概念, 以及它对python多线程的影响?
    # GIL全局解释器锁
    # 属于CPython解释器
    # 用来在CPython解释器届时一段多线程的代码时,约束线程在同一时刻只能有一个线程访问CPU
    # 它对python多线程的影响 : CPython解释器下启动的多线程并不能真正实现并行
    
    23.写一个单例模式
    
    24.编程题:将以下list3的格式转换成list4格式
    list3 = [
        {'name':'alex','hobby':'抽烟'},
        {'name':'alex','hobby':'喝酒'},
        {'name':'alex','hobby':'烫头'},
        {'name':'egon','hobby':'message'},
        {'name':'alex','hobby':'喊麦'},
        {'name':'egon','hobby':'街舞'},
    ]
    # 如何把上面的列表转成成下方的列表?
    list4 = [
        {'name':'alex','hobby_list':['抽烟','喝酒','烫头',喊麦]},
        {'name':'egon','hobby_list':['喊麦','街舞']},
    ]
    
    
    代码:
    两层for循环
    
    list4 = []
    for item in list3:
        for dic in list4:
            if item['name'] == dic['name']:
                dic['hobby_list'].append(item['hobby'])
                break
            else:
                list4.append({'name':item['name'],'hobby_list':[item['hobby']]})
        print(list4)
    
    26.写一个socket客户端和服务端通讯
    
    27.什么是异步,什么是异步阻塞
    # 在同一时间 可以同时做两件事 ,异步阻塞,在同一时刻各自的线程或进程中存在IO操作而不影响其他进线程
    # t.start() 异步
    # num = input()
    # print(123)
    
    # t.start()
    # t.join()  #同步
    # print(1234)
    
    28.写一个程序,包含十个线程,子线程必须等待主线程sleep10秒钟之后,才执行,并打印当前时间
    from threading import Timer #定时器
    def func() : pass
    for i range(10) : Timer(10, func).start()
    
    29. 你所了解的锁都有哪些?
    互斥锁 在同一个线程或进程之间,当有两个acquire的时候,就会产生阻塞,死锁
    递归锁 在同一个线程或进程之间,无论acquire多少次都不会产生阻塞,但是得release()相同次数
    
    30. threading.RLock和threading.Lock 的区别
    互斥锁 在同一个线程或进程之间,当有两个acquire的时候,就会产生阻塞,死锁
    递归锁 在同一个线程或进程之间,无论acquire多少次都不会产生阻塞,但是得release()相同次数
    Python 10期考试题

    1.常用字符串格式化有那些?并说明他们的区别
    # format 直接调用函数
    # %s 语法塘
    # %r
    a = 1
    print(a)
    class A : pass
    a = A()
    print(a)

    2.请写出[元组,列表,字典,集合]的定义方法,新增方法,更改方法,删除方法

    3.利用python打印前一天的本地时间,格式'2018-01-03(面试题)
    # 时间戳时间 - (60*60*24) 转换成格式化时间
    # 时间戳时间 - (60*60*24) 转换成格式化时间strftime

    4.pythonre模块的search()match()的区别(面试题)
    #相同点: 接收两个参数,正则表达式,带匹配的字符串
    只匹配一个符合条件的项
    #区别: search 根据所写的正则匹配符合条件的第一个
    match 根据所写的正则 从头开始 匹配, 相当于在正则表达式的开始位置加了一个
    # hello
    # search 只要句中有hello就能匹配上 aaaabbbmbhellomm
    # march 只有句首有hello才能匹配上 hellosdadasd

    5.什么是lambda函数,有什么好处?
    # 匿名函数 简洁明了 可以和内置函数,可以有效地减少冗余的代码

    6.说明__init____new__的作用
    # __init__ 初始化方法 self默认参数
    # __new__ 构造方法 cls 创建对象
    # __del__ 析构方法 删除一个对象的之前执行的

    7.简书反射是怎么回事?
    # 用字符串数据类型的变量名或函数名来调用对应的属性
    # A.b getattr(A,'b)

    8.解释python中深拷贝和浅拷贝的区别
    # copy 不管一个数据类型有多少层,都另外开辟新的空间来储存一份和原来一模一样的数据
    # copy 只是重新开辟一块空间来copy第一层的数据

    9.用最简洁的方式生成一个列表[4,16,32,64,128]

    # 2**2 = 4
    # 2**3 = 8
    # 2**4 = 16
    # 2**5 = 32
    # 2**6 = 64
    # 2**7 = 128
    # 在等于3的时候循环跳过
    list = []
    for i in range(2,8):
    if i != 3
    list.append(2**i) # list.append(pow(2,3))

    10.python中如何实现随机数并打印,默认的随机数范围是多少?
    # random.random() 0-1

    11.新式类和经典类(旧式类)的区别(一种一分)
    # 新式类 : 默认继承object
    在继承的过程中,寻找一个方法遵循广度优先
    内置mro方法来标识广度优先的顺序
    # 经典类 : 在继承的过程中,寻找一个方法遵循深度优先

    12.装饰器在什么时候被执行的
    # 加载函数的时候被执行

    13.什么是"并发"?什么是"并行"
    # python:(把你知道的说出来,侃侃而谈的感觉)
    # 并发 (多线程 看起来是一起执行的,GIL限制了在同一时刻限制了多个线程只能有一个线程被cpu执行)
    # 是在同一时间只能有一个CPU在处理任务
    # 并行 (多进程 多个进程在同一时刻可以占用多个CPU)
    # 是真正意义上的在同一时刻有多个CPU在处理任务

    14.以个人理解描述Event的执行原理
    # 有一个状态控制wait方法是否阻塞

    15.什么是粘包,如何避免?(先说答案,再编其他的)
    # TCP协议 : 面向连接的流传输,数据是无边界的
    # 如何避免 : 自定义协议 struct模块
    # UDP协议 :

    16.什么是进程?
    # 运行中的程序
    # 是最小的资源分配单位
    # 为多个任务之间的数据安全和内存隔离做约束

    17.什么是线程?
    # cpu调度的最小单位
    # 轻量级的进程
    # 是进程的一部分
    # 在多个进程之间可以共享进程中的数据

    18.简述你对管道,队列的理解;
    # 管道 双向通信的数据容器 多进程的IPC中用到了
    # 数据不安全
    # 队列 : 先进先出 基于管道和锁实现的一个数据在线程进程之间的安全容器

    19.编程题: 写一个装饰器实现功能:打印程序的运行时间

    import time
    def time(func):
    def dinner(*args, **kwargs):
    start = time.time()
    ret = func(*args, **kwargs)
    print(time.time() - start)
    return ret
    return inner

    @time # wahaha = time(wahaha)
    def wahaha():
    pass

    20.读一下代码,写出答案并简述原因(面试题建议不使用电脑)
    下面代码会输出什么?

    def f (x,l = []): # 2 3 3 [0,1]
    for i in range(x): # i=0, i=1 i=0 ,i=1,i=2 i =0,i=1,i=2
    l.append(i*i) #[0,1] [3,2,1,0,1,4] [0,1,0,1,4]
    print l # [0,1] [3,2,1,0,1,4] [0,1,0,1,4]
    f(2)
    f(3,[3,2,1])
    f(3)

    21.使用python简单实现打印九九乘法表

    22.简述python GIL的概念, 以及它对python多线程的影响?
    # GIL全局解释器锁
    # 属于CPython解释器
    # 用来在CPython解释器届时一段多线程的代码时,约束线程在同一时刻只能有一个线程访问CPU
    # 它对python多线程的影响 : CPython解释器下启动的多线程并不能真正实现并行

    23.写一个单例模式

    24.编程题:将以下list3的格式转换成list4格式
    list3 = [
    {'name':'alex','hobby':'抽烟'},
    {'name':'alex','hobby':'喝酒'},
    {'name':'alex','hobby':'烫头'},
    {'name':'egon','hobby':'message'},
    {'name':'alex','hobby':'喊麦'},
    {'name':'egon','hobby':'街舞'},
    ]
    # 如何把上面的列表转成成下方的列表?
    list4 = [
    {'name':'alex','hobby_list':['抽烟','喝酒','烫头',喊麦]},
    {'name':'egon','hobby_list':['喊麦','街舞']},
    ]


    代码:
    两层for循环

    list4 = []
    for item in list3:
    for dic in list4:
    if item['name'] == dic['name']:
    dic['hobby_list'].append(item['hobby'])
    break
    else:
    list4.append({'name':item['name'],'hobby_list':[item['hobby']]})
    print(list4)

    26.写一个socket客户端和服务端通讯

    27.什么是异步,什么是异步阻塞
    # 在同一时间 可以同时做两件事 ,异步阻塞,在同一时刻各自的线程或进程中存在IO操作而不影响其他进线程
    # t.start() 异步
    # num = input()
    # print(123)

    # t.start()
    # t.join() #同步
    # print(1234)

    28.写一个程序,包含十个线程,子线程必须等待主线程sleep10秒钟之后,才执行,并打印当前时间
    from threading import Timer #定时器
    def func() : pass
    for i range(10) : Timer(10, func).start()

    29. 你所了解的锁都有哪些?
    互斥锁 在同一个线程或进程之间,当有两个acquire的时候,就会产生阻塞,死锁
    递归锁 在同一个线程或进程之间,无论acquire多少次都不会产生阻塞,但是得release()相同次数

    30. threading.RLockthreading.Lock 的区别
    互斥锁 在同一个线程或进程之间,当有两个acquire的时候,就会产生阻塞,死锁
    递归锁 在同一个线程或进程之间,无论acquire多少次都不会产生阻塞,但是得release()相同次数
  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/zhen1996/p/9350586.html
Copyright © 2020-2023  润新知