面试写过的一些python基础的笔试题,一些记忆深刻的写下来:

一.基础面试题

1.代码中要修改不可变数据会出现什么问题,抛出什么异常?
答:代码不能正常运行,会抛出typeerror类型的错误

2.a=1,b=2 不使用中间变量交互a,b的值?
答:第一种方法:
a = a+b
b = a -b
a = a-b
第二中方法
a,b=b,a
第三种方法
a = a^ b
b = b ^ a
a = a ^ b

3.print调用了python中底层的什么方法?
print方法默认调用了sys.stdout.write方法,即向控制台输入字符串

4.简述对input()函数的理解?
python3中,调用input(),是获取用户输入,不管用户输入的是什么数字类型,都已字符串来进行处理。
python2中有raw_input()和input(),其中raw_input()和python3中的用法一样,而input()则是用户输入什么类型就是什么类型,如123就是int类型

5.zip()函数

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]

zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]

zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

6.python2中的range和xrange的区别
在python2中range返回值是一个列表,而xrange返回值是一个可迭代对象,range返回的列表会在内存中开辟一个空间来储存列表,而xrange边用边开辟空间,如果是一个很长的列表考虑到性能问题那么建议使用xrange

7.range()函数
range(start, stop[, step])

range(10) # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

range(1, 11) # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

range(0, 30, 5) # 步长为 5
[0, 5, 10, 15, 20, 25]

range(0, 10, 3) # 步长为 3
[0, 3, 6, 9]

range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

range(0)
[]

range(1, 0)
[]

8.read,readline,和readlines的区别?
read:读取整个文件
readline:读取下一行使用生成器的方法
readlines: 读取整个文件到迭代器中以提供我们遍历

9.常用的python标准库:
random随机,time时间,os操作系统,pymysql连接MySQL数据库,pymongo连接mongodb数据库,threading线程,multiprocessing进程,queue队列
第三方库:
flask,django,scrapy,celery,virtualenv,selenium,xadmin,requests,hashlib,MD5
常用的科学计算库:
Numpy,scipy,pandas

10__init__和__new__的区别:
__init__会在创建对象后初始化对象,new__是在对象创建之前初始化一个对象返回给__init

11.python中如何实现随机数:
random.randint(a,b) 随机生成一个整数,并且该整数在a到b之间(a,b都可以取到)
random.random() 生成0-1之间的随机浮点数
random.uniform(a,b) 随机生成a到b之间的浮点数
random.randrange(a,b,step) 在指定的集合中,以step为基数随机取一个数
random.choice 从特定的序列中随机取一个元素,这个序列可以是字符串,元组,列表。

12.输入某年某月某日,判断这天是这一年的第几天(可以使用python的标准模块)

import datetime
def dayofyear():
year = int(input("请输入年份:"))
mon = int(input("请输入月份:"))
day = int(input("请输入日期:"))
date1 =  datetime.date(year=year,month=mon,day=day)
date2 = datetime.datet(year= year,month=1,day=1)
days = int((date1-date2).days) + 1
return days

13.打乱一个排列好的list对象alist:

import random 
alist = [1,2,3]
random.shuffle(alist)  #这个shuffle是改变原有的list对象的顺序

  1. os.path和sys.path分别代表什么:
    os.path:代表系统路径文件的操作
    sys.path:只要是对python解释器的系统环境参数的操作(动态的改变python解释器的搜索路径)
后续还会更新整理!!!

更多推荐

python基础面试题(1)