天天看點

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

文章目錄

    • 本面試題題庫,由公号:非大學程式員 整理釋出
    • 第1題: 簡述解釋型和編譯型程式設計語言?
    • 第2題:Python解釋器種類以及特點?
    • 第3題: 位和位元組的關系?
    • 第4題: 位元組碼和機器碼的差別?
      • 機器碼(machine code)
      • 位元組碼(Bytecode)
    • 第5題:Python3和Python2中 int 和 long的差別?
    • 第6題:關注題,最近在公号更新一個神奇的系列入門文章

解釋型語言編寫的程式不需要編譯,在執行的時候,專門有一個解釋器能夠将VB語言翻譯成機器語言,每個語句都是執行的時候才翻譯。這樣解釋型語言每執行一次就要翻譯一次,效率比較低。

用編譯型語言寫的程式執行之前,需要一個專門的編譯過程,通過

編譯系統

,把源進階程式編譯成為機器語言檔案,翻譯隻做了一次,運作時不需要翻譯,是以編譯型語言的程式執行效率高,但也不能一概而論,

部分解釋型語言的解釋器通過在運作時動态優化代碼,甚至能夠使解釋型語言的性能超過編譯型語言。

  • 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代碼,十分的友善!

  • bit就是位,也叫比特位,是計算機表示資料最小的機關
  • byte就是位元組

1byte=8bit

1byte就是1B

一個字元=2位元組

1KB=1024B

位元組就是Byte,也是B

位就是bit也是b

轉換關系如下:

  • 1B= 8b

機器碼(machine code)

,學名機器語言指令,有時也被稱為原生碼(Native Code),是電腦的

CPU

可直接解讀的資料。

通常意義上來了解的話,機器碼就是計算機可以直接執行,并且執行速度最快的代碼。

用機器語言編寫程式,程式設計人員要首先熟記所用計算機的全部指令代碼和代碼的涵義。

手程式設計式時,程式員得自己處理每條指令和每一資料的存儲配置設定和輸入輸出,還得記住程式設計過程中每步所使用的工作單元處在何種狀态。

這是一件十分繁瑣的工作,編寫程式花費的時間往往是實際運作時間的幾十倍或幾百倍。

而且,編出的程式全是些0和1的指令代碼,直覺性差,還容易出錯。

現在,除了計算機生産廠家的專業人員外,絕大多數的程式員已經不再去學習機器語言了。

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

8086到Pentium的機器語言指令長度可以從1位元組到13位元組。

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

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

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

位元組碼(Bytecode)

是一種包含執行程式、由一序列 op 代碼/資料對 組成的二進制檔案。位元組碼是一種中間碼,它比機器碼更抽象,需要直譯器轉譯後才能成為機器碼的中間代碼。

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

位元組碼主要為了實作特定軟體運作和軟體環境、與硬體環境無關。位元組碼的實作方式是通過編譯器和虛拟機器。編譯器将源碼編譯成位元組碼,特定平台上的虛拟機器将位元組碼轉譯為可以直接執行的指令。位元組碼的典型應用為Java bytecode。

位元組碼在運作時通過JVM(JAVA虛拟機)做一次轉換生成機器指令,是以能夠更好的跨平台運作。

總結:位元組碼是一種中間狀态(中間碼)的二進制代碼(檔案)。需要直譯器轉譯後才能成為機器碼。

Python 2有為非浮點數準備的int和long類型。

int類型的最大值不能超過sys.maxint,而且這個最大值是平台相關的。

可以通過在數字的末尾附上一個L來定義長整型,顯然,它比int類型表示的數字範圍更大。

在Python 3裡,隻有一種整數類型int,大多數情況下,它很像Python 2裡的長整型。

由于已經不存在兩種類型的整數,是以就沒有必要使用特殊的文法去差別他們。

序号 文章
Python面試題No1 Python基礎面試,看這篇文章畫重點吧
Python面試題No2 Python面試快問快答,理論要的就是速度與精準
Python面試題No3 學習Python一年,基礎忘記了,看看面試題回憶回議
Python面試題No4 去面試Python工程師,這幾個基礎問題一定要能回答
Python面試題No5 2019年,Python工程師必考的6個面試題
Python面試題No6 昨天去面試,這5個Python面試題都被考到了
Python面試題No7 周三面試Python開發,這幾道Python面試題差點答錯,Python面試題No7
Python面試題No8 面試Python工程師,這幾道編碼題有必要背背
Python面試題No9 又面試了Python爬蟲工程師,碰到這麼幾道面試題
Python面試題No10 朋友去面試Python工程師,又帶回來幾道基礎題
Python面試題No11 剛畢業去面試Python工程師,這幾道題太難了
Python面試題No12 五一4天就背這些Python面試題了
Python面試題No13 大意了,這幾道Python面試題沒有答對
Python面試題No14 明天找python工作,看看這幾道Python面試題吧
Python面試題No15 這幾道Python面試題,穩準狠