前言
Hello,各位从事 python 的同仁们,我叫_silence,现在坐标南
京,我最近参加了软通动力(南京)的面试,意向岗位是 Python 工
程师,后经过沟通,面的是测试方向。前面三轮技术面是一些 Python
基础知识和项目相关的技术点,总体难度不大,顺利通过,后来被
HR 告知还要通过线上的笔试(入职比较重要的流程之一),刚开始还
没太在意,人事说都是些 Python 最最基础的东西,所以就报名直接
考了,没想到栽在上面了,基础是挺多的,但说实话,大多数程序员
都是不太注重细节和基础,好多方法、技术用倒是会用,但猛地一看
考题,有的确实懵逼,还有徘徊不定的,尤其是客观题。
第一次考试在客观题上吃了亏,然后我就在网上搜集整理一些题
目,如下。第二次考试还算顺利,总算是通过了。看到这篇文章的,
希望能帮到你们。有的企业很注重基础的东西,有的则更偏向于你的
项目经验,但做项目,还是依靠于你的编程基础,所以打好基础有益
无害,多学一点没坏处。当然了,对于大佬们而言,我这些东西就班
门弄斧了,下面的题都是我在网上,牛客网搜集起来的,对于 python
基础不太好或者说 python 初学者的小伙伴来说,应该是一个不错的
学习资料,任何时候,基础的东西不能忘。
注:编程题整理的很少,编程是一个仁者见仁智者见智的过程,按照
需求来,最终把需求实现就 ok 了。
Python 基础知识考题
一、选择题
B、x = (y = z + 1)
B、40XL C、self D、__name__
1.下列选项不能创建一个字典的是( ):
A dict ={
}
B dict={ 3:5 }
C dict={ [3,4] }: ”test” }
D dict={ (1,2) : ”test” }
2.关于 python 内存管理,下列说法错误的是( ):
A 变量不必事先声明
B 变量无需实现创建和赋值而直接使用
B 变量无需指定类型
D 可以用 del 释放资源
3. 下列哪个语句在 Python 中是非法的?( )
A、x = y = z = 1
C、x, y = y, x D、x += y
4. 下面哪个不是 Python 合法的标识符( )
A、int32
5. 下列哪种说法是错误的 ( A )
A、除字典类型外,所有标准对象均可以用于布尔测试
B、空字符串的布尔值是 False
C、空列表对象的布尔值是 False
D、值为 0 的任何数字对象的布尔值是 False
6.Python 不支持的数据类型有 ()
A、char
7.关于 Python 中的复数,下列说法错误的是( )
A、表示复数的语法是 real + image j
B、实部和虚部都是浮点数
C、虚部必须后缀 j,且必须是小写
D、方法 conjugate 返回复数的共轭复数
8.关于字符串下列说法错误的是 ( )
A、字符应该视为长度为 1 的字符串
B、字符串以\0 标志字符串的结束
C、既可以用单引号,也可以用双引号创建字符串
D、在三引号字符串中可以包含换行回车等特殊字符
9.下列 Python 语句正确的是 ()
A、min = x if x < y else y
B、max = x > y ? x : y
C、if (x > y) print x
D、while True : pass
B、int
C、float D、list
10. 计算机中信息处理和信息储存用()
A 二进制代码
B 十进制代码
C 十六进制代码
D ASCII 代码
11. python 源程序执行的方式()
A 编译执行 B 解析执行 C 直接执行 D 边编译边执行
12. Python 语言语句块的标记是()
A 分号 B 逗号 C 缩进 D /
13. 以下是字符转换成字节的方法是(B)
A decode()
14. 以下是正确的字符串()
A ‘abc”ab” B ‘abc”ab’ C “abc”ab” D “abc\”ab”
15. “ab”+”c”*2 结果是:()
A abc2
16. 以下会出现错误的是()
A ‘北京’.encode()
B ‘北京’.decode()
C ‘北京’.encode().decode()
D 以上都不会错误
17. 如下:
B encode() C upper() D rstrip()
D ababcc
B abcabc
C abcc
str1 = "Runoob example....wow!!!
str2 = "exam";
print(str1.find(str2, 5)) 打印的结果是()
B 7 C 8 D -1
A 6
18. 下面对 count(),index(), find()方法描述错误的是()
A count() 方法用于统计字符串里某个字符出现的次数
B find() 方法检测字符串中是否包含子字符串 str 如果包含子字符串返回开始的索引值,
否则会报一个异常
C index() 方法检测字符串中是否包含子字符串 str, 如果 str 不在 返回-1
D 以上都错误
19. 有下面的程序段
if k<=10 and k >0:
if k >5:
if k>8:
x=0
else:
X=1
else:
if k>2:
x=3
x=4
else:
其中 k 取那组值时 x =3 ()
B 3,4
D 4,5
B with
C 5,6,7
A 3,4,5
20. 以下不是 python 中的关键字()
A raise
C import D final
21. 调用以下函数返回的值()
def myfun():
pass
A 0
22.函数如下:
def showNnumber(numbers):
for n in numbers:
B 出错不能运行 C 空字符串 D None
print(n)
下面那些在调用函数时会报错()
A showNumer([2,4,5])
C showNnumber(3.4)
23.函数如下:
def chanageInt(number2):
number2 = number2+1
print("changeInt: number2= ",number2)
B showNnumber(‘abcesf’)
D showNumber((12,4,5))
#调用
number1 = 2
chanageInt(number1)
print("number:",number1)
打印结果哪项是正确的()
A changeInt: number2= 3
B changeInt: number2= 3
C number: 2
D number: 2
24. 函数如下:
def chanageList(list):
list.append(" end")
number: 3
number: 2
changeInt: number2= 2
changeInt: number2= 3
print("list",list)
#调用
strs =['1','2']
chanageList()
print("strs",strs)
下面对 strs 和 list 的值输出正确的是( )
A strs ['1','2']
C list ['1','2',’end’]
25. 定义类如下:
B list
D strs ['1','2',’end’]
['1','2']
class Hello():
pass
下面说明错误的是( C D )
A 该类实例中包含__dir__()方法
B 该类实例中包含__hash__()方法
C 该类实例中只包含__dir__(),不包含__hash__()
D 该类没有定义任何方法,所以该实例中没有包含任何方法
26.定义类如下:
class hello():
def showInfo(sef):
print(self.x)
下面描述正确的是()
A 该类不可以实例化
B 该类可以实例化
C 在 pycharm 工具中会出现语法错误,说 self 没有定义
D 该类可以实例化,并且能正常通过对象调用 showInfo()
27. 关于 python 类 说法错误的是()
A 类的实例方法必须创建对象后才可以调用
B 类的实例方法必须创建对象前才可以调用
C 类的类方法可以用对象和类名来调用
D 类的静态属性可以用类名和对象来调用
28. 定义类如下
class Hello():
def __init__(self,name)
self.name=name
def showInfo(self)
print(self.name)
下面代码能正常执行的 ( C )
A h = Hello
h.showInfo()
B h = Hello()
h.showInfo(‘张三’)
C h = Hello(‘张三’)
h.showInfo()
D h = Hello(‘admin’)
showInfo
29. 定义类如下:
class A():
def a():
print(“a”)
class B ():
def b():
print(“b”)
class C():
def c():
print(c)
class D(A,C):
def d():
print(“d”)
d = D()
d.a()
d.b()
d.d()
B a,d
D 执行会报错
以下程序能执行的结果是()
A a,b,d
C d,a
30. 以下哪项 python 能正常启动()
A 拼写错误 B 错误表达式
C 缩进错误 D 手动抛出异常
31 有关异常说法正确的是()
A 程序中抛出异常终止程序
B 程序中抛出异常不一定终止程序
C 拼写错误会导致程序终止
D 缩进错误会导致程序终止
32. 对以下程序描述错误的是()
try:
#语句块 1
except
IndexError as i:
# 语句块 2
A 改程序对异常处理了,因此一定不会终止程序
B 改程序对异常处理了,不一定不会因异常引发终止
C 语句块 1,如果抛出 IndexError 异常,不会因为异常终止程序
D 语句块 2 不一定会执行
33. 导入模块的方式错误的是()
A import mo
C import mo as m
34. 以下关于模块说法错误的是()
D import m from mo
B from mo import *
A 一个 xx.py 就是一个模块
B 任何一个普通的 xx.py 文件可以作为模块导入
C 模块文件的扩展名不一定是 .py
D 运行时会从制定的目录搜索导入的模块,如果没有,会报错异常
二、填空/简答
1.如何用 pip 安装指定版本的第三方库?比如安装 django(1.11.11 版本)
cmd 中 pip install django ==1.11.11
2.代码:print=”Hello iSoftStone” print(print) 输出打印的结果是_______
报错 TypeError (参考 LEGB 原则)
LEGB 代表名字查找顺序:
Locals -> enclosing function -> globals -> builtins
Locals: 函数内的名字空间,包括局部变量和形参
Enclosing: 外部嵌套的名字空间(常见于闭包)
globals: 全局变量,函数定义所在模块的名字空间
builtins: 内置模块的名字空间
3.将 list[‘1’, ’2’, ’3’] 列表里的内容拼接成字符串 ”1,2,3”, 用 join 方法。
list = [“1”, ”2”, “3”]
str=’ , ‘.join(list)
print(sttr)
4. str=”abcdef”, 如何用切片操作将 str 反转得到 str= ”abcde”?
print(str[: : -1]) 或 print(str[-1: : -1])
5.装饰器的作用以及基本语法是什么?
在不改变函数原有功能的基础上为函数增加新的功能。
强调装饰器的原则:a 不修改被装饰对象的源代码 b 不修改被装饰对象的调用方式
基本语法:
def wrapper(func):
def inner(*args,**kwargs):
return func(*args,**kwargs)
return inner
6.可迭代对象、迭代器对象的区别
迭代对象不一定是迭代器对象,迭代器对象一定是可迭代的。
7 . hasattr、setattr、getattrs 的使用方法
hasattr:判断一个实例对象中是否含有 name 的属性或者方法名为 name;
setattr:给一个实例对象增加一个 key-val 形式的键值;
getattr:取一个实例对象中的 name 属性或者方法名为 name
8 . return、yield 的使用区别?
在一个函数里 return 只有一个,只要遇到 return 就会停止执行该函数;
一个函数里 yield 可以有多个,通过 next()函数进行访问。
9. 类中内置的 getattr、setattr 方法的作用是_______
getattr 是内置方法,当使用点符号获取属性时,如果属性不存在就自动调用 getatr 方法;
setarr:当设置类的实例属性时自动调用,如 obj.name=5 就会调用 setarr。
10. 在实际项目中都用过哪些模块?
re、os、time、random、math、……
11. 什么是 GIL(全局解释器锁) 与互斥锁?
互斥锁:保证锁定同一个线程,修改这个完整数据后释放该锁,时用户程序自己的锁。
使用情况:因为使用时暂用时间,影响其他线程等待,所以尽量修改处理块的数
据后立即释放锁。
GIL: 全局解释器锁,一个进程中,只能同时仅有一个线程来执行,获得相关的锁,获取相
关资源。如果一个进程只能由一个线程来执行,同一进程下的多线程的并行则成为不可能,
即使这几个线程之间不存在资源的竞争。从理论上讲,我们要尽可能使程序更加并行,能够
充分利用多核的功能。
12 . python 里面测试框架有哪些?
unittest、unittest2、nose、doctest、pytest
13. 已知 x=”a b c d”, 那么表达式 ‘ , ‘.join(x.split() )的结果是: ‘a,b,c,d’ 或 a,b,c,d
14. 表达式 eval(“3+5”)的结果是:
15. 表达式”Hello world!”[-4:]的结果是:
16. 表达式 3 in [1,2,3] 的结果是:
True
17.已知 x= [3,3,4], 那么表达式 id( x[0] )==id( x[1] ) 的结果是:
rld! 或 ‘rld!’
8
True
18 . Python 中,运算符表示集合 A 是集合 B 的子集和真子集:
19. 表达式 set=(1,2,2,3) ==(1,2,3) 的结果是:
20. 已知列表 x=[1,2], 执行语句 y=x 后,表达式 x is y 的结果是:
21. python 中用于底层网络交互的库有哪些? requests、socket, urllib,urllib3 , grab, pycurl
22. python 常见的命令行交互自动化模块有哪些?
setA<=setB、setA