python2019 经典面试题

第一题:

仔细阅读以下代码,找出你认为能优化的地方,或者支出代码不足的地方

def sum_str(num):
    str = 'first'
    for i in range(num):
        str += 'X'
    return str
print(sum_str(5))
# 优化如下:
print('first'+'X'*5)

第二题: 简单描述python中如何实现并发

pyhton实现并发tornado框架(epoll多路IO复用)
nginx+uWSIG负载均衡(gevent协成方案)
缓存设计
MySQL相关优化
页面静态化
前后端分离

第三题 一个包(文件夹)里有三个模块,mod1.py,mod2.py,mod3.py,但使用from demopack import * 导入时,如何保证只有mod1,mod3被导入?

思路:在demopack 的init.py中添加 all=["mod1","mod3"]

导入模块.png

第四题:实现一个装饰器,用于打印函数的调用记录

nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量

def decorate(fun):
    '''
    打印函数被调用的时间及调用次数
    '''
    count = 0
    def wrapper(*args, **kwargs):
        nonlocal count
        count += 1
        print("被调用%d次" % count)
        return fun(*args, **kwargs)
    return wrapper


@decorate
def demo():
    print("hello world!")

if __name__ == '__main__':
    for i in range(3):
        demo()

被调用1次
hello world!
被调用2次
hello world!
被调用3次
hello world!

第五题:python 里面如何实现tuple和list的转换

# 定义元组
tup = (1,2,3)
print(tup,type(tup))

# 元组转换列表
tuple_to_list = list(tup)
print(tuple_to_list,type(tuple_to_list))

# 列表转换元组
list_to_tuple = tuple(tuple_to_list)
print(list_to_tuple,type(list_to_tuple))

# 结果:
(1, 2, 3) <class 'tuple'>
[1, 2, 3] <class 'list'>
(1, 2, 3) <class 'tuple'>

第六题:python 写一段代码实现删除一个列表里面重复的元素

lis = [1, 2, 6, 8, 12, 2, 6, 8, 42, 52, 12]
# 方法1:使用set()函数 ,然后再用list()转换成列表,或者列表推导式
res = list(set(lis))
# res = [i for i in set(lis)]
print(res)


# 方法2:append
def delList(list):
    new_list = []
    for i in list:
        if i not in new_list:
            new_list.append(i)
    return new_list


res = delList(lis)
print(res)


# 方法3:count,remove
def delCountList(list):
    for i in list:
        if list.count(i) > 1:
            for x in range((list.count(i) - 1)):
                list.remove(i)

    return list

res = delCountList(lis)
print(res)

第七题:python中 pass语句的作用是什么

Python pass 是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。因为如果定义一个空函数程序会报错,当你没有想好函数的内容是可以用 pass 填充,使程序可以正常运行。

第八题:下面这段代码的输出结果将是什么?请解释?

class Parent(object):
    x = 1
class Child1(Parent):
    pass
class Child2(Parent):
    pass
print(Parent.x, Child1.x, Child2.x)
Child1.x = 2
print(Parent.x, Child1.x, Child2.x)
Parent.x = 3
print(Parent.x, Child1.x, Child2.x)

结果为:
1 1 1 #继承自父类的类属性x,所以都一样,指向同一块内存地址。
1 2 1 #更改Child1,Child1的x指向了新的内存地址。
3 2 3 #更改Parent,Parent的x指向了新的内存地址。

第九题:python 输入一个字符串,输出该字符串中字符串的所有组合。

例如:输入字符串"123",则输出为'1', '2', '3', '12', '13', '21',

import itertools

str = '123'
str_list = []
for i in range(1,len(str)+1):
    res = [''.join(x) for x in itertools.permutations(str,i)]
    str_list += res

new_str = ','.join(str_list)
print(new_str)
# 结果:
1,2,3,12,13,21,23,31,32,123,132,213,231,312,321

第十题:输入日期,判断这一天是这一年的第几天?

import datetime
from datetime import timedelta

def dayofyear():
    year = input('请输入年份:')
    month = input('请输入月份:')
    day = input('请输入天:')
    data1 = datetime.date(year=int(year), month=int(month), day=int(day))
    data2 = datetime.date(year=int(year), month=1, day=1)
    return year,(data1-data2 +timedelta(days=1)).days


year,day = dayofyear()
print('这是{}的第{}天'.format(year,day))

第十一题:写下常用的Linux命令,并简洁其作用。

ls -a 显示所有文件包括隐藏文件
cd dir 切换到当前目录下的dir目录
rm test 删除某个文件
touch test 创建一个空文件
su xiaoming 切换到xiaoming用户
dete -s 20:30:30 设置系统时间为 20:30:30
cd /home 进入 /home目录
cd .. 返回上一级目录
cd ../.. 返回上两级目录
mkdir dir1 创建dir1目录
rm -f file1 删除file1的文件 -f 忽略不存在的文件,不会提示
groupadd group_name 创建一个新用户组
groupdel group_name 创建一个用户组
tar -cvf archive.tar file1 创建一个非压缩的tarball
tar -cvf archive.tar file1 file2 dir1 创建一个包含了 file1,file2,dir1的档案文件
tar -tf archive.tar 显示一个包中的内容
tar -xvf archive.tar -C /tmp 将压缩包释放到/tmp目录下
tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包
tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包
tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包
tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包

第十二题:MySQL事务的四大特性是多么?并简述每个特征。

1.原子性(Atomicity)
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
2.一致性(Consistency)
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。举例来说:假设用户A和用户B两者的钱加起来一共是1000,那么不管A和B之间如何转账,转几次,事务结束后两个用户的钱加起来应该还得是1000,这就是事务的一致性。
3.隔离性(Isolation)
隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每个用户开启的事务,不能被其他事务的操作有所干扰,多个并发事务直接要相互隔离,关于事务的隔离性数据库提供了多种隔离级别。
4.持久性(Durability)
一旦事务提交,则其所做的修改会永久保存到数据库。

第十三题:什么是restful api?简单介绍一下。

是一种统一接口的设计方式,就是被普遍采用的RESTful API设计风格。
restful风格设计的关键点有:
1.url路径:url路径地址尽量使用名词复数,不使用动词;
2.请求方式:访问同一个url地址,采用不同的请求方式,代表要执行不同的操作;
3.过滤信息:过滤参数可以放在查询字符串中;
4.响应数据:针对不同操作,服务器向用户返回不同的响应数据;
5.响应数据格式:服务器返回的响应数据格式,应尽量使用json;
6.响应状态码
200 OK - [GET/PUT]:服务器成功返回用户请求的数据
201 CREATED - [POST]:用户新建数据成功。
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作
401 Unauthorized - []:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [
] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - []:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。。
500 INTERNAL SERVER ERROR - [
]:服务器发生错误,用户将无法判断发出的请求是否成功。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容