小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

最常見的 35 個 Python 面試題及答案(2018 版)

 gexian 2019-04-05

雷鋒網(wǎng)按:本文為 AI 研習社編譯的技術(shù)博客,原文 Top 35 Python Interview Questions and Answers in 2018 ,作者 DataFlair Team。

翻譯 | 于志鵬   整理 | 凡江

1. Python 面試問題及答案

作為一個 Python 新手,你必須熟悉基礎(chǔ)知識。在本文中我們將討論一些 Python 面試的基礎(chǔ)問題和高級問題以及答案,以幫助你完成面試。包括 Python 開發(fā)問題、編程問題、數(shù)據(jù)結(jié)構(gòu)問題、和 Python 腳本問題。讓我們來深入研究這些問題。

Python 面試問題

Q.1. Python 的特點和優(yōu)點是什么?

Python 可以作為編程的入門語言,因為他具備以下特質(zhì):

1.  解釋性

2.  動態(tài)特性

3.  面向?qū)ο?/p>

4.  語法簡潔

5.  開源

6.  豐富的社區(qū)資源

實際上 Python 的優(yōu)點遠不止這些,更詳細的介紹可以閱讀 Introduction to Python(  https://aining/blogs/python-tutorial/)

Q.2. 深拷貝和淺拷貝的區(qū)別是什么?

深拷貝是將對象本身復制給另一個對象。這意味著如果對對象的副本進行更改時不會影響原對象。在 Python 中,我們使用 deepcopy()函數(shù)進行深拷貝,使用方法如下:

深拷貝-Python 面試問題及答案

淺拷貝是將對象的引用復制給另一個對象。因此,如果我們在副本中進行更改,則會影響原對象。使用 copy()函數(shù)進行淺拷貝,使用方法如下:

淺拷貝—Python 面試問題及答案

Q.3. 列表和元祖有什么不同?

主要區(qū)別在于列表是可變的,元祖是不可變的。看下面的例子:

會出現(xiàn)以下錯誤提示:

TypeError: ‘tuple’  object does not support item assignment

關(guān)于列表和元祖的更多內(nèi)容參考 Tuples vs Lists(  https://aining/blogs/python-tuples-vs-lists/)

2. Python 面試基礎(chǔ)題

Q.4 到 Q.20 是新手經(jīng)常會被問到的一些 Python 基礎(chǔ)題,有經(jīng)驗的人也可以參考這些問題來復習這些概念。

Q.4. 解釋 Python 中的三元表達式

與 C++不同, 在 Python 中我們不需要使用 ? 符號,而是使用如下語法:

[on true] if []else [on false]

如果 [] 為真, 則 [on true] 部分被執(zhí)行。如果表示為假則 [on false] 部分被執(zhí)行

下面是例子:

2

Hi

Q.5. Python 中如何實現(xiàn)多線程?

線程是輕量級的進程,多線程允許一次執(zhí)行多個線程。眾所周知,Python 是一種多線程語言,它有一個多線程包。

GIL(全局解釋器鎖)確保一次執(zhí)行單個線程。一個線程保存 GIL 并在將其傳遞給下一個線程之前執(zhí)行一些操作,這就產(chǎn)生了并行執(zhí)行的錯覺。但實際上,只是線程輪流在 CPU 上。當然,所有傳遞都會增加執(zhí)行的開銷。

Q.6. 解釋繼承

一個類繼承自另一個類,也可以說是一個孩子類/派生類/子類,繼承自父類/基類/超類,同時獲取所有的類成員(屬性和方法)。

繼承使我們可以重用代碼,并且還可以更方便地創(chuàng)建和維護代碼。Python 支持以下類型的繼承:

1.  單繼承- 一個子類類繼承自單個基類

2.  多重繼承- 一個子類繼承自多個基類

3.  多級繼承- 一個子類繼承自一個基類,而基類繼承自另一個基類

4.  分層繼承- 多個子類繼承自同一個基類

5.  混合繼承- 兩種或兩種以上繼承類型的組合

關(guān)于繼承的更多內(nèi)容參考 Python Inheritance(  https://aining/blogs/python-inheritance/)

Q.7. 什么是 Flask?

Flask 是一個使用 Python 編寫的輕量級 Web 應(yīng)用框架,使用 BSD 授權(quán)。其 WSGI 工具箱采用 Werkzeug,模板引擎則使用 Jinja2。除了 Werkzeug 和 Jinja2 以外幾乎不依賴任何外部庫。因為 Flask 被稱為輕量級框架。

Flask 的會話會話使用簽名 cookie 來允許用戶查看和修改會話內(nèi)容。它會記錄從一個請求到另一個請求的信息。但如果要修改會話,則必須有密鑰 Flask.secret_key。

我們將在后續(xù)的課程中進一步討論 Flask。

Q.8. 如何在 Python 中管理內(nèi)存?

Python 用一個私有堆內(nèi)存空間來放置所有對象和數(shù)據(jù)結(jié)構(gòu),我們無法訪問它。由解釋器來管理它。不過使用一些核心 API,我們可以訪問一些 Python 內(nèi)存管理工具控制內(nèi)存分配。

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

help() 函數(shù)返回幫助文檔和參數(shù)說明:

運行結(jié)果如下:

Help on function copy in module copy

copy(x)

Shallow copy operation on arbitrary Python objects.

See the module』s __doc__ string for more info.

dir() 函數(shù)返回對象中的所有成員 (任何類型)

Q.10. 當退出 Python 時是否釋放所有內(nèi)存分配?

答案是否定的。那些具有對象循環(huán)引用或者全局命名空間引用的變量,在 Python 退出是往往不會被釋放

另外不會釋放 C 庫保留的部分內(nèi)容。

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

在運行時動態(tài)修改類和模塊

Hi, monkey

Q.12. 什么是 Python 字典?

字典是我在 C++和 Java 中沒有見過的數(shù)據(jù)結(jié)構(gòu),它擁有鍵-值對

3

字典是可變的,我們也可以用推導式的方式創(chuàng)建它.

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

要了解更多字典的內(nèi)容請點擊 Python Dictionaries(  https://aining/blogs/python-dictionaries/)

Q.13. 能否解釋一下 *args 和 **kwargs?

如果我們不知道將多少個參數(shù)傳遞給函數(shù),比如當我們想傳遞一個列表或一個元組值時,就可以使用*args。

3

2

1

4

7

當我們不知道將會傳入多少關(guān)鍵字參數(shù)時,使用**kwargs 會收集關(guān)鍵字參數(shù)。

a.1

b.2

c.7

使用 args 和 kwargs 作為參數(shù)名只是舉例,可以任意替換。

對于 Python 的基礎(chǔ)題任何疑問,請在評論區(qū)提問。

Q.14. 編程實現(xiàn)計算文件中的大寫字母數(shù)

26

Q.15. 什么是負索引?

我們先創(chuàng)建如下列表:

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

6

同樣可以用于列表的切片:

[3, 4, 5, 6, 7]

Q.16. 如何隨機打亂列表中元素,要求不引用額外的內(nèi)存空間?

我們用 random 包中的 shuffle() 函數(shù)來實現(xiàn)。

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

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

join() 函數(shù)可以將指定的字符添加到字符串中。

‘1,2,3,4,5’

split() 函數(shù)可以用指定的字符分割字符串

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

Q.18. Python 區(qū)分大小寫嗎?

驗證 Python 是否區(qū)分大小寫的方法是測試 myname 和 Myname 在程序中是不是算同一個標識符。觀察以下代碼的返回結(jié)果:

Myname

NameError: name  ‘Myname’ is not defined

如你所見,這里出現(xiàn)了 NameError,所以 Python 是區(qū)分大小的語言。

Q.19. Python 中標識符的命名規(guī)則?

Python 中的標識符可以是任意長度,但必須遵循以下命名規(guī)則:

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

2.  其余部分只能使用 A-Z/a-z/0-9。

3.  Python 標識符區(qū)分大小寫。

4.  關(guān)鍵字不能作為標識符。Python 有以下這些關(guān)鍵字:

Q.20. 如何刪除字符串中的前置空格

前置空格是第一個非空格字符前的所有空格,使用 lstrip() 函數(shù)來刪除.

‘Ayushi   ‘

如圖這個字符串既包含前置空格也包含后置空格. 調(diào)用 lstrip() 函數(shù)去除了前置空格。如果想去除后置空格,使用 rstrip() 函數(shù)。

‘   Ayushi’

以上是面向 Python 新手的基礎(chǔ)題部分。

3. Python 面試進階題

Q. 21 至 Q. 35 是針對有經(jīng)驗者的一些 Python 面試問題及其答案和示例。

Q.21. 如何將字符串轉(zhuǎn)換為小寫?

使用 lower() 函數(shù)

‘a(chǎn)yushi’

轉(zhuǎn)換為大寫用 upper() 函數(shù)

‘AYUSHI’

要檢查字符串是否為全大寫或全小寫,使用 isupper() 和 islower() 函數(shù)

像 @ 和$這樣的字符即滿足大寫也滿足小寫。

istitle() 可以檢查字符串是否是標題格式。

True

Q.22. Python 中的 pass 語句有什么作用?

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

類似的 break 語句可以跳出循環(huán)。

0

1

2

continue 語句可以跳到下一輪循環(huán)。

0

1

2

4

5

6

Q.23. 請解釋 Python 中的閉包?

如果在一個內(nèi)部函數(shù)里。對在外部作用域(但不是在全局作用域)的變量進行引用,那么內(nèi)部函數(shù)就是一個閉包。

7

閉包的詳細解釋請點擊 Closures in Python。(https://aining/blogs/python-closure/)

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

//運算符執(zhí)行地板除法,返回結(jié)果的整數(shù)部分 (向下取整)。

3

用/符號除法結(jié)果為 3.5。

**符號表示取冪. a**b 返回 a 的 b 次方

1024

% 是取模符號。返回除法后的余數(shù)。

6

0.5

對于 Python 進階面試問題和答案有任何疑問請在評論區(qū)提問。

Q.24. Python 中有多少種運算符,解釋算術(shù)運算符。

這類面試問題可以判斷你的 Python 功底,可以舉一些實例來回答這類問題。

在 Python 中我們有 7 中運算符:算術(shù)運算符、關(guān)系 (比較) 運算符、賦值運算符、邏輯運算符、位運算符、成員運算符、身份運算符。

1.  加號 (+) 將兩個對象的值相加。

15

2.  減號 (-) 將第一個對象的值減去第二個對象的值。

-1

3.  乘號 (*) 將兩個對象的值相乘。

56

4.  除號 (/) 將第一個對象的值除以第二個對象的值。

0.875

1.0

關(guān)于地板除法、取模和取冪,請參考上一個問題。

Q.25. 解釋 Python 中的關(guān)系運算符。

關(guān)系運算符用來比較兩個對象。

1.  判斷小于 (<):如果符號左邊的值比右邊小則返回 True。

False

2.  判斷大于 (>):如果符號左邊的值比右邊大則返回 True。

True

出現(xiàn)上面的錯誤結(jié)果是因為 Python 的浮點運算存在一些 Bug。

3.  判斷小于等于 (<=):如果符號左邊的值小于或等于右邊則返回 True。

True

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

True

5.  判斷等于 (==) 如果符號兩邊的值相等則返回 True。

True

6.  判斷不等于 (!=) 如果符號兩邊的值不等則返回 True。

True

True

Q.26. 解釋 Python 中的賦值和算數(shù)運算符?

這是面試中的常見題目。我們將算數(shù)運算符和賦值符號放在一起介紹。

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

Python 中有三個邏輯運算符:and、or、not

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

使用 in 和 not in 運算符我們可以判斷某個值是否在成員中。

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

這是非常常見的 Python 面試題,用下面的示例來回答.

is 和 not is 運算符可以判斷兩個對象是否相同

Q.30. 解釋 Python 中的位運算符

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

1.  與 (&) 返回按位與結(jié)果

2.  或 (|) 返回按位或結(jié)果

3.  異或 (^) 返回按位異或結(jié)果

1

4.  取反 (~) 返回按位取反結(jié)果

-3

5.  左移位 (<<) 將符號左邊數(shù)的二進制左移右邊數(shù)位

4

1 的二級制 001 左移 2 位變成 100 也即十進制的 4

6.  右移位 (>>)

1

想了解關(guān)于位運算符的更多內(nèi)容請點擊 Operators in Python(https://aining/blogs/python-operators/)

Q.31. 如何在 Python 使用多進制數(shù)字?

除十進制以外,在 Python 中還可以使用二進制、八進制、十六進制。

1.  二進制數(shù)有 0 和 1 組成,我們使用 0b 或 0B 前綴表示二進制數(shù)

10

使用 bin() 函數(shù)可以將數(shù)字轉(zhuǎn)換為二進制

‘0b1111’

2.  八進制數(shù)由數(shù)字 0-7 組成,使用前綴 0o 或 0O 表示 8 進制數(shù)

‘0o10’

3.  十六進數(shù)由數(shù)字 0-15 組成,使用前綴 0x 或者 0X 表示 16 進制數(shù)

‘0x10’

‘0xf’

Q.32. 如何獲取字典中的所有鍵?

使用 keys() 來獲取字典中的所有鍵

Q.33. 問什么標識符不建議使用下劃線開頭?

因為在 Python 中以下劃線開頭的變量為私有變量,如果你不想讓變量私有,就不要使用下劃線開頭。

Q.34. 如何聲明多個變量并賦值?

有兩種方式:

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

首先我們來介紹元組封裝:

(3, 4, 5)

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

現(xiàn)在我們要將這些值解封裝到變量 x,y,z 中

12

以上是 Python 高級面試問題和答案,新手也可以參考這些問題以獲得進階的 Python 知識。

4. 結(jié)束語

本篇文章介紹了一些重要的 Python 面試問題和答案,后續(xù)我們還會增加。在你面試之前應(yīng)該熟練掌握這些。如有想添加的問題歡迎隨時評論。

原文鏈接:https://aining/blogs/top-python-interview-questions-answer/

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多