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.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()相同次数

7.22 python面试题的更多相关文章

  1. python面试题大全(一)

    注:本面试题来源于网络,转载请注明来自http://www.cnblogs.com/goodhacker/p/3366618.html. 1. (1)python下多线程的限制以及多进程中传递参数的方 ...

  2. python公司面试题集锦 python面试题大全

    问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...

  3. python面试题大全

    注:本面试题来源于网络,转载请注明来自http://www.cnblogs.com/goodhacker/p/3366618.html. 1. (1)python下多线程的限制以及多进程中传递参数的方 ...

  4. Python面试题(一)【转】

    注:本面试题来源于网络,转载自http://www.cnblogs.com/goodhacker/p/3366618.html. 1. (1)python下多线程的限制以及多进程中传递参数的方式 py ...

  5. Python面试题整理-更新中

    几个链接: 编程零基础应当如何开始学习 Python ? - 路人甲的回答 网易云课堂上有哪些值得推荐的 Python 教程? - 路人甲的回答 怎么用最短时间高效而踏实地学习 Python? - 路 ...

  6. python 面试题3

    注:本面试题来源于网络. 1.python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一 ...

  7. 很全的 Python 面试题

    很全的 Python 面试题 Python语言特性 1 Python的函数参数传递 看两个例子:           Python   1 2 3 4 5 a = 1 def fun(a):      ...

  8. 常见的 35 个 Python 面试题及答案

    1. Python 面试问题及答案 作为一个 Python 新手,你必须熟悉基础知识.在本文中我们将讨论一些 Python 面试的基础问题和高级问题以及答案,以帮助你完成面试.包括 Python 开发 ...

  9. 最新python面试题

    1.一行代码实现1--100之和 利用sum()函数求和 2.如何在一个函数内部修改全局变量 利用global 修改全局变量 3.列出5个python标准库 os:提供了不少与操作系统相关联的函数 s ...

随机推荐

  1. C++ 保存Excel文件(带密码保护)

    最近有客户需求报表保存为xls的功能,需要保存的文件设置密码保护,特进行尝试! Workbook.SaveAs method (Excel) 参数详情:https://docs.microsoft.c ...

  2. Win7下telnet使用

    出于安全考虑,win7已经禁用了telnet这一功能, telnet是明文传输的,安全性很差. 知道了这一点就不奇怪为什么在win7下不能使用telnet了,下面就详细介绍下如何重新开启telnet服 ...

  3. SPREAD for Windows Forms 代码片段

    'スクロールバーの移動 FpSpread1.ShowColumn(, , HorizontalPosition.Left) 'SetActiveCellの後.LeaveCellを呼び出す Dim ss ...

  4. 使用Ajax long polling实现简单的聊天程序

    关于web实时通信,通常使用长轮询或这长连接方式进行实现. 为了能够实际体会长轮询,通过Ajax长轮询实现了一个简单的聊天程序,在此作为笔记. 长轮询 传统的轮询方式是,客户端定时(一般使用setIn ...

  5. 品鉴同事发来的炸金花的PHP程序代码

    今天同事发来了一个炸金花的PHP程序,这个代码实现了两个人通过各自的三张牌进行权重计算,得到分数进行比较得到谁的牌大,我觉得里面还有一些问题,代码如下: <?php /** 每张牌的分值为一个2 ...

  6. Oracle基本操作,Oracle修改列名,Oracle修改字段类型

    oracle基本操作,Oracle修改列名,Oracle修改字段类型 >>>>>>>>>>>>>>>>& ...

  7. /usr/bin/ld: cannot find -lxxx 的解决办法

    /usr/bin/ld: cannot find -lxxx 的解决办法 在软件编译过程中,经常会碰到类似这样的编译错误: /usr/bin/ld: cannot find -lhdf5 这表示找不到 ...

  8. my97date 时间范围限制

    需求:根据开始时间,动态限制结束时间 实现: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  9. requests 安装

    requests 是用来发送 HTTP 请求的一个库,requests 是对 urllib 和 urllib2 进行封装的一个模块,用来取代 urllib 和 urllib2,可以使用以下两种方法安装 ...

  10. curses.h: No such file or directory

    嵌入式linux移植时,编译busybox或者内核时使用make menuconfig有时会遇到这个错误 Linux Error: ncurses.h: No such file or directo ...