首页 > 编程语言 > 详细

Python面试重点(基础篇)

时间:2020-02-26 12:55:43      阅读:67      评论:0      收藏:0      [点我收藏+]

Python面试重点(基础篇)

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

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

  1. 简述列举了解的编程语言及语言间的区别?

    c语言:编译型语言,一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言
    c++:编译型语言,是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计
    go语言:编译型语言,支持高并发
    c#:混合性语言,是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言
    java:混合型语言,应用最广泛地语言
    python:解释型语言,简单易学类库多
    php:解释型语言,主要用于快速开发网站
  2. 列举Python2和Python3的区别?

    python2 print可以不带括号,默认不支持中文,带上小数点/表示真除,print(range(0,4))的结果是列表,打开文件file( ..... )
  3. 看代码写结果

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

    v1 = [1,2,3]
    v2 = [(1),(2),(3)]
    v3 = [(1,),(2,),(3,)]
    结果:v1和v1结果相同,v3是列表套元组
  5. 用一行代码实现数值交换。

    a = 1
    b = 2
    结果:a,b = b,a
  6. Python中单引号、双引号、三引号的区别?

    单引号、双引号、三引号都可以用于表达字符串,多内容用于交叉使用,三引号还可以用于注释
  7. is和==的区别?

    is 是查看两端的数据的内存地址是否相同
    == 是查看两端的内容是否一致
  8. python里如何实现tuple和list的转化?

    lst = [1,2,3]
    tu = (4,5,6)
    print(list(tu))  # [4, 5, 6]
    print(tuple(lst))  # (1, 2, 3)
  9. 如何实现字符串 name=‘老男孩‘的反转?

    name = '老男孩'
    print(name[::-1])
    
  10. 两个set如何获取交集、并集、差集?

    s1 = {1,2,3,4,5}
    s2 = {1,2,6,7,8}
    print(s1&s2)
    print(s1|s2)
    print(s1-s2)
    
  11. 那些情况下, y != x - (x-y)会成立?

    x = {1,2,3,4,5}
    y = {1,2,6,7,8}
    print(y)
    print(x-(x-y))
    
  12. Python中如何拷贝一个对象?

    # copy deepcopy
    import copy
    x = {1,2,3,4,5}
    y = {1,2,6,7,8}
    print(copy.copy(x))
    print(copy.deepcopy(y))
    
  13. 简述 赋值、浅拷贝、深拷贝的区别?

    赋值:多个变量名指向同一个内存地址,一个变量对其操作,其他变量查看时都变动
    浅拷贝:只拷贝第一层空间,即开辟新的内存地址,不可变数据和可变数据共用
    深拷贝:开辟一块新的内存空间,不可变数据共用,可比那数据重新开辟空间
    
  14. pass的作用?

    pass 站位,为了保持程序结构的完整性
    
  15. 阅读代码写结果。

    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)  # [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]
    
  16. 用Python实现9 * 9 乘法表。

    for i in range(1,10):
        for t in range(1,i+1):
            print(f"{t}*{i}={i*t}",end=" ")
        print()
    
  17. 用Python显示一个斐波那契数列。

    lst = [1,1]
    num = int(input("请输入一个数字:"))
    def func(f):
        if lst[-1] + lst[-2] <= num:
            lst.append(lst[-1] + lst[-2])
            return func(lst)
        else:
            return lst
    print(func(lst))
    
  18. 如何删除列表中重复的值?

    lst = [1,1,2,2,3,4]
    print(list(set(lst)))
    
  19. 一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?

    with open('1.txt',mode="r",encoding="utf-8") as f:
        print(f.read())
    
  20. a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?

    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    
  21. lambda关键字的作用?

    用于匿名函数
    
  22. *arg**kwarg作用?

    *args 动态位置参数,可以接受0个或多个位置参数,返回元组,不传值时()
    *kwargs 动态关键字参数,可以接受0个或多个关键字参数,返回字典,不传值时{}
    
  23. 如何在函数中设置一个全局变量 ?

    global:在函数内部修改全局空间的变量对应的值;声明一个全局变量
    
  24. filter、map、reduce的作用?

    filter用于筛选过滤
    map是映射函数
    reduce用于函数相加
    
  25. 什么是匿名函数?匿名函数有什么作用?

    lambda,表示简单的函数
    
  26. Python递归的最大层数?

    1000
  27. 什么是迭代器?什么是可迭代对象?

    内部含有__iter__方法并且含有__next__方法的对象就是迭代器
    凡是内部含有__iter__方法的对象,都是可迭代对象
  28. 什么是生成器?

    生成器的本质就是迭代器,迭代器是python自带的工具,生成器是程序员自己写的
  29. 什么是装饰器及应用场景?

    装饰器:在不改变原被装饰的函数的源代码以及调用方式下,为其添加额外的功能。
    博客园的搭建
  30. 什么是反射及应用场景?

  31. 写一个普通的装饰器。

    def wrapper(f):
        def inner(*args,**kwargs):
            # 此处执行被装饰函数之前的操作
            ret=f(*args,**kwargs)
            # 此处执行被装饰函数之后的操作
            return ret
        return inner
  32. 写一个带参数的装饰器。

    def timer(func):  
        def inner(*args,**kwargs):
            func(*args,**kwargs)
        return inner
    @timer
    def home(name,age):
        pass
    home('岁月',18)
  33. 求结果

    def num():
      return [lambda x:i*x for i in range(4)]
    print([m(2) for m in num()])
  34. def(a, b=[])这种写法有什么陷阱?

  35. 看代码写结果

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

    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)
  37. 请编写一个函数实现将IP地址转换成一个整数。

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

  39. 求结果

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

  41. re的match和search区别?

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

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

  44. super的作用?

    跳过本类
    单继承时,按照深度优先原则,查找下一类
    多继承时,严格按照对象从属于类的mro顺序查找下一类
    
  45. 双下划线和单下划线的区别?

  46. @staticmethod和@classmethod的区别?

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

    class A:
        a = None
        def __new__(cls, *args, **kwargs):
            if not cls.a: 
                cls.a = object.__new__(cls)
            return cls.a
    obj1 = A()
    print(obj1)
    obj2 = A()
    print(obj2)
    
  48. 栈和队列的区别?

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

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

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

第二部分 可选题

  1. 如何获取列表中第二大的值?

  2. 简述Python内存管理机制。

  3. 简述Python的垃圾回收机制。

  4. 请用两个队列来实现一个栈。

  5. 请用Python实现一个链表。

  6. 请用Python实现链表的逆转。

Python面试重点(基础篇)

原文:https://www.cnblogs.com/lvweihe/p/12366168.html

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