<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          來自一線互聯(lián)網(wǎng)大廠的Python面試筆試題匯總

          共 7262字,需瀏覽 15分鐘

           ·

          2021-01-17 10:56

          來源:yngzmiao.blog.csdn.net/

          ↑?關注 + 星標?,每天學Python新技能

          后臺回復【大禮包】送你Python自學大禮包


          基礎知識

          1. 列出5個常用Python標準庫?

          import osimport sysimport reimport mathimport timeimport datetimeimport randomimport threadingimport?multiprocessing


          2.?Python的內(nèi)建數(shù)據(jù)類型有哪些?

          intfloat、complex         # 數(shù)值型bool            # 布爾型str             # 字符串list            # 列表tuple           # 元組dict????????????#?字典


          3. 簡述with方法打開處理文件幫我我們做了什么?

          • with語句適用于對資源進行訪問的場合,確保不管使用過程中是否發(fā)生異常都會執(zhí)行必要的清理操作,釋放資源,比如文件使用后自動關閉、線程中鎖的自動獲取和釋放等;

          • with語句即上下文管理器,在程序中用來表示代碼執(zhí)行過程中所處的前后環(huán)境。上下文管理器:含有__enter____exit__方法的對象就是上下文管理器。

          • enter():在執(zhí)行with語句之前,首先執(zhí)行該方法,通常返回一個實例對象,如果with語句有as目標,則將對象賦值給as目標。

          • exit():在執(zhí)行with語句結(jié)束后,自動調(diào)用__exit__()方法,用戶釋放資源,若此方法返回布爾值True,程序會忽略異常

          • 使用環(huán)境:文件讀寫、線程鎖的自動釋放等。

          with context_expression [as target(s)]:????with-body

          這里context_expression要返回一個上下文管理器對象,該對象并不賦值給as子句中的target(s),而是會將上下文管理器的__enter__()方法的返回值賦值給target(s)

          不太清楚的可以參考鏈接:

          https://juejin.cn/post/6844903795403522056

          4. Python的可變和不可變數(shù)據(jù)類型?

          • 不可變數(shù)據(jù)類型:即數(shù)據(jù)被創(chuàng)建之后,數(shù)據(jù)的值將不再發(fā)生改變,有數(shù)值、字符、元祖類型;

          • 可變數(shù)據(jù)類型:數(shù)據(jù)別創(chuàng)建之后,數(shù)據(jù)的值可以發(fā)生變化,有列表、字典、集合類型。

          5. Python獲取當前日期?

          # -*- coding: UTF-8 -*-import datetimeimport time
          if __name__ == "__main__": print(time.time()) # 時間戳 print(time.strftime("%Y-%m-%d %H:%M:%S %w", time.localtime())) # 年月日時分秒????print(datetime.datetime.now())??????#?年月日時分秒

          6. 統(tǒng)計字符串每個單詞出現(xiàn)的次數(shù)。

          def word_amount(sentence):    split_list = sentence.split()    dict_result = {}    for word_name in split_list:        if word_name not in dict_result.keys():            dict_result[word_name] = 1        else:            dict_result[word_name] += 1    return dict_result
          if __name__ == '__main__': sentence = "I can because i think i can" dict_result = word_amount(sentence)????print(dict_result)

          或者:

          if __name__ == '__main__':    sentence = "I can because i think i can"    result = {word: sentence.split().count(word) for word in set(sentence.split())}????print(result)

          或者:

          from collections import Counter
          if __name__ == '__main__': sentence = "I can because i think i can" counts = Counter(sentence.split())????print(counts)

          7. 用python刪除文件和用linux命令刪除文件方法。

          import osos.remove("demo.txt")


          rm?demo.txt

          8. 寫一段自定義異常代碼?

          class printException(Exception):    pass
          def testRaise(): raise printException('printErr')
          if __name__ == '__main__': try: testRaise() except printException, e:????????print?e

          9.?舉例說明異常模塊中try except else finally的相關意義。

          # -*- coding: UTF-8 -*-
          def read_filedata(file_name): file_obj = "" try: # 需要檢測的異常代碼片段 file_obj = open(file_name, "r") result_data = file_obj.read() except IOError, e: # 發(fā)生“IOError”異常進行處理的代碼片段 file_obj = "文件不存在:"+ str(e) else: # 沒有引發(fā)“IOError”異常執(zhí)行的代碼片段,返回讀取到的數(shù)據(jù) return result_data finally: # 不管有沒有引發(fā)錯誤都會執(zhí)行的代碼片段,isinstance()用于判斷一個數(shù)據(jù)類型 if isinstance(file_obj, str): return file_obj elif isinstance(file_obj, file): file_obj.close() else: return "未知錯誤,請檢查您的代碼..."
          if __name__ == '__main__': result = read_filedata("abc.txt")????print(result)

          10. 遇到 bug 如何處理?

          • 首先查看報錯信息,根據(jù)報錯信息找到相應代碼,通常一般的數(shù)據(jù)結(jié)構(gòu)或者算法錯誤只要找到報錯代碼就可以順利解決;

          • 如果遇到暫時不能解決的錯誤先不要慌,我們可以使用編譯器的Debug模式或者自己在代碼中加注斷點進行代碼排查;

          • 如果依然不能解決bug,我們可以拷貝報錯信息,在搜索引擎中進行搜索。沒有人寫代碼不出bug,如果你在一個bug上耗費時間超過半小時,可以與其他同事探討(注意節(jié)制,可能有些費同事);

          • 另辟蹊徑:方法總比困難多,在進行快速開發(fā)時,我們應該優(yōu)先實現(xiàn)功能而不是拘泥于運行效率,所以遇到一些暫時不能解決的BUG可以考慮另外的實現(xiàn)方法。

          語言特性

          1. 談談對Python的了解和其他語言的區(qū)別?


          Python是一門語法簡潔優(yōu)美,功能強大無比,應用領域非常廣泛,具有強大完備的第三方庫的一門強類型動態(tài),可移植,可擴展,可嵌入的解釋型編程語言。

          強類型語言、弱類型語言的區(qū)別:

          • 如果語言經(jīng)常隱式地轉(zhuǎn)換變量的類型,那這個語言就是弱類型語言,如果很少會這樣做,那就是強類型語言。Python很少會隱式地轉(zhuǎn)換變量的類型,所以Python是強類型的語言。

          • 強類型語言和弱類型原因其判斷的根本是是否會隱式進行語言類型轉(zhuǎn)變。強類型原因在速度上可能略遜于弱類型語言,但是強類型定義語帶來的嚴謹性又避免了不必要的錯誤

          • 強類型語言包括:Java、.net、Python、C++等語言。其中Python是動態(tài)語言,是強類型定義語言,是類型安全的語言,Java是靜態(tài)語言,是強類型定義語言,也是類型安全的語言;弱類型語言包括:VB,PHP,JavaScript等語言。其中VBScript是動態(tài)語言,是一種類型不安全的原因。

          動態(tài)語言、靜態(tài)語言的區(qū)別:

          • 動態(tài)類型語言動態(tài)性語言是指在運行期間才去做數(shù)據(jù)類型檢查的語言,也就是說動態(tài)類型語言編程時,永遠不用給任何變量指定數(shù)據(jù)類型,該語言會在第一次賦值給變量時,在內(nèi)部將數(shù)據(jù)類型記錄下來**。Python和Ruby就是一種典型的動態(tài)類型語言,其他的各種腳本語言如VBScript也多少屬于動態(tài)類型語言。

          • 靜態(tài)類型語言:靜態(tài)類型語言與動態(tài)類則剛好相反,它的數(shù)據(jù)類型在編譯期間檢查,也就是說在寫程序時要聲明所有變量的數(shù)據(jù)類型,C/C++是靜態(tài)類型語言的典型代表,其他靜態(tài)語言還有C#、Java等。

          • 對于動態(tài)語言與靜態(tài)語言的區(qū)分,其根本在于數(shù)據(jù)類型是在運行期間檢查還是在編譯期間檢查

          編譯型語言、解釋型語言的區(qū)別:

          • 編譯型語言需要將一段程序直接翻譯成機器碼(對于C/C++這種非跨平臺的語言)或者中間碼(Java這種跨平臺語言,需要虛擬機再將中間碼印射成機器碼)。一般需經(jīng)過編譯(compile)、鏈接(linker)這兩個步驟。編譯是把源代碼編譯成機器碼,鏈接是把各個模塊的機器碼和依賴庫串連起來生成可執(zhí)行文件。

          • 解釋型語言使用解釋器將源碼逐行解釋成機器碼并立即執(zhí)行,不會進行整體性的編譯和鏈接處理,相比編譯型語言省了道工序。

          • 一個像是吃飯等菜都上全了再開動,一個像是吃火鍋,邊涮邊吃,時機不一樣。

          • 解釋型語言的優(yōu)點:跨平臺容易,只需提供特定平臺的解釋器;缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。

          2. 簡述解釋型和編譯型編程語言?


          可參考上一條的解釋內(nèi)容。

          3. Python的解釋器種類以及相關特點?

          • CPython官方版本的解釋器。這個解釋器是用C語言開發(fā)的,所以叫CPython。在命令行下運行python就是啟動CPython解釋器。CPython是使用最廣的Python解釋器。

          • IPython:IPython是基于CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執(zhí)行Python代碼的功能和CPython是完全一樣的。CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。

          • PyPy:它的目標是執(zhí)行速度。PyPy采用JIT技術,對Python代碼進行動態(tài)編譯(注意不是解釋),所以可以顯著提高Python代碼的執(zhí)行速度。絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執(zhí)行可能會有不同的結(jié)果。

          • Jython:Jython是運行在Java平臺上的Python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行。

          • IronPython:IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼。

          4. 說說你知道的Python3和Python2之間的區(qū)別?


          編碼Python2的默認編碼是asscii,這也是導致Python2中經(jīng)常遇到編碼問題的原因之一,至于是為什么會使用asscii作為默認編碼,原因在于Python這門語言誕生的時候還沒出現(xiàn)Unicode。Python3默認采用了UTF-8作為默認編碼,因此你不再需要在文件頂部寫# coding=utf-8了。

          字符串:Python2中字符的類型,str:已經(jīng)編碼后的字節(jié)序列,unicode:編碼前的文本字符;而Python3中字符的類型,str:編碼過的unicode文本字符,bytes:編碼前的字節(jié)序列

          可以認為字符串有兩種狀態(tài),即文本狀態(tài)和字節(jié)(二進制)狀態(tài)。Python2和Python3中的兩種字符類型都分別對應這兩種狀態(tài),然后相互之間進行編解碼轉(zhuǎn)化。編碼就是將字符串轉(zhuǎn)換成字節(jié)碼,涉及到字符串的內(nèi)部表示;解碼就是將字節(jié)碼轉(zhuǎn)換為字符串,將比特位顯示成字符。

          在Python2中,str和unicode都有encode和decode方法。但是不建議對str使用encode,對unicode使用decode, 這是Python2設計上的缺陷。Python3則進行了優(yōu)化,str只有一個encode方法將字符串轉(zhuǎn)化為一個字節(jié)碼,而且bytes也只有一個decode方法將字節(jié)碼轉(zhuǎn)化為一個文本字符串。

          printPython2中的print是語句;Python3中的print是函數(shù)。例如:

          # py2>>> print("hello", "world")('hello', 'world')
          # py3>>> print("hello", "world")hello?world

          這個例子就比較明顯了,在py2中,print語句后面接的是一個元組對象,而在py3中,print函數(shù)可以接收多個位置參數(shù)。如果希望在Python2中把print當函數(shù)使用,那么可以導入future模塊中的print_function。

          importpython2默認是按照相對路徑導入模塊和包,python3默認則是按照絕對路徑導入

          import的理解:

          https://blog.csdn.net/Blateyang/article/details/89492570

          input:Python3:input解析輸入為str字符型;Python2:input解析輸入為int型,raw_input解析輸入為str類型。

          算法符:在Python2中,/執(zhí)行傳統(tǒng)除法,對于整數(shù)執(zhí)行截斷除法,浮點數(shù)執(zhí)行浮點除法(保留小數(shù)部分,即使整除);//執(zhí)行Floor除法,截除掉余數(shù)并且針對整數(shù)操作數(shù)返回一個整數(shù),如果有任何一個操作數(shù)是浮點數(shù),則返回一個浮點數(shù)。在Python3中,/總是執(zhí)行真除法,不管操作數(shù)的類型,都會返回包含任何余數(shù)的浮點結(jié)果;//執(zhí)行Floor除法,截除掉余數(shù)并且針對整數(shù)操作數(shù)返回一個整數(shù),如果有任何一個操作數(shù)是浮點數(shù),則返回一個浮點數(shù)。

          int/longPython3里,只有一種整數(shù)類型int,大多數(shù)情況下,它很像Python2里的長整型。Python2有為非浮點數(shù)準備的int和long類型。int類型的最大值不能超過sys.maxint,而且這個最大值是平臺相關的。

          True和False在Python2中,True和False是兩個全局變量(名字),在數(shù)值上分別對應1和0,既然是變量,那么它們就可以指向其它對象。Python3修正了這個缺陷,True和False變?yōu)閮蓚€關鍵字,永遠指向兩個固定的對象,不允許再被重新賦值。

          迭代器在Python2中很多返回列表對象的內(nèi)置函數(shù)和方法在Python3都改成了返回類似于迭代器的對象,因為迭代器的惰性加載特性使得操作大數(shù)據(jù)更有效率

          例如:Python2中使用xrange()來創(chuàng)建一個迭代器對象,使用range()創(chuàng)建一個list數(shù)組(要生成很大的數(shù)字序列的時候,用xrange會比range性能優(yōu)很多,因為不需要一上來就開辟一塊很大的內(nèi)存空間);Python3中使用range()創(chuàng)建迭代器對象,移除了xrange()方法

          另外,字典對象的dict.keys()、dict.values()方法都不再返回列表,而是以一個類似迭代器的view對象返回。高階函數(shù)map、filter、zip返回的也都不是列表對象了。Python2的迭代器必須實現(xiàn)next方法,而Python3改成了__iter__()、next

          nonlocal:在Python2中可以在函數(shù)里面可以用關鍵字global聲明某個變量為全局變量,但是在嵌套函數(shù)中,想要給一個變量聲明為非局部變量是沒法實現(xiàn)的,在Pyhon3,新增了關鍵字nonlcoal,一般使用在閉包中的,使變量使用外層的同名變量。

          LEGB作用域的理解:python3的local, global, nonlocal簡析

          5. Python3和Python2中int和long區(qū)別?


          可參考上一條的解釋內(nèi)容。

          6. xrange和range的區(qū)別?


          可參考上上一條的解釋內(nèi)容。

          PS:如果覺得我的分享不錯,歡迎大家隨手點贊、在看。


          見面禮


          碼加我微信備注「三劍客」送你上圖三本Python入門電子書


          推薦閱讀


          1. 深圳一普通中學老師工資單曝光,秒殺程序員,網(wǎng)友:酸了酸了

          2. 百度網(wǎng)盤新規(guī)發(fā)布:將收回已獲得的免費空間

          3. 一組關于女生的秘密數(shù)據(jù)!

          4. 別瞎學了,這幾門語言要被淘汰了!


          點分享
          點收藏
          點點贊
          點在看
          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚州色图15p | 中文在线最新版天堂8 | 亚洲艹逼网站 | 亚洲精品久久久蜜桃 直播 | 日本内射黄页 |