震驚!幾道Python 理論面試題,Python面試題No18

本面試題題庫,由公號:非本科程序員 整理髮布

第1題: 簡述解釋型和編譯型編程語言?

解釋型語言編寫的程序不須要編譯,在執行的時候,專門有一個解釋器可以將VB語言翻譯成機器語言,每一個語句都是執行的時候才翻譯。這樣解釋型語言每執行一次就要翻譯一次,效率比較低。python

用編譯型語言寫的程序執行以前,須要一個專門的編譯過程,經過編譯系統,把源高級程序編譯成爲機器語言文件,翻譯只作了一次,運行時不須要翻譯,因此編譯型語言的程序執行效率高,但也不能一律而論,程序員

部分解釋型語言的解釋器經過在運行時動態優化代碼,甚至可以使解釋型語言的性能超過編譯型語言。面試

第2題:Python解釋器種類以及特色?

  • Python

當 從Python官方網站下載並安裝好Python2.7後,就直接得到了一個官方版本的解釋器:Cpython,這個解釋器是用C語言開發的,因此叫 CPython,在命名行下運行python,就是啓動CPython解釋器,CPython是使用最廣的Python解釋器。編程

  • IPython

IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的,比如不少國產瀏覽器雖然外觀不一樣,但內核實際上是調用了IE。瀏覽器

  • PyPy

PyPy是另外一個Python解釋器,它的目標是執行速度,PyPy採用JIT技術,對Python代碼進行動態編譯,因此能夠顯著提升Python代碼的執行速度。編程語言

  • Jython

Jython是運行在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節碼執行。性能

  • IronPython

IronPython和Jython相似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,能夠直接把Python代碼編譯成.Net的字節碼。學習

在Python的解釋器中,使用普遍的是CPython,對於Python的編譯,除了能夠採用以上解釋器進行編譯外,技術高超的開發者還能夠按照本身的需求自行編寫Python解釋器來執行Python代碼,十分的方便!優化

第3題: 位和字節的關係?

  • bit就是位,也叫比特位,是計算機表示數據最小的單位
  • byte就是字節

1byte=8bit網站

1byte就是1B

一個字符=2字節

1KB=1024B

字節就是Byte,也是B

位就是bit也是b

轉換關係以下:

  • 1KB=1024B
  • 1B= 8b

第4題: 字節碼和機器碼的區別?

機器碼(machine code)

機器碼(machine code),學名機器語言指令,有時也被稱爲原生碼(Native Code),是電腦的CPU可直接解讀的數據。

一般意義上來理解的話,機器碼就是計算機能夠直接執行,而且執行速度最快的代碼。

用機器語言編寫程序,編程人員要首先熟記所用計算機的所有指令代碼和代碼的涵義。 手編程序時,程序員得本身處理每條指令和每一數據的存儲分配和輸入輸出,還得記住編程過程當中每步所使用的工做單元處在何種狀態。 這是一件十分繁瑣的工做,編寫程序花費的時間每每是實際運行時間的幾十倍或幾百倍。 並且,編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯。 如今,除了計算機生產廠家的專業人員外,絕大多數的程序員已經再也不去學習機器語言了。

機器語言是微處理器理解和使用的,用於控制它的操做二進制代碼。

8086到Pentium的機器語言指令長度能夠從1字節到13字節。

儘管機器語言好像是很複雜的,然而它是有規律的。

存在着多至100000種機器語言的指令。這意味着不能把這些種類所有列出來。

總結:機器碼是電腦CPU直接讀取運行的機器指令,運行速度最快,可是很是晦澀難懂,也比較難編寫,通常從業人員接觸不到。

字節碼(Bytecode)

字節碼(Bytecode)是一種包含執行程序、由一序列 op 代碼/數據對 組成的二進制文件。字節碼是一種中間碼,它比機器碼更抽象,須要直譯器轉譯後才能成爲機器碼的中間代碼。

一般狀況下它是已經通過編譯,但與特定機器碼無關。字節碼一般不像源碼同樣可讓人閱讀,而是編碼後的數值常量、引用、指令等構成的序列。

字節碼主要爲了實現特定軟件運行和軟件環境、與硬件環境無關。字節碼的實現方式是經過編譯器和虛擬機器。編譯器將源碼編譯成字節碼,特定平臺上的虛擬機器將字節碼轉譯爲能夠直接執行的指令。字節碼的典型應用爲Java bytecode。

字節碼在運行時經過JVM(JAVA虛擬機)作一次轉換生成機器指令,所以可以更好的跨平臺運行。

總結:字節碼是一種中間狀態(中間碼)的二進制代碼(文件)。須要直譯器轉譯後才能成爲機器碼。

第5題:Python3和Python2中 int 和 long的區別?

Python 2有爲非浮點數準備的int和long類型。 int類型的最大值不能超過sys.maxint,並且這個最大值是平臺相關的。 能夠經過在數字的末尾附上一個L來定義長整型,顯然,它比int類型表示的數字範圍更大。

在Python 3裏,只有一種整數類型int,大多數狀況下,它很像Python 2裏的長整型。 因爲已經不存在兩種類型的整數,因此就沒有必要使用特殊的語法去區別他們。

第6題:關注題,最近在公號更新一個神奇的系列入門文章

歡迎關注夢想橡皮擦的的公衆號,搜索 — 非本科程序員

打開直接關注

weixin.sogou.com/weixin?type…

相關文章
相關標籤/搜索