Python面试题整理(1-40)

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地址转换成一个整数。

如 10.3.9.12 转换规则为:



  10           00001010

  3            00000011

  9            00001001

  12           00001100

再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?

def ipTodec(ip):
    """
    :param ip: char IP地址:192.168.1.1
    :return:
    """
    dec_ips = ip.split('.')
    bin_ips = " "

    for decnum in dec_ips:
        bin_ele = bin(int(decnum))[2::]
        bin_ips += bin_ele

    print(bin_ips)
    print(int(bin_ips, 2))

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 False and 1
答:
v1 = 1 
v2 = 3 
v3 = 0
v4 = 1
v5 = 1 
v6 = False

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]}

31、求结果:

def  num():
    return [lambda x:i*x for i in range(4)]
print([ m(2) for m in num()])

答:
    [6, 6, 6, 6]

32、列举常见的内置函数?

    1、abs()    此函数返回数字的绝对值。 

    2、all()     此函数用于判断给定的可迭代参数 iterable 中的所有元素是否都不为 0、都不为False 或者iterable都 为空,如果是返回 True,否则返回 False。

    3、bin()     返回一个整数 int 或者长整数 long int 的二进制表示。

    4、bool()    函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。

    5、dict()     函数用于创建一个字典。

33、filter、map、reduce的作用?

    通俗的说.这三者都是用在一堆数据(比如一个列表)上.

    map是用同样方法把所有数据都改成别的..字面意思是映射..比如把列表的每个数都换成其平方.

    reduce是用某种方法依次把所有数据丢进去最后得到一个结果..字面意思是化简..比如计算一个列表所有数的和的过程,就是维持一个部分和然后依次把每个数加进去.

    filter是筛选出其中满足某个条件的那些数据..字面意思是过滤..比如挑出列表中所有奇数

34、一行代码实现9*9乘法表

    print (‘\n‘.join([‘ ‘.join([‘%s*%s=%-2s‘ % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))

35、如何安装第三方模块?以及用过哪些第三方模块?

36、至少列举8个常用模块都有那些

    pip、pygame、pyMysql、sys、math、time、os

37、re的match和search区别?

    re.match()从开头开始匹配string。

    re.search()从anywhere 来匹配string。

38、什么是正则的贪婪匹配?

    贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配

    非贪婪匹配:就是匹配到结果就好,就少的匹配字符

    默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式

39、求结果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) )

a: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
b: <generator object <genexpr> at 0x011A3E40>
自己说:对于a就是个列表表达式,b则是个元组生成器

40、求结果:
a. 1 or 2
b. 1 and 2
c. 1 < (2==2)
d. 1 < 2 == 2

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

推荐阅读更多精彩内容

  • 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入...
    小小不懂11阅读 3,406评论 2 30
  • 第一部分 Python基础篇(80题) 1、为什么学习Python? Python相对于其他编程语言有很多优点: ...
    清清子衿木子水心阅读 1,697评论 0 1
  • 一、 Python介绍 1.1、Python现状 python的创始人为吉多·范罗苏姆(Guido van Ros...
    Horne阅读 880评论 0 51
  • 1、走心的文案,首先要唤起客户的好奇心。 首先要明白一点:无论你的产品有多好、创意做的多么天花乱坠,只要无法引起客...
  • 因为宿舍热的实在待不下去就去了图书馆,话说好久没去了,没想到那还是很热。随便抄了会作业,没待多久就待不下去了。 回...
    乀丶阅读 280评论 0 0