亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python 面試題和答案

系統 1941 0

基礎

  1. 解釋型語言和編譯型語言的區別
    a) 編譯型語言是在運行之前對源碼進行編譯,使其成為機器可以識別的機器語言
    b) 解釋型語言不需要編譯,而是在語句執行時候才將語句翻譯為機器語言
    c)解釋型語言相對于編譯型語言來說由于執行時候需要翻譯,因此效率比較低
  2. Python 解釋器種類和特點
    a)CPython(使用最廣)
    b)IPython(交互式解釋器)
    c)PyPy(顯著提高執行效率)
    d)Jpython
    e)IronPython
  3. 位和字節的關系
    a)1 byte = 8 bits
  4. Python進制轉換
    a)使用int() 十進制:二進制
    b)hex() 十六進制
    c)bin() 二進制
    d)oct() 八進制
  5. Python遞歸的最大層數?
    a) 998
    b)可以通過一下代碼來設置
                    
                      sys
                      
                        .
                      
                      setrecursionlimit
                      
                        (
                      
                      
                        )
                      
                    
                  
  6. ascii、unicode、utf-8、gbk的區別
    a)ascii是英語字符和二進制數之間的關系。一共規定了128個字符的編碼
    b)Unicode是一個更大的字符和二進制之前的對應關系,一共容納100多萬個字符
    c)UTF-8是Unicode最廣的實現方式
    d)gbk?
  7. 字節碼和機器碼的區別?
    a)機器碼是機器可以識別,可以直接在機器上運行的二進制
    b)字節碼來自源碼,由編譯器編譯源碼而形成的二進制文件,可以在不同的運行環境中,通過虛擬運行環境來在機器上執行
  8. 三元運算規則
    a)condistion_true if condition else condistion_false
    b)
  9. 用一行代碼實現數值交換
    a)a, b = b, a
  10. xrange 和 range的區別
    a)xrange 生成的是一個生成器,range生成的是一個list對象
    b)要生成很大的數字序列的時候,使用xrange會比使用range性能更優
  11. lambda 表達式格式以及應用場景
    a)lambda x: func_body
    b)常用來作為函數參數輸入函數,像是作為sort的key parameter
  12. pass的作用
    a)作為占位符,來保證程序結構的完整性
  13. *args 和 **kwarg 的作用
    a)*args 是用來傳入任意數量的位置參數
    b)*kwarg是傳入任意數量的關鍵字參數
  14. is 和 ==的區別
    a)is 和==都是用來 比較python對象的
    b)python對象包含三個基本元素, id, type(數據類型), value(值)
    c)is 比較對象id, 判斷對象是否為同一實例對象,是否指向同一內存地址
    e)== 判斷是,兩個對象的內容是否相等
  15. python的深淺拷貝和應用場景
    a)淺拷貝:創造新的對象
    b)深拷貝:使用舊的對象
    c)copy.copy() 創造淺拷貝, 注意有的時候會是深拷貝
    d)copy.deepcopy() 創造深拷貝
  16. Python 的垃圾回收機制
    a) 引用計數機制為主,標記-清除和分代收集為輔
  17. 常見的內置函數
    a)abs(), all(), set(), any(), dict(), dir(),
    b)enumerate(), eval()
    c)filter(), map(), float(), input(), len(),
    e) open(),round(), sorted()
  18. python可變類型和不可變類型
    a)string, tuple, number 是不可變的
    b)list,dict是可變的
    對不可變對象賦值,是重新創建一個對象,并將指針指向新的對象,并銷毀舊有對象
    對可變對象,是在同一內存地址,在原處修改
    因此可變對象作為函數參數時候,要小心在函數內對可變對象的修改
  19. re模塊中match 和 search的區別
    a)match是從字符串開始位置檢測,如果開始位置不符合則返回
    b)search會從任意位置開始檢測(搜索整個字符串),直到發現符合的再返回
    c)match比search的速度快
  20. 什么是正則表達式的貪婪匹配?
    a)在整個表達式匹配成功的前提下,盡可能多的去匹配,有多少要多少,盡可能多的
  21. ()會產生生成器,[]會產生列表
  22. 可變類型作為函數默認參數
    a)默認參數只是在函數定義的時候被初始化一次,而且因為是可變類型,因此全局只保存一個實例,所以任何在默認參數上的操作都會反映到指向他的對象上
    b)如果要使用object作為默認參數,盡量使用None,而不是相關類型
  23. 一行實現刪除列表中重復元素
    a) 元素位置會被打亂
                    
                      list_item 
                      
                        =
                      
                      
                        [
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        2
                      
                      
                        ,
                      
                      
                        3
                      
                      
                        ,
                      
                      
                        3
                      
                      
                        ]
                      
                      
                        print
                      
                      
                        (
                      
                      
                        list
                      
                      
                        (
                      
                      
                        set
                      
                      
                        (
                      
                      list_item
                      
                        )
                      
                      
                        )
                      
                    
                  
    b)保持元素位置
                    
                      	list_item 
                      
                        =
                      
                      
                        [
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        2
                      
                      
                        ,
                      
                      
                        2
                      
                      
                        ,
                      
                      
                        3
                      
                      
                        ]
                      
                      
                        print
                      
                      
                        (
                      
                      
                        sorted
                      
                      
                        (
                      
                      
                        set
                      
                      
                        (
                      
                      list_item
                      
                        )
                      
                      
                        ,
                      
                       keys
                      
                        =
                      
                      list_item
                      
                        .
                      
                      index
                      
                        )
                      
                      
                        )
                      
                      
    	```
    
                    
                  
  24. 如何在函數中設置全局變量?
    a)使用global關鍵字
  25. 如何用代碼實現stack
            
              
                class
              
              
                Stack
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                )
              
              
                :
              
              
		self
              
                .
              
              items 
              
                =
              
              
                [
              
              
                ]
              
              
                def
              
              
                is_empty
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                return
              
               self
              
                .
              
              items 
              
                ==
              
              
                [
              
              
                ]
              
              
                def
              
              
                size
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                return
              
              
                len
              
              
                (
              
              self
              
                .
              
              items
              
                )
              
              
                def
              
              
                pop
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                return
              
               self
              
                .
              
              items
              
                .
              
              pop
              
                (
              
              
                )
              
              
                def
              
              
                push
              
              
                (
              
              self
              
                ,
              
               val
              
                )
              
              
                :
              
              
                return
              
               self
              
                .
              
              items
              
                .
              
              append
              
                (
              
              val
              
                )
              
            
          
  1. 如何生成一個隨機數
    a)random package
    random.randint(start, end)
    random.choice(seq)
    random.choices(seq, k)
    random.sample(seq, k)
    random.random() float number from 0 to 1
    b) numpy.random package
  2. 常用的字符串格式化
    a)用數字指定位置
    b)為位置命名,可以傳入字典變量
    c)可以傳入對象,并調用對象屬性
    d){:.2f}
    e) {:+.2f}
    f) {:0 > 2d}數字左邊補零,寬度為2
    g) {:0<4d} 數字右邊補零,寬度為4
    h) {:,} 用逗號分隔數字
    i) {:.2 %}百分比格式
    k) {:.2e} 指數計數法格式
    l){:10d}, {:<10d}, {:^10d}, 右對齊,左對齊,中間對齊
  3. functools中的函數作用?
    a)作用于一些定義好的函數,幫助我們更好的實現對函數的包裝和實用
  4. 實例方法,靜態方法和類方法的區別和應用
    a)參數不同,實例方法參數必須有self, 類方法必須有cls, 靜態方法可以啥也沒有
    b)繼承時,子類調用父類靜態方法,調用的是父類的雷屬性,而調用類方法時,調用的是子類的類屬性
  5. 如何判斷變量是否為nan
    a)==不能夠使用,可以使用is,但有時候會出錯
    b)最好使用math中的isnan, math.isnan()
  6. 列舉面向對象中的特殊成員以及應用場景
    a)成員
    a. __dict__成員:以字典的方式來獲取類或對象中的所有成員
    b)方法
    b. __call__方法:執行對象的構造方法
    c. getitem (self, item): 類似于一種運算符重載(重載[]運算符)
    d. setitem (self, key, item): 設置對象的相關屬性
    e. delitem (self, key): 刪除對象相關屬性
    f. iter (self): 保證對象可以被for循環迭代,這樣每次產生一個元素
  7. python反射(自省?)
    a)我們需要執行對象的某個方法或對對象的某個屬性賦值,但是方法名和屬性名在調用的時候不知道。因此我們需要通過某個機制來訪問未知的屬性,反射就是這樣的一個機制
    b)dir(obj) 返回對象的屬性名列表
    c)hasattr(obj, attr) 判斷對象是否有一個attr的屬性
    d)getattr(obj, attr) 返回對象的屬性值
    e)setattr(obj, attr, val) 為對象賦相應的屬性值
    f)inspect模塊提供了一系列函數來幫助我們實現自省機制
  8. 判斷是函數還是方法?
  9. metaclass 作用?
    a)原類將用在創建使用了它的新類調用中
    b)包裝類的所有方法,用以日志記錄或者性能剖析
    c)自動mix-in新方法(不在需要編寫mix類)
  10. 單例模式
    a)使用模塊,模塊在第一次導入時,會生成.pyc文件,當第二次導入時,就會加載.pyc文件,因此我們將需要維持一個單例的對象在模塊中創建,則對象將維持同一單例
    b)__new__使用該方法來創建實例對象
                    
                      Class 
                      
                        Singleton
                      
                      
                        (
                      
                      
                        object
                      
                      
                        )
                      
                      
                        :
                      
                      
    	_instance 
                      
                        =
                      
                      
                        None
                      
                      
                        def
                      
                      
                        __new__
                      
                      
                        (
                      
                      cls
                      
                        ,
                      
                      
                        *
                      
                      args
                      
                        ,
                      
                      
                        **
                      
                      kwargs
                      
                        )
                      
                      
                        :
                      
                      
                        if
                      
                       cls
                      
                        .
                      
                      _instance 
                      
                        is
                      
                      
                        not
                      
                      
                        None
                      
                      
                        :
                      
                      
    			cls
                      
                        .
                      
                      _instance 
                      
                        =
                      
                      
                        object
                      
                      
                        .
                      
                      __new__
                      
                        (
                      
                      cls
                      
                        ,
                      
                      
                        *
                      
                      args
                      
                        ,
                      
                      
                        **
                      
                      kwargs
                      
                        )
                      
                      
                        return
                      
                       cls
                      
                        .
                      
                      _instance
    
                    
                  
    可以參見享原模式(flyweight pattern)單例模式是一種特殊的享元模式
    c)使用裝飾器
    通過定義singleton裝飾器來對相應的類進行裝飾,從而使某個類只能夠產生一個類
    d)使用元類來實現單例模式,通過改變類的元類屬性來改變類的創建方法
                    
                      
                        class
                      
                      
                        MyClass
                      
                      
                        (
                      
                      metaclass
                      
                        =
                      
                      Singleton
                      
                        )
                      
                      
                        :
                      
                      
                        pass
                      
                    
                  
  11. 裝飾器的寫法(函數裝飾器,類裝飾器)
  12. 異常處理的寫法,以及如何主動拋出異常
  13. 什么是面向對象的MRO
  14. 利用json序列化時候,可以處理的數據類型有哪些?如果拓展自定義數據類型使其支持json序列化
  15. 什么是斷言
  16. with 語句的好處,以及為什么使用with語句
    (未完待續)

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人精品亚洲一区 | 久草久热 | 成人性a激情免费视频 | 欧美日韩亚洲在线观看 | 护士一级毛片 | 免费观看视频成人国产 | 国外成人免费高清激情视频 | 久久红综合久久亚洲网色 | 激性欧美激情在线播放16页 | 免费国产成人午夜在线观看 | 亚洲狠狠97婷婷综合久久久久 | 成人a视频在线观看 | 国产精品一区二区三区四区 | 国产色视频一区二区三区 | 国产在线日韩 | 久久精品亚洲欧美日韩久久 | 美女黄频免费观看 | 亚洲精品98久久久久久中文字幕 | 欧美日韩精品一区二区三区四区 | 久草网在线观看 | 最近中文字幕在线视频1 | 国产91在线精品 | 天天摸夜夜添狠狠添2018 | 国产精品人成人免费国产 | 国产在线播放一区二区 | 精品国产免费久久久久久婷婷 | 中文一区在线 | 国产高清视频免费 | 日韩欧美中文在线 | 伊人久久中文 | jiz中国| 久久视频免费 | 日韩一级欧美一级一级国产 | 一级啊片| 国产在线色视频 | 亚洲精品视频网 | 草草在线观看视频 | 国产极品福利视频在线观看 | 色一情一乱一伦麻豆 | 亚洲福利社 | 免费女人18a级毛片视频 |