亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

12個(gè)Python程序員面試必備問(wèn)題與答案

  發(fā)布時(shí)間:2019-12-25 16:50:22   作者:千鋒python和唐唐   我要評(píng)論
這篇文章主要介紹了12個(gè)Python程序員面試必備問(wèn)題與答案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

這段時(shí)間很多伙伴問(wèn)我有沒(méi)有關(guān)于Python的面試題和答案,哈哈哈,7月確實(shí)也是面試跳槽的高峰哈!這兩天總結(jié)了一下,這12個(gè)Python面試題和答案是必考的,給大家列了下來(lái),認(rèn)真看哈!

1. 什么是pickling和unpickling?

Pickle模塊讀入任何Python對(duì)象,將它們轉(zhuǎn)換成字符串,然后使用dump函數(shù)將其轉(zhuǎn)儲(chǔ)到一個(gè)文件中——這個(gè)過(guò)程叫做pickling。反之從存儲(chǔ)的字符串文件中提取原始Python對(duì)象的過(guò)程,叫做unpickling。

2. 什么是Python的命名空間?

在Python中,所有的名字都存在于一個(gè)空間中,它們?cè)谠摽臻g中存在和被操作——這就是命名空間。它就好像一個(gè)盒子,每一個(gè)變量名字都對(duì)應(yīng)裝著一個(gè)對(duì)象。當(dāng)查詢變量的時(shí)候,會(huì)從該盒子里面尋找相應(yīng)的對(duì)象。

3. args,kwargs?參數(shù)是什么?

如果我們不確定要往函數(shù)中傳入多少個(gè)參數(shù),或者我們想往函數(shù)中以列表和元組的形式傳參數(shù)時(shí),那就使要用*args;如果我們不知道要往函數(shù)中傳入多少個(gè)關(guān)鍵詞參數(shù),或者想傳入字典的值作為關(guān)鍵詞參數(shù)時(shí),那就要使用**kwargs。

4. 負(fù)索引是什么?

Python中的序列索引可以是正也可以是負(fù)。如果是正索引,0是序列中的第一個(gè)索引,1是第二個(gè)索引。如果是負(fù)索引,(-1)是最后一個(gè)索引而(-2)是倒數(shù)第二個(gè)索引。

5. Python是如何進(jìn)行內(nèi)存管理的?

Python的內(nèi)存管理是由私有heap空間管理的。所有的Python對(duì)象和數(shù)據(jù)結(jié)構(gòu)都在一個(gè)私有heap中。程序員沒(méi)有訪問(wèn)該heap的權(quán)限,只有解釋器才能對(duì)它進(jìn)行操作。為Python的heap空間分配內(nèi)存是由Python的內(nèi)存管理模塊進(jìn)行的,其核心API會(huì)提供一些訪問(wèn)該模塊的方法供程序員使用。Python有自帶的垃圾回收系統(tǒng),它回收并釋放沒(méi)有被使用的內(nèi)存,讓它們能夠被其他程序使用。

6. 如何判斷單向鏈表中是否有環(huán)

首先遍歷鏈表,尋找是否有相同地址,借此判斷鏈表中是否有環(huán)。如果程序進(jìn)入死循環(huán),則需要一塊空間來(lái)存儲(chǔ)指針,遍歷新指針時(shí)將其和儲(chǔ)存的舊指針比對(duì),若有相同指針,則該鏈表有環(huán),否則將這個(gè)新指針存下來(lái)后繼續(xù)往下讀取,直到遇見(jiàn)NULL,這說(shuō)明這個(gè)鏈表無(wú)環(huán)。

7. mysql數(shù)據(jù)庫(kù)如何分區(qū)、分表?

分表可以通過(guò)三種方式:mysql集群、自定義規(guī)則和merge存儲(chǔ)引擎。

分區(qū)有四類:

RANGE 分區(qū):基于屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。

LIST 分區(qū):類似于按RANGE分區(qū),區(qū)別在于LIST分區(qū)是基于列值匹配一個(gè)離散值集合中的某個(gè)值來(lái)進(jìn)行選擇。

HASH分區(qū):基于用戶定義的表達(dá)式的返回值來(lái)進(jìn)行選擇的分區(qū),該表達(dá)式使用將要插入到表中的這些行的列值進(jìn)行計(jì)算。這個(gè)函數(shù)可以包含MySQL 中有效的、產(chǎn)生非負(fù)整數(shù)值的任何表達(dá)式。

KEY 分區(qū):類似于按HASH分區(qū),區(qū)別在于KEY分區(qū)只支持計(jì)算一列或多列,且MySQL 服務(wù)器提供其自身的哈希函數(shù)。必須有一列或多列包含整數(shù)值。

8. 如何對(duì)查詢命令進(jìn)行優(yōu)化?

a. 應(yīng)盡量避免全表掃描,首先應(yīng)考慮在 where 及 order by 涉及的列上建立索。

b. 應(yīng)盡量避免在 where 子句中對(duì)字段進(jìn)行 null 值判斷,避免使用!=或<>操作符,避免使用 or 連接條件,或在where子句中使用參數(shù)、對(duì)字段進(jìn)行表達(dá)式或函數(shù)操作,否則會(huì)導(dǎo)致權(quán)標(biāo)掃描

c. 不要在 where 子句中的“=”左邊進(jìn)行函數(shù)、算術(shù)運(yùn)算或其他表達(dá)式運(yùn)算,否則系統(tǒng)將可能無(wú)法正確使用索引。

d. 使用索引字段作為條件時(shí),如果該索引是復(fù)合索引,那么必須使用到該索引中的第一個(gè)字段作為條件時(shí)才能保證系統(tǒng)使用該索引,否則該索引將不會(huì)被使用。

e. 很多時(shí)候可考慮用 exists 代替 in

f. 盡量使用數(shù)字型字段

g. 盡可能的使用 varchar/nvarchar 代替 char/nchar

h. 任何地方都不要使用 select * from t ,用具體的字段列表代替“*”,不要返回用不到的任何字段。

i. 盡量使用表變量來(lái)代替臨時(shí)表。

j. 避免頻繁創(chuàng)建和刪除臨時(shí)表,以減少系統(tǒng)表資源的消耗。

k. 盡量避免使用游標(biāo),因?yàn)橛螛?biāo)的效率較差。

l. 在所有的存儲(chǔ)過(guò)程和觸發(fā)器的開(kāi)始處設(shè)置 SET NOCOUNT ON ,在結(jié)束時(shí)設(shè)置 SET NOCOUNT OFF

m. 盡量避免大事務(wù)操作,提高系統(tǒng)并發(fā)能力。

n. 盡量避免向客戶端返回大數(shù)據(jù)量,若數(shù)據(jù)量過(guò)大,應(yīng)該考慮相應(yīng)需求是否合理。

9. 多進(jìn)程與多線程的區(qū)別?

a. 簡(jiǎn)而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程。

b. 線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。

c. 另外,進(jìn)程在執(zhí)行過(guò)程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。

d. 線程在執(zhí)行過(guò)程中與進(jìn)程還是有區(qū)別的。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。

e. 從邏輯角度來(lái)看,多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。但操作系統(tǒng)并沒(méi)有將多個(gè)線程看做多個(gè)獨(dú)立的應(yīng)用,來(lái)實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。

10. select和epoll的區(qū)別?

a. select實(shí)現(xiàn)需要自己不斷輪詢所有fd集合,直到設(shè)備就緒,期間可能要睡眠和喚醒多次交替。而epoll其實(shí)也需要調(diào)用epoll_wait不斷輪詢就緒鏈表,期間也可能多次睡眠和喚醒交替,但是它是設(shè)備就緒時(shí),調(diào)用回調(diào)函數(shù),把就緒fd放入就緒鏈表中,并喚醒在epoll_wait中進(jìn)入睡眠的進(jìn)程。雖然都要睡眠和交替,但是select在“醒著”的時(shí)候要遍歷整個(gè)fd集合,而epoll在“醒著”的時(shí)候只要判斷一下就緒鏈表是否為空就行了,這節(jié)省了大量的CPU時(shí)間。

b. select每次調(diào)用都要把fd集合從用戶態(tài)往內(nèi)核態(tài)拷貝一次,并且要把current往設(shè)備等待隊(duì)列中掛一次,而epoll只要一次拷貝,而且把current往等待隊(duì)列上掛也只掛一次(在epoll_wait的開(kāi)始,注意這里的等待隊(duì)列并不是設(shè)備等待隊(duì)列,只是一個(gè)epoll內(nèi)部定義的等待隊(duì)列)。這也能節(jié)省不少的開(kāi)銷。

11. TCP和UDP的區(qū)別?邊緣觸發(fā)和水平觸發(fā)的區(qū)別?

a. 基本區(qū)別:

  • 基于連接與無(wú)連接
  • TCP要求系統(tǒng)資源較多,UDP較少;
  • UDP程序結(jié)構(gòu)較簡(jiǎn)單
  • 流模式(TCP)與數(shù)據(jù)報(bào)模式(UDP);
  • TCP保證數(shù)據(jù)正確性,UDP可能丟包
  • TCP保證數(shù)據(jù)順序,UDP不保證

b. 編程中的區(qū)別

  • socket()的參數(shù)不同
  • UDP Server不需要調(diào)用listen和accept
  • UDP收發(fā)數(shù)據(jù)用sendto/recvfrom函數(shù)
  • TCP:地址信息在connect/accept時(shí)確定
  • UDP:在sendto/recvfrom函數(shù)中每次均 需指定地址信息
  • UDP:shutdown函數(shù)無(wú)效

12. 下面的代碼能夠運(yùn)行么?請(qǐng)解釋?

例如:

能夠運(yùn)行。當(dāng)key缺失時(shí),執(zhí)行DefaultDict類,字典的實(shí)例將自動(dòng)實(shí)例化這個(gè)數(shù)列。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 2019Python必刷面試題(小結(jié))

    這篇文章主要介紹了2019Python必刷面試題(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-25
  • python面試流程與經(jīng)驗(yàn)小結(jié)

    這篇文章主要介紹了python面試流程與經(jīng)驗(yàn),總結(jié)分析了Python面試過(guò)程中的各個(gè)環(huán)節(jié)、所遇到的問(wèn)題以及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-11-16
  • Python經(jīng)典面試題與參考答案集錦

    這篇文章主要介紹了Python經(jīng)典面試題與參考答案,總結(jié)分析了Python面試中各種常見(jiàn)的概念、數(shù)據(jù)結(jié)構(gòu)、算法等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-04
  • Python Web工程師面試相關(guān)問(wèn)題總結(jié)

    這篇文章主要介紹了Python Web工程師面試相關(guān)問(wèn)題,總結(jié)分析了Python Web工程師面試過(guò)程中經(jīng)常遇到的各種問(wèn)題及需要掌握的知識(shí)點(diǎn),需要的朋友可以參考下
    2019-11-01
  • python爬蟲(chóng)面試必看的常見(jiàn)問(wèn)題與參考答案解析

    這篇文章主要介紹了python爬蟲(chóng)面試必看的常見(jiàn)問(wèn)題與參考答案,結(jié)合實(shí)例形式總結(jié)分析了Python爬蟲(chóng)面試相關(guān)的Python基礎(chǔ)知識(shí)、概念、原理、算法及相關(guān)操作注意事項(xiàng),需要的朋友
    2019-10-28
  • python面試常見(jiàn)問(wèn)題及知識(shí)點(diǎn)整理之列表、字典與綜合部分

    這篇文章主要介紹了python面試常見(jiàn)問(wèn)題及知識(shí)點(diǎn)整理之列表、字典與綜合部分,總結(jié)整理了Python面試中關(guān)于列表、字典及其他常見(jiàn)數(shù)據(jù)類型操作技巧,需要的朋友可以參考下
    2019-10-23
  • 兩道阿里python面試題與參考答案解析

    這篇文章主要介紹了兩道阿里python面試題與參考答案,結(jié)合具體實(shí)例形式分析了Python數(shù)組創(chuàng)建、遍歷、拆分及隨機(jī)數(shù)等相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-02
  • 60道硬核Python面試題,論面霸是如何煉成的

    這篇文章主要介紹了60道硬核Python面試題,論面霸是如何煉成的,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-28
  • 關(guān)于Python爬蟲(chóng)面試170道題(推薦)

    這篇文章主要介紹了關(guān)于Python爬蟲(chóng)面試170道題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-15
  • 50個(gè)Python面試問(wèn)題集錦

    Python是目前編程領(lǐng)域最受歡迎的語(yǔ)言。在本文中,我將總結(jié)Python面試中最常見(jiàn)的50個(gè)問(wèn)題。每道題都提供參考答案,感興趣的可以了解下
    2019-06-26

最新評(píng)論