python基础

孤者浪人 提交于 2020-02-26 12:46:33

Python面试重点(基础篇)

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

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

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

    python

  2. 列举Python2和Python3的区别?

    python2除法时返回的是整数,python3除法时返回的是小数

    python2整形,长整型,python3全是整形

    python2中的input获取的就是数据本身,python3中的input获取字符串

  3. 看代码写结果

    v1 = 1 or 2v2 = 3 and 7 or 9 and 0

    v1=1 v2=7

  4. 比较以下值有什么不同?

    v1 = [1,2,3]v2 = [(1),(2),(3)]v3 = [(1,),(2,),(3,)]

    列表 列表里为集合 列表里元素为元祖

  5. 用一行代码实现数值交换。

    a = 1b = 2

    b=a

  6. Python中单引号、双引号、三引号的区别?

    单引号表示的字符串里可包含双引号,当然不能包含单引号

    双引号表示的字符串里可以包含单引号,字符串都只能有一行

    三个引号能包含多行字符串,同时常常出现在函数的声明的下一行,来注释函数的功能

  7. is和==的区别?

    is判断是否为同一内存地址,==赋值

  8. python里如何实现tuple和list的转化?

    print(list(tuple))

  9. 如何实现字符串 name='老男孩'的反转?

    name[::-1]

  10. 两个set如何获取交集、并集、差集?

    & | -

  11. 那些情况下, y != x - (x-y)会成立?

    x,y是两个非空集合

  12. Python中如何拷贝一个对象?

    赋值 copy

  13. 简述 赋值、浅拷贝、深拷贝的区别?

    赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个

    浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用

    深拷贝:创建一个新的对象,并且递归的复制它所包含的对象,修改其中一个,另外一个不会改变

  14. pass的作用?

    pass表示什么也不做,保证程序结构的完整性,否则会报错

  15. 阅读代码写结果。

    import copya = [1,2,4,5,['b','c']]b = ac = copy.copy(a)d = copy.deepcopy(a)​a.append(5)a[4].append('d')​print(b)print(c)print(a)
  16. 用Python实现9 * 9 乘法表。

    for i in range(1,10):for m in range(1,10):print('%s×%s=%s'%(i,m,i*m))
  17. 用Python显示一个斐波那契数列。

    def fib_loop(n):a, b = 0, 1for i in range(n+1):  a, b = b, a+b  return afori in range(20):print(fib_loop(i), end='')
  18. 如何删除列表中重复的值?

    a = [1,2,3,4,1,2,6,7,1,9]b = []for i in a:if i not in b:b.append(i)print(b)
  19. 一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?

  20. a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?

    字典

  21. lambda关键字的作用?

    匿名函数 lambda x :x # x是普通函数的形参(位置,关键字...)可以不接受参数(冒号前面的x可以不写,后面的x必须写):后边x是普通函数的返回值(只能返回一个数据类型)

  22. *arg**kwarg作用?

    *args将元组中的元素进行打散

    **kwargs将字典的键获取

  23. 如何在函数中设置一个全局变量 ?

    顶头写

  24. filter、map、reduce的作用?

    map用可迭代的每个值执行一组语句,返回修改值

    filter从可迭代对象中提取值的子集,筛选值

    reduce将多个值缩减为一个

  25. 什么是匿名函数?匿名函数有什么作用?

    一行函数

    常规函数def,必须通过其定义的函数名进行调用,在调用之前必须先定义,

    而lambda只是一个表达式,返回的函数对象就不需要名字

  26. Python递归的最大层数?

    官方1000

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

    迭代器指的是迭代取值的工具,迭代是指一个重复的过程,每一次重复都是基于

    上一次结果而来迭代提供了一种通用的不依赖索引的迭代取值方式

    只要有__ iter() __方法的就是可迭代对象

  28. 什么是生成器?

    生成器的本质就是一个迭代器

  29. 什么是装饰器及应用场景?

    装饰器是python的重要组成部分,它们是修改其他函数功能的函数

    在一个web应用终端中, 帮助检查某人是否被授权使用

  30. 什么是反射及应用场景?

    通过字符串操作对象的属性和方法

    反编译

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

    def foo():  print("a")def warpper(func):  def inner():  print("b")      func()            print("c")  return innerfoo = warpper(foo)foo()
  32. 写一个带参数的装饰器。

    def warpper(f):  def inner():      print("111")      f()      print("222")  return inner@warpper # func = warpper(func)def func():  print("被装饰的函数1")@warpper # index = warpper(index)def index():  print("被装饰的函数2")​func()index()
  33. 求结果

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

    [6,6,6,6]

  34. def(a, b=[])这种写法有什么陷阱?

    如果使用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)

    [1] [10,20,2] [1,3]

  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)

    [1] [10,20,2] [3]

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

    如 10.3.9.12 转换规则为:       10            00001010        3            00000011        9            00001001       12            00001100       再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?

     

  38. 请查找一个目录下的所有文件(可能存在文件嵌套)。

    import osprint(os.listdir('.'))
  39. 求结果

    import mathprint (math.floor(5.5))

    5.0

  40. 是否使用过functools中的函数?其作用是什么?

    functools用于高阶函数:指那些作用于函数或者返回其他函数的函数。通常

    情况下,只要是可以被当做函数调用的对象就是这个模块的目标

    functools提供了partial的方法,通过这种方法生成一个固定参数的新函数

  41. re的match和search区别?

    match().group() 从头开始查找,没有返回None

    search().group() 从任意位置开始查找

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

    贪婪匹配,非贪婪匹配

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

    rabdom

  44. super的作用?

    在子类中调用父类的初始化方法

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

    _xxx 不能用于'from module import *' 以单下划线开头的表示的是protected

    类型的变量,即保护类型只能允许其本身与子类进行访问

    双下划线的表示的是私有类型的变量,只能是允许这个类本身进行访问了,连

    子类也不可以

    双下划线定义的是特列方法

  46. @staticmethod和@classmethod的区别?

    装饰类方法 装饰静态方法

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

    import threadingimport timeclass Singleton:  instance = None  lock = threading.RLock()​  def __init__(self, name):      self.name = name  def __new__(cls, *args, **kwargs):​      if cls.instance:          return cls.instance      with cls.lock:          if cls.instance:              return cls.instance          time.sleep(0.1)          cls.instance = object.__new__(cls)      return cls.instancedef task():  obj = Singleton('x')  print(obj)​for i in range(10):  t = threading.Thread(target=task)  t.start()​data = Singleton('asdfasdf')print(data)
  48. 栈和队列的区别?

    队列先进先出,栈先进后出

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

    class Parent(object):   x = 1​class Child1(Parent):   pass​class Child2(Parent):   pass​print Parent.x, Child1.x, Child2.x​Child1.x = 2print Parent.x, Child1.x, Child2.x​Parent.x = 3print 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实现链表的逆转。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!