python面試經典題 Python經典面試題

2021-10-11 01:25:14 字數 3605 閱讀 1472

1、邏輯運算子的運算

#and or not

#優先順序,()> not > and > or

print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # f

'''x or y x true,則返回x'''

print(1 or 2) # 1

print(3 or 2) # 3

print(0 or 2) # 2

print(0 or 100) # 100

'''x and y x true,則返回y'''

print(1 and 2) #2

print(0 and 2) #2

print(2 or 1 < 3) #2

print(2 and 1 < 3) #t

print(1<3 or 2) #t

print(1 < 3 and 2) #2

print(3 > 1 or 2 and 2) #t

2、is和==的區別?

is判斷兩個引用是否指向的是同乙個變數,即記憶體id是否相等,

==則是呼叫的__eq__方法,一般是用於判斷值是否相等,也可以重寫__eq__方法實現想要的效果。

3、dict與list的查詢複雜度?

dict用hash實現,查詢的時間複雜度是o(1),list則為o(n)。

4、http和https的區別

https協議需要到ca申請證書,一般免費證書很少,需要交費。

注:ca - certificate authority,身份認證,權威機構認證,ca認證:

http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協議

http和https使用的是完全不同的連線方式用的埠也不一樣,前者是80,後者是443。

http的連線很簡單,是無狀態的

https協議是由ssl(安全套接層)+http協議構建的可進行加密傳輸、身份認證的網路協議 要比http協議安全

注:ssl(安全套接層協議):是為網路通訊提供安全及資料完整性的一種安全協議。

ssl協議提供的服務主要有:

1.認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;

2.加密資料以防止資料中途被竊取;

3.維護資料的完整性,確保資料在傳輸過程中不被改變

5、一行**實現1--100之和

sum(range(0,101))

6、如何在乙個函式內部修改全域性變數

num = 1

def fun():

global a

a = 10

print(a)

fun()

print(a)

7、列出5個python標準庫

sys: 通常用於命令列引數

re: 正則匹配

math: 數**算

datetime:處理日期時間

random:隨機數

8、字典如何刪除鍵和合併兩個字典

dic =

del dic["name"]

print(dic) #結果:

dic2 =

dic.update(dic2)

print(dic) #結果:

9、談下python的gil

gil 是python的全域性直譯器鎖,同一程序中假如有多個執行緒執行,乙個執行緒在執行python程式的時候會霸佔python直譯器(加了一把鎖即gil),

使該程序內的其他執行緒無法執行,等該執行緒執行完後其他執行緒才能執行。如果執行緒執行過程中遇到耗時操作,則直譯器鎖解開,使其他執行緒執行。所以在多執行緒中,

執行緒的執行仍是有先後順序的,並不是同時進行。

多程序中因為每個程序都能被系統分配資源,相當於每個程序有了乙個python直譯器,所以多程序可以實現多個程序的同時執行,缺點是程序系統資源開銷大

10、python實現列表去重的方法

list = [1,1,2,2,3,3,4,4,5,5]

demo = set(list) #先去重

print(demo) #結果:

demo1 = [i for i in demo]

print(demo1) #結果:[1, 2, 3, 4, 5]

11、fun(*args,**kwargs)中的*args,**kwargs什麼意思?

首先,解釋星號的作用,乙個星號*的作用是將tuple或者list中的元素進行unpack,分開傳入,作為多個引數;

兩個星號**的作用是把dict型別的資料作為引數傳入。

kwargs是keyword argument的縮寫,args就是argument。我們知道,在python中有兩種引數,

都會使得位置無法判斷。因此常見的也是*args 在 **kwargs 前面。

這兩個的用途和效果如下:

def this_fun(a,b,*args,**kwargs):

print()

print(b)

print(args)

print(kwargs)

this_fun(0,1,2,3,index1=11,index2=22)

#結果:

(2, 3)

12、python2和python3的range(100)的區別?

python2返回列表,python3返回迭代器,節約記憶體

13、一句話解釋什麼樣的語言能夠用裝飾器?

函式可以作為引數傳遞的語言,可以使用裝飾器

14、python內建資料型別有哪些?

整型--int

布林型--bool

字串--str

列表--list

元組--tuple

字典--dict

15、列表[1,2,3,4,5],請使用map()函式輸出[1,4,9,16,25],並使用列表推導式提取出大於10的數,最終輸出[16,25]

map()函式第乙個引數是fun,第二個引數是一般是list,第三個引數可以寫list,也可以不寫,根據需求

list = [1,2,3,4,5]

def fun(x):

return x**2

rse = map(fun,list)

l = [i for i in rse if i>10]

print(l) #結果: [16,25]

16、python中生成隨機整數、隨機小數、0--1之間小數方法

隨機整數:random.randint(a,b),生成區間內的整數

隨機小數:習慣用numpy庫,利用np.random.randn(5)生成5個隨機小數

0-1隨機小數:random.random(),括號中不傳參

import random

import numpy as np

res1 = random.randint(10,20)

res2 = np.random.randn(5)

res3 = random.random()

print(res1)

print(res2)

print(res3)

#結果:

[-0.06864183 -0.0960355 1.31538408 0.79103814 -1.2347433 ]

0.19029834589798245

面試經典題

include include char strcpy char strdest,const char strsrc 將源字串加const表明為輸入引數 bool 型別 if var int 型別 if var 0 float型別 const float epsinon 0.00001 if x e...

python經典面試 python經典面試題

基礎部分 1.將列表按照下列規則排序,補全 1.整數在前,負數在後2.正數從小到大3.負數從大到小 lst 7,8,5,4,0,2,5 補全 sorted lst,key lambda x 答案 lst 7,8,5,4,0,2,5 lst sorted lst,key lambda x int x ...

面試經典70題

2 你覺得你個性上最大的優點是什麼?3 說說你最大的缺點?4 你對加班的看法?5 你對薪資的要求?6 在五年的時間內,你的職業規劃?7 你朋友對你的評價?8 你還有什麼問題要問嗎?9 如果通過這次面試我們單位錄用了你,但工作一段時間卻發現你根本不適合這個職位,你怎麼辦?10 在完成某項工作時,你認為...