首页 > 编程语言 > 详细

python基础

时间:2020-02-26 12:06:41      阅读:56      评论:0      收藏:0      [点我收藏+]

Python面试重点(基础篇)

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

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

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

    python

  2. 列举Python2和Python3的区别?

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

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

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

  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,)]

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

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

    a = 1
    b = 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 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)
  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, 1
    for i in range(n+1):
      a, b = b, a+b
      return a
    fori 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 inner
    foo = 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 os
    print(os.listdir(‘.‘))
  39. 求结果

    import math
    print (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 threading
    import time
    class 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.instance
    def 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 = 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/sunqichao01/p/12366058.html

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