• 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()相同次数
  • 相关阅读:
    shell 基本系统命令,关机重启,查看版本,查手册,日期,磁盘,历史命令
    shell 命令 文件查看ls,复制cp,移动mv,查看文件内容cat more less,查看文件信息 file
    luoguP1850 换教室
    bzoj2091: [Poi2010]The Minima Game DP
    luoguP1281 书的复制 DP,贪心
    loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流
    bzoj1133: [POI2009]Kon
    luogu3426 [POI2005]SZA-Template 后缀树
    loj#2483. 「CEOI2017」Building Bridges 斜率优化 cdq分治
    loj2353. 「NOI2007」 货币兑换
  • 原文地址:https://www.cnblogs.com/zhen1996/p/9350586.html
Copyright © 2020-2023  润新知