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)的方法,無參數,無返回值,sorted() 會改變可變對象.
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、說說any()和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('liuleqian 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部分

發佈了89 篇原創文章 · 獲贊 253 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章