這8道Python面試題,你答不答的出來

2021-03-02 菜鳥學Python

閱讀本文大概需要3分鐘

每年的3-4月份是跳槽的高峰期,無論是應聘Python web開發,爬蟲工程師,或是數據分析,還是自動化運維,都涉及到一些基礎的知識!我挑了一些Python的基礎面試題,看看你能不能的答上來,也許面試的同學用的著!

Python是一種解釋型語言,這意味著,與C,C++不同,Python不需要在運行之前進行編譯。它是邊運行邊解釋。

Python是動態類型化的,這意味著當你聲明它們或類似的東西時,你不需要聲明變量的類型。你可以x=1 ,然後x="abc"沒有錯誤

Python非常適合面向對象編程,因為它允許定義類以及組合和繼承。Python沒有訪問修飾符(如C ++的public,private).

在Python中函數是一等對象,這意味著它們可以在運行時動態創建,能賦值給變量或者作為參數傳給函數,還能能作為函數的返回值

Python代碼容易上手,開發速度很快,但運行速度通常比編譯語言慢。幸運的是,Python允許包含基於C的擴展,所以瓶頸可以被優化掉,比如,numpy包就是一個很好的例子,它非常快,因為它所做的很多運算在底部都是用C編寫的!

1).對象的賦值

Python中對象的賦值實際上是簡單的對象引用也就是說,當你創建一個對象,然後把它複製給另一個變量的時候,Python並沒有拷貝這個對象,而是拷貝了這個對象的引用。

2).淺拷貝

一般使用copy.copy(),可以進行對象的淺拷貝.它複製了對象但對於對象中的元素,依然使用原始的引用.

使用copy對a進行淺拷貝,b複製了a的對象,但是b裡面的[2,3,4]和a裡面的[2,3,4]其實都是指向同一塊內存地址,所以改變了a[1]之後,b裡面的b[1]也發生了改變!

3).深度拷貝

深度拷貝需要用copy.deepcopy()進行深拷貝。它會複製一個容器對象,以及它裡面的所有元素(包含元素的子元素)

當對a列表進行深度拷貝之後,b複製了a的對象,但是b裡面的[2,3,4]和a裡面的[2,3,4]其實都是指向不同的內存地址.

a[1].append(5)print (a)print (b)>>[1, [2, 3, 4, 5]]#因為是深度拷貝,改變了a[1],b[1]內容不會改變[1, [2, 3, 4]]

Python中==和is的區別

is是判讀對象標識符是否一致,而==是判讀兩個對象的內容是否相等!


線程如何在Python中實現

Python有一個多線程包threading,可以使用多線程來加快你的代碼。但是Python有一個叫做Global Interpreter Lock(GIL)的構造。GIL確保只有一個'線程'可以在任何時候執行。

線程獲取GIL,做一些工作,然後將GIL傳遞到下一個線程。這種情況發生得非常快,所以對於人眼而言,它可能看起來像你的線程並行執行,但它們實際上只是輪流使用相同的CPU內核。因此GIL的存在使得Python中的多線程無法真正的利用多核的優勢來提高性能。

對於IO密集型操作,在等待作業系統返回的時候會釋放GIL;再比如爬蟲因為有等待的伺服器的響應時間,可以利用多線程來加速!但是對於CPU密集型操作,只能通過多進程Multiprocess來加速。


Python中的猴子補丁是什麼?

考慮下面的例子:

>>

f()

猴子補丁:

是一種非常Pythonic的用法,即函數在python中可以像使用變量一樣對它進行賦值等操作,我們可以在運行時動態替換模塊,俗稱手法稱為猴子補丁!我們通過對MyClass.f 重新賦值,動態的改變了輸出的結果.


Python中的負數index是用來做什麼的?

Python中的序列是索引的,它由正數和負數組成。正的數字使用'0'作為第一個索引,'1'作為第二個索引。

負數的索引從'-1'開始,表示序列中的最後一個索引,'-2'作為倒數第二個索引,序列像正數一樣向前。

負數索引也可以用來非常方便的切片,比如:

s='abcdedf' 

print (s[1:-1]) 

>>bcded

說說__new__和__init__的區別

__init__為初始化方法,而__new__方法才是是真正的構造函數。只有繼承了object的新式類才有__new__.

__new__至少要有一個參數cls,代表要實例化的類,此參數在實例化時由Python解釋器自動提供,__new__必須要有返回值,返回實例化出來的實例。

__init__有一個參數self,就是這個__new__返回的實例, 先運行__new__ 然後才運行__init__.

__init__在__new__的基礎上可以完成一些其它初始化的動作,__init__不需要返回值.

Python中的*args,**kwargs的用法

*args是可變參數,一般用來表示我們不能確定多少參數將被傳遞給函數,或者如果我們想用列表或元組的方式傳遞給函數.

**kwars是可變關鍵字參數,當我們不知道有多少關鍵字參數會傳遞給一個函數時,或者想把一個字典作為關鍵字參數時使用

註:*args和**kwargs可以同時在函數的定義中,但是*args必須在**kwargs前面.

思考題:Python中為啥沒有重載函數,歡迎留言討論!


推薦閱讀:

太好玩了!用Python寫個彈球遊戲2.0

Python武功如何快速進階

2017年度電影榜單出爐

雙十二來了,我爬取了淘寶上所有的羽絨服

南京樓市火嗎|16000套二手房數據分析

5分鐘帶你了解Python2和3的區別|從此不再糾結

相關焦點

  • Python 爬蟲面試題 170 道
    最近在刷面試題,所以需要看大量的 Python 相關的面試題,從大量的題目中總結了很多的知識,同時也對一些題目進行拓展了,但是在看了網上的大部分面試題都有這幾個問題:有些部分還是 Python2 的代碼回答的很簡單,關鍵的題目沒有點出為什麼
  • 百道Python面試題實現,搞定Python編程就靠它
    在這篇文章中,我們將介紹一個 Python 練習題項目,它從算法練習題到機試實戰題提供了眾多問題與解決代碼。在春招之前,我們就曾介紹過 GitHub 萬星的 ML 算法工程師面試指南,它提供了完整的面試知識點、編程題及題解、各科技公司的面試題錦等內容。讀者可查閱該項目了解機器學習面試需要準備哪些知識。
  • 長達兩個月的面經,50道python開發常見基礎面試題!
    轉眼已經5月份,學員們經過三金四銀求職季積累了大量的面經,在小U的反覆催促下終於讓python將這兩個月面試常見題整理下來,不要以為你記憶力很好,這道題太奇葩了你絕對不會忘,事實證明記憶力是靠不住,話不多說來看看學員們整理的python面試題!小U 還會不斷催促學員們將新遇到的問題記錄下來。
  • 阿里P7工程師耗時兩天整理的292道python大廠面試題,內含解析!
    前言相對於python大家應該都不會陌生吧!現在java跟python可以算的是勢均力敵了,所以現在學習python 的小夥伴也是越來越多了,可是學完之後就能找到稱心如意的工作了嗎?很多小夥伴學習Python的時候感覺很簡單,但是到了去面試的時候就是一頭霧水,常常被問到一些問題不知道跟怎麼做。
  • 聊聊python面試這件事兒
    其實感覺蠻經常的和很多人在聊這個話題. 尤其是建了一個python學習交流群之後, 群裡討論的, 私聊我的, 問的比較多的真的有python面試相關的. 總結起來大概以下幾種:python面試最常用的面試題有哪些?某個面試題感覺回答的不好, 問怎麼回答比較好.有什麼面試經驗可以分享.
  • Python 爬蟲面試題 170 道:2019 版
    引言最近在刷面試題,所以需要看大量的 Python 相關的面試題,從大量的題目中總結了很多的知識,同時也對一些題目進行拓展了,但是在看了網上的大部分面試題不是很滿意。大概就這樣吧,有你看過的題目也有你沒看到過的。
  • python2020年最新面試題,你會幾道?(附答案)
    編程網站DataFlair的技術團隊分享了一份2020年最常見Python面試題合集,既有基本的Python面試題,也有高階版試題來指導你準備面試,試題均附有答案。面試題內容包括編碼、數據結構、腳本撰寫等話題。1:Python有哪些特點和優點?
  • 「秒殺」面試官,你只差這10道Python面試題
    哎呀!不多說了!胡陽老師就要來了,趕緊先看看這 10 道面試題。不知道你有沒有自己思考下對應問題的答案。這十個問題可能只是面試的開始,要知道技術類的面試要是聊的嗨了,聊一兩個小時是常事兒。所以,如果你在面試,這十個問題你要怎麼來答呢?Q1:PEP8是什麼?
  • 2020Python工程師面試題更新啦!+高中生能看懂的Python爬蟲課程
    最新2020Python工程師面試題更新了!隨便呈上幾道,看看大家能否答出來:1)自動化代碼中,用到了哪些設計模式?2)python會不會出現內存洩漏?原因是什麼?3)super 是幹嘛用的?在 Python2 和 Python3 使用,有什麼區別?
  • 好程式設計師Python教程分享常見的Python面試題
    好程式設計師Python教程分享常見的Python面試題,程式設計師面試難免會需要進行筆試,筆試是考驗程式設計師基礎功底的重要環節,根據很多小夥伴的面試反饋,今天總結分享了一些常見的Python面試題,想要看Python面試是不是可以順利通過,這些常見的Python面試題你應該看看。
  • Python經典面試題21道
    Python允許你定義一種單行的小函數。定義lambda函數的形式如下:labmda 參數:表達式lambda函數默認返回表達式的值。你也可以將其賦值給一個變量。Python的內存管理是由Python得解釋器負責的,開發人員可以從內存管理事務中解放出來,致力於應用程式的開發,這樣就使得開發的程序錯誤更少,程序更健壯,開發周期更短6:如何反序的迭代一個序列?
  • 110道python面試筆試題匯總,你能答對幾道?
    數據分析系列教程插播一篇面試題教程,最近公眾號新來了不少朋友,這幾天不少粉絲留言說問我有沒有python面試題,其實之前分享過一些面試題,今天統一再給大家分享一遍,也希望能幫助此時仍在找工作的同學,儘快找到工作,該文110道面試題全部來自於大家筆試面試時候拍照後發到群裡求助的題目,並自己一道一道親自做了,大部分題目屬於鞏固基本python
  • 110道Python面試題
    2、__new__必須要有返回值,返回實例化出來的實例,這點在自己實現__new__時要特別注意,可以return父類(通過super(當前類名, cls))__new__出來的實例,或者直接是object的__new__出來的實例。
  • 零基礎學python,你需要掌握這8個技巧!
    作為這幾年火爆的python,想要零基礎起步學習,興趣愛好是首要的,什麼語言都是入門簡單,精通難。相比java,c等語言來說python極其容易入門,但是簡單的語法也正是它的缺點,靈活導致很多bug在運行過程中才能發現,導致多人協同上很難保證統一的風格。
  • 每周·面試題 | Python 5題快問快答!
    >注意:range函數返回一個左閉右開([left,right))的序列數>>> list=range(10)>>> print list[0, 1, 2, 3, 4, 5, 6, 7, 8,
  • 20 道Python基礎練習題
    /xxxx.py  因為py腳本裡面指定了python解釋器的位置2、簡述位、字節的關係答:1Byte(字節)=8bit(二進位位)3、簡述ascii、unicode、uft-8、gbk的關係答:ascii 英文編碼,8個二進位位代表一個字母,總共可以有2的8次方減去1
  • 9道python基礎練習題
    9道python基礎練習題 8.正則表達式
  • Python練習題100題-帶你輕鬆入門Python
    Python的常見練習題,幾乎概括了Python初學要掌握的基本問題。如果您是python的初學者,那麼這100多個練習可以幫助您輕鬆地使用Python。倉庫給定的問題非常簡單和容易理解。初學者每天可以嘗試3-5個問題,需要一點時間來解決,但肯定會學到一些新的東西(不管你有多懶),經過一個月的常規練習,把練習做完看懂,只要能獨立解決100多個問題,基本上Python就入門了。
  • 很全的 Python 面試題
    因為實例方法的調用離不開實例,我們需要把實例自己傳給函數,調用的時候是這樣的a.foo(x)(其實是foo(a, x)).類方法一樣,只不過它傳遞的是類而不是實例,A.class_foo(x).注意這裡的self和cls可以替換別的參數,但是python的約定是這倆,還是不要改的好.
  • python筆記53-Leetcode面試題
    前言Leetcode上有個練習題,也是面試經常會遇到的:請實現一個函數,把字符串 s 中的每個空格替換成」%20」替換字符串請實現一個函數