必答题

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

  1. Python 解释型语言,代码简洁,易懂
  2. C语言 编译型语言,底层语言
  3. c++ 编译型语言,在C语言基础上加了面向对象
  4. Java 混合型语言,可拓展性高
  5. Golang 编译型语言,强类型,代码规范,高并发
  6.  
  7. 语言特点: 灵活简洁,语言优美 可读性强,
  8.  
  9. 语言类型:
  10. 解释型:逐行转化,运行效率低,性能差,开发效率高。兼容性好,跨平台
  11. 编译型 :一次性编译成二进制文件,执行效率高,兼容性差,
  12. 动态语言:不用声明变量的数据类型(脚本类语言)
  13. 静态语言:需要声明变量的数据类型
  14.  
  15. 第三方库:python定位是任其发展,开源库很多,应用领域广

2,列举Python2和Python3的区别?

  1. python2只更新支持到2020
  2. print2不加括号,3加括号
  3. input2中用户输入解析为int类型,raw_input为字符串类型,3直接是字符串类型
  4. range2是列表,xrange是可迭代对象;3是可迭代对象
  5. 继承关系:2是新式类+经典类;3是新式类
  6. 数字表示:2intlong(长整形,超出2**63-1,数字末尾有一个L);3所有整型都是int

3,看代码写结果

  1. v1 = 1 or 2
  2.  
  3. v2 = 3 and 3 or 9 and 0
  4. # v1 = 1
  5. # v2 = 7
  1. # 逻辑运算符优先级 () > not > and > or
  2. # 逻辑短路
  3. and 全真则真,一假则假
  4. or 一真则真,全假则假
  5.  
  6. True or 表达式 => True (单个运算符和多个运算符的情况,都可以直接判定结果)
  7. False and 表达式 => False(单个运算符的时候可以)
  8.  
  9. # 布尔值为假的十种情况: bool() => False
  10. 0,0.0,False,0j,'',[],(),set(),{},None

详解

4,以下的值有什么不同?

  1. v1 = [1,2,3]
  2. v2 = [(1),(2),(3)]
  3. v3 = [(1,),(2,),(3,)]
  4.  
  5. """
  6. # 逗号才是区分是否是元组的标识符
  7. v1 = [1,2,3] # 列表[int , int , int]
  8. v2 = [(89),(2.12),("abc")] # [int , float , str]
  9. v3 = [(1,),(2,),(3,)] # [tuple,tuple,tuple,tuple]
  10. res = () # 表达空元组
  11. """

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

  1. a = 1
  2. b = 2
  3.  
  4. a,b = b,a
  5. # 通用
  6. tmp = a
  7. a = b
  8. b = tmp

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

  1. 单双引号没有区别,三引号可以支持跨行
  2. 在互相嵌套时需注意:里外不能使用相同的引号

7,is和==的区别?

  1. is 是判断内存地址是否一致
  2. == 是判断两个对象的值是否相等

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

  1. list(数据) tuple(数据)

9,如何实现字符串 st='爱吃大西瓜'的反转?

  1. st = st[::-1]

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

  1. 交集 &
  2. intersection
  3. 差集 -
  4. difference
  5. 并集 |
  6. union
  7. 对称差集 ^
  8. symmetric_difference

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

  1. 非空集合且不为子父关系的两个集合

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

  1. # copy模块
  2. [:]
  3. import copy
  4. copy.copy() # 浅拷贝
  5. copy.deepcopy() # 深拷贝

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

  1. 赋值:将变量和值在内存中形成映射指向关系
  2. 浅拷贝:只拷贝第一层元素地址copy.copy
  3. 深拷贝:为所有层级的元素都单独开辟新空间 copy.deepcopy() (地址:原不可变数据只是暂时的指向,可变的数据独立开辟新空间)
  4.  
  5. 可变数据: list set dict
  6. 不可变数据: int float bool complex str tuple

14,pass的作用?

  1. pass 占位符 ...的用法一样

15,阅读代码写结果:

  1. import copy
  2. a = [1,2,4,5,['b','c']]
  3. b = a
  4. c = copy.copy(a)
  5. d = copy.deepcopy(a)
  6. a.append(5)
  7. a[4].append('d')
  8. print(b)
  9. # [1,2,4,5,['b','c','d'],5]
  10. print(c)
  11. # [1,2,4,5,['b','c','d']]
  12. print(a)
  13. # [1,2,4,5,['b','c','d'],5]

16,用Python实现9 * 9 乘法表。

  1. # while
  2. i = 1
  3. while i<=9:
  4. # 这个位置写代码
  5. j = 1
  6. while j<= i:
  7. # "谁"*"谁"="谁"
  8. print("%d*%d=%2d" % (i,j,i*j),end=" ")
  9. j+=1
  10.  
  11. # 打印换行
  12. print()
  13. i+=1
  14.  
  15. # for
  16. for i in range(1, 10):
  17. for x in range(1, i + 1):
  18. print(f"{i} * {x} = {i * x}",end=" ")
  19. print("")

17,用Python显示一个斐波那契数列。

  1. # 1 1 2 3 5 8 13 21 ...
  2. # 方法一
  3. lst = [1,1]
  4. for i in range(10):
  5. lst.append(lst[-1] + lst[-2])
  6. print(lst)
  7.  
  8. # 方法二
  9. a,b = 0,1
  10. for i in range(10):
  11. print(b)
  12. a,b = b,a+b
  13.  
  14. # 方法三
  15. def fib(n):
  16. if n <= 2:
  17. return 1
  18. # 上一个值 + 上上个值
  19. return fib(n-1) + fib(n-2)
  20.  
  21. print(fib(6))

18,如何删除列表中重复的值?

  1. list(set(list))

19,一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?

  1. with open(r'etl_log.txt','r',enconding='utf-8') as f:
  2. for i in f:
  3. info = f.readlines()
  4. print(info)
  5.  
  6. fp = open("文件名","模式","编码集")
  7. """
  8. fp 是迭代器
  9. from collections import Iterator,Iterable
  10.  
  11. # 在遍历fp时,文件按照一行一行进行读取;
  12. for i in fp:
  13. code ...
  14.  
  15. """

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

  1. a为字典
  1. 强转字典的条件:等长的二级容器,配合强转字典的两个函数 zip , enumerate
  2. # zip 拉链
  3. a = dict( zip( ("a","b") , [1,2] ) )
  4. print(a)
  5. # enumerate 枚举
  6. a = dict( enumerate( ["a","b"] ))
  7. a = dict( enumerate( ["a","b"] ,start = 10 ))
  8. print(a)

详解

21,lambda关键字的作用?

  1. lambda 匿名函数 : 用一句话表达只有返回值的无名函数
  2. lambda 参数 : 返回值

22,*arg和**kwarg作用?

  1. *args 接收多余的位置参数
  2. **kwargs 接收多余的关键字参数

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

  1. global 有该全局变量,修改当前变量,没有改全局变量,定义一个全局变量;
  2. """
  3. def func():
  4. global a
  5. a = 90
  6. func()
  7. print(a)
  8. """

24,filter、map、reduce的作用?

  1. 三目(元)运算符 True if 条件表达式 else False
  2.  
  3. filter => 过滤数据
  4. iterable : 可迭代对象(range ,容器类型数据 , 迭代器)
  5. filter(func,iterable) => 返回迭代器
  6.  
  7. lst = [1,2,3,4,5]
  8. it = filter(lambda x : True if x % 2 == 0 else False , lst )
  9. print(list(it))

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

  1. lambda 匿名函数 : 用一句话表达只有返回值的无名函数
  2. lambda 参数 : 返回值

26,Python递归的最大层数?

  1. 官方:1000
  2. 实测:994 ~ 1000
  3.  
  4. import sys
  5. sys.setrecursionlimit(999999) # 修改递归的最大深度,mac能达到30000

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

  1. 迭代器:具有__iter__()和__next__()方法
  2. 可迭代对象:具有__iter__()方法
  3.  
  4. dir(数据) 可以查看该数据的内部系统成员
  5. 可迭代对象 => 迭代器 把不能直接被next获取 => 可直接获取到该数据的一个过程

28,什么是生成器?

  1. 生成器的本质就是迭代器,可以自定义迭代的逻辑
  2. 创建方式两种:
  3. (1)生成器表达式 (推导式) (i for i in range(3))
  4. (2)生成器函数 (含有yield关键字)

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

  1. 装饰器的本质就是闭包
  2. 在不修改原有代码的前提下,额外增加新功能就是装饰器
  3.  
  4. 应用:登录认证,property类,框架(django,flask,@app.route("/",methdos=["GET","POST"]))

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

  1. # 通过字符串去操作类对象 或者 模块中的属性方法
  2.  
  3. hasattr getattr setattr delattr
  4.  
  5. 应用: 可以配合用户的操作或者输入,调用其中的成员,api接口中

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

  1. def wrapper(func):
  2. def inner(*args,**kwargs):
  3. res = func(*args,**kwargs)
  4. print("and you")
  5. return res
  6.  
  7. return inner
  8.  
  9. @wrapper
  10. def func():
  11. print("i am fine 3q")
  12.  
  13. func()

32,写一个带参数的装饰器。

  1. def outer(n):
  2. def wrapper(func):
  3. def inner1(*args,**kwargs):
  4. res = func(*args,**kwargs)
  5. print("我是大王")
  6. return res
  7.  
  8. def inner2(*args,**kwargs):
  9. res = func(*args,**kwargs)
  10. print("大王叫我来巡山")
  11. return res
  12.  
  13. if n == "alex":
  14. return inner1
  15. else:
  16. return inner2
  17.  
  18. return wrapper
  19.  
  20. @outer("alex123") # outer("alex123") => wrapper =>@wrapper
  21. def func():
  22. print("i am fine 3q")
  23.  
  24. func()

33,求结果:

  1. def num():
  2. return [lambda x:i*x for i in range(4)]
  3. print([m(2) for m in num()])
  1. [6,6,6,6]
  1. """
  2. def出现的位置是函数的定义处
  3. 函数() 出现的位置是函数的调用处
  4. (1)调用的时候,才会把函数中的代码,从上到下执行一遍,否则不执行
  5. (2)里面的func是一个闭包函数,延长了当前变量i的生命周期,最后一次i的值3,所以再去调用时候拿的3
  6. """

详解

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

  1. b身上的默认值是列表,如果使用原来默认的参数,调用func函数
  2. 会把几次调用的值都存放在同一个默认列表里
  1. """
  2. 默认参数:
  3. 如果调用时,用户给实参了,那么使用用户的
  4. 如果调用时,用户没给实参,那么使用默认的(早已存在内存中的这个列表)
  5.  
  6. 默认值会提前在内存中驻留,在使用时,才能调取,在定义函数的时候就提前开辟了空间
  7. """

详解

35,看代码写结果

  1. def func(a,b=[]):
  2. b.append(a)
  3. return b
  4. v1 = func(1)
  5. v2 = func(2,[10,20])
  6. v3 = func(3)
  7. print(v1,v2,v3)
  1. [1,3],[10,20,2],[1,3]

36,看代码写结果

  1. def func(a,b=[]):
  2. b.append(a)
  3. return b
  4. v1 = func(1)
  5. print(v1)
  6. v2 = func(2,[10,20])
  7. print(v2)
  8. v3 = func(3)
  9. print(v3)
  1. [1]
  2. [10,20,2]
  3. [1,3]

37,请编写一个函数实现将ip地址换成一个整数。

  1. 10.3.9.12 转换规则为:
  2. 10 00001010
  3. 3 00000011
  4. 9 00001001
  5. 12 00001100
  6. 再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 =
  1. # ljust 原字符串居左,填充符号
  2. # rjust 原字符串居右,填充符号
  3. # 方法一
  4. ip = "10.3.9.12"
  5. strvar = ""
  6. for i in ip.split("."):
  7. bin_str = str(bin(int(i)))[2:]
  8. # 总长度是8 原字符串居右
  9. strvar += bin_str.rjust(8,"")
  10. print(strvar)
  11.  
  12. # 把二进制字符串转换成十进制,默认转换时,是十进制
  13. print(int(strvar,2))
  14.  
  15. # 方法二
  16. ip = "10.3.9.12"
  17. strvar = ""
  18. for i in ip.split("."):
  19. # format 将整型转化成二进制,不够8位的拿0补位
  20. strvar += format(int(i) , "08b")
  21. print(int(strvar,2))

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

  1. # 方法一 (递归写法)
  2. import os
  3. def getallsize(pathvar):
  4. size = 0
  5. lst = os.listdir(pathvar)
  6. print(lst)
  7. for i in lst:
  8. pathvar2 = os.path.join(pathvar,i)
  9. print(pathvar2)
  10.  
  11. # 判断是否是文件
  12. if os.path.isfile(pathvar2):
  13. size += os.path.getsize(pathvar2)
  14. # 判断是否是文件夹
  15. elif os.path.isdir(pathvar2):
  16. size += getallsize(pathvar2)
  17.  
  18. print(size)
  19.  
  20. return size
  21.  
  22. # "E:\串讲基础\day2\test\1.txt"
  23. pathvar = r"E:\串讲基础\day2\test"
  24. res = getallsize(pathvar)
  25. # print(res)
  26.  
  27. # 方法二
  28. import os
  29.  
  30. # os.walk() => 生成器
  31. pathvar = r"D:\Reptile\PycPc"
  32. gen = os.walk(pathvar)
  33.  
  34. for root, dirs, files in gen:
  35. for name in files:
  36. pathvar = os.path.join(root, name)
  37. print(pathvar)

39,求结果:

  1. import math
  2. print (math.floor(5.5))
  1. 5
  1. """
  2. floor 地板除
  3.  
  4. ceil 天花板除
  5.  
  6. round
  7. round n.5 奇进偶不进
  8. print(round(4.5)) 4
  9. print(round(5.5)) 6
  10. print(round(4.52)) 5
  11. """

拓展

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

  1. wraps # 在装饰器中使用,如果想要保留原来函数的属性,加上wraps
  2.  
  3. reduce # 累计算
  1. # 在装饰器中使用,如果想要保留原来函数的属性,加上wraps
  2. from functools import wraps
  3.  
  4. def wrapper(func):
  5. @wraps(func)
  6. def inner(*args, **kwargs):
  7. res = func(*args, **kwargs)
  8. print("and you")
  9. return res
  10.  
  11. return inner
  12.  
  13. @wrapper
  14. def func():
  15. print("i am fine 3q")
  16.  
  17. func()
  18. print(func)
  19.  
  20. # def abc():
  21. # pass
  22. # print(abc)

详解

41,re的match和search区别?

  1. match: 从开头进行查找,查找到就停止,找不到返回None
  2. search: 查找全文,找到就停止,找不到就返回None

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

  1. .* 贪婪匹配 匹配多个任意字符
  2. .*? 非贪婪 只匹配一次

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

  1. import random
  2.  
  3. random.random() # 生成随机小数,0<= x < 1

44,super的作用?

  1. # 用来解决多继承之间复杂的调用关系使用super
  1. 在多继承中, 如果出现了多个同名方法
  2. super在调用的时候, 会按照mro列表的继承顺序依次调用
  3. 类.mro() = > lst

详解

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

  1. 双线划线:__ Python中强制定义为私有
  2. 单下划线:_ 是程序员约定的私有方法

46,@staticmethod和@classmethod的区别?

  1. 一个静态方法, 一个类方法
  2. 一个静态方法: (无论是对象还是类, 都可以调用, 不会默认传递任何参数)
  3. 一个类方法: (无论是对象还是类, 都可以调用, 会默认传递类这个参数)

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

  1. from threading import Lock
  2.  
  3. class MyClass(object):
  4. __obj = None
  5. lock = Lock()
  6.  
  7. def __new__(cls, *args, **kwargs):
  8. with cls.lock:
  9. if not cls.__obj:
  10. cls.__obj = object.__new__(cls)
  11. return cls.__obj
  12.  
  13. obj1 = MyClass()
  14. obj2 = MyClass()
  15. print(obj1, obj2)

48,栈和队列的区别?

  1. 栈:先进后出,或者后进先出
  1. 队列:先进先出

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

  1. class Parent(object):
  2. x = 1
  3. class Child1(Parent):
  4. pass
  5. class Child2(Parent):
  6. pass
  7. print Parent.x, Child1.x, Child2.x
  8.  
  9. Child1.x = 2
  10. print Parent.x, Child1.x, Child2.x
  11.  
  12. Parent.x = 3
  13. print Parent.x, Child1.x, Child2.x
  1. """
  2. 1,1,1
  3. 两个child都继承了parent,并没有自己的属性或方法
  4.  
  5. 1,2,1
  6. child1添加了属性,就近原则使用自己x的值,child2没有,继承父类
  7.  
  8. 3,2,3
  9. parent和chile1有自己的x方法,就近使用自己的,chiild2没有自己的x,继承父类中的x
  10. """

50,参考下面代码片段:

  1. class Context:
  2. pass
  3. with Content() as ctx:
  4. ctx.do_something()
  5. 请在Context类下添加代码完成该类的实现
  1. class Context():
  2. def __enter__(self):
  3. return self
  4.  
  5. def __exit__(self, exc_type, exc_val, exc_tb):
  6. # 相当于在最后,执行了文件的关闭操作,fp.close()
  7. print("abc123")
  8.  
  9. def do_something(self):
  10. print(1111)
  11.  
  12. with Context() as ctx:
  13. ctx.do_something()
  14. print(ctx)
  15.  
  16. # 自动实现了关闭操作
  17. # with open("文件") as fp:
  18. # res = fp.read()

可选题

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

  1. # 去重
  2. lst = set([98,1,100,3,-100,50,100,100])
  3. res = sorted(lst)
  4. res_new = res[-2]
  5. print(res_new)

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

  1. 计数器,垃圾回收,内存池
  2. # 一.计数器
  3. 特点:引用技术如果是0,把这个值从内存中释放掉
  4.  
  5. 缺点:在维护引用计数时,又可能数据产生循环引用,造成数据不能删除,造成内存泄漏
  6.  
  7. # 二.垃圾回收:引用计数为主,标记清除和分带回收为辅
  8. 标记清除 : 检测标记该对象,避免出现循环引用不能删除的现象
  9. 分带回收 :
  10. 把内存中的数据分成三个区域: 新生代0,老年代1,永久代2
  11. 新生代0数据超过700 , 或者老年代1,永久代2数据超过10,自动触发内存中的垃圾回收机制
  12. 新生代0触发将清除所有三代的区域
  13. 老年代1触发会清理1,2
  14. 永久代2触发只会清理自己
  15.  
  16. # 三.内存池
  17. # 在同一个文件当中 (python3.6)
  18. # -->Number 部分
  19. 1.对于整型而言,-5~正无穷范围内的相同值 id一致
  20. 2.对于浮点数而言,非负数范围内的相同值 id一致
  21. 3.布尔值而言,值相同情况下,id一致
  22. 4.复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外)
  23. # -->容器类型部分
  24. 5.字符串 空元组 相同的情况下,地址相同
  25. 6.列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]
  26. # 在不同的文件当中
  27. 小数据池 ; 比如整型默认开辟 -5~256 这么多数据提前在内存中驻留

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

  1. 垃圾回收:引用计数为主,标记清除和分带回收为辅
  2. 标记清除 : 检测标记该对象,避免出现循环引用不能删除的现象
  3. 分带回收 :
  4. 把内存中的数据分成三个区域: 新生代0,老年代1,永久代2
  5. 新生代0数据超过700 , 或者老年代1,永久代2数据超过10,自动触发内存中的垃圾回收机制
  6. 新生代0触发将清除所有三代的区域
  7. 老年代1触发会清理1,2
  8. 永久代2触发只会清理自己

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

  1. """
  2. 栈 : 先进后出,后进先出
  3. 队列 : 先进先出,后进后出
  4. """
  5. from queue import Queue
  6.  
  7. class Stack():
  8. def __init__(self):
  9. self.master_queue = Queue()
  10. self.minor_queue = Queue()
  11.  
  12. def push(self, val):
  13. # 入栈
  14. self.master_queue.put(val)
  15.  
  16. def pop(self):
  17. # 出栈
  18. # 如果队列中没有任何值,直接返回None
  19. if self.master_queue.qsize() == 0:
  20. return None
  21.  
  22. while True:
  23. # 当队列总长度为1的时候,循环终止,把最后一个元素拿出来,为了满足栈后进先出的特点
  24. if self.master_queue.qsize() == 1:
  25. value = self.master_queue.get()
  26. break
  27.  
  28. # 剩下还没有拿出来的元素,暂时放在2号队列中存储
  29. self.minor_queue.put(self.master_queue.get())
  30. """
  31. minor_queue(1)
  32. master_queue(2 3 4)
  33.  
  34. minor_queue(2)
  35. master_queue(3 4)
  36.  
  37. minor_queue(3)
  38. master_queue(4)
  39. """
  40. # 交换队列,重新循环,继续去最后一个值,如法炮制
  41. self.master_queue, self.minor_queue = self.minor_queue, self.master_queue
  42. return value
  43.  
  44. obj = Stack()
  45. obj.push("a")
  46. obj.push("b")
  47. obj.push("c")
  48.  
  49. print(obj.pop()) # c
  50. print(obj.pop()) # b
  51. print(obj.pop()) # a
  52. print(obj.pop()) # a

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

  1. class Node():
  2. def __init__(self, value, next):
  3. self.value = value
  4. self.next = next
  5.  
  6. head = Node("头", None)
  7. last = head
  8.  
  9. for i in range(5): # v0 v1 v2 v3 v4
  10. node = Node("v%s" % i, None)
  11. last.next = node
  12. last = node
  13.  
  14. # 查看链表的关系
  15. print(head.value)
  16. print(head.next.value)
  17. print(head.next.next.value)
  18. print(head.next.next.next.value)
  19. print(head.next.next.next.next.value)
  20. print(head.next.next.next.next.next.value)
  21.  
  22. # print(head.next)
  23. print("<========>")

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

  1. def reverse_link_list(head):
  2. # 要是空的,或者None,直接返回head
  3. if not head or not head.next:
  4. return head
  5.  
  6. # 获取上一个节点对象
  7. prev_node = None
  8. # 获取下一个节点对象
  9. next_node = head.next
  10. # 获取当前节点对象
  11. current_node = head
  12.  
  13. while True:
  14. # 修改next,所指向的对象
  15. current_node.next = prev_node
  16. # 如果下一个阶段对象是None
  17. if not next_node: # not None
  18. break
  19.  
  20. # 重新获取上一个对象,即把当前丢向单独存一份,以准备第二次循环时插进next属性中
  21. prev_node = current_node
  22. # 重新获取当前对象 , 即把下一个对象单独存储起来(下个)
  23. current_node = next_node
  24. # 重新获取下一个对象,即把下一个对象单独存储起来,所指向的下个新对象赋值给next_node(下下个)
  25. next_node = current_node.next
  26. return current_node
  27.  
  28. head = reverse_link_list(head)
  29.  
  30. print(head.value)
  31. print(head.next.value)
  32. print(head.next.next.value)
  33. print(head.next.next.next.value)
  34. print(head.next.next.next.next.value)
  35. print(head.next.next.next.next.next.value)

Python面试(基础)的更多相关文章

  1. Python面试基础篇

    1. 为什什么学习Python? Life is short, You need Python 2. 通过什什么途径学习的Python? pass 3. Python和Java.PHP.C.C#.C+ ...

  2. python面试总结1(基础章节)

    python语言基础 语言特点 python是静态还是动态类型?是强类型还是弱类型 动态强类型语言 动态还是静态指的是编译期还是运作期确定类型 强类型指的是不会发生隐式类型转换 python作为后端语 ...

  3. 5月25号开学! 第13期《python3自动化测试selenium+接口》课程,python零基础也能学

    2019年 第13期<python3自动化测试selenium+接口>课程,5月25号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学 本期上课时间:5月25号-7月28号,每周 ...

  4. Python面试 【315+道题】

    Python面试 [315+道题] 第一部分 Python基础篇(80题) 为什么学习Python? 因为看到python的发展趋势,觉得需要与时俱进,第一点,python开发速度极快,能快速完成一个 ...

  5. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  6. Python面试2未完待续

    Python面试重点(基础篇) 注意:只有必答题部分计算分值,补充题不计算分值. 第一部分 必答题(每题2分) 简述列举了解的编程语言及语言间的区别? c语言是编译型语言,运行速度快,但翻译时间长py ...

  7. Python面试常问的10个问题

    很多人想找Python工作,面试往往在基础知识点采坑了 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试 ...

  8. 我的python面试简历

    分享前一段我的python面试简历,自我介绍这些根据你自己的来写就行,这里着重分享下我的项目经验.公司职责情况(时间倒序),不一定对每个人适用,但是有适合你的点可以借鉴 我的真实经验:(14年毕业,化 ...

  9. 【16】进大厂必须掌握的面试题-100个python面试

    我们整理了Python面试的主要问题清单,分为7个部分: 基本面试问题 OOPS面试问题 基本的Python程序 Python库面试问题 数据分析面试题 选择题(MCQ) 基本的Python面试问题 ...

随机推荐

  1. python接口自动化中,注册接口随机生成手机号码

    如大家所知在注册接口中,手机号参数需要的是未注册的手机号,而在测试用例中,你写入的手机号不一定是未注册的.所以这时需要对注册接口中传入的手机号做处理.下面我就分享一个课程里面学到的一个处理手机号的py ...

  2. 【Java并发基础】Java线程的生命周期

    前言 线程是操作系统中的一个概念,支持多线程的语言都是对OS中的线程进行了封装.要学好线程,就要搞清除它的生命周期,也就是生命周期各个节点的状态转换机制.不同的开发语言对操作系统中的线程进行了不同的封 ...

  3. Dynamics 365 CRM 配置field service mobile

    配置field service mobile其实微软是有官方文档的, 但是没有坑的微软产品不是好产品. 一些细节设置文中还是没有考虑到的. 所以这里带大家配置一下field service mobil ...

  4. MAVEN报错Cannot access alimaven / idea data注解不好使

    BUG 记录 报错页面的代码和截图: Cannot access alimaven (maven.aliyun.com/nexus/conte…..... 解决方法: 报错页面的代码和截图: JAR ...

  5. AVLTree(C++实现)没有统一旋转操作

    最近疫情比较严重,只能在家里休息,利用休息之余,我用C++把AVL树实现了一遍 大学老师只讲一些比较简单的数据结构和算法,这些高级数据结构还是需要自己主动学习并且动手来实现的, 从前只听说过AVLTr ...

  6. jenkins 与 gitlab 的持续集成

    前言介绍 gitlab与jenkins的安装部署请参考之前的文章:这里介绍一下jenkins与gitlab结合的好处. gitlab可以自己实现CICD功能,jenkins也可以结合其他工具来实现CI ...

  7. ElasticSearch入门篇Ⅰ --- ES核心知识概括

    C01.什么是Elasticsearch 1.什么是搜索 垂直搜索(站内搜索) 互联网的搜索:电商网站,招聘网站,各种app IT系统的搜索:OA软件,办公自动化软件,会议管理,员工管理,后台管理系 ...

  8. kettle安装部署基本操作及实操文档

    一.kettle是什么? Kettle,简称ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),是一款国外开源的ETL工具,纯Java编写,可以在Window. ...

  9. C语言系列之实验楼笔记(一)

    创建C程序的几个过程: 1.编辑:创建和修改C程序的源代码 2.编译:编译器可以将源代码转成机器语言.linux 这些文件扩展名.o 3.链接:通过一次完成编译和链接 4.执行;运行程序 打开xfce ...

  10. 实验7:交换机IOS升级

    交换机IOS升级首先需要有IOS文件,如果没有备份原文件的话,可以找个同一版本的IOS来替代. 第一种方法:X-Modem 以前我曾经尝试过一种方法,就是当Flash被删除后,启动无法进入系统,可以用 ...