1. 程式人生 > >python3-開發面試題(python)6.23基礎篇(2)

python3-開發面試題(python)6.23基礎篇(2)

漢字 2個 特殊 問題 ase 第一個 else () 判斷

1、請至少列舉5個 PEP8 規範(越多越好)。

一、代碼編排

1、縮進。4個空格的縮進,不使用Tap,更不能混合使用Tap和空格

2、每行最大長度79,換行可以使用反斜杠,最好使用圓括號。換行點要在操作符的後邊敲回車

二、文檔編排

1、不要在一句import中多個庫,比如import 歐式,sys

三、空格的使用

總體原則,避免不必要的空格

四、註釋

1、總體原則,錯誤的註釋不如沒有註釋,當一段代碼發生變化時,第一件事就是要修改註釋!

2、註釋必須使用英文,最好是完整的句子,首字母要大寫的。

3、避免無謂的註釋

五、命名規範

類的方法第一個參數必須是self,而靜態方法第一個參數必須是cls

遵循python的變量的命名規範。

六、編碼建議

1、編碼中考慮是他python實現的效率等問題,比如運算符‘+’在Jpython中效率卻非常低,采用。join()的方式

2、字符串不要以空格收尾

3、使用startwith() and endswith() 代替切片進行序列前綴或後綴的檢查

4、使用isinstance()比較對象的類型:

5、判斷序列空與不空,if not 條件,優於if 條件

2、通過代碼實現如下轉換:
二進制轉換成十進制:v = “0b1111011”?

int(v,2)
十進制轉換成二進制:v = 18?

bin(v)
八進制轉換成十進制:v = “011”?

int(v,8)
十進制轉換成八進制:v = 30?

oct(v)
十六進制轉換成十進制:v = “0x12”?

int(v,16)

十進制轉換成十六進制:v = 87

hex(v)

3、python遞歸的最大層數?

在pycharm中 遞歸的最大層數是1000次,無限制的遞歸調用自己是沒有意義的

1、遞歸必須要有一個明確的結束條件

2、每次進入更深一層遞歸時,問題規模相比上次遞歸都有應有所減少

3、遞歸效率不高,遞歸層次過多會導致棧溢出

import sys
sys.setrecursionlimit(遞歸的最大次數)

4、求結果:
v1 = 1 or 3?

1
v2 = 1 and 3?

3
v3 = 0 and 2 and 1

0
? v4 = 0 and 2 or 1

1
? v5 = 0 and 2 or 1 or 4

1

? v6 = 0 or Flase and 1

1

詳細過程可以點擊這裏:https://www.cnblogs.com/ManyQian/p/9216815.html

5、ascii、unicode、utf-8、gbk 區別?

ascii : 8bit=1bytes,一個英文字符占用1個字節 範圍基本只有英文字母、數字和一些特殊字符,只有256個字符

gbk 編碼漢字的: 16bit=2bytes 2個字節表示一個中文字節,1個字節表示英文字節

unicode全世界的所有字節(內存中固定的編碼):16bit=2bytes,2個字節表示一個字符,中文也是2個字節

utf-8萬國碼:1字節表示一個英文字符,3bytes表示一個中文字符

6、字節碼和機器碼的區別?

字節碼是一種中間碼和二進制代碼(文件),需要直譯器轉譯後成為機器碼

字節碼:字節碼通常指的是已經經過編譯的源碼,字節碼的實現方式是通過編譯器和虛擬機器

機器碼:機器語言是一種指令集的體系,這種指令集就是機器碼,是電腦cpu可以直接解讀的數據

計算機可以直接執行,並且執行速度最快的代碼

解釋性語言:程序---》字節碼-----》機器碼 根據具體系統在編譯為機器語言

編譯型語言:程序----》機器碼

7、三元運算規則以及應用場景?

三元運算符的功能與‘if ...else’流程語句一致,它在一行中書寫,代碼非常精練,執行效率更高

嵌套使用的三元運算符可讀性不太好,日後對代碼的維護極可能存在問題

8、列舉 Python2和Python3的區別?

1、print被視為一個語句而不是一個函數

2、整數的除法,2.7不直觀

3、支持Unicode 2.7默認ASCII 3中默認Unicode

4、後續發展 2.7官方沒有後續支持,3才是正統

python3-開發面試題(python)6.23基礎篇(2)