python面试基础知识(二)

24、合并两个元组到字典

a = ("liuchuanfeng", "cangjingkong")
b = (20,18)
# print(dict(zip(a,b)))

25、元组是不可变类型,列表是可变类型


# 元组
# a = (1,2,3,[4,5,6,7],8)
# a[3] = 2
# print(a)  报错
# 列表
a = (1,2,3,[4,5,6,7],8)
a[3][2] = 2
# print(a)

26、sort 和 sorted 的区别

# sort() 是可变对象列表(list)的方法,无参数,无返回值,sort() 会改变可变对象.
dict1 = {'songjianguo':1, 'liuleqian':2}
list1 = [2, 1, 3]
# print(list1.sort())
# print(list1)

dict1 = {'songjianguo':1, 'liuleqian':2}
list1 = [2, 1, 3]
# print(sorted(dict1))
# print(sorted(list1))

27、Python 中的 GIL

# GIL 是 Python 的全局解释器锁,同一进程中假如有多个线程运行,
# 一个线程在运行 Python 程序的时候会占用 Python 解释器(加了一把锁即 GIL),
# 使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。
# 如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。
# 所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。

28、将列表内的字典按value大小排序

list1 = [{'name':'liuleqian', 'age':20},
            {'name':'songjianguo', 'age':22},
            {'name':'qinyeyang', 'age':24}]
sorted(list1, key =  lambda x : x['age'])
# print(list1)

29、说说ang()和all()有什么区别

# all如果存在0,Null,False  返回False,否则返回True
# any如果都是0,None,False,Null 时,返回 True。
# print(all([1, 2, 3, 0]))
# print(all([1, 2, 3]))
# print(any([1, 2, 3, 0]))
# print(any([0, None, False]))

30、反转一个整数

def reverse( x):
        """
        :type x: int
        :rtype: int
        """
        num = 0
        if x == 0:
            return 0
        if x < 0:
            x = -x
            while x != 0:
                num = num*10 + x%10
                x = x//10
            num = -num
        else:
            while x != 0:
                num = num*10 + x%10
                x = x//10
            
        if num>pow(2,31)-1 or num < pow(-2,31):
            return 0
        return num
# print(reverse(-261))

31、内部函数——>闭包——>装饰器

# 一、内部函数
def outer():
    def inner():
        x = 10

# 二、闭包
# 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,
# 那么内部函数就被认为是闭包(closure)。
n = 'hello'
def outer(arg):
    def inner():
        arg
    return inner
f = outer(n)

# 三、装饰器
# 装饰器是一种特殊的闭包,就是在闭包的基础上传递了一个函数,
# 然后覆盖原来函数的执行入口,以后调用这个函数的时候,就可以额外实现一些功能了
def outer(arg):
    def inner():
        print("*" * 20)
        arg()
        print("*" * 20)

    return inner

@outer   # echo = outer(echo)   # inner
def echo():
    print('刘乐骞NB!')

# echo()

32、实现斐波那契数列

def fib(n):
    if n == 0:
        return False
    if not isinstance(n, int) or (abs(n) != n):
        return False
    if n <= 1:
        return n
    return fib(n-1)+ fib(n-2)

# print([fib(i) for i in range(1, 11)])

33、正则切分字符串

import re
str1 = 'li‵‵‵uleqian songjianguo: qinyeyang'
result = re.split(r":| ", str1)
# print(result)

34、yield

# yield 是用来生成迭代器的语法,在函数中,如果包含了 yield,那么这个函数就是一个迭代器。
# 当代码执行至 yield 时,就会中断代码执行,直到程序调用 next() 函数时,才会在上次 yield 的地方继续执行
def foryield():
    print("start test yield")
    while True:
        result = yield 5
        print("result:", result)
g = foryield()
# print(next(g))
# print("*"*20)
# print(next(g))

35、简单介绍一下继承

# 一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,
# 同时获取所有的类成员(属性和方法)。
# 支持的类型:
# 1.单继承- 一个子类类继承自单个基类
# 2.多重继承- 一个子类继承自多个基类
# 3.多级继承- 一个子类继承自一个基类,而基类继承自另一个基类
# 4.分层继承- 多个子类继承自同一个基类
# 5.混合继承- 两种或两种以上继承类型的组合

36、//,%和**

# //:向下取整
# %:取模
# **:幂运算

37、python异常处理

# 基本语法
# try:
#     被检测的代码块
# except 异常类型:
#     try中一旦检测到异常,就执行这个位置的逻辑
# eg:
# def func(arg):
#     try:
#         arg +=1
#     except TypeError as e:
#         print(e)

# func('光哥')

# 主动触发异常
# try:
#     raise TypeError('类型错误')
# except Exception as e:
#     print(e)

38、统计字符串中单词出现次数

from collections import Counter
str1 = "ahdbgdhsjidhihisfjbaj"
# print(Counter(str1))

python面试基础知识(一)
python面试基础知识(三) Django部分

你可能感兴趣的:(Python,python面试题)