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

【面試】python常見問題

系統(tǒng) 1941 0
  1. python2和python3的區(qū)別
  2. fun(*args,**kwargs)中的*args,**kwargs什么意思?
  3. 談下python的GIL
  4. 列出5個python標(biāo)準(zhǔn)庫
  5. 一句話解釋什么樣的語言能夠使用裝飾器
  6. python的內(nèi)建數(shù)據(jù)類型有哪些
  7. 簡述_ _init_ _
  8. _ _new_ _和_ _init的區(qū)別
  9. 簡述with方法打開處理文件
  10. 列出python中可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型
  11. 裝飾器
  12. python為什么不需要編譯,你是怎么理解python解釋器的
  13. 你寫代碼的時候會考慮對代碼進(jìn)行優(yōu)化嗎
  14. python生成器與迭代器
  15. python的優(yōu)劣(為什么會慢)
  16. 講講hash,python的dict用的是哪種方法解決沖突
  17. python閉包
  18. lambda表達(dá)式寫一下,隨便寫一個,它的好處
  19. 條件表達(dá)式寫一個(三元表達(dá)式)
  20. python里深拷貝和淺拷貝說一下
  21. python里多線程和多進(jìn)程說一下
  22. python中如何實(shí)現(xiàn)多線程
  23. 進(jìn)程和線程
  24. python的反射和自省
  25. 單引號、雙引號和三引號的區(qū)別
  26. str的常用方法
  27. python導(dǎo)入文件,都用過哪些導(dǎo)入方式
  28. python的依賴用過嗎,多線程呢,繼承呢,多態(tài)呢
  29. 解釋繼承
  30. 解釋python中的help()和dir()
  31. 一大段字符串,單詞以空格隔開,統(tǒng)計每一個單詞的詞頻
  32. 什么是猴子補(bǔ)丁
  33. isinstance()和type()區(qū)別
  34. 大數(shù)據(jù)的文件讀取
  35. find和grep
  36. python中的異常處理
  37. 什么是斷言?應(yīng)用場景
  38. 列舉python中的五個異常類型及其含義
  39. python中變量有單下劃線前綴和結(jié)尾,雙下劃線前綴和結(jié)尾,區(qū)別是什么
  40. sort和sorted的區(qū)別
  41. 什么是負(fù)索引
  42. python的read()、readline()、readlines()、xreadlines()
  43. 如何隨機(jī)打亂列表中的元素,要求不引用額外的內(nèi)存空間

?

以上問題收集于各個面經(jīng)。

以下答案為個人總結(jié),部分來源于網(wǎng)絡(luò),僅供參考。

  1. (1)python2中print是語句,python3中print是函數(shù)。python3中print后必須是小括號,python2中print后可以是小括號也可以是空格分隔。? ? (2)python中使用ASCII編碼,python3中使用utf-8編碼。? ? (3)python中為了正常顯示中文需要引入coding聲明,python3不需要。? ? (4)python3去掉了long類型,現(xiàn)在只有整形.? ? (5)python2 range(1,10)返回列表,python3返回迭代器,節(jié)約內(nèi)存。
  2. *args代表 位置參數(shù) ,它會接收任意多個參數(shù)并把這些參數(shù)作為元組傳遞給函數(shù)。? ? **kwargs代表的關(guān)鍵字參數(shù),允許使用事先沒有定義的參數(shù)名,另外,位置參數(shù)一定要放在 關(guān)鍵字參數(shù) 前面。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?在函數(shù)定義中使用? args 和 kwargs 傳遞可變長參數(shù)。? args 用來將參數(shù)打包成 tuple 給函數(shù)體調(diào)用。? kwargs 打包關(guān)鍵字參數(shù)成 dict 給函數(shù)體調(diào)用。
  3. GIL(Global Interpreter Lock)全局解釋器鎖,任何Python線程執(zhí)行前,必須先獲得GIL鎖,然后,每執(zhí)行100條字節(jié)碼,解釋器就自動釋放GIL鎖,讓別的線程有機(jī)會執(zhí)行。這個GIL全局鎖實(shí)際上把所有線程的執(zhí)行代碼都給上了鎖,所以,多線程在Python中只能交替執(zhí)行,即使100個線程跑在100核CPU上,也只能用到1個核。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 利用多進(jìn)程可以實(shí)現(xiàn)同時運(yùn)行。但是多進(jìn)程中每個進(jìn)程都會被系統(tǒng)分配資源,相當(dāng)于每個進(jìn)程都有一個python解釋器。這樣導(dǎo)致系統(tǒng)的資源開銷大。

  4. math: 數(shù)學(xué)運(yùn)算? ? ?re: 正則匹配? ? ?datetime: 處理日期時間? ? ?os: 提供與操作系統(tǒng)相關(guān)聯(lián)的函數(shù)? ? ?doctest: 測試相關(guān)。

  5. 函數(shù)可以作為參數(shù)傳遞的語言,可以使用裝飾器。

  6. 整形(int)、布爾型(bool)、字符串(str)、列表(list)、元組(tuple)、字典(dict)。

  7. _ _init_ _是初始化方法,創(chuàng)建對象后,就立刻被默認(rèn)調(diào)用了,可接收函數(shù)。

  8. 創(chuàng)建一個新實(shí)例時調(diào)用_ _new_ _,初始化一個實(shí)例用_ _init_ _,這是他們最本質(zhì)的區(qū)別;? new方法會返回所構(gòu)造的對象,init不會,new函數(shù)必須以cls最為第一個參數(shù),而init則以self作為其第一個參數(shù)。

  9. 打開文件在讀寫的時候可能會出現(xiàn)一些異常情況,如果按照常規(guī)的f.open寫法,我們需要try、expect、finally,做出異常判斷,并且文件最終不管遇到什么情況,都要執(zhí)行finally? f.close()關(guān)閉文件,with幫我們實(shí)現(xiàn)了finally中的close。

  10. python3的基本數(shù)據(jù)類型有6種:Num(int、float、bool、complex),string,list,set,dictionary,tuple。其中可變數(shù)據(jù)類型為:list、dic、set(列字集)。不可變數(shù)據(jù)類型為:Num、str、tuple(數(shù)字元)。

  11. 本質(zhì)上,裝飾器(decorator)就是一個返回函數(shù)的高階函數(shù)。它能使函數(shù)的功能得到補(bǔ)充,而同時不用修改函數(shù)的本身代碼。? 【作用和功能:引入日志、函數(shù)執(zhí)行時間統(tǒng)計、執(zhí)行函數(shù)前預(yù)備處理、執(zhí)行函數(shù)后的清理功能、權(quán)限校驗(yàn)等場景、緩存】

  12. 解釋器由一個編譯器和一個虛擬機(jī)組成,編譯器負(fù)責(zé)將源代碼轉(zhuǎn)換成字節(jié)碼文件,而虛擬機(jī)負(fù)責(zé)執(zhí)行字節(jié)碼,所以,解釋型語言也有編譯過程,只不過這個編譯過程并不是直接生成目標(biāo)代碼,而是中間代碼(字節(jié)碼),然后再通過虛擬機(jī)來解釋執(zhí)行字節(jié)碼。同一個代碼在下一次執(zhí)行的時候還要重新逐行解釋。

  13. (1)使用直觀、貼切的函數(shù)和變量名? ? ?(2)with關(guān)鍵字? ? ?(3)避免導(dǎo)入整個庫? ?(4)使用生成器? ? ?

  14. 生成器是一次生成一個值的特殊類型函數(shù)。通過列表生成式可以直接創(chuàng)建一個列表。但是,收到內(nèi)存限制,列表容量有限。

  15. 【python是一個動態(tài)的解釋型語言,python中的值不是存儲在緩存區(qū)而是分散的存儲在對象中;python寫完程序,提交到解釋器,解釋器會立刻將第一行的代碼翻譯成機(jī)器碼,然后提交給CPU去執(zhí)行,然后進(jìn)入下一行。所以python比那些編譯型的語言執(zhí)行起來要慢】

  16. hash(散列函數(shù))是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)。? ? ?python使用散列表來實(shí)現(xiàn)dict,在dict的散列表中,每個鍵值對都占用一個表元,每個表元都有兩個部分,一個是對鍵的引用,一個是對值得引用。因?yàn)槊總€表元的大小一致,所以可以通過偏移量來讀取某個表元。

  17. 在一個外函數(shù)中定義了一個內(nèi)函數(shù),內(nèi)函數(shù)里運(yùn)用了外函數(shù)的臨時變量,并且外函數(shù)的返回值是內(nèi)函數(shù)的引用。這樣就構(gòu)成了一個閉包。? ? ?如果在一個內(nèi)部函數(shù)里。對在外部作用域(但不是在全局作用域)的變量進(jìn)行引用,那么內(nèi)部函數(shù)就是一個閉包。? ? 【閉包作用:裝飾器、面向?qū)ο蟆?shí)現(xiàn)單利模式】

  18. lambda x:x*x? ? ?lambda表示匿名函數(shù),因?yàn)闆]有函數(shù)名字,不必?fù)?dān)心函數(shù)名沖突。簡潔,不用def、return。

  19. ?x=1 if x>y else 0

  20. 淺拷貝(copy()):只是對另一個變量內(nèi)存地址的拷貝,這兩個變量只想同一個內(nèi)存地址。【特點(diǎn):共用一個值、內(nèi)存地址一樣、其中一個值改變,另一個變量的值也會改變】? ? ?深拷貝(deepcopy()):一個變量對另一個變量的值拷貝。【特點(diǎn):兩個變量的內(nèi)存地址不同、連個變量各有自己的值,互不影響、任意一個改變不會影響另一個】? ?

    深淺拷貝用法來自copy模塊。

    導(dǎo)入模塊:import copy

    淺拷貝:copy.copy

    深拷貝:copy.deepcopy

  21. 1、進(jìn)程就是活著的程序,程序不過是一些文本,運(yùn)行著的程序就是進(jìn)程,是系統(tǒng)進(jìn)行資源調(diào)度和分配的基本單位,掌握資源,包括內(nèi)存等,線程就是輕量級進(jìn)程,是CPU調(diào)度和分派基本單位。? ? ?2、由于進(jìn)程占有資源,壓棧和出棧慢,所以切換不靈活,線程不占資源,只占必要的資源(遞歸要壓棧所以有一點(diǎn)資源),所以線程容易通信->在進(jìn)程分來的內(nèi)存中直接通信,容易并發(fā)->切換靈活,同一進(jìn)程的線程切換速度很快,因此線程開銷小? ? ?3、地址空間,進(jìn)程獨(dú)立,同一進(jìn)程的線程共享資源,對其他進(jìn)程的線程獨(dú)立

  22. 線程是輕量級的進(jìn)程,多線程允許一次執(zhí)行多個線程。眾所周知,Python 是一種多線程語言,它有一個多線程包。

    GIL(全局解釋器鎖)確保一次執(zhí)行單個線程。一個線程保存 GIL 并在將其傳遞給下一個線程之前執(zhí)行一些操作,這就產(chǎn)生了并行執(zhí)行的錯覺。但實(shí)際上,只是線程輪流在 CPU 上。當(dāng)然,所有傳遞都會增加執(zhí)行的開銷。

  23. 對于操作系統(tǒng)來說,一個任務(wù)就是一個進(jìn)程(Process),比如打開一個瀏覽器就是啟動一個瀏覽器進(jìn)程,有些進(jìn)程還不止同時干一件事,比如Word,它可以同時進(jìn)行打字、拼寫檢查、打印等事情。在一個進(jìn)程內(nèi)部,要同時干多件事,就需要同時運(yùn)行多個線程(Tread)。? ? ? ? ? ? ? ? ? ? 在Unix/Linux下,可以使用fork()調(diào)用實(shí)現(xiàn)多進(jìn)程,要實(shí)現(xiàn)跨平臺的多進(jìn)程,可以使用multiprocessing模塊。進(jìn)程間通信通過queue、pipes實(shí)現(xiàn)。? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Python解釋器由于設(shè)計時有GIL全局鎖,導(dǎo)致了多線程無法利用多核。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?多線程和多進(jìn)程最大的不同在于,多進(jìn)程中,同一個變量,各自有一份拷貝存在于每個進(jìn)程中,互不影響,而多線程中,所有變量都由所有線程共享,所以,任何一個變量都可以被任何一個線程修改,因此,線程之間共享數(shù)據(jù)最大的危險在于多個線程同時改一個變量,把內(nèi)容給改亂了。

  24. 反射的作用就是列出對象所有的屬性和方法,發(fā)射就是告訴我們,這個對象到底是什么,提供什么功能。dir()是一個內(nèi)置的反射函數(shù),可以列出對象的屬性和方法。

  25. 單引號和雙引號的普通用法是相同的,單引號和雙引號的區(qū)別主要體現(xiàn)在用單引號包起來的字符串里包含雙引號的時候,不需要轉(zhuǎn)義符,反過來也是一樣。? ? ?三引號的核心用法主要體現(xiàn)在跨行的字符串上,會包含兩個界定符之間所有字符。還有就是三引號可以多行注釋。

  26. 0

  27. 0

  28. 0

  29. 一個類繼承自另一個類,也可以說是一個孩子類/派生類/子類,繼承自父類/基類/超類,同時獲取所有的類成員(屬性和方法)。

    繼承使我們可以重用代碼,并且還可以更方便地創(chuàng)建和維護(hù)代碼。Python 支持以下類型的繼承:

    1. 單繼承- 一個子類類繼承自單個基類

    2. 多重繼承- 一個子類繼承自多個基類

    3. 多級繼承- 一個子類繼承自一個基類,而基類繼承自另一個基類

    4. 分層繼承- 多個子類繼承自同一個基類

    5. 混合繼承- 兩種或兩種以上繼承類型的組合

  30. ?

    help()函數(shù)返回幫助文檔和參數(shù)說明? ? ?dir()函數(shù)返回對象中的所有成員

  31. ?

    首先用split()函數(shù)以空格為間隔,分離出每一個單詞存到列表中,再用自帶的count()函數(shù)去統(tǒng)計詞頻,但這樣就不是考算法了,所以可以用第二種方法,每次讀一個單詞與后面的作比較,遇到一樣的計數(shù)就加一。然后用同樣的方式去算其他單詞的詞頻

    ?

    (人生第一次求職面試,感覺太慌了,感覺一切都靠本能。其實(shí)第二種方法很笨,實(shí)際應(yīng)用中根本就不合實(shí)際,因?yàn)闀r間復(fù)雜度太高,工作中我肯定會用第一種,但第一種調(diào)用內(nèi)置函數(shù)看不到你的思路)

    (當(dāng)我走出面試房間的時候,我就想到了第三種方法,時間復(fù)雜度O(n))

    (使用哈希,以單詞作為鍵,每遇到這個單詞,以該單詞為鍵的值就加一,只需要遍歷一次,就能統(tǒng)計完所有的詞頻,感覺很遺憾)

  32. 在運(yùn)行時動態(tài)修改類和模塊

  33. isinstance()函數(shù)用來判斷一個對象是否是一個已知類型,類似type()。【區(qū)別在于:type()不會認(rèn)為子類是父類類型,isinstance()會認(rèn)為是,考慮繼承關(guān)系】

  34. (1)利用生成器(2)迭代器進(jìn)行迭代遍歷:for line in file

  35. grep命令是一種強(qiáng)大的文本搜索工具,grep搜索內(nèi)容串可以是正則表達(dá)式,允許對文本文件進(jìn)行模式查找。如果找到匹配模式,grep打印包含模式的所有行。

    find通常用來再特定的目錄下搜索符合條件的文件,也可以用來搜索特定用戶屬主的文件。

  36. 用try / except / else 語句來檢測try語句塊中的錯誤,從而讓except語句捕捉異常信息處理。

  37. python中斷言用assert實(shí)現(xiàn),一般在表達(dá)式為True的情況下,程序才能通過。

  38. AttributeError 對象沒有這個屬性

    NotImplementedError 尚未實(shí)現(xiàn)的方法

    StopIteration 迭代器沒有更多的值

    TypeError 對類型無效的操作

    IndentationError 縮進(jìn)錯誤

  39. 變量名_xxx被看作是“私有 的”,在模塊或類外不可以使用。“單下劃線開頭” 的成員變量叫做保護(hù)變量,意思是只有類對象和子類對象才能訪問到這些變量。

  40. 他倆都可以對列表元素進(jìn)行排序。不同在于,sort是在原位重新排列列表,而sorted()是產(chǎn)生一個新的列表。sort是應(yīng)用在list上的方法。sorted可以對所有可迭代的對象進(jìn)行排序操作。“雙下劃線開頭” 的是私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數(shù)據(jù)。

  41. 負(fù)索引一般表示的是從后面取元素。

  42. read()會讀取整個文件,將讀取到底的文件內(nèi)容放到一個字符串變量,返回str類型。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?readline()讀取一行內(nèi)容,放到一個字符串變量,返回str類型。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?readlines() 讀取文件所有內(nèi)容,按行為單位放到一個列表中,返回list類型。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?xreadlines()返回一個生成器,來循環(huán)操作文件的每一行。
  43. random包中的shuffle()函數(shù)

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产大战女模特在线视频 | 日韩 综合| 国产精品久久久久久久久福利 | 亚洲综合在线一区 | 国产九九视频在线观看 | 狠狠色丁香婷婷久久综合不卡 | 欧美日韩一区二区高清免费视频 | 日韩毛片欧美一级国产毛片 | 青青青手机版视频在线观看 | 日韩中文字幕推理片 | 欧美国产日韩在线观看 | 久久精品国产精品亚洲精品 | 精品一区二区三区 不卡高清 | 三级不卡 | 一区免费在线观看 | 日韩高清毛片 | 成人国产精品视频频 | 国产一级内谢a级高清毛片 国产一级片毛片 | 亚洲综合精品一区 | 免费观看成人毛片 | 亚洲人成网站在线观看青青 | 欧美成人综合在线 | 午夜色网| 国产精品v一区二区三区 | 精品日产| 四虎影在永久地址在线观看 | 图片专区亚洲 欧美 另类 | 欧美激情久久久久久久久 | 国产69精品久久久久99 | 国产女人18一级毛片视频 | 国产视频a区 | 亚洲成人在线免费视频 | 99视频精品免费99在线 | 性刺激的欧美三级视频 | 欧美激情久久欧美激情 | 日韩欧美高清在线 | 成人国产精品久久久免费 | 97欧美在线看欧美视频免费 | 免费观看a毛片一区二区不卡 | 91视频免费入口 | 久久福利精品 |