<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python面試中一些常見的問題及其答案

DPVg_AI_era ? 來源:未知 ? 作者:李倩 ? 2018-08-31 08:33 ? 次閱讀

Python 新手在謀求一份 Python 編程工作前,必須熟知 Python 的基礎知識。編程網站 DataFlair 的技術團隊分享了一份 2018 年最常見 Python 面試題合集,既有基本的 Python 面試題,也有高階版試題來指導你準備面試,試題均附有答案。面試題內容包括編碼、數據結構、腳本撰寫等話題。

Q 1:Python 有哪些特點和優點?

作為一門編程入門語言,Python 主要有以下特點和優點:

可解釋

具有動態特性

面向對象

簡明簡單

開源

具有強大的社區支持

當然,實際上 Python 的優點遠不止如此

Q 2:深拷貝和淺拷貝之間的區別是什么?

答:深拷貝就是將一個對象拷貝到另一個對象中,這意味著如果你對一個對象的拷貝做出改變時,不會影響原對象。在 Python 中,我們使用函數 deepcopy() 執行深拷貝,導入模塊 copy,如下所示:

1>>>importcopy2>>>b=copy.deepcopy(a)

而淺拷貝則是將一個對象的引用拷貝到另一個對象上,所以如果我們在拷貝中改動,會影響到原對象。我們使用函數 function() 執行淺拷貝,使用如下所示:

1>>>b=copy.copy(a)

Q 3. 列表和元組之間的區別是?

答:二者的主要區別是列表是可變的,而元組是不可變的。舉個例子,如下所示:

1>>>mylist=[1,3,3]2>>>mylist[1]=23>>>mytuple=(1,3,3)4>>>mytuple[1]=25Traceback(mostrecentcalllast):6File"",line1,in7mytuple[1]=2

會出現以下報錯:

1TypeError:‘tuple’objectdoesnotsupportitemassignment

關于列表和元組的更多內容,可以查看這里:

https://data-flair.training/blogs/python-tuples-vs-lists/

從 Q4 到 Q20 都是針對新手的 Python 面試基礎試題,不過有經驗的人也可以看看這些問題,復習一下基礎概念。

Q 4. 解釋一下 Python 中的三元運算子

不像 C++,我們在 Python 中沒有?:,但我們有這個:

1[ontrue]if[expression]else[onfalse]

如果表達式為 True,就執行 [on true] 中的語句。否則,就執行 [on false] 中的語句。

下面是使用它的方法:

1>>>a,b=2,32>>>min=aifa>>min

運行結果:

122>>>print("Hi")ifa

運行結果:

1Hi

Q 5. 在 Python 中如何實現多線程?

一個線程就是一個輕量級進程,多線程能讓我們一次執行多個線程。我們都知道,Python 是多線程語言,其內置有多線程工具包。

Python 中的 GIL(全局解釋器鎖)確保一次執行單個線程。一個線程保存 GIL 并在將其傳遞給下個線程之前執行一些操作,這會讓我們產生并行運行的錯覺。但實際上,只是線程在 CPU 上輪流運行。當然,所有的傳遞會增加程序執行的內存壓力。

Q 6. 解釋一下 Python 中的繼承

當一個類繼承自另一個類,它就被稱為一個子類 / 派生類,繼承自父類 / 基類 / 超類。它會繼承 / 獲取所有類成員(屬性和方法)。

繼承能讓我們重新使用代碼,也能更容易的創建和維護應用。Python 支持如下種類的繼承:

單繼承:一個類繼承自單個基類

多繼承:一個類繼承自多個基類

多級繼承:一個類繼承自單個基類,后者則繼承自另一個基類

分層繼承:多個類繼承自單個基類

混合繼承:兩種或多種類型繼承的混合

更多關于繼承的內容,參見:

https://data-flair.training/blogs/python-inheritance/

Q 7. 什么是 Flask?

Flask 是 Python 編寫的一款輕量級 Web 應用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2。Flask 使用 BSD 授權。其中兩個環境依賴是 Werkzeug 和 jinja2,這意味著它不需要依賴外部庫。正因如此,我們將其稱為輕量級框架。

Flask 會話使用簽名 cookie 讓用戶查看和修改會話內容。它會記錄從一個請求到另一個請求的信息。不過,要想修改會話,用戶必須有密鑰 Flask.secret_key。

Q 8. 在 Python 中是如何管理內存的?

Python 有一個私有堆空間來保存所有的對象和數據結構。作為開發者,我們無法訪問它,是解釋器在管理它。但是有了核心 API 后,我們可以訪問一些工具。Python 內存管理器控制內存分配。

另外,內置垃圾回收器會回收使用所有的未使用內存,所以使其適用于堆空間。

Q 9. 解釋 Python 中的 help() 和 dir() 函數

Help() 函數是一個內置函數,用于查看函數或模塊用途的詳細說明:

1>>>importcopy2>>>help(copy.copy)

運行結果為:

1Helponfunctioncopyinmodulecopy:234copy(x)56ShallowcopyoperationonarbitraryPythonobjects.78Seethemodule’s__doc__stringformoreinfo.

Dir() 函數也是 Python 內置函數,dir() 函數不帶參數時,返回當前范圍內的變量、方法和定義的類型列表;帶參數時,返回參數的屬性、方法列表。

以下實例展示了 dir 的使用方法:

1>>>dir(copy.copy)

運行結果為:

1[‘__annotations__’,‘__call__’,‘__class__’,‘__closure__’,‘__code__’,‘__defaults__’,‘__delattr__’,‘__dict__’,‘__dir__’,‘__doc__’,‘__eq__’,‘__format__’,‘__ge__’,‘__get__’,‘__getattribute__’,‘__globals__’,‘__gt__’,‘__hash__’,‘__init__’,‘__init_subclass__’,‘__kwdefaults__’,‘__le__’,‘__lt__’,‘__module__’,‘__name__’,‘__ne__’,‘__new__’,‘__qualname__’,‘__reduce__’,‘__reduce_ex__’,‘__repr__’,‘__setattr__’,‘__sizeof__’,‘__str__’,‘__subclasshook__’]

Q 10. 當退出 Python 時,是否釋放全部內存?

答案是 No。循環引用其它對象或引用自全局命名空間的對象的模塊,在 Python 退出時并非完全釋放。

另外,也不會釋放 C 庫保留的內存部分。

Q 11. 什么是猴子補???

在運行期間動態修改一個類或模塊。

1>>>classA:2deffunc(self):3print("Hi")4>>>defmonkey(self):5print"Hi,monkey"6>>>m.A.func=monkey7>>>a=m.A()8>>>a.func()

運行結果為:

1Hi,Monkey

Q 12. Python 中的字典是什么?

字典是 C++ 和 Java 等編程語言中所沒有的東西,它具有鍵值對。

1>>>roots={25:5,16:4,9:3,4:2,1:1}2>>>type(roots)34>>>roots[9]

運行結果為:

13

字典是不可變的,我們也能用一個推導式來創建它。

1>>>roots={x**2:xforxinrange(5,0,-1)}2>>>roots

運行結果:

1{25:5,16:4,9:3,4:2,1:1}

Q 13. 請解釋使用 *args 和 **kwargs 的含義

當我們不知道向函數傳遞多少參數時,比如我們向傳遞一個列表或元組,我們就使用 * args。

1>>>deffunc(*args):2foriinargs:3print(i)4>>>func(3,2,1,4,7)

運行結果為:

13232451674897

在我們不知道該傳遞多少關鍵字參數時,使用 **kwargs 來收集關鍵字參數。

1>>>deffunc(**kwargs):2foriinkwargs:3print(i,kwargs[i])4>>>func(a=1,b=2,c=7)

運行結果為:

1a.123b.245c.7

Q 14. 請寫一個 Python 邏輯,計算一個文件中的大寫字母數量

1>>>importos23>>>os.chdir('C:\Users\lifei\Desktop')4>>>withopen('Today.txt')astoday:5count=06foriintoday.read():7ifi.isupper():8count+=19print(count)

運行結果:

126

Q 15. 什么是負索引?

我們先創建這樣一個列表:

1>>>mylist=[0,1,2,3,4,5,6,7,8]

負索引和正索引不同,它是從右邊開始檢索。

1>>>mylist[-3]

運行結果:

16

它也能用于列表中的切片:

1>>>mylist[-6:-1]

結果:

1[3,4,5,6,7]

Q 16. 如何以就地操作方式打亂一個列表的元素?

為了達到這個目的,我們從 random 模塊中導入 shuffle() 函數。

1>>>fromrandomimportshuffle2>>>shuffle(mylist)3>>>mylist

運行結果:

1[3,4,8,0,5,7,6,2,1]

Q 17. 解釋 Python 中的 join() 和 split() 函數

1Join()能讓我們將指定字符添加至字符串中。23>>>','.join('12345')

運行結果:

1‘1,2,3,4,5’

Split() 能讓我們用指定字符分割字符串。

1>>>'1,2,3,4,5'.split(',')

運行結果:

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

Q 18. Python 區分大小寫嗎?

如果能區分像 myname 和 Myname 這樣的標識符,那么它就是區分大小寫的。也就是說它很在乎大寫和小寫。我們可以用 Python 試一試:

1>>>myname='Ayushi'2>>>Myname3Traceback(mostrecentcalllast):4File"",line1,in

運行結果:

1Myname2NameError:name‘Myname’isnotdefined

可以看到,這里出現了 NameError,所以 Python 是區分大小寫的。

Q 19. Python 中的標識符長度能有多長?

在 Python 中,標識符可以是任意長度。此外,我們在命名標識符時還必須遵守以下規則:

只能以下劃線或者 A-Z/a-z 中的字母開頭

其余部分可以使用 A-Z/a-z/0-9

區分大小寫

關鍵字不能作為標識符,Python 中共有如下關鍵字:

Q 20. 怎么移除一個字符串中的前導空格?

字符串中的前導空格就是出現在字符串中第一個非空格字符前的空格。我們使用方法 Istrip() 可以將它從字符串中移除。

1>>>'Ayushi'.lstrip()

結果:

1‘Ayushi‘

可以看到,該字符串既有前導字符,也有后綴字符,調用 Istrip() 去除了前導空格。如果我們想去除后綴空格,就用 rstrip() 方法。

1>>>'Ayushi'.rstrip()

結果:

1‘Ayushi’

從 Q 21 到 Q 35 是為有 Python 經驗者準備的進階版 Python 面試題。

Q 21. 怎樣將字符串轉換為小寫?

我們使用 lower() 方法。

1>>>'AyuShi'.lower()

結果:

1‘ayushi’

使用 upper() 方法可以將其轉換為大寫。

1>>>'AyuShi'.upper()

結果:

1‘AYUSHI’

另外,使用 isupper() 和 islower() 方法檢查字符串是否全為大寫或小寫。

1>>>'AyuShi'.isupper() 2False 3 4>>>'AYUSHI'.isupper() 5True 6 7>>>'ayushi'.islower() 8True 910>>>'@yu$hi'.islower()11True1213>>>'@YU$HI'.isupper()14True

那么,像 @和 $ 這樣的字符既滿足大寫也滿足小寫。

Istitle() 能告訴我們一個字符串是否為標題格式。

1>>>'TheCorpseBride'.istitle()2True

Q 22. Python 中的 pass 語句是什么?

在用 Python 寫代碼時,有時可能還沒想好函數怎么寫,只寫了函數聲明,但為了保證語法正確,必須輸入一些東西,在這種情況下,我們會使用 pass 語句。

1>>>deffunc(*args):2pass3>>>

同樣,break 語句能讓我們跳出循環。

1>>>foriinrange(7):2ifi==3:break3print(i)

結果:

10231452

最后,continue 語句能讓我們跳到下個循環。

1>>>foriinrange(7):2ifi==3:continue3print(i)

結果:

10 2 31 4 52 6 74 8 9510116

Q 23. Python 中的閉包是什么?當一個嵌套函數在其外部區域引用了一個值時,該嵌套函數就是一個閉包。其意義就是會記錄這個值。

1>>>defA(x):2defB():3print(x)4returnB5>>>A(7)()

結果:

17

更多關于閉包的知識,請參看這里:

https://data-flair.training/blogs/python-closure/

**Q 24. 解釋一下 Python 中的 //,% 和 ** 運算符 **

1//運算符執行地板除法(向下取整除),它會返回整除結果的整數部分。23>>>7//243

這里整除后會返回 3.5。

同樣地,執行取冪運算。ab 會返回 a 的 b 次方。

1>>>2**1021024

最后,% 執行取模運算,返回除法的余數。

1>>>13%7263>>>3.5%1.540.5

Q 24. 在 Python 中有多少種運算符?解釋一下算數運算符。

在 Python 中,我們有 7 種運算符:算術運算符、關系運算符、賦值運算符、邏輯運算符、位運算符、成員運算符、身份運算符。

我們有 7 個算術運算符,能讓我們對數值進行算術運算:

1. 加號(+),將兩個值相加

1>>>7+8215

2. 減號(-),將第一個值減去第二個值

1>>>7-82-1

3. 乘號(*),將兩個值相乘

1>>>7*8256

4. 除號(/),用第二個值除以第一個值

1>>>7/820.8753>>>1/141.0

5. 向下取整除、取模和取冪運算,參見上個問題。

Q 25. 解釋一下 Python 中的關系運算符

關系運算符用于比較兩個值。

1. 小于號(<),如果左邊的值較小,則返回 True。

1>>>'hi'<'Hi'2False

2. 大于號(>),如果左邊的值較大,則返回 True。

1>>>1.1+2.2>3.32True

3. 小于等于號(<=),如果左邊的值小于或等于右邊的值,則返回 Ture。

1>>>3.0<=32True

4. 大于等于號(>=),如果左邊的值大于或等于右邊的值,則返回 True。

1>>>True>=False2True

等于號(==),如果符號兩邊的值相等,則返回 True。

1>>>{1,3,2,2}=={1,2,3}2True

不等于號(!=),如果符號兩邊的值不相等,則返回 True。

1>>>True!=0.12True3>>>False!=0.14True

Q 26. 解釋一下 Python 中的賦值運算符這在 Python 面試中是個重要的面試問題。

我們將所有的算術運算符和賦值符號放在一起展示:

1>>>a=7 2>>>a+=1 3>>>a 48 5 6>>>a-=1 7>>>a 87 910>>>a*=211>>>a12141314>>>a/=215>>>a167.01718>>>a**=219>>>a20492122>>>a//=323>>>a2416.02526>>>a%=427>>>a280.0

Q 27. 解釋一下 Python 中的邏輯運算符

Python 中有 3 個邏輯運算符:and,or,not。

1>>>FalseandTrue2False34>>>7<7?or?True5True67>>>not2==28False

Q 28. 解釋一下 Python 中的成員運算符

通過成員運算符‘in’和‘not in’,我們可以確認一個值是否是另一個值的成員。

1>>>'me'in'disappointment'2True34>>>'us'notin'disappointment'5True

Q 29. 解釋一下 Python 中的身份運算符

這也是一個在 Python 面試中常問的問題。

通過身份運算符‘is’和‘is not’,我們可以確認兩個值是否相同。

1>>>10is'10'2False34>>>TrueisnotFalse5True

Q 30. 講講 Python 中的位運算符

該運算符按二進制位對值進行操作。

與(&),按位與運算符:參與運算的兩個值, 如果兩個相應位都為 1, 則該位的結果為 1, 否則為 0

1>>>0b110&0b01022

2. 或(|),按位或運算符:只要對應的二個二進位有一個為 1 時,結果位就為 1。

1>>>3|2233

3. 異或(^),按位異或運算符:當兩對應的二進位相異時,結果為 1

1>>>3^221

4. 取反(~),按位取反運算符:對數據的每個二進制位取反, 即把 1 變為 0, 把 0 變為 1

1>>>~22-3

5. 左位移(<<),運算數的各二進位全部左移若干位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補 0

1>>>1<<224

6. 右位移(>>),把 ">>" 左邊的運算數的各二進位全部右移若干位,>> 右邊的數字指定了移動的位數

1>>>4>>221

更多關于運算符的知識,參考這里:https://data-flair.training/blogs/python-operators/

Q 31. 在 Python 中如何使用多進制數字?我們在 Python 中,除十進制外還可以使用二進制、八進制和十六進制。

二進制數字由 0 和 1 組成,我們使用 0b 或 0B 前綴表示二進制數。

1>>>int(0b1010)210

2. 使用 bin() 函數將一個數字轉換為它的二進制形式。

1>>>bin(0xf)2‘0b1111’

3. 八進制數由數字 0-7 組成,用前綴 0o 或 0O 表示 8 進制數。

1>>>oct(8)2‘0o10’

4. 十六進數由數字 0-15 組成,用前綴 0x 或者 0X 表示 16 進制數。

1>>>hex(16)2‘0x10’34>>>hex(15)5‘0xf’

Q 32. 怎樣獲取字典中所有鍵的列表?使用 keys() 獲取字典中的所有鍵

1>>>mydict={'a':1,'b':2,'c':3,'e':5}2>>>mydict.keys()3dict_keys(['a','b','c','e'])

Q 33. 為何不建議以下劃線作為標識符的開頭

因為 Python 并沒有私有變量的概念,所以約定速成以下劃線為開頭來聲明一個變量為私有。所以如果你不想讓變量私有,就不要使用下劃線開頭。

Q 34. 怎樣聲明多個變量并賦值?

一共有兩種方式:

1>>>a,b,c=3,4,5#Thisassigns3,4,and5toa,b,andcrespectively2>>>a=b=c=3#Thisassigns3toa,b,andc

Q 35. 元組的解封裝是什么?

首先我們來看解封裝:

1>>>mytuple=3,4,52>>>mytuple3(3,4,5)

這將 3,4,5 封裝到元組 mytuple 中。

現在我們將這些值解封裝到變量 x,y,z 中:

1>>>x,y,z=mytuple2>>>x+y+z

得到結果 12.

結語以上就是 Python 面試中一些常見的問題及其答案。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據結構
    +關注

    關注

    3

    文章

    564

    瀏覽量

    39937
  • python
    +關注

    關注

    52

    文章

    4698

    瀏覽量

    83610

原文標題:2018 年最常見的 Python 面試題 & 答案

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DC-DC設計中一些公式的推導

    大打折扣或者失效。本文將從基本同步降壓開關電源模型出發,推導出一些常見數據手冊中給出的物料選擇公式,并結合實際PCB設計噪聲原理給出一些建議。注:論文為作者原創,轉載或引用請注明
    發表于 12-02 00:30

    面試標準答案非萬能

    面試中或多或少都會涉及,因此為了提高面試的成功率,也為了求個心里踏實,他周圍的同學在應聘前都會花大量的時間搜集標準或者經典答案,從網上下載一些求職經典問答,或是直接從書店購買
    發表于 12-26 19:15

    Python面試必看的10個問題

    找工作是每個學習Python人員的目標,為了更好的找到工作,刷面試題是必不可少的,了解最新企業招聘試題,可以讓你面試更加的順利。小編整理了一些2017年最新的
    發表于 02-28 17:00

    面試問題-難忘的面試經歷

    能夠猜下為什么我認為我能得到答案嗎?我相信你也有一些有趣的面試經歷,可能是作為面試者,也可能作為被面試
    發表于 09-21 09:41

    MicroPython支持的一些常見開發板

    PythonPython 3編程語言的個簡潔和快速實現,專門優化運行于個微控制器上。它基于ANSIC,語法跟Pyton 3基本致,
    發表于 08-05 07:30

    單片機面試常見問題及答案

    單片機面試常見問題及答案,單片機IO口開漏輸出和推挽輸出有什么區別?推挽輸出:既可以輸出低電平,也可以輸出高電平,可以直接驅動功耗不大的數字器件。導通損耗小、效率高、既提高電路的負載能力,又提高開關
    發表于 07-19 06:48

    整理了一些常見的保護電路

    一些常見的保護電路。電機過熱保護電路生產中所用的自動車床、電熱烘箱、球磨機等連續運轉的機電設備,以及其它無人值守的設備, 因為電機過熱或溫控器失靈造成的事故時有發生,需要采取相應的保安措施。PTC熱敏電阻過熱保護電路能夠方便、
    發表于 09-13 07:16

    Python一些冷知識(

    ,而實例用小寫的這準則。但這并不是強制性的,即使你反過來的也沒有關系。但有一些內置的類,首字母都是小寫,而實例都是大寫。比如 bool 是類名,而 True,False 是其實例;比如
    發表于 04-01 16:55

    python核心編程答案

    python核心編程》書籍課后習題配套答案,python越來越受開發者們的喜愛!
    發表于 11-03 17:30 ?0次下載

    C++面試試題及答案

    C++面試試題及答案
    發表于 12-30 14:50 ?0次下載

    這里有份Python面試攻略,請簽收!

    千呼萬喚始出來,咱們需要的面試文檔終于整理出來啦!這一次,小編為大家送上的是python面試題之基礎概念篇。通過對十幾份面試題目的整理,我們選出了其中出現頻率最高的十個題目,附上
    的頭像 發表于 07-04 16:26 ?2808次閱讀

    Python工程師面試時需要準備什么

    隨著互聯網的發展,python語言現在變得越來越火爆,Python程序員越來越受到大家的青睞!那么想進入Python行業,面試時需要注意些什么問題呢?我們在參加
    的頭像 發表于 03-01 14:25 ?2092次閱讀

    Python常見面試題解答

    Python作為人工智能知識的基礎知識,加上有許多公司都在招python方面的程序員,那么小編在這里整理了一些Python常見
    的頭像 發表于 05-12 10:26 ?3275次閱讀

    Python一些經典面試題資料合集免費下載

    本文檔的主要內容詳細介紹的是Python一些經典面試題資料合集免費下載。
    發表于 09-04 14:49 ?15次下載
    <b class='flag-5'>Python</b>的<b class='flag-5'>一些</b>經典<b class='flag-5'>面試</b>題資料合集免費下載

    Java架構面試筆試專題資料及經驗(含答案)和學習筆記: ActiveMQ消息中間件面試專題.pdf

    Java架構面試筆試專題資料及經驗(含答案)和學習筆記: ActiveMQ消息中間件面試專題.pdf(大學電源課程設計)-Java架構面試筆試專題資料及經驗(含
    發表于 07-26 11:28 ?2次下載
    Java架構<b class='flag-5'>面試</b>筆試專題資料及經驗(含<b class='flag-5'>答案</b>)和學習筆記: ActiveMQ消息中間件<b class='flag-5'>面試</b>專題.pdf
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>