测试秋招八股文集锦——Python高频考点

一、前言:周末愉快吖~

周六闺蜜来玩,中午我亲手做了韭菜炒鸡蛋、牛肉酱炒东北大拉皮、煮玉米、毛豆、烧卖,由于我不会做肉类的菜,外卖点了红烧排骨。还做了双皮奶、银耳红枣羹。

晚上带闺蜜出去吃了韩餐,被韩式凉面的酸甜口惊艳到了,炸鸡套餐、还有一种韩式汤也超鲜美。

闺蜜今天就返程回去了,买的整个西瓜、冰淇淋还没来得及和她一起吃呢

二、Python高频考点目录

  1. Python基本数据结构有哪四种?区别是什么

  2. Pyhton数据类型

  3. Break和Continuous区别

  4. Python return和yield的区别,以及return的作用

  5. Python深拷贝和浅拷贝区别

  6. range和xrange的区别

  7. .is和==的区别

  8. 什么是lambda函数

  9. 字符串拆分方法有哪些

  10. 单引号、双引号、三引号区别

  11. python传参时需要注意什么

  12. 装饰器

  13. 函数或变量的作用域

  14. 解释型和编译型语言的区别

  15. inti和new的区别

  16. 常用的模块

  17. python的list和numpy.array(数组)的区别

  18. 类中self的概念及其三种应用

  19. python的几种变量,按照作用域划分

  20. python的面向对象特征

三、Pyhton高频考点解答

3.1 Python基本数据结构及其区别,应用场景分别是什么,代码展现

3.1.1 Python基本数据结构有哪四种?区别是什么

  • list:有序可修改。通过索引进行查找、切片。使用方括号[ ]表示;
  • tuple:有序不可修改。可查询、切片操作。元组将多样的对象集合到一起,通过索引进行查找。用小括号( )表示;
  • set:集合,无序可修改,无重复,无索引,不能跟列表一样切片。自动去重。使用set([ ])表示;
  • dict:字典是一组key-value,通过key查找,无顺序,用{ }表示。

3.1.2 应用场景分别是什么

  • list:简单的数据集合,可用索引;
  • tuple:把一些数据当作整体去用,不能修改;
  • dict:使用key,value进行关联的数据;
  • set:数据无重复,只关心数据是否出现,不关心位置。

3.1.3 代码展现

mylist = [1,2,3,4,'oh']
mytuple = (1,2,'Hello',(4,5))
mydict = {'wang':1,'Hu':2,'Liu':3}
myset = set(['wang','Hu','Liu',4,'wa'])

3.2 Python数据类型

1、String(字符串)
2、Number(数字型)
  • int(整型)
  • float(浮点型)
  • complex(复数)
  • long(长整数)
3、 List(列表)
4、Tuple(元组)
5、 Dictionary(字典)
6、Set(集合)

3.3 Break和Continuous区别

  • break用于结束整个循环。
  • continuous不执行当前循环的statement,运行下一个循环。

3.4 Python return和yield的区别,以及print和return的作用

3.4.1 Python return和yield的区别

  • 相同点:都是返回函数执行的结果。
  • 不同点:return在返回结果后结束函数的运行,返回到调用处继续执行。而yield则是让函数变成一个生成器,生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值

3.4.2 yield生成器相比return一次返回所有结果的优势

  • 反应更迅速
  • 更节省空间
  • 使用更灵活

3.4.3print和return作用

  • print的作用是输出数据到控制端,就是打印在你能看到的界面上。
  • return的作用之一是返回计算的值。

3.5 Python深拷贝和浅拷贝区别

浅拷贝:是在另一块地址中创建一个新的变量或容器,但是容器内的元素的地址均是源对象的元素的地址的拷贝。也就是说新的容器中指向了旧的元素(新瓶装旧酒)。

深拷贝:完全拷贝了一个副本,容器内部元素地址都不一样。

3.6 range和xrange的区别,Range函数用法

3.6.1 range和xrange的区别

python2中分range()和xrange() 其中range()是生成一个list,是一个列表生成式 而xrange()是一个生成器

python3中取消了xrange() 内置的range()实际就是python2里的xrange() 返回生成器

3.6.2 Range函数用法

  • 返回一系列连续增加的整数
  • 工作方式类似于分片
  • 可生成一个列表对象

3.6.3 range代码

alist = range(0,101) #range生成0-100列表
print(alist)  #输出结果[0,1,2,....100]
blist = range(2,101,2)#设置步长为2
print(blist)#输出结果[2,4,6,.....100]

3.7 .is和==的区别

is判断两个对象的内存地址是否相同 ==判断两个对象的值是否相同

3.8 什么是lambda函数

  • 匿名函数形式 f=lambda x : x表达式
  • 调用时可采用f(x)的形式 或者直接使用(可以用于return语句)
  • 优点:没有名字,无需担心函数冲突
  • 缺点:只能有一个表达式,没有return,返回值就是该表达式的结果

3.9 字符串拆分方法有哪些

  • 方法一:String对象的Split方法,不允许有多个分隔符
  • 方法二:函数re.split(),允许为分隔符指定多个正则模式
line = "I am super man!"
#String的split方法
print(line.split(" ")) #以空格拆分
输出['I','am','super','man!']
#re.split方法
import re 
print(re.split("[m]",line))
输出['I','a','','super','','an!']

3.10 单引号、双引号、三引号区别

  • 单引号双引号没有区别,都可以用来表示字符串;
  • 三引号,字符串内可直接换行,且可包含注释。
若要表示 Let's go 这个字符串
单引号:s1 = 'Let's go'
双引号:s2 = "Let's go"
三引号:s3 = 'I realy like "Python"!'

3.11python传参时需要注意什么

3.11.1 传入参数是否可以被修改

  1. 如果没有将外部变量传递到函数来(参数定义种包含该外部变量),则函数内部虽然可以使用,但是不能对该变量进行修改(会报错)——未传参的变量可使用但不可修改
  2. 将外部变量作为实参传递到函数中来的话,如果外部变量是不可变对象的话不可以修改该变量的原始值——相当于"传值"的方式来传递变量,可以通过改变引用指向的方式,在函数内部获取新的不可变对象,但是对函数外部没有影响(除非加了global)

python函数传入的是原变量引用的一个副本,这两个引用(副本及原引用)在内外均指向同一个内存区(具体存值的地方)。如果在函数内部改变了引用指向的话,只是副本引用指向了一个新的内存区,函数外面的引用仍然指向原内存堆区,不会改变原变量的值(不可变对象的操作、可变对象的赋值操作)。而如果在内部通过append、remove函数改变了堆区的值的话,外部的引用仍然会改变。

3.11.2 传入参数的顺序和类型

参数顺序:必选参数,默认参数,可变参数,命名关键字参数,关键字参数

可变参数必须在关键字参数之前

  • 默认参数 必须指向不可变对象
  • 可变参数 形式def func(可变参数) 传入参数的个数可以是0个或者多个,其实是传入一个list或者tuple,函数接收的是个tuple。如果有个list或者tuple想直接传入func的话,可以直接用func(list)实现(即把想要传入的可变参数封装成list/tuple传入)
  • 关键字参数 形式def func(关键字参数) 允许传入0个或多个含参数名的参数,在函数内部组装成字典。传入的时候用参数名=参数值的形式。如果传入dict的话可以直接func(dict)
  • 命名关键字参数 形式def func(,city,job) 限制某几种参数名的输入,传入的时候必须只有,后面的这几种参数名可以选择,传入用fun(city=xxx,job=xxx)的形式

3.11.3 补充:可变对象与不可变对象总结

可变对象:list、dict、set 可变对象是指对象的内存值可以改变

不可变对象:int、tuple、str、bool 不可变对象是指对象的内存值不可以被改变。改变变量时,其实质是变量指向新的地址,即变量引用新的对象

3.12 装饰器

装饰器可以在不改变函数代码和调用方式的情况下给函数添加新的功能。

本质上是一个嵌套函数,接收被装饰的函数(func)作为参数,并返回一个包装过的函数,以实现不影响函数的情况下添加新的功能。抽离出大量与函数主体功能无关的代码,增加一个函数的重用性。
应用场景:性能测试(统计程序运行时间)、插入日志、权限校验

3.13 函数或变量的作用域

  • 正常的函数/变量是public的,可以被直接引用,如x123、 PI 等

  • xxx__变量/函数是特殊变量,虽可以被直接引用,但是有特殊的用途,比如说__init ,new 等

  • _xxx 表示半私有的变量,只能在类或者子类内使用

  • __xxx表示私有的变量,只能在类内使用

这两种私有变量都是应当私有,而不是一定不能访问的

3.14 解释型和编译型语言的区别

3.14.1编译型语言

在程序执行前,需要把源代码编译成机器语言的文件,再执行时可以直接使用该编译结果,以后不需要再次编译。

优点:运行效率高

缺点:难以移植

3.14.2 解释型语言:

代码执行时才一行行动态翻译执行

优点:无需翻译器,方便程序移植;可以交互式运行

缺点:运行效率较低

3.15 inti和new的区别

相同点:两者都是类中的private函数

不同点:

  • new是在实例创建之前被调用的,任务是创建实例然后返回该实例对象,是个静态方法,至少要有一个参数cls(代表当前类),必须有返回值(即该实例对象)
  • init是在实例创建完成后被调用的,设置对象属性的一些初始值,通常用在初始化一个类实例的时候,是一个实例方法,至少有一个参数self(代表当前的实例),无需返回值。

initnew之后被调用,new的返回值(实例)传递给init的第一个参数,然后由init设置一些实例的参数。
此外,继承自object的类才有 new,如果定义子类的时候没有定义new,则会追溯到父类的new方法来构造该类实例,如果父类也未定义,则一直可以向上追溯到object的new方法

3.16 常用的模块

  • os 与操作系统交互
  • sys
  • random 生成伪随机数
  • time 可以读取时间戳或程序暂停
  • collections 提供常见的数据结构如双向队列deque、计数器Counter、默认字典defaultdict

3.17 python的list和numpy.array(数组)的区别

  • list可以存放不同类型的数据,比如int,str,bool,float,list,set等,但是numpy数组中存放的数据类型必须全部相同,必须全为int或全为float

  • list中每个元素的大小可以相同,也可以不同,因此不支持一次性读取一列,而numpy数组中每个元素大小相同,支持一次性读取一列。numpy对二维数组的操作更为便捷

  • list中数据类型保存的是数据存放的地址,即指针而非数据,比如一个有四个数据的列表a=[1,2,3,4]需要4个指针和4个数据,增加了存储空间,消耗CPU,但是a=np.array([1,2,3,4])只需要存放4个数据,节省内存,方便读取和计算

  • 一个numpy的array是内存中的一个连续块,array中的元素都是同一类型的,所以一旦确定了一个array,它的内存就确定了,每个元素的内存大小都确定了。而list的每个元素是一个地址的引用,这个地址又指向了另一个元素,这些元素在内存里不一定是连续的,因此每当加入新元素,其实只是把这个元素的地址添加到list中

3.18 类中self的概念及其三种应用

self代表实例本身,具体来说是该实例的内存地址

3.18.1 self的三种应用

  • self为类中函数的第一个参数

在调用实例方法时,python解释器会自己把实例变量传递给函数中的self。如果类的实例方法的第一个参数不是代表实例的self,则调用实例方法时,该方法没有参数来接收自动传入的实例变量,程序会产生异常。

  • 在类中,引用实例的属性 self.变量名

引用实例的属性目的是为实例绑定属性,写入或读取实例的属性

  • 在类中,调用实例的方法 self.方法名()

3.19 python的几种变量,按照作用域划分

  • 全局变量:在模块内、在所有函数之外、在class外

  • 局部变量 :在函数内、在class的方法内(但未加self修饰)

  • 静态变量/类属性 在class内,但是不在class的方法内的。

类的所有实例均可以访问到该类属性,用类名.变量名()的方式

  • 实例变量/实例属性 在class的方法内,用self修饰的变量

实例属性的优先级高于类属性,所以若是同名,实例属性会覆盖类属性,有限输出实例属性

3.20 python的面向对象特性

1.封装
2.继承
3.多态

3.20.1 面向对象和面向过程语言的区别

  • 面向对象是把问题抽象成一个个对象,给这些对象绑上属性和方法,即以功能而非步骤划分问题。优点:更易低耦合、易维护、易复用;缺点:因为需要实例化所以开销较大,性能比面向过程要低

  • 面向过程是把问题拆分成一个个函数和数据,按照一定的顺序来执行这些方法。优点:性能较高;缺点:不易维护,不易复用

四、写在最后

Pyhton内容较多,另外进程、线程、协程面试遇到的频率也很高!!!由于写到现在我实在是太困了 ,打算把进程、线程、协程单独写一篇文章,同时也会写出相应的代码实现。小伙伴们下篇文章见啦~~~~~








#面经##秋招##测试##校招##面试八股文#
全部评论
python的tuple和set都是有序的,并非文中所说的无序,而且python的基础数据类型并不存在number和long的概念。其他多处拼写错误就不说了,内容太不严谨,误导人!!
4 回复 分享
发布于 2022-08-24 17:48 上海
支持支持
点赞 回复 分享
发布于 2022-08-24 23:05 广东
第一名!
点赞 回复 分享
发布于 2022-08-22 08:51 江西
终于等到python篇
点赞 回复 分享
发布于 2022-08-22 09:36 安徽
点赞 回复 分享
发布于 2022-08-22 09:36 安徽
三连走起
点赞 回复 分享
发布于 2022-08-22 10:32 广东
小tt怎么啥都会
点赞 回复 分享
发布于 2022-08-22 13:33 北京
m
点赞 回复 分享
发布于 2022-08-22 23:44 上海
爱了
点赞 回复 分享
发布于 2022-08-23 09:31 陕西
m
点赞 回复 分享
发布于 2022-08-23 23:23 陕西
三连走起
点赞 回复 分享
发布于 2022-08-24 00:26 上海
三连走起~
点赞 回复 分享
发布于 2022-08-26 21:13 北京
数据库走起
点赞 回复 分享
发布于 2022-10-11 09:52 四川
点赞 回复 分享
发布于 2022-10-24 08:23 河北
亲妈
点赞 回复 分享
发布于 2023-08-31 22:58 陕西
感谢感谢!
点赞 回复 分享
发布于 2023-10-06 20:22 辽宁
m
点赞 回复 分享
发布于 09-03 14:18 天津

相关推荐

一、自我介绍   1.对自我介绍的提问,我在自我介绍中提到了我玩过的游戏以及充值过的金额,于是在我自我介绍之后,面试官提问我你有考虑过为什么在这些游戏里投入那么高呢?二、游戏开发相关  2.你以前有做过游戏Demo吗?  3.可以演示一下吗?(我软件都装卸了,有代码也Run不了)  4.介绍一下游戏的玩法吧?那你们的项目是在已有项目上的改进吗?  5.还有其他跟游戏相关的开发经验吗?  6.有了解过你玩的游戏都是用什么工具和语言来开发的吗?  7.你提到自己学习Java比较多,你知道Java可以用来为游戏做什么吗?  (我前面简单说了一下,自己学习Java和使用Java的经验)  8.我提问公司里用什么语言做服务器,回答Go,然后问我有了解过Go吗?  (我以为公司里用Java做服务器,但好像不是,所以提问面试官)  9.说一下对客户端和服务器的理解  (这个问题以前没有考虑过,不知道答的怎么样)  10.除了学校里教授过的课程,有自学过其他的课程吗?  (我提到大学里有的课程学校里讲的不好,需要自学补充,还有Hadoop大数据相关的课程和Python)  11.为什么想做游戏?  (面试官开始点评我游戏开发方面了解的不够,应该去怎样开始学习游戏开发,比如从Unity官方文档、网上教程学习游戏)  面试主要内容15分钟结束,下面是我和面试官反问和交流的环节三、反问  12.公司对新员工的培养是怎么样的一个形式  飞鱼科技有鱼苗计划,通过1到2个月全脱产的形式,在指导老师的带领下,制作一款mini游戏Demo,来熟悉和了解公司文化、工作内容,也是一个进一步双向选择的过程。   13.TA是从本身是学美术出身的多呢,还是学习程序出身比较多呢?(这是听面试官跟我介绍游戏职业方向的过程中诞生的一个问题)  (这个环节面试官跟多的跟我交流职位的发展和我应该怎样去学习游戏开发)保卫萝卜研发商【飞鱼科技】2025届秋招启动中! 10+上线产品累计用户超10亿【我们的产品】保卫萝卜、三国之刃、英雄就是我、你胖你先吃等等!!!【福利待遇】1、六险一金、落户落档、人才引进、米哈游、带薪年假2、保障性住房名额、无息购房借款、夜间交通补贴、政府租房补助3、异地入职:2周酒店过渡、报销路费4、公司环境优越!【招聘岗位】游戏策划丨美术设计【就业地点】厦门/北京/深圳【内推码】DSgGZd82【内推入口】https://app.mokahr.com/m/campus_apply/feiyu/1633?recommendCode=DSgGZd82&hash=%23%2Fjobs#/jobs(内推简历优先筛选)使用内推码简历优先筛选,有任何问题包括进度查询可以私信我,内推后在评论区留言【姓名缩写+岗位】,方便捞人和确认投递状态
飞鱼科技
|
校招
|
14个岗位
点赞 评论 收藏
分享
135 1008 评论
分享
牛客网
牛客企业服务