阿里2022Python面試題 | 100道高頻真題

Python是目前編程領域最受歡迎的語言腥寇。小編已總結(jié)Python面試中最常見的100個問題都整理成PDF了待侵,每道題都提供參考答案颗胡,希望能夠幫助你在2022年求職面試中脫穎而出舶担,找到一份高薪工作惭婿。這些面試題涉及Python基礎知識找田、Python編程歌憨、數(shù)據(jù)分析以及Python函數(shù)庫等多個方面,還有一些簡歷模板墩衙。

1. (1)python下多線程的限制以及多進程中傳遞參數(shù)的方式

python多線程有個全局解釋器鎖(global interpreter lock)务嫡,這個鎖的意思是任一時間只能有一個線程使用解釋器,跟單cpu跑多個程序一個意思漆改,大家都是輪著用的心铃,這叫“并發(fā)”,不是“并行”挫剑。

  多進程間共享數(shù)據(jù)去扣,可以使用 multiprocessing.Value 和 multiprocessing.Array

(2)python多線程與多進程的區(qū)別

在UNIX平臺上,當某個進程終結(jié)之后暮顺,該進程需要被其父進程調(diào)用wait厅篓,否則進程成為僵尸進程(Zombie)秀存。所以,有必要對每個Process對象調(diào)用join()方法 (實際上等同于wait)羽氮。對于多線程來說或链,由于只有一個進程,所以不存在此必要性档押。

多進程應該避免共享資源澳盐。在多線程中,我們可以比較容易地共享資源令宿,比如使用全局變量或者傳遞參數(shù)叼耙。在多進程情況下,由于每個進程有自己獨立的內(nèi)存空間粒没,以上方法并不合適筛婉。此時我們可以通過共享內(nèi)存和Manager的方法來共享資源。但這樣做提高了程序的復雜度癞松,并因為同步的需要而降低了程序的效率爽撒。

2.Python是如何進行內(nèi)存管理的?解讀Python內(nèi)存管理機制-51CTO.COMPython引用了一個內(nèi)存池(memory pool)機制响蓉,即Pymalloc機制(malloc:n.分配內(nèi)存)硕勿,用于管理對小塊內(nèi)存的申請和釋放

內(nèi)存池(memory pool)的概念:

  當 創(chuàng)建大量消耗小內(nèi)存的對象時,頻繁調(diào)用new/malloc會導致大量的內(nèi)存碎片枫甲,致使效率降低源武。內(nèi)存池的概念就是預先在內(nèi)存中申請一定數(shù)量的,大小相等 的內(nèi)存塊留作備用想幻,當有新的內(nèi)存需求時粱栖,就先從內(nèi)存池中分配內(nèi)存給這個需求,不夠了之后再申請新的內(nèi)存脏毯。這樣做最顯著的優(yōu)勢就是能夠減少內(nèi)存碎片查排,提升效率。

內(nèi)存池的實現(xiàn)方式有很多抄沮,性能和適用范圍也不一樣。

python中的內(nèi)存管理機制——Pymalloc:

python中的內(nèi)存管理機制都有兩套實現(xiàn)岖瑰,一套是針對小對象叛买,就是大小小于256bits時,pymalloc會在內(nèi)存池中申請內(nèi)存空間;當大于256bits蹋订,則會直接執(zhí)行new/malloc的行為來申請內(nèi)存空間率挣。

  關于釋放內(nèi)存方面,當一個對象的引用計數(shù)變?yōu)?時露戒,python就會調(diào)用它的析構(gòu)函數(shù)椒功。在析構(gòu)時捶箱,也采用了內(nèi)存池機制,從內(nèi)存池來的內(nèi)存會被歸還到內(nèi)存池中动漾,以避免頻繁地釋放動作丁屎。

3.什么是lambda函數(shù)?它有什么好處?http://www.kuqin.com/diveinto_python_document/apihelper_lambda.htmllambda 函數(shù)是一個可以接收任意多個參數(shù)(包括可選參數(shù))并且返回單個表達式值的函數(shù)旱眯。 lambda 函數(shù)不能包含命令晨川,它們所包含的表達式不能超過一個。不要試圖向lambda 函數(shù)中塞入太多的東西删豺;如果你需要更復雜的東西共虑,應該定義一個普通函數(shù)赡麦,然后想讓它多長就多長癞蚕。

4.如何用Python輸出一個Fibonacci數(shù)列?

1 a,b = 0, 1

2 while b<100:

3 print (b),

4? ? a, b = b, a+b

5.介紹一下Python中webbrowser的用法狭园?

webbrowser模塊提供了一個高級接口來顯示基于Web的文檔蓬蝶,大部分情況下只需要簡單的調(diào)用open()方法尘分。

webbrowser定義了如下的異常:

exception webbrowser.Error, 當瀏覽器控件發(fā)生錯誤是會拋出這個異常

webbrowser有以下方法:

webbrowser.open(url[, new=0[, autoraise=1]])

這個方法是在默認的瀏覽器中顯示url, 如果new = 0, 那么url會在同一個瀏覽器窗口下打開,如果new = 1, 會打開一個新的窗口疾党,如果new = 2, 會打開一個新的tab, 如果autoraise = true, 窗口會自動增長音诫。

webbrowser.open_new(url)

在默認瀏覽器中打開一個新的窗口來顯示url, 否則,在僅有的瀏覽器窗口中打開url

webbrowser.open_new_tab(url)

在默認瀏覽器中當開一個新的tab來顯示url, 否則跟open_new()一樣

webbrowser.get([name]) 根據(jù)name返回一個瀏覽器對象雪位,如果name為空竭钝,則返回默認的瀏覽器

webbrowser.register(name, construtor[, instance])

注冊一個名字為name的瀏覽器,如果這個瀏覽器類型被注冊就可以用get()方法來獲取雹洗。

6.解釋一下python的and-or語法http://www.kuqin.com/diveinto_python_document/apihelper_andor.html與C表達式 bool ? a : b類似香罐,但是bool and a or b,當 a 為假時时肿,不會象C表達式 bool ? a : b 一樣工作

應該將 and-or 技巧封裝成一個函數(shù):

def choose(bool, a, b):

return (bool and [a] or [b])[0]

因為 [a] 是一個非空列表庇茫,它永遠不會為假。甚至 a 是 0 或 '' 或其它假值螃成,列表[a]為真旦签,因為它有一個元素。

7.how do I iterate over a sequence in reverse order

for x in reversed(sequence):

? ? ... # do something with x..

如果不是list, 最通用但是稍慢的解決方案是:

for i in range(len(sequence)-1, -1, -1):

? ? x = sequence[i]

? ? <do something with x>

8.Python是如何進行類型轉(zhuǎn)換的寸宏?http://canofy.iteye.com/blog/298263

1 函數(shù)? ? ? ? ? ? ? ? ? ? ? 描述

2 int(x [,base ])? ? ? ? 將x轉(zhuǎn)換為一個整數(shù)

3 long(x [,base ])? ? ? ? 將x轉(zhuǎn)換為一個長整數(shù)

4 float(x )? ? ? ? ? ? ? 將x轉(zhuǎn)換到一個浮點數(shù)

5 complex(real [,imag ])? 創(chuàng)建一個復數(shù)

6 str(x )? ? ? ? ? ? ? ? 將對象 x 轉(zhuǎn)換為字符串

7 repr(x )? ? ? ? ? ? ? ? 將對象 x 轉(zhuǎn)換為表達式字符串

8 eval(str )? ? ? ? ? ? ? 用來計算在字符串中的有效Python表達式,并返回一個對象

9 tuple(s )? ? ? ? ? ? ? 將序列 s 轉(zhuǎn)換為一個元組

10 list(s )? ? ? ? ? ? ? ? 將序列 s 轉(zhuǎn)換為一個列表

11 chr(x )? ? ? ? ? ? ? ? 將一個整數(shù)轉(zhuǎn)換為一個字符

12 unichr(x )? ? ? ? ? ? ? 將一個整數(shù)轉(zhuǎn)換為Unicode字符

13 ord(x )? ? ? ? ? ? ? ? 將一個字符轉(zhuǎn)換為它的整數(shù)值

14 hex(x )? ? ? ? ? ? ? ? 將一個整數(shù)轉(zhuǎn)換為一個十六進制字符串

15 oct(x )? ? ? ? ? ? ? ? 將一個整數(shù)轉(zhuǎn)換為一個八進制字符串

9.Python里面如何實現(xiàn)tuple和list的轉(zhuǎn)換?

1 >>> l = tuple(iplist)

2 >>> print l

3 ('217.169.209.2:6666', '192.227.139.106:7808', '110.4.12.170:83', '69.197.132.80:7808', '205.164.41.101:3128', '63.141.249.37:8089', '27.34.142.47:9090')

4 >>> t = list(l)

5 >>> print t

6 ['217.169.209.2:6666', '192.227.139.106:7808', '110.4.12.170:83', '69.197.132.80:7808', '205.164.41.101:3128', '63.141.249.37:8089', '27.34.142.47:9090']

10.請寫出一段Python代碼實現(xiàn)刪除一個list里面的重復元素

1 >>> l = [1,1,2,3,4,5,4]

2 >>> list(set(l))

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

4 或者

5 d = {}

6 for x in mylist:

7? ? d[x] = 1

8 mylist = list(d.keys())

11.Python如何實現(xiàn)單例模式氮凝?其他23種設計模式python如何實現(xiàn)羔巢?

1 #使用__metaclass__(元類)的高級python用法?

2 class Singleton2(type):?

3 def __init__(cls, name, bases, dict):?

4? ? ? ? super(Singleton2, cls).__init__(name, bases, dict)?

5? ? ? ? cls._instance = None?

6 def __call__(cls, *args, **kw):?

7 if cls._instance is None:?

8? ? ? ? ? ? cls._instance = super(Singleton2, cls).__call__(*args, **kw)?

9 return cls._instance?

10

11 class MyClass3(object):?

12 __metaclass__ = Singleton2?

13

14 one = MyClass3()?

15 two = MyClass3()?

16

17 two.a = 3?

18 print one.a?

19 #3?

20 print id(one)?

21 #31495472?

22 print id(two)?

23 #31495472?

24 print one == two?

25 #True?

26 print one is two?

27 #True?

1 #使用裝飾器(decorator),?

2 #這是一種更pythonic,更elegant的方法,?

3 #單例類本身根本不知道自己是單例的,因為他本身(自己的代碼)并不是單例的?

4 def singleton(cls, *args, **kw):?

5? ? instances = {}?

6 def _singleton():?

7 if cls not in instances:?

8? ? ? ? ? ? instances[cls] = cls(*args, **kw)?

9 return instances[cls]?

10 return _singleton?

11

12 @singleton?

13 class MyClass4(object):?

14? ? a = 1?

15 def __init__(self, x=0):?

16? ? ? ? self.x = x?

17

18 one = MyClass4()?

19 two = MyClass4()?

20

21 two.a = 3?

22 print one.a?

23 #3?

24 print id(one)?

25 #29660784?

26 print id(two)?

27 #29660784?

28 print one == two?

29 #True?

30 print one is two?

31 #True?

32 one.x = 1?

33 print one.x?

34 #1?

35 print two.x?

36 #1?

12.Python里面如何拷貝一個對象?Python Cookbook 4.1 復制(拷貝)對象(淺復制和深復制)_sharkw的專欄-CSDN博客標準庫中的copy模塊提供了兩個方法來實現(xiàn)拷貝.一個方法是copy,它返回和參數(shù)包含內(nèi)容一樣的對象.

使用deepcopy方法,對象中的屬性也被復制

13.介紹一下except的用法和作用?

Python的except用來捕獲所有異常竿秆,因為Python里面的每次錯誤都會拋出一個異常启摄,所以每個程序的錯誤都被當作一個運行時錯誤。

14.Python中pass語句的作用是什么幽钢?

pass語句什么也不做歉备,一般作為占位符或者創(chuàng)建占位程序,pass語句不會執(zhí)行任何操作

15.如何知道一個python對象的類型搅吁?

type()

16.介紹一下Python下range()函數(shù)的用法威创?http://docs.python.org/library/functions.html#rangerange(start, stop[, step])

17.如何用Python來進行查詢和替換一個文本字符串?

可以使用sub()方法來進行查詢和替換谎懦,sub方法的格式為:sub(replacement, string[, count=0])

replacement是被替換成的文本

string是需要被替換的文本

count是一個可選參數(shù)肚豺,指最大被替換的數(shù)量

18.Python里面search()和match()的區(qū)別?

match()函數(shù)只檢測RE是不是在string的開始位置匹配界拦,search()會掃描整個string查找匹配, 也就是說match()只有在0位置匹配成功的話才有返回吸申,如果不是開始位置匹配成功的話,match()就返回none

19.用Python匹配HTML tag的時候享甸,<.*>和<.*?>有什么區(qū)別截碴?

前者是貪婪匹配,會從頭到尾匹配 <a>xyz</a>蛉威,而后者是非貪婪匹配日丹,只匹配到第一個 >。

20.Python里面如何生成隨機數(shù)蚯嫌?

import random

random.random()

它會返回一個隨機的0和1之間的浮點數(shù)

21.如何用Python來發(fā)送郵件哲虾?

python實現(xiàn)發(fā)送和接收郵件功能主要用到poplib和smtplib模塊。

poplib用于接收郵件择示,而smtplib負責發(fā)送郵件束凑。

代碼如下:

1 #! /usr/bin/env python

2 #coding=utf-8

3 import sys

4 import time

5 import poplib

6 import smtplib

7 #郵件發(fā)送函數(shù)

8 def send_mail():

9 try:

10? ? ? ? handle = smtplib.SMTP('smtp.126.com',25)

11? ? ? ? handle.login('XXXX@126.com','**********')

12? ? ? ? msg = 'To: XXXX@qq.com\r\nFrom:XXXX@126.com\r\nSubject:hello\r\n'

13? ? ? ? handle.sendmail('XXXX@126.com','XXXX@qq.com',msg)

14? ? ? ? handle.close()

15 return 1

16 except:

17 return 0

18 #郵件接收函數(shù)

19 def accpet_mail():

20 try:

21? ? ? ? p=poplib.POP3('pop.126.com')

22? ? ? ? p.user('pythontab@126.com')

23? ? ? ? p.pass_('**********')

24? ? ? ? ret = p.stat() #返回一個元組:(郵件數(shù),郵件尺寸)

25 #p.retr('郵件號碼')方法返回一個元組:(狀態(tài)信息,郵件,郵件尺寸)?

26 except poplib.error_proto,e:

27 print "Login failed:",e

28? ? ? ? sys.exit(1)

29

30 #運行當前文件時,執(zhí)行sendmail和accpet_mail函數(shù)

31 if __name__ == "__main__":

32? ? send_mail()

33? ? accpet_mail()

最后聊聊我的感受吧

一切技術的產(chǎn)生與發(fā)展都離不開最基本的原理栅盲,只要追本溯源汪诉,了解技術體系最基本、底層的原理谈秫,我們就能根據(jù)這些知識儲備建立自己的后端技術框架扒寄,從而搭建一條完整的成長道路。因為篇幅原因拟烫,還有更多的大廠面試題已經(jīng)總結(jié)成PDF了

點擊鏈接加入群聊【Python加速學習交流群】:https://jq.qq.com/?_wv=1027&k=jlS0wzAhjq.qq.com

每道題都提供參考答案旗们,希望能夠幫助你在2022年求職面試中脫穎而出,找到一份高薪工作构灸,祝大家山頂見!


?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喜颁,隨后出現(xiàn)的幾起案子稠氮,更是在濱河造成了極大的恐慌,老刑警劉巖半开,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隔披,死亡現(xiàn)場離奇詭異,居然都是意外死亡寂拆,警方通過查閱死者的電腦和手機奢米,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纠永,“玉大人鬓长,你說我怎么就攤上這事〕⒔” “怎么了涉波?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炭序。 經(jīng)常有香客問我啤覆,道長,這世上最難降的妖魔是什么惭聂? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任窗声,我火速辦了婚禮,結(jié)果婚禮上辜纲,老公的妹妹穿的比我還像新娘笨觅。我一直安慰自己,他們只是感情好侨歉,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布屋摇。 她就那樣靜靜地躺著,像睡著了一般幽邓。 火紅的嫁衣襯著肌膚如雪炮温。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天牵舵,我揣著相機與錄音柒啤,去河邊找鬼。 笑死畸颅,一個胖子當著我的面吹牛担巩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播没炒,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涛癌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拳话,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤先匪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后弃衍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呀非,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年镜盯,在試婚紗的時候發(fā)現(xiàn)自己被綠了岸裙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡速缆,死狀恐怖降允,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情激涤,我是刑警寧澤拟糕,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站倦踢,受9級特大地震影響送滞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辱挥,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一犁嗅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晤碘,春花似錦褂微、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至童社,卻和暖如春求厕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扰楼。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工呀癣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弦赖。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓项栏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蹬竖。 傳聞我的和親對象是個殘疾皇子沼沈,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容