1. 程式人生 > >2018最新110道python真實面試筆試面試題

2018最新110道python真實面試筆試面試題

1、一行程式碼實現1--100之和

利用sum()函式求和

2、如何在一個函式內部修改全域性變數

利用global 修改全域性變數

3、列出5個python標準庫

os:提供了不少與作業系統相關聯的函式

sys:   通常用於命令列引數

re:   正則匹配

math: 數學運算

datetime:處理日期時間

4、字典如何刪除鍵和合並兩個字典

del和update方法

5、談下python的GIL

GIL 是python的全域性直譯器鎖,同一程序中假如有多個執行緒執行,一個執行緒在執行python程式的時候會霸佔python直譯器(加了一把鎖即GIL),使該程序內的其他執行緒無法執行,等該執行緒執行完後其他執行緒才能執行。如果執行緒執行過程中遇到耗時操作,則直譯器鎖解開,使其他執行緒執行。所以在多執行緒中,執行緒的執行仍是有先後順序的,並不是同時進行。

多程序中因為每個程序都能被系統分配資源,相當於每個程序有了一個python直譯器,所以多程序可以實現多個程序的同時執行,缺點是程序系統資源開銷大

6、python實現列表去重的方法

先通過集合去重,在轉列表

7、fun(*args,**kwargs)中的*args,**kwargs什麼意思?

8、python2和python3的range(100)的區別

python2返回列表,python3返回迭代器,節約記憶體

9、一句話解釋什麼樣的語言能夠用裝飾器?

函式可以作為引數傳遞的語言,可以使用裝飾器

10、python內建資料型別有哪些

整型--int

布林型--bool

字串--str

列表--list

元組--tuple

字典--dict

11、簡述面向物件中__new__和__init__區別

__init__是初始化方法,建立物件後,就立刻被預設呼叫了,可接收引數,如圖


1、__new__至少要有一個引數cls,代表當前類,此引數在例項化時由Python直譯器自動識別

2、__new__必須要有返回值,返回例項化出來的例項,這點在自己實現__new__時要特別注意,可以return父類(通過super(當前類名, cls))__new__出來的例項,或者直接是object的__new__出來的例項

3、__init__有一個引數self,就是這個__new__返回的例項,__init__在__new__的基礎上可以完成一些其它初始化的動作,__init__不需要返回值

4、如果__new__建立的是當前類的例項,會自動呼叫__init__函式,通過return語句裡面呼叫的__new__函式的第一個引數是cls來保證是當前類例項,如果是其他類的類名,;那麼實際建立返回的就是其他類的例項,其實就不會呼叫當前類的__init__函式,也不會呼叫其他類的__init__函式。

12、簡述with方法開啟處理檔案幫我我們做了什麼?


開啟檔案在進行讀寫的時候可能會出現一些異常狀況,如果按照常規的f.open

寫法,我們需要try,except,finally,做異常判斷,並且檔案最終不管遇到什麼情況,都要執行finally f.close()關閉檔案,with方法幫我們實現了finally中f.close

(當然還有其他自定義功能,有興趣可以研究with方法原始碼)

13、列表[1,2,3,4,5],請使用map()函式輸出[1,4,9,16,25],並使用列表推導式提取出大於10的數,最終輸出[16,25]

map()函式第一個引數是fun,第二個引數是一般是list,第三個引數可以寫list,也可以不寫,根據需求

14、python中生成隨機整數、隨機小數、0--1之間小數方法

隨機整數:random.randint(a,b),生成區間內的整數

隨機小數:習慣用numpy庫,利用np.random.randn(5)生成5個隨機小數

0-1隨機小數:random.random(),括號中不傳參

15、避免轉義給字串加哪個字母表示原始字串?

r , 表示需要原始字串,不轉義特殊字元

16、<div class="nam">中國</div>,用正則匹配出標籤裡面的內容(“中國”),其中class的類名是不確定的

17、python中斷言方法舉例

assert()方法,斷言成功,則程式繼續執行,斷言失敗,則程式報錯

18、資料表student有id,name,score,city欄位,其中name中的名字可有重複,需要消除重複行,請寫sql語句

select  distinct  name  from  student

19、10個Linux常用命令

ls  pwd  cd  touch  rm  mkdir  tree  cp  mv  cat  more  grep  echo 

20、python2和python3區別?列舉5個

1、Python3 使用 print 必須要以小括號包裹列印內容,比如 print('hi')

Python2 既可以使用帶小括號的方式,也可以使用一個空格來分隔列印內容,比如 print 'hi'

2、python2 range(1,10)返回列表,python3中返回迭代器,節約記憶體

3、python2中使用ascii編碼,python中使用utf-8編碼

4、python2中unicode表示字串序列,str表示位元組序列

      python3中str表示字串序列,byte表示位元組序列

5、python2中為正常顯示中文,引入coding宣告,python3中不需要

6、python2中是raw_input()函式,python3中是input()函式

21、列出python中可變資料型別和不可變資料型別,並簡述原理

不可變資料型別:數值型、字串型string和元組tuple

不允許變數的值發生變化,如果改變了變數的值,相當於是新建了一個物件,而對於相同的值的物件,在記憶體中則只有一個物件(一個地址),如下圖用id()方法可以列印物件的id

象的id


可變資料型別:列表list和字典dict;

允許變數的值發生變化,即如果對變數進行append、+=等這種操作後,只是改變了變數的值,而不會新建一個物件,變數引用的物件的地址也不會變化,不過對於相同的值的不同物件,在記憶體中則會存在不同的物件,即每個物件都有自己的地址,相當於記憶體中對於同值的物件儲存了多份,這裡不存在引用計數,是實實在在的物件。

22、s = "ajldjlajfdljfddd",去重並從小到大排序輸出"adfjl"

set去重,去重轉成list,利用sort方法排序,reeverse=False是從小到大排

list是不 變資料型別,s.sort時候沒有返回值,所以註釋的程式碼寫法不正確

23、用lambda函式實現兩個數相乘

24、字典根據鍵從小到大排序

dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}

25、利用collections庫的Counter方法統計字串每個單詞出現的次數"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

26、字串a = "not 404 found 張三 99 深圳",每個詞中間是空格,用正則過濾掉英文和數字,最終輸出"張三  深圳"

順便貼上匹配小數的程式碼,雖然能匹配,但是健壯性有待進一步確認

27、filter方法求出列表所有奇數並構造新列表,a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

filter() 函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。該接收兩個引數,第一個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判,然後返回 True 或 False,最後將返回 True 的元素放到新列表

28、列表推導式求列表所有奇數並構造新列表,a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

29、正則re.complie作用

re.compile是將正則表示式編譯成一個物件,加快速度,並重復使用

30、a=(1,)b=(1),c=("1") 分別是什麼型別的資料?

31、兩個列表[1,5,7,9]和[2,2,6,8]合併為[1,2,2,3,6,7,8,9]

extend可以將另一個集合中的元素逐一新增到列表中,區別於append整體新增

32、用python刪除檔案和用linux命令刪除檔案方法

python:os.remove(檔名)

linux:       rm  檔名

33、log日誌中,我們需要用時間戳記錄error,warning等的發生時間,請用datetime模組列印當前時間戳 “2018-04-01 11:38:54

順便把星期的程式碼也貼上了

34、資料庫優化查詢方法

外來鍵、索引、聯合查詢、選擇特定欄位等等

35、請列出你會的任意一種統計圖(條形圖、折線圖等)繪製的開源庫,第三方也行

pychart、matplotlib

36、寫一段自定義異常程式碼

自定義異常用raise丟擲異常

37、正則表示式匹配中,(.*)和(.*?)匹配區別?

(.*)是貪婪匹配,會把滿足正則的儘可能多的往後匹配

(.*?)是非貪婪匹配,會把滿足正則的儘可能少匹配

38、簡述Django的orm

ORM,全拼Object-Relation Mapping,意為物件-關係對映

實現了資料模型與資料庫的解耦,通過簡單的配置就可以輕鬆更換資料庫,而不需要修改程式碼只需要面向物件程式設計,orm操作本質上會根據對接的資料庫引擎,翻譯成對應的sql語句,所有使用Django開發的專案無需關心程式底層使用的是MySQL、Oracle、sqlite....,如果資料庫遷移,只需要更換Django的資料庫引擎即可

39、[[1,2],[3,4],[5,6]]一行程式碼展開該列表,得出[1,2,3,4,5,6]

列表推導式的騷操作

執行過程:for i in a ,每個i是【1,2】,【3,4】,【5,6】,for j in i,每個j就是1,2,3,4,5,6,合併後就是結果

還有更騷的方法,將列表轉成numpy矩陣,通過numpy的flatten()方法,程式碼永遠是隻有更騷,沒有最騷

40、x="abc",y="def",z=["d","e","f"],分別求出x.join(y)和x.join(z)返回的結果

join()括號裡面的是可迭代物件,x插入可迭代物件中間,形成字串,結果一致,有沒有突然感覺字串的常見操作都不會玩了

順便建議大家學下os.path.join()方法,拼接路徑經常用到,也用到了join,和字串操作中的join有什麼區別,該問題大家可以查閱相關文件,後期會有答案

41、舉例說明異常模組中try except else finally的相關意義

try..except..else沒有捕獲到異常,執行else語句

try..except..finally不管是否捕獲到異常,都執行finally語句

42、python中交換兩個數值

43、舉例說明zip()函式用法

zip()函式在運算時,會以一個或多個序列(可迭代物件)做為引數,返回一個元組的列表。同時將這些序列中並排的元素配對。

zip()引數可以接受任何型別的序列,同時也可以有兩個以上的引數;當傳入引數的長度不同時,zip能自動以最短序列長度為準進行擷取,獲得元組。

44、a="張明 98分",用re.sub,將98替換為100


45、寫5條常用sql語句

show databases;

show tables;

desc 表名;

select * from 表名;

delete from 表名 where id=5;

update students set gender=0,hometown="北京" where id=5

46、a="hello"和b="你好"編碼成bytes型別

47、[1,2,3]+[4,5,6]的結果是多少?

兩個列表相加,等價於extend

48、提高python執行效率的方法

1、使用生成器,因為可以節約大量記憶體

2、迴圈程式碼優化,避免過多重複程式碼的執行

相關推薦

2018最新110python真實面試筆試試題

1、一行程式碼實現1--100之和利用sum()函式求和2、如何在一個函式內部修改全域性變數利用global 修改全域性變數3、列出5個python標準庫os:提供了不少與作業系統相關聯的函式sys:   通常用於命令列引數re:   正則匹配math: 數學運算dateti

2018最新最全BAT 全套高階iOS試題以及面試資料-強勢來襲

前言: 一千個讀者眼中有一千個哈姆雷特,一千名 iOS 程式設計師心目中就有一千套 iOS 高階面試題。本文就是筆者認為可以用來面試高階 iOS 程式設計師的面試題。 這套題的題目跟公司和業務都沒有關係,而且也並不代表筆者本人可以把這些題回答得非常好,筆者只是將一部分覺得

110Python面試試題超強彙總

1、一行程式碼實現1--100之和 利用sum()函式求和 print(sum(range(1,101))) 2、如何在一個函式內部修改全域性變數 利用global 修改全域性變數 a=5 def fun(): global a a=3 fun() print(

110python試題,你會幾個?

最近公眾號新來了不少朋友,這幾天不少讀者朋友後臺留言問我有沒有python面試題,今天統一給大家分享一遍,希望能幫助準備找工作和仍在找工作的同學,儘快找到工作,該文110道面試題大部分題目屬於鞏固基本python知識點的題目,希望對基本知識不熟悉的同學,能認真做一遍,肯定會有不少收穫。 內

免費視訊教程,2018最新Java、PYthon、web視訊

前面分享了C語言基礎後,學了c語言自然要學一門面向物件的高階語言,今天給大家分享的語言就是java, 直接一部到位,java初級-》中級-》高階 本課程是Java語言的經典課程,採用最著名的教材《Java程式設計思想》,《Java程式設計思想》包含的內容非常多,我們把這本書分成初級教程、中級

30python真實試題(蒐集到的,看看其實都是基礎)

1、一行程式碼實現1-100之間和 In [1]: sum(range(0,101)) Out[1]: 5050 2、如何在一個函式內部修改全域性變數 利用global修改全域性變數 In [2]: a = 10 In [3]: def fn(): ...: global a

30python真實試題(附答案)

  最近收集整理了100道python真實面試筆試題,並自己做了一些,希望能幫助大家,順利早日找到工作,限於篇幅問題,本文附有30道面試題計算答案。                學習Python中有

100python真實試題(附答案)

最近收集整理了100道python真實面試筆試題,並自己做了一些,希望能幫助大家,順利早日找到工作,限於篇幅問題,本文附有30道面試題計算答案,另外70道題答案、面試簡歷、如何面試等如有興趣,請新增作者微信好友或者文章底部公眾號並備註(CSDN)免費獲取。 公眾號回覆:面試

25Python工程師面試必備知識點!

2018-01-13 許以沉默 小象 Python作為近年來受人關注的流行程式語言,在眾程式語言中排名靠前。因此,企業對這方面的人才需求逐漸增大,越來越多的人想要成為Python工程師。今天,小編就分享25道面試題,搞明白這些,成為一名的Python工程師就指日

2018秋招數據庫筆試試題匯總

需求 用戶 三範式 sql查詢 連接 特點 led ren 訪問權限 基礎概念 1. 什麽是數據庫事務?事務有什麽特點? 數據庫事務:是指作為單個邏輯工作單元執行的一系列操作,這些操作要麽全做,要麽全不做,是一個不可分割的工作單元。 事務特點: 原子性 一致性 隔離性 持

python web後端,筆試試題

Python筆試題 一、程式設計題,需考慮輸入合法性,時間和空間複雜度,注意:可以用標準庫函式或者自己知道的常用庫函式操作,如果不記得,需要自己寫原始程式碼實現,但必質保證是可以執行的 1.合併兩個有序的陣列,陣列都是非遞減的,合併後的陣列依然有序 方法一: def mer

python web後端,筆試試題

本文參考自: 原文地址 1.以下不能建立一個字典的語句是? A、dict={}  B、dict2={3:5} C、dict3={[1,2,3]:"uestc"}----答案 D、dict4={(1,2,3):"uestc"} 2.下列程式碼的執行結果是多少? 

2011Android技術面試整理附有詳細答案(包括百度、新浪、中科軟等多家公司筆試試題)

1、    Android的四大元件是哪些,它們的作用? 答:Activity:Activity是Android程式與使用者互動的視窗,是Android構造塊中最基本的一種,它需要為保持各介面的狀態,做很多持久化的事情,妥善管理生命週期以及一些跳轉邏輯

Java筆試試題001

orm 困難 保存 spa tro ng- style max 信息 Java筆試面試題之中的一個 1、Struts1中actionform和action屬於MVC哪一層,為什麽? 解答:actionform和action屬於MVC的Model層,Action用

多線程筆試試題匯總

面試官 同步 線程同步 編程題 初始 線程與進程的區別 結束 選擇 殺毒 第一篇 多線程筆試面試題匯總 本文轉載於秒殺多線程系列,原博客地址:http://blog.csdn.net/morewindows/article/details/7392749 多

java筆試試題總結

linix 日誌 面試 arr java json數據 size 冒泡 格式 字符串如何倒序輸出? StringBuffer,String,StringBulider區別? Map與Hashmap 的關系? HashSet與HashTable 的關系? Map裏如何放li

海量數據處理試題與十個方法大總結

面試題 線性 set TE 連續子序列 文本文 過程 現在 動態規劃 1. 給定a、b兩個文件,各存放50億個url,每個url各占64字節,內存限制是4G,讓你找出a、b文件共同的url? 方案1:可以估計每個文件安的大小為50G×64=320G,遠遠大於內存限制的4G。

Java筆試試題(三)

共享 ble ati uil sys res 表達式 split 底層 每日一句:想,都是問題;做,才是答案。 構造器Constructor是否可被Override?構造器Constructor不能被繼承,因此不能重寫Override,但是可以被重載Overload。

Java筆試試題(四)

人員 syn 獲得 直接 作用 sleep 超過 分配 bcd 每日一句:我既不悲觀,也不樂觀,只是每天早上睜開眼睛迎接新的一天,一個人努力過下去 1. 下面這條語句一共創建了多少個對象:String s = "a"+"b"+&quo

java筆試試題(五)

oot 控件庫 rect 地址 edi javascrip apach getc mat 每日一句: 你未必出類拔萃,但一定與眾不同。 1. 說說你使用過哪些ajax技術和框架,說它們的區別AJAX(Asynchronous JavaScript And XML,異步Jav