來(lái)源:北大青鳥總部 2019年11月19日 10:55
最近,小編在整理python面試基礎(chǔ)知識(shí),看了很多博客、文章和咨詢了一些大廠公司大牛。了解到,在python面試的時(shí)候,不僅要求你有項(xiàng)目經(jīng)驗(yàn),還要考試代碼呢!今天,小編和大家分享一下python面試基礎(chǔ)知識(shí),希望幫忙大家找到理想的工作!
24、合并兩個(gè)元組到字典
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) 報(bào)錯(cuò)
# 列表
a = (1,2,3,[4,5,6,7],8)
a[3][2] = 2
# print(a)
26、sort 和 sorted 的區(qū)別
# sort() 是可變對(duì)象列表(list)的方法,無(wú)參數(shù),無(wú)返回值,sort() 會(huì)改變可變對(duì)象.
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 的全局解釋器鎖,同一進(jìn)程中假如有多個(gè)線程運(yùn)行,
# 一個(gè)線程在運(yùn)行 Python 程序的時(shí)候會(huì)占用 Python 解釋器(加了一把鎖即 GIL),
# 使該進(jìn)程內(nèi)的其他線程無(wú)法運(yùn)行,等該線程運(yùn)行完后其他線程才能運(yùn)行。
# 如果線程運(yùn)行過(guò)程中遇到耗時(shí)操作,則解釋器鎖解開,使其他線程運(yùn)行。
# 所以在多線程中,線程的運(yùn)行仍是有先后順序的,并不是同時(shí)進(jìn)行。
28、將列表內(nèi)的字典按value大小排序
list1 = [{'name':'liuleqian', 'age':20},
{'name':'songjianguo', 'age':22},
{'name':'qinyeyang', 'age':24}]
sorted(list1, key = lambda x : x['age'])
# print(list1)
29、說(shuō)說(shuō)ang()和all()有什么區(qū)別
# all如果存在0,Null,False 返回False,否則返回True
# any如果都是0,None,F(xiàn)alse,Null 時(shí),返回 True。
# print(all([1, 2, 3, 0]))
# print(all([1, 2, 3]))
# print(any([1, 2, 3, 0]))
# print(any([0, None, False]))
30、反轉(zhuǎn)一個(gè)整數(shù)
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、內(nèi)部函數(shù)——>閉包——>裝飾器
# 一、內(nèi)部函數(shù)
def outer():
def inner():
x = 10
# 二、閉包
# 如果在一個(gè)內(nèi)部函數(shù)里,對(duì)在外部作用域(但不是在全局作用域)的變量進(jìn)行引用,
# 那么內(nèi)部函數(shù)就被認(rèn)為是閉包(closure)。
n = 'hello'
def outer(arg):
def inner():
arg
return inner
f = outer(n)
# 三、裝飾器
# 裝飾器是一種特殊的閉包,就是在閉包的基礎(chǔ)上傳遞了一個(gè)函數(shù),
# 然后覆蓋原來(lái)函數(shù)的執(zhí)行入口,以后調(diào)用這個(gè)函數(shù)的時(shí)候,就可以額外實(shí)現(xiàn)一些功能了
def outer(arg):
def inner():
print("*" * 20)
arg()
print("*" * 20)
return inner
@outer # echo = outer(echo) # inner
def echo():
print('劉樂(lè)騫NB!')
# echo()
32、實(shí)現(xiàn)斐波那契數(shù)列
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 是用來(lái)生成迭代器的語(yǔ)法,在函數(shù)中,如果包含了 yield,那么這個(gè)函數(shù)就是一個(gè)迭代器。
# 當(dāng)代碼執(zhí)行至 yield 時(shí),就會(huì)中斷代碼執(zhí)行,直到程序調(diào)用 next() 函數(shù)時(shí),才會(huì)在上次 yield 的地方繼續(xù)執(zhí)行
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、簡(jiǎn)單介紹一下繼承
# 一個(gè)類繼承自另一個(gè)類,也可以說(shuō)是一個(gè)孩子類/派生類/子類,繼承自父類/基類/超類,
# 同時(shí)獲取所有的類成員(屬性和方法)。
# 支持的類型:
# 1.單繼承- 一個(gè)子類類繼承自單個(gè)基類
# 2.多重繼承- 一個(gè)子類繼承自多個(gè)基類
# 3.多級(jí)繼承- 一個(gè)子類繼承自一個(gè)基類,而基類繼承自另一個(gè)基類
# 4.分層繼承- 多個(gè)子類繼承自同一個(gè)基類
# 5.混合繼承- 兩種或兩種以上繼承類型的組合
36、//,%和**
# //:向下取整
# %:取模
# **:冪運(yùn)算
37、python異常處理
# 基本語(yǔ)法
# try:
# 被檢測(cè)的代碼塊
# except 異常類型:
# try中一旦檢測(cè)到異常,就執(zhí)行這個(gè)位置的邏輯
# eg:
# def func(arg):
# try:
# arg +=1
# except TypeError as e:
# print(e)
# func('光哥')
# 主動(dòng)觸發(fā)異常
# try:
# raise TypeError('類型錯(cuò)誤')
# except Exception as e:
# print(e)
38、統(tǒng)計(jì)字符串中單詞出現(xiàn)次數(shù)
from collections import Counter
str1 = "ahdbgdhsjidhihisfjbaj"
# print(Counter(str1))
以上,就是python面試基礎(chǔ)知識(shí),小編還會(huì)陸續(xù)更新哦!希望大家都能找到合適的工作!
————————————————
版權(quán)聲明:本文為CSDN博主「單車欲問(wèn)邊」的原創(chuàng)文章。