Python的面試題


(1)怎么把一個字符串轉換成整型?

      可以使用int函數  如 int('3')   結果由字符串'3'變為整型3

(2)python內建數據類型有哪些?

      int 、bool、 str、list、 ruple、dict

(3)怎么把一個數字格式化輸出為10位寬度,不足前面補零?

      可以用'%010d' % 56    或者  '{:010}'.format(56)

(4)‘4567’[3:]的運行結果是什么?

      切片操作,下標從0開始  0 1 2 3    也就是'4567'中的第四個數   結果為7

(5)什么是負索引?

      負索引從右邊開始檢索,同樣可用於切片操作  a[:-1]

(6)深拷貝和淺拷貝的區別?

      深拷貝:將對象本身復制給另一個對象,用deepcopy()函數

      淺拷貝:將對象的引用復制給另一個對象copy()

(7)解釋python中的join()和split()函數?

      join()是將指定的字符串添加到字符串中

      split是用來分割字符串的

(8)python中標識符的命名規則?

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

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

      python標識符區分大小寫

      關鍵字不能作為標識符。如 read / for /  in / true / def  等

(9)如何刪除字符串中的前置空格?

      Istrip()  -----  用於刪除字符串的前置空格;  rstrip()  -----用於刪除字符串后置空格

(10)如何將字符串轉換為小寫?

      lower()   -----  用於將字符串中所有字母轉化為小寫;    upper()   ------  用於將字符串中所有字母轉化為大寫

(11)如何申明多個變量並賦值?

      申明多個變量並賦值有兩種方式:① a,b,c =1,2,3

                                                 ② a = b = 3

(12)tuple和list的區別主要是什么?

      列表是可變的,能添加修改刪除元素;而元組是不可變的,不能添加修改刪除元素。

      元組比列表的訪問和處理速度快

      列表不能為字典的鍵,而元組可以。

(13)列出python中可變數據類型和不可變數據類型?

      可變數據類型:列表、字典

      不可變數據類型:數值型、字符串、元組

(14)字典如何刪除鍵?如何合並兩個字典?

      刪除鍵  -----   del dict['name']

      合並兩個字典  dict1.update(dict2)

(15)python如何實現列表去重?

      先用集合去重,因為集合是有序且唯一的  a = set(list)

      然后轉化為列表b = [x for x in a ]   for循環返回來的是列表類型

(16)打開文件的時候,用with open ... as ...這種方式有什么好處?

      這種方式不需要調用close方法來關閉文件句柄。如果直接用open()這種方式,忘記關閉文件句柄,會造成文件一直打開的后果。

(17)read 、readline、readlines三者的區別是什么?

      read  -----讀取整個文件   fo.read(2)   不填參 表示讀全部  2表示讀兩個字符

      readline  ---- 讀取下一行   fo.readlin()

      readlines  -----  讀取所有行  fo.readlines()

(18)執行import語句時,解釋器是如何查找模塊文件的?

      最終是通過sys.pat決定的。通常我們可以通過修改環境變量PYTHONPATH來添加自己的模塊搜索路徑

(19)什么情況下,python對象會被解釋器清除?

      當該對象沒有任何指向它的引用(引用計數為0)

(20)一個目錄要成為Python的package需要什么?

      需要在目錄下面加上init.py文件

(21)python中的pass語句有什么用?

      為了保證語法檢查的正確必須輸入一些東西,類似於break語句可以跳出循環。continue是跳到下一輪循環。

(22)python中調用外部程序有哪些方法?

      可以使用os.system或者subprocess模塊里面的函數(比如 check_output)

(23)python函數參數定義里面 *    **分別是什么意思?

      帶 * 表示可變參數 ;帶**表示關鍵字可變參數。

      如   def  func(a, *inList, b=100, **c):    **c關鍵字參數只能放在后面   a是必填參數,b是缺省參數

(24)range(10000)和xrange(10000)的區別是什么?

      range和xrange都是在循環中使用,輸出結果一樣。

      range返回的是一個list對象,而xrange返回的是一個生成器對象。

      一般比較大的循環,建議使用xrange,從性能考慮會更快一些。

(25)python代碼中如果有中文,代碼文件應該做如何處理?

      在頂部注釋中,加入類似#coding=utf8這樣的申明,但是要注意代碼文件是什么中文編碼格式,是gbk還是utf8,聲明的編碼格式匹配就可以。

      在python3中,默認支持中文,所以不需要單獨去申明編碼格式。

(26)如何把unicode字符串的編碼成為utf8的字符串?

      如 'abc'.encode('utf8')    當然解碼 就用 decode()

(27)進程和線程的區別?

      進程是運行着的程序,而線程是進程中指令的執行單元。代碼指令必須在操作系統分配的線程中執行。

      一個進程至少包含一個線程。

(28) 進程間通信有哪些方法?

       共享內存、session通信都可以。

(29)兩個線程更新一個dict里面的內容,該怎么設計?

      在訪問共享對象的代碼前,要調用Lock對象的acquire方法,進行上鎖。

      當多個線程同時執行Lock.acquire()時,只有一個線程能成功獲取鎖,然后繼續執行代碼,其他線程就繼續等待直到獲得鎖為止。

      訪問結束后,一定要調用Lock對象的relese方法,進行解鎖操作。否則其他等待鎖的線程將永遠等待下去,成為死線程。

(30)在面向對象中,__new__和__init__的區別?

       __init__時初始化方法,創建對象后,就立刻被默認調用了, 可接收參數

      __new__至少要一個參數cls,代表當前類,次參數在實例化時由python解釋器自動識別。

(31)列出5個python標准庫?

      os   -----   提供了不少與操作系統相關聯的函數

      sys  -----   通常用於命令行參數

      re   -----    正則匹配

      math   -----   數學運算

      datetime  ----   處理日期時間

(32)用lambda函數實現兩個數相乘

      sum = lambda a,b:a*b

      print(sum)

(33)如何在python中使用多進制數字?

      二進制由0和1組成,前綴一般是ob或0B  表示二進制數

      八進制由0-7組成,前綴一般是0o或00  表示八進制數

      十六進制由0-15組成,前綴一般是0x或0X  表示十六進制數

(34)python中生成隨機整數、隨機小數、0-1之間小數方法?

      import random

      import numpy as np

      print(random.random())   # 隨機生成0-1之間的小數

      print(random.randint(1, 10))   # 隨機生成1-10之間的整數

      print(np.randn(5))   # 在0-1范圍內,隨機生成5個小數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM