首页 > 其他 > 详细

面试题

时间:2020-02-26 12:49:42      阅读:62      评论:0      收藏:0      [点我收藏+]

Python面试重点(基础篇)

注意:只有必答题部分计算分值,补充题不计算分值。

第一部分 必答题(每题2分)

  1. 简述列举了解的编程语言及语言间的区别?
    Python 解释型语言
    java 混合型语言
    c# 编译型语言
    c++ 编译型语言
  2. 列举Python2和Python3的区别?
    python解释器默认编码(python2与python3的区别一)

python2 解释器默认编码:ascii
python3 解释器默认编码:utf-8
输入(python2与python3的区别二)

python2:name=raw_input(‘请输入姓名‘)
python3:name=input(‘请输入你的姓名‘)
输出(python2与python3的区别三)

python2:print "你好"
python3:print("你好")
数字表示(python2与python3的区别四)

python2

64位机器,范围-2^63~2^63-1

超出上述范围,python自动转化为long(长整型)

注:long(长整型)数字末尾有一个L

python3

所有整型都是int,没有long(长整型)
整型除法(python2与python3的区别五)

python2:只能保留整数位
python3:可以保留所有内容
range / xrange(python2与python3的区别六)

python2:
xrange:不会在内存中立即创建,而是在循环时,边循环边创建
range:在内存立即把所有的值创建
python3:
只有range,相当于python2中的xrange
range:不会在内存中立即创建,而是在循环时,边循环边创建
包的定义(python2与python3的区别七)

python2:文件夹中必须有_ _ init _ .py文件
python3:不需要有
_ init _ _.py文件
字典的keys / values / items方法(python2与python3的区别八)

python2:返回列表,通过索引可以取值
python3:返回迭代器,只能通过循环取值,不能通过索引取值
map / filter(python2与python3的区别九)

python2:返回列表,直接创建值,可以通过索引取值
python3:返回迭代器,不直接创建值,通过循环,边循环边创建
str(字符串类型)的区别(python2与python3的区别十)(最大区别,优先写这个)

python2:
str类型,相当于python3中的字节类型,utf-8/gbk等其他编码
unicode类型,相当于python3中的字符串类型,unicode编码
python2中没有字节类型
python3:
str类型,字符串类型,unicode编码
python3中没有unicode类型
继承object(python2与python3的区别十一):

class Foo:
pass
class Foo(object):
pass

在python3中这俩的写法是一样,因为所有的类默认都会继承object类,全部都是新式类。

如果在python2中这样定义,则称其为:经典类

class Foo:
pass

如果在python2中这样定义,则称其为:新式类

class Foo(object):
pass

新式类

继承object

# 支持super
# 多继承 广度优先C3算法
# mro方法

经典类

# py2中不继承object
# 没有super语法
# 多继承 深度优先
# 没有mro方法
  1. 看代码写结果

    v1 = 1 or 2     1
    v2 = 3 and 7 or 9 and 0   7
  2. 比较以下值有什么不同?

    v1 = [1,2,3]   列表
    v2 = [(1),(2),(3)]  和v1一样
    v3 = [(1,),(2,),(3,)] 列表嵌套元祖
  3. 用一行代码实现数值交换。

    a = 1
    b = 2
    a,b = b,a
  4. Python中单引号、双引号、三引号的区别?
    双引号可以互相包含,避免转义
    三引号支持长字符串的换行,会保留其格式
  5. is和==的区别?
    is判断内存地址是否相同
    == 判断值是否相等
  6. python里如何实现tuple和list的转化?
    tuple(list) # 列表转元组
    list(tuple) # 元组转列表
  7. 如何实现字符串 name=‘老男孩‘的反转?
    name=‘老男孩‘
    name = name[::-1]
  8. 两个set如何获取交集、并集、差集?

    交集

    set(a)&set(b)

    并集

    set(a)|set(b)

    差集

    set(a)-set(b)
  9. 那些情况下, y != x - (x-y)会成立?

  10. Python中如何拷贝一个对象?
    copy模块
    copy.copy() # 浅拷贝
    copy.deepcopy() # 深拷贝
  11. 简述 赋值、浅拷贝、深拷贝的区别?
    赋值:将多个变量指向同一个内存地址
    浅拷贝:只拷贝第一层元素地址,只有修改第一层元素时不受影响
    深拷贝:不可变数据类型内存地址共用,可变数据类型重新开辟空间
  12. pass的作用?
    pass 占位符 与 ...的用法一样
  13. 阅读代码写结果。

    import copy
    a = [1,2,4,5,['b','c']]
    b = a
    c = copy.copy(a)
    d = copy.deepcopy(a)
    
    a.append(5)
    a[4].append('d')
    
    print(b)
    print(c)
    print(a)

    print(b) [1,2,4,5,[‘b‘,‘c‘,‘d‘],5]
    print(c) [1,2,4,5,[‘b‘,‘c‘,‘d‘]]
    print(a) [1,2,4,5,[‘b‘,‘c‘,‘d‘],5]

  14. 用Python实现9 * 9 乘法表。
    for i in range(1, 10):
    for x in range(1, i + 1):
    print(f"{i} * {x} = {i * x}",end=" ")
    print("")
  15. 用Python显示一个斐波那契数列。

  16. 如何删除列表中重复的值?
    list(set(list))
  17. 一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?
    with open(r‘etl_log.txt‘,‘r‘,enconding=‘utf-8‘) as f:
    for i in f:
    info = f.readlines()
    print(info)
  18. a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?
    a是字典,
    a = {‘a‘: 1, ‘b‘: 2, ‘c‘: 3, ‘d‘: 4, ‘e‘: 5}
  19. lambda关键字的作用?
    匿名函数
  20. *arg**kwarg作用?
    *args 接收多余的位置参数
    **kwargs 接收多余的关键字参数
  21. 如何在函数中设置一个全局变量 ?
    global
    在最外面赋值定义
  22. filter、map、reduce的作用?
    filter 过滤
    map 映射
    reduce 累计算
  23. 什么是匿名函数?匿名函数有什么作用?
    lambda函数就是匿名函数
    作用....
  24. Python递归的最大层数?
    理论1000
  25. 什么是迭代器?什么是可迭代对象?
    迭代器:具有__iter__()和__next__()方法
    可迭代对象:具有__iter__()方法就是可迭代对象
  26. 什么是生成器?
    具有yield的关键字就是生成器,生成器的本质是迭代器
    装饰器的本质是闭包,在不修改源代码及其调用方式的前提下,外增加功能
  27. 什么是装饰器及应用场景?

  28. 什么是反射及应用场景?
    通过字符串操作对象的方法和属性
    判断用户的输入
  29. 写一个普通的装饰器。
    def warpper(func):
    def inner():
    print("111")
    func()
    print("222")
    return inner

@warpper
def func():
print("被装饰的函数")

  1. 写一个带参数的装饰器。
    def func_z(func):
    def inner(*args,**kwargs):
    print("我是装饰器")
    ret = func(*args,**kwargs)
    return ret
    return inner

@func_z
def func_b(*args,**kwargs):
print("我是被装饰的函数")

  1. 求结果

    def num():
      return [lambda x:i*x for i in range(4)]
    print([m(2) for m in num()])
    [6,6,6,6]
  2. def(a, b=[])这种写法有什么陷阱?
    默认参数可变,容易在后面引用的时候,读取到之前使用的值,因为列表的内存地址没有变。
  3. 看代码写结果

    def func(a,b=[]):
        b.append(a)
        return b
    
    v1 = func(1)
    v2 = func(2,[10,20])
    v3 = func(3)
    print(v1,v2,v3)
    [1,3]
    [10,20,2]
    [1,3]
  4. 看代码写结果

    def func(a,b=[]):
        b.append(a)
        return b
    
    v1 = func(1)
    print(v1)
    v2 = func(2,[10,20])
    print(v2)
    v3 = func(3)
    print(v3)
  5. 请编写一个函数实现将IP地址转换成一个整数。

    如 10.3.9.12 转换规则为:
            10            00001010
             3            00000011
             9            00001001
            12            00001100
    
    再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
  6. 请查找一个目录下的所有文件(可能存在文件嵌套)。

  7. 求结果

    import math
    print (math.floor(5.5))
  8. 是否使用过functools中的函数?其作用是什么?

  9. re的match和search区别?

  10. 用Python匹配HTML tag的时候,<.>和<.?>有什么区别?

  11. 如何生成一个随机数?

  12. super的作用?

  13. 双下划线和单下划线的区别?

  14. @staticmethod和@classmethod的区别?

  15. 实现一个单例模式(加锁)。

  16. 栈和队列的区别?

  17. 以下代码输出是什么? 请给出答案并解释。

    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
  18. 参考下面代码片段

    class Context:
        pass
    
    with Content() as ctx:
        ctx.do_something()
    请在Context类下添加代码完成该类的实现

第二部分 可选题

  1. 如何获取列表中第二大的值?
  2. 简述Python内存管理机制。
  3. 简述Python的垃圾回收机制。
  4. 请用两个队列来实现一个栈。
  5. 请用Python实现一个链表。
  6. 请用Python实现链表的逆转。

面试题

原文:https://www.cnblogs.com/sjf981012-/p/12366138.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!