python面试题整理(30题)

--------------------------------------技术是日积月累堆积而成的,没有一蹴而就.



第一部分 Python基础篇(80题)

1、为什么学习Python?

1、语言本身简洁,优美,功能超级强大,
     2、跨平台,从桌面应用,web开发,自动化测试运维,爬虫,人工智能,大数据处理都能做
     3、非常火爆的社区
     4、很多有名的大公司堵在用

2、通过什么途径学习的Python?

通过参加培训、网上搜索资料进行学习

3、Python和Java、PHP、C、C#、C++等其他语言的对比?

1、c,它是现代编辑语言的老一辈了,在现代应用中使用不多,所有大部分语言,写法都和c语言差不多,常常被用作学习其他语言的基础

2、PHP语言主要适用于网页编辑,而python适合与各个领域

3、c++是面向对象的c语言,由于偏底层,所以性能非常高,主要用在一个要求高性能的领域

4、学习起来python要比java简单快捷的多,java从c++的系统语言中继承了许多语法和复杂型,而python的语法非常简洁,大大提高编写效率;

5、python是解释性语言,不需要额外的编译过程,而c#必须编译后才能执行

6、python程序是开源的,但c#却不是,python可以跨平台

7、python比c++等这类语言,更容易学习,语法规则简单,语意化,易读易懂,容易维护

4、简述解释型和编译型编程语言?

解释型语言

解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言((Visual Basic)通用的基于对象的程序设计语言))翻译成机器语言,每个语句都是执行的时候才翻译。这样解释型语言每执行一次就要翻译一次,效率比较低。

编译器语言

用编译型语言写的程序执行之前,需要一个专门的编译过程,通过编译系统,把源高级程序编译成为机器语言文件,翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但也不能一概而论。
    部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。

5、Python解释器种类以及特点?

CPython:这个解释器是用C语言开发的,所以叫CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器;

Jython:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行;

PyPy:PyPy是另一个Python解释器,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度;

IPython:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强。

6、位和字节的关系?

1字节=8位、一个字符=2字节

7、b、B、KB、MB、GB 的关系?

1B=8b、1KB=1024B、1MB=1024KB、1G=1024MB

8、请至少列举5个 PEP8 规范(越多越好)

1、缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。

2、每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。

3、不要在一句import中多个库,比如import os, sys不推荐

4、逗号、冒号、分号前不要加空格。

5、总体原则,避免不必要的空格

6、类的方法第一个参数必须是self,而静态方法第一个参数必须是cls

9、通过代码实现如下转换:

二进制转换成十进制:v = “0b1111011”     答: print(int("0b1111011",2))

十进制转换成二进制:v = 18                    答:print("转换为二进制为:", bin(18))

八进制转换成十进制:v = “011”           答:print(int("011",8))

十进制转换成八进制:v = 30                    答:print("转换为八进制为:", oct(30))

十六进制转换成十进制:v = “0x12”      答:print(int("0x12",16))

十进制转换成十六进制:v = 87                答:print("转换为十六进制为:", hex(87))

10、请编写一个函数实现将IP地址转换成一个整数。

11、python递归的最大层数?

默认最大次数1000,这是python专门设置的一种机制用来防止无限递归造成Python溢出崩溃, 最大递归次数是可以重新调整的

import sys

sys.setrecursionlimit(1500)

12、求结果:

v1 = 1 or 3
v2 = 1 and 3
v3 = 0 and 2 and 1
v4 = 0 and 2 or 1
v5 = 0 and 2 or 1 or 4
v6 = 0 or Flase and 1
答:
v1 = 1
v2 = 3
v3 = 0
v4 = 1
v5 = 1
v6会报错
13、ascii、unicode、utf-8、gbk 区别?

ASCII码使用一个字节编码,所以它的范围基本是只有英文字母、数字和一些特殊符号 ,只有256个字符。

Unicode能够表示全世界所有的字节

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码

GBK是只用来编码汉字的,GBK全称《汉字内码扩展规范》,使用双字节编码。

14、字节码和机器码的区别?

字节码:字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

机器码:机器码就是计算机可以直接执行,并且执行速度最快的代码。

15、三元运算规则以及应用场景?

三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值

三元运算符的功能与‘if....else‘流程语句一致,它在一行中书写,代码非常精炼,执行效率更高

格式:[on_true] if [expression] else [on_false]

res = 值1 if 条件 else 值2

16、列举 Python2和Python3的区别?

1、print

在python2中,print被视为一个语句而不是一个函数,python3中,print()被视为一个函数

2、整数的除法

在python2中,键入的任何不带小数的数字,将被视为整数的编程类型。比如5/2=2,解决方法:5.0/2.0=2.5

在python3中,整数除法变得更直观 5/2=2.5

3、Unicode

Python 2 默认使用 ASCII 字母表;Python 3 默认使用 Unicode

4、后续发展

Python 2.7 将在 2020 年失去后续的支持,

Python 3 将继续开发更多的功能和修复更多的错误。

17、用一行代码实现数值交换:

a = 1
            b = 2

a, b = b, a

18、Python3和Python2中 int 和 long的区别?

int(符号整数):通常被称为是整数或整数,没有小数点的正或负整数;

long(长整数):无限大小的整数,这样写整数和一个大写或小写的L。

19、xrange和range的区别?

range: 函数说明,range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个列表。

xrange:函数说明,xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。

1、range和xrange都是在循环中使用,输出结果一样。
                    2、range返回的是一个list对象,而xrange返回的是一个生成器对象(xrange object)。
                  3、xrange则不会直接生成一个list,而是每次调用返回其中的一个值,内存空间使用极少,因而性能非常好。

注意:Python 3.x已经去掉xrange,全部用range代替。

20、文件操作时:xreadlines和readlines的区别?

二者使用时相同,但返回类型不同,xreadlines返回的是一个生成器,readlines返回的是list

21、列举布尔值为False的常见值?

0 , [ ] , " , ( ) , { }

22、字符串、列表、元组、字典每个常用的5个方法?

# 字符串
words = "today is a wonderfulday"
print(words.strip(‘today‘)) # 如果strip方法指定一个值的话,那么会去掉这两个值
print(words.count(‘a‘)) # 统计字符串出现的次数
print(words.index(‘is‘)) # 找下标
print(words.index(‘z‘)) # 找下标如果元素不找不到的话,会报错
print(words.find(‘z‘)) # 找下标,如果元素找不到的话,返回-1
print(words.replace(‘day‘,‘DAY‘))# 字符串替换
#
# # 列表
sample_list = [‘a‘, 1, (‘a‘, ‘b‘)] # 创建列表
sample_list = [‘a‘, ‘b‘, 0, 1, 3] # Python列表操作
value_start = sample_list[0] # 得到列表中的某一个值
end_value = sample_list[-1] # 得到列表中的某一个值
del sample_list[0] # 删除列表的第一个值
sample_list[0:0] = [‘sample value‘] # 在列表中插入一个值

# 元组
#元组也是一个list,他和list的区别是元组的元素无法修改
tuple1 = (2, 3, 4, 5, 6, 4, 7)
print(type(tuple1))
print(tuple1[:7])
print(tuple1[: 5: -1])
for i in range(6):
print(tuple1[i])
for i in tuple1:
print(i)

# 字典
D.get(key, 0) # 同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
D.has_key(key) # 有该键返回TRUE,否则FALSE
D.keys() # 返回字典键的列表
D.clear() # 清空字典,同del dict
D.copy() # 拷贝字典
23、lambda表达式格式以及应用场景?

lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

add = lambda x, y : x+y

print(add(1,2))  # 结果为3

应用在函数式编程中 应用在闭包中

24、pass的作用?

1、空语句 do nothing
            2、保证格式完整,保证语义完整
            3、占位语句

25、*arg和**kwarg作用

*args:可以理解为只有一列的表格,长度不固定。

**kwargs:可以理解为字典,长度也不固定。

1、函数调用里的*arg和**kwarg:
              (1) *arg:元组或列表“出现”
                        **kwarg:字典“出没”
              (2)分割参数
             2、函数定义时传的*arg /**kwarg:
              (1)接收参数

26、is和==的区别

is是对比地址(id),==是对比值

27、简述Python的深浅拷贝以及应用场景?

浅拷贝:copy.copy                       深拷贝:copy.deepcopy

浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层

主要应用在字符串,数字的深浅拷贝

28、Python垃圾回收机制?

Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通
过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题。通过“分代回收”(generation collection)以空间换取时间来进一步提高垃圾回收的效率。

29、Python的可变类型和不可变类型?

Python的每个对象都分为可变和不可变
       可变:列表、字典   不可变:数字、字符串、元组

30、求结果:

v = dict.fromkeys([‘k1‘,‘k2‘],[])
v[‘k1‘].append(666)
print(v)
v[‘k1‘] = 777
print(v)
答:
{‘k1‘: [666], ‘k2‘: [666]}
{‘k1‘: 777, ‘k2‘: [666]}

---------------------
作者:qq_39097722
来源:CSDN
原文:https://blog.csdn.net/qq_39097722/article/details/81044987
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/dealdwong2018/p/10827959.html

时间: 2024-08-27 09:34:13

python面试题整理(30题)的相关文章

Python面试题整理-更新中

几个链接: 编程零基础应当如何开始学习 Python ? - 路人甲的回答 网易云课堂上有哪些值得推荐的 Python 教程? - 路人甲的回答 怎么用最短时间高效而踏实地学习 Python? - 路人甲的回答 如何学习Python爬虫[入门篇] - 学习编程 - 知乎专栏 Python常用库整理 - 学习编程 - 知乎专栏 学好Python的11个优秀资源 - 学习编程 - 知乎专栏 在开头依然推荐一个Python面试题整理比较好的网站:GitHub : 关于Python的面试题.同样推荐几道

python面试题300多题

第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Python? Python和Java.PHP.C.C#.C++等其他语言的对比? 简述解释型和编译型编程语言? Python解释器种类以及特点? 位和字节的关系? b.B.KB.MB.GB 的关系? 请至少列举5个 PEP8 规范(越多越好). 通过代码实现如下转换: 二进制转换成十进制:v = “0b1111011”?十进制转换成二进制:v = 18? 八进制转换成十进制:v = “011”? 十进制转换成八

Python 面试题整理1

参考网页:15 Essential Python Interview Questions 1. 什么是Python? 可以在回答中与其他技术作对比(鼓励这么做):如果应聘的是一个Python开发岗位,就应知道这是门什么样的语言以及它为什么这么酷,以及它哪里不好. 参考答案: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译.其他解释型语言还包括PHP和Ruby. Python是动态类型语言,指的是你在声明变量时,不需要说明变量的类型.你可以

笔试题整理 第二题

班上同学聚餐吃火锅,一锅煮了m(1<=m<=50)个鱼丸和n(1<=n<=50)个肉丸,现欲将m个鱼丸和n个肉丸分到k(1<=k<=50)个碗中,允许有空碗,鱼丸和肉丸不允许混在同一个碗里,问共有多少种装法? 假设碗足够大,能够装50个鱼丸和50个肉丸,并且碗没有任何区别.因此当m等于n等于1,k等于3时,有一种装法,因为110,101,011被看做同一种方法. #include <iostream> #include <vector> #inc

python面试题整理(二)

1.进程,线程,协程定义,有什么区别 进程是操作系统分配资源的最小单位,一个进程对应一块CPU 线程是进程中的某一个控制单元,是CPU调度的最小单元,线程之间相互独立,进程结束线程也会结束,一个进程至少要有一个线程 协程是更加轻量级的存在,不是由CPU进程管理而是由程序员管理,在执行一个函数过程中可以中断执行另一个函数,执行一个函数过程就叫协程,python3以前使用yield表示协程,yield关键字一般用于做生成器,实现在函数中暂停的效果,python3.3以后出现yield from后面跟

Python面试题整理

一.删除相邻字符串问题 题目: 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们. 在 S 上反复执行重复项删除操作,直到无法继续删除. 在完成所有重复项删除操作后返回最终的字符串.答案保证唯一. 提示:(这好像没啥用,代码只是简单校验了下) 1 <= S.length <= 20000 S 仅由小写英文字母组成. 示例: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca"

锦程网考试由试题从模拟题中批量找出答案,Python

jincin的考试又来了,像往常一样会先有模拟题发下来,而考试题目几乎都在里面原题. 本来是,在考试时,把题目一题一题地在模拟题里搜,但觉得太累了. 于是写了一个Python的脚本批量查找,用到正则,由于不知道行尾是\r还是\n还是\r\n,干脆也用正则,而非split('\r')这么硬板了. 添了颜色,效果不错. Python: 效果: - 锦程网考试由试题从模拟题中批量找出答案,Python,布布扣,bubuko.com

【整理】线段树30题

1,poj 1151 Atlantis: 求矩形面积并. 2,poj 1177 Picture: 求矩形轮廓的周长. 3,poj 1389 Area of Simple Polygons :同第一题. 4,poj 1823 Hotel :线段树线段的插入删除求线段树中最长的线段长度 5,poj 2104 K-th Number:线段树维护归并排序树+三次二分查找   (区间第k大 ,主席树也行,前者可以练习试一下). 6,poj 2155 Matrix :求二维平面的矩形信息,二维线段树,或者二

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

问题一:以下的代码的输出将是什么? 说出你的答案并解释. 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 答案 以上代码的