1. 程式人生 > >整理的最全 python常見面試題(基本必考)① ②③④⑤⑥⑦⑧⑨⑩

整理的最全 python常見面試題(基本必考)① ②③④⑤⑥⑦⑧⑨⑩

1.大資料的檔案讀取:

  ① 利用生成器generator;

  ②迭代器進行迭代遍歷:for line in file;

2.迭代器和生成器的區別:

答:(1)迭代器是一個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、dict、tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後臺for語句對容器物件呼叫iter()函式,iter()是python的內建函式。iter()會返回一個定義了next()方法的迭代器物件,它在容器中逐個訪問容器內元素,next()也是python的內建函式。在沒有後續元素時,next()會丟擲一個StopIteration異常

2)生成器(Generator)是建立迭代器的簡單而強大的工具。它們寫起來就像是正規的函式,只是在需要返回資料的時候使用yield語句。每次next()被呼叫時,生成器會返回它脫離的位置(它記憶語句最後一次執行的位置和所有的資料值)

區別:生成器能做到迭代器能做的所有事,而且因為自動建立了__iter__()和next()方法,生成器顯得特別簡潔,而且生成器也是高效的,使用生成器表示式取代列表解析可以同時節省記憶體。除了建立和儲存程式狀態的自動方法,當發生器終結時,還會自動丟擲StopIteration異常


3.裝飾器的作用和功能:

 ①引入日誌;函式執行時間統計;執行函式前預備處理;執行函式後的清理功能;許可權校驗等場景;快取;

4.談談你對非同步阻塞非阻塞的理解:

 詳情見百度

5.簡單談下GIL:

 Global Interpreter Lock(全域性直譯器鎖)

    Python程式碼的執行由Python 虛擬機器(也叫直譯器主迴圈,CPython版本)來控制,Python 在設計之初就考慮到要在直譯器的主迴圈中,同時只有一個執行緒在執行,即在任意時刻,只有一個執行緒在直譯器中執行。對Python 虛擬機器的訪問由全域性直譯器鎖(GIL)來控制,正是這個鎖能保證同一時刻只有一個執行緒在執行。在多執行緒環境中,Python 虛擬機器按以下方式執行:1. 設定GIL
2. 切換到一個執行緒去執行
3. 執行:
    a. 指定數量的位元組碼指令,或者    b. 執行緒主動讓出控制(可以呼叫time.sleep(0))
4. 把執行緒設定為睡眠狀態
5. 解鎖GIL
6. 再次重複以上所有步驟在呼叫外部程式碼(如C/C++擴充套件函式)的時候,GIL 將會被鎖定,直到這個函式結束為止(由於在這期間沒有Python 的位元組碼被執行,所以不會做執行緒切換)。

6.簡單談下python2和python3的區別:


7.find和grep?:

  grep命令是一種強大的文字搜尋工具,grep搜尋內容串可以是正則表示式,允許對文字檔案進行模式查詢。如果找到匹配模式,grep列印包含模式的所有行。

   find通常用來再特定的目錄下搜尋符合條件的檔案,也可以用來搜尋特定使用者屬主的檔案。

8.線上服務可能因為種種原因導致掛掉怎麼辦?

  linux下的後臺程序管理利器 supervisor

   每次檔案修改後再linux執行 service supervisord restart

9 如何提高python的執行效率

   使用生成器;關鍵程式碼使用外部功能包(Cython,pylnlne,pypy,pyrex);針對迴圈的優化--儘量避免在迴圈中訪問變數的屬性

10.常用Linux命令:

  ls,help,cd,more,clear,mkdir,pwd,rm,grep,find,mv,su,date

11.python簡單的列表去重

  set() 集合去重

12. python 中 yield 的用法?

答: yield簡單說來就是一個生成器,這樣函式它記住上次返 回時在函式體中的位置。對生成器第 二次(或n 次)呼叫跳轉至該函 次)呼叫跳轉至該函 數。

13. python是如何進行記憶體管理的?

    一、垃圾回收:python不像C++,Java等語言一樣,他們可以不用事先宣告變數型別而直接對變數進行賦值。對Python語言來講,物件的型別和記憶體都是在執行時確定的。這也是為什麼我們稱Python語言為動態型別的原因(這裡我們把動態型別可以簡單的歸結為對變數記憶體地址的分配是在執行時自動判斷變數型別並對變數進行賦值)。

    二、引用計數:Python採用了類似Windows核心物件一樣的方式來對記憶體進行管理。每一個物件,都維護這一個對指向該對物件的引用的計數。當變數被繫結在一個物件上的時候,該變數的引用計數就是1,(還有另外一些情況也會導致變數引用計數的增加),系統會自動維護這些標籤,並定時掃描,當某標籤的引用計數變為0的時候,該對就會被回收。

    三、記憶體池機制Python的記憶體機制以金字塔行,-1,-2層主要有作業系統進行操作,

      第0層是C中的malloc,free等記憶體分配和釋放函式進行操作;

      第1層和第2層是記憶體池,有Python的介面函式PyMem_Malloc函式實現,當物件小於256K時有該層直接分配記憶體;

      第3層是最上層,也就是我們對Python物件的直接操作;

C 中如果頻繁的呼叫 malloc 與 free 時,是會產生效能問題的.再加上頻繁的分配與釋放小塊的記憶體會產生記憶體碎片. Python 在這裡主要乾的工作有:

  如果請求分配的記憶體在1~256位元組之間就使用自己的記憶體管理系統,否則直接使用 malloc.

  這裡還是會呼叫 malloc 分配記憶體,但每次會分配一塊大小為256k的大塊記憶體.

  經由記憶體池登記的記憶體到最後還是會回收到記憶體池,並不會呼叫 C 的 free 釋放掉.以便下次使用.對於簡單的Python物件,例如數值、字串,元組(tuple不允許被更改)採用的是複製的方式(深拷貝?),也就是說當將另一個變數B賦值給變數A時,雖然A和B的記憶體空間仍然相同,但當A的值發生變化時,會重新給A分配空間,A和B的地址變得不再相同

14.描述陣列、連結串列、佇列、堆疊的區別?

    陣列與連結串列是資料儲存方式的概念,陣列在連續的空間中儲存資料,而連結串列可以在非連續的空間中儲存資料;

    佇列和堆疊是描述資料存取方式的概念,佇列是先進先出,而堆疊是後進先出;佇列和堆疊可以用陣列來實現,也可以用連結串列實現。

15.你知道幾種排序,講一講你最熟悉的一種?


-----------------------------------分割線---------------------------------------

Web框架部分

1.django 中當一個使用者登入 A 應用伺服器(進入登入狀態),然後下次請求被 nginx 代理到 B 應用伺服器會出現什麼影響?

如果使用者在A應用伺服器登陸的session資料沒有共享到B應用伺服器,納米之前的登入狀態就沒有了。

2.跨域請求問題django怎麼解決的(原理)

啟用中介軟體

post請求

驗證碼

表單中新增{%csrf_token%}標籤

3.請解釋或描述一下Django的架構

對於Django框架遵循MVC設計,並且有一個專有名詞:MVT

M全拼為Model,與MVC中的M功能相同,負責資料處理,內嵌了ORM框架

V全拼為View,與MVC中的C功能相同,接收HttpRequest,業務處理,返回HttpResponse

T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html,內嵌了模板引擎

4.django對資料查詢結果排序怎麼做,降序怎麼做,查詢大於某個欄位怎麼做

排序使用order_by()

降序需要在排序欄位名前加-

查詢欄位大於某個值:使用filter(欄位名_gt=值)

5.說一下Django,MIDDLEWARES中介軟體的作用?

答:中介軟體是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。

6.你對Django的認識?

Django是走大而全的方向,它最出名的是其全自動化的管理後臺:只需要使用起ORM,做簡單的物件定義,它就能自動生成資料庫結構、以及全功能的管理後臺。

Django內建的ORM跟框架內的其他模組耦合程度高。

應用程式必須使用Django內建的ORM,否則就不能享受到框架內提供的種種基於其ORM的便利;理論上可以切換掉其ORM模組,但這就相當於要把裝修完畢的房子拆除重新裝修,倒不如一開始就去毛胚房做全新的裝修。

Django的賣點是超高的開發效率,其效能擴充套件有限;採用Django的專案,在流量達到一定規模後,都需要對其進行重構,才能滿足效能的要求。

Django適用的是中小型的網站,或者是作為大型網站快速實現產品雛形的工具。

Django模板的設計哲學是徹底的將程式碼、樣式分離; Django從根本上杜絕在模板中進行編碼、處理資料的可能。

7. Django重定向你是如何實現的?用的什麼狀態碼?

使用HttpResponseRedirect

redirect和reverse

狀態碼:302,301

8.ngnix的正向代理與反向代理?

答:正向代理 是一個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理髮送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設定才能使用正向代理。

反向代理正好相反,對於客戶端而言它就像是原始伺服器,並且客戶端不需要進行任何特別的設定。客戶端向反向代理的名稱空間中的內容傳送普通請求,接著反向代理將判斷向何處(原始伺服器)轉交請求,並將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。

9. Tornado 的核是什麼?

Tornado 的核心是 ioloop 和 iostream 這兩個模組,前者提供了一個高效的 I/O 事件迴圈,後者則封裝了 一個無阻塞的 socket 。通過向 ioloop 中新增網路 I/O 事件,利用無阻塞的 socket ,再搭配相應的回撥 函式,便可達到夢寐以求的高效非同步執行。

10.Django 本身提供了 runserver,為什麼不能用來部署?

runserver 方法是除錯 Django 時經常用到的執行方式,它使用 Django 自帶的

WSGI Server 執行,主要在測試和開發中使用,並且 runserver 開啟的方式也是單程序 。

 uWSGI 是一個 Web 伺服器,它實現了 WSGI 協議、uwsgi、http 等協議。注意 uwsgi 是一種通訊協議,而 uWSGI 是實現 uwsgi 協議和 WSGI 協議的 Web 伺服器。uWSGI 具有超快的效能、低記憶體佔用和多 app 管理等優點,並且搭配著 Nginx

就是一個生產環境了,能夠將使用者訪問請求與應用 app 隔離開,實現真正的部署 。相比來講,支援的併發量更高,方便管理多程序,發揮多核的優勢,提升效能。

-----------------------------------分割線---------------------------------------

網路程式設計和前端部分

1.AJAX是什麼,如何使用AJAX?

ajax(非同步的javascript 和xml) 能夠重新整理區域性網頁資料而不是重新載入整個網頁。

第一步,建立xmlhttprequest物件,var xmlhttp =new XMLHttpRequest();XMLHttpRequest物件用來和伺服器交換資料。

第二步,使用xmlhttprequest物件的open()和send()方法傳送資源請求給伺服器。

第三步,使用xmlhttprequest物件的responseText或responseXML屬性獲得伺服器的響應。

第四步onreadystatechange函式,當傳送請求到伺服器,我們想要伺服器響應執行一些功能就需要使用onreadystatechange函式,每次xmlhttprequest物件的readyState發生改變都會觸發onreadystatechange函式。

2. 常見的HTTP狀態碼有哪些?

200 OK

301 Moved Permanently

302 Found

304 Not Modified

307 Temporary Redirect

400 Bad Request

401 Unauthorized

403 Forbidden

404 Not Found

410 Gone

500 Internal Server Error

501 Not Implemented

3. Post和get區別?

1、GET請求,請求的資料會附加在URL之後,以?分割URL和傳輸資料,多個引數用&連線。URL的編碼格式採用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字元都要編碼之後再傳輸。

POST請求:POST請求會把請求的資料放置在HTTP請求包的包體中。上面的item=bandsaw就是實際的傳輸資料。

因此,GET請求的資料會暴露在位址列中,而POST請求則不會。

2、傳輸資料的大小

HTTP規範中,沒有對URL的長度和傳輸的資料大小進行限制。但是在實際開發過程中,對於GET,特定的瀏覽器和伺服器對URL的長度有限制。因此,在使用GET請求時,傳輸資料會受到URL長度的限制。

對於POST,由於不是URL傳值,理論上是不會受限制的,但是實際上各個伺服器會規定對POST提交資料大小進行限制,Apache、IIS都有各自的配置。

3、安全性

POST的安全性比GET的高。這裡的安全是指真正的安全,而不同於上面GET提到的安全方法中的安全,上面提到的安全僅僅是不修改伺服器的資料。比如,在進行登入操作,通過GET請求,使用者名稱和密碼都會暴露再URL上,因為登入頁面有可能被瀏覽器快取以及其他人檢視瀏覽器的歷史記錄的原因,此時的使用者名稱和密碼就很容易被他人拿到了。除此之外,GET請求提交的資料還可能會造成Cross-site request frogery攻擊。

4.cookie 和session 的區別?

1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。

2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙考慮到安全應當使用session。

3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用伺服器的效能考慮到減輕伺服器效能方面,應當使用COOKIE。

4、單個cookie儲存的資料不能超過4K,很多瀏覽器都限制一個站點最多儲存20個cookie。

5、建議:
   將登陸資訊等重要資訊存放為SESSION
   其他資訊如果需要保留,可以放在COOKIE中

5.建立一個簡單tcp伺服器需要的流程

1.socket建立一個套接字

2.bind繫結ip和port

3.listen使套接字變為可以被動連結

4.accept等待客戶端的連結

5.recv/send接收發送資料

6.請簡單說一下三次握手和四次揮手?什麼是2msl?為什麼要這樣做?

2MSL即兩倍的MSL,TCP的TIME_WAIT狀態也稱為2MSL等待狀態, 

TCP的一端發起主動關閉,在發出最後一個ACK包後,

即第3次握 手完成後傳送了第四次握手的ACK包後就進入了TIME_WAIT狀態,

必須在此狀態上停留兩倍的MSL時間,

等待2MSL時間主要目的是怕最後一個 ACK包對方沒收到,

那麼對方在超時後將重發第三次握手的FIN包,

主動關閉端接到重發的FIN包後可以再發一個ACK應答包。

TIME_WAIT狀態 時兩端的埠不能使用,要等到2MSL時間結束才可繼續使用。

當連線處於2MSL等待階段時任何遲到的報文段都將被丟棄。

不過在實際應用中可以通過設定 SO_REUSEADDR選項達到不必等待2MSL時間結束再使用此埠。

-----------------------------------分割線---------------------------------------

爬蟲和資料庫部分


1.scrapy和scrapy-redis有什麼區別?為什麼選擇redis資料庫?

1) scrapy是一個Python爬蟲框架,爬取效率極高,具有高度定製性,但是不支援分散式。而scrapy-redis一套基於redis資料庫、執行在scrapy框架之上的元件,可以讓scrapy支援分散式策略,Slaver端共享Master端redis資料庫裡的item佇列、請求佇列和請求指紋集合。

2) 為什麼選擇redis資料庫,因為redis支援主從同步,而且資料都是快取在記憶體中的,所以基於redis的分散式爬蟲,對請求和資料的高頻讀取效率非常高。

2. 你用過的爬蟲框架或者模組有哪些?談談他們的區別或者優缺點?

Python自帶:urllib,urllib2

方:requests

   架:Scrapy

urllib和urllib2模組都做與請求URL相關的操作,但他們提供不同的功能。

urllib2.:urllib2.urlopen可以接受一個Request物件或者url,(在接受Request物件時候,並以此可以來設定一個URL 的headers),urllib.urlopen只接收一個url

urllib 有urlencode,urllib2沒有,因此總是urllib,urllib2常會一起使用的原因

scrapy是封裝起來的框架,他包含了下載器,解析器,日誌及異常處理,基於多執行緒, twisted的方式處理,對於固定單個網站的爬取開發,有優勢,但是對於多網站爬取 100個網站,併發及分散式處理方面,不夠靈活,不便調整與括展。

request 是一個HTTP庫, 它只是用來,進行請求,對於HTTP請求,他是一個強大的庫,下載,解析全部自己處理,靈活性更高,高併發與分散式部署也非常靈活,對於功能可以更好實現.

Scrapy優缺點:

優點:scrapy 是非同步的

採取可讀性更強的xpath代替正則

強大的統計和log系統

同時在不同的url上爬行

支援shell方式,方便獨立除錯

middleware,方便寫一些統一的過濾器

通過管道的方式存入資料庫

缺點:基於python的爬蟲框架,擴充套件性比較差

基於twisted框架,執行中的exception是不會幹掉reactor,並且非同步框架出錯後是不會停掉其他任務的,資料出錯後難以察覺。

3.你常用的mysql引擎有哪些?各引擎間有什麼區別?

主要 MyISAM 與 InnoDB 兩個引擎,其主要區別如下:

一、InnoDB 支援事務,MyISAM 不支援,這一點是非常之重要。事務是一種高

級的處理方式,如在一些列增刪改中只要哪個出錯還可以回滾還原,而 MyISAM

就不可以了;

二、MyISAM 適合查詢以及插入為主的應用,InnoDB 適合頻繁修改以及涉及到

安全性較高的應用;

三、InnoDB 支援外來鍵,MyISAM 不支援;

四、MyISAM 是預設引擎,InnoDB 需要指定;

五、InnoDB 不支援 FULLTEXT 型別的索引;

六、InnoDB 中不儲存表的行數,如 select count(*) from table 時,InnoDB;需要

掃描一遍整個表來計算有多少行,但是 MyISAM 只要簡單的讀出儲存好的行數即

可。注意的是,當 count(*)語句包含 where 條件時 MyISAM 也需要掃描整個表;

七、對於自增長的欄位,InnoDB 中必須包含只有該欄位的索引,但是在 MyISAM

表中可以和其他欄位一起建立聯合索引;

八、清空整個表時,InnoDB 是一行一行的刪除,效率非常慢。MyISAM 則會重

建表;

九、InnoDB 支援行鎖(某些情況下還是鎖整表,如 update table set a=1 where

user like '%lee%'

4.描述下scrapy框架執行的機制?

答:從start_urls裡獲取第一批url併發送請求,請求由引擎交給排程器入請求佇列,獲取完畢後,排程器將請求佇列裡的請求交給下載器去獲取請求對應的響應資源,並將響應交給自己編寫的解析方法做提取處理:1. 如果提取出需要的資料,則交給管道檔案處理;2. 如果提取出url,則繼續執行之前的步驟(傳送url請求,並由引擎將請求交給排程器入佇列...),直到請求佇列裡沒有請求,程式結束。

5.什麼是關聯查詢,有哪些?

答:將多個表聯合起來進行查詢,主要有內連線、左連線、右連線、全連線(外連線)

6.寫爬蟲是用多程序好?還是多執行緒好? 為什麼?

答:IO密集型程式碼(檔案處理、網路爬蟲等),多執行緒能夠有效提升效率(單執行緒下有IO操作會進行IO等待,造成不必要的時間浪費,而開啟多執行緒能線上程A等待時,自動切換到執行緒B,可以不浪費CPU的資源,從而能提升程式執行效率)。在實際的資料採集過程中,既考慮網速和響應的問題,也需要考慮自身機器的硬體情況,來設定多程序或多執行緒

7.資料庫的優化?

1. 優化索引、SQL 語句、分析慢查詢;

2. 設計表的時候嚴格根據資料庫的設計正規化來設計資料庫;

3. 使用快取,把經常訪問到的資料而且不需要經常變化的資料放在快取中,能

節約磁碟IO;

4. 優化硬體;採用SSD,使用磁碟佇列技術(RAID0,RAID1,RDID5)等;

5. 採用MySQL 內部自帶的表分割槽技術,把資料分層不同的檔案,能夠提高磁

盤的讀取效率;

6. 垂直分表;把一些不經常讀的資料放在一張表裡,節約磁碟I/O;

7. 主從分離讀寫;採用主從複製把資料庫的讀操作和寫入操作分離開來;

8. 分庫分表分機器(資料量特別大),主要的的原理就是資料路由;

9. 選擇合適的表引擎,引數上的優化;

10. 進行架構級別的快取,靜態化和分散式;

11. 不採用全文索引;

12. 採用更快的儲存方式,例如 NoSQL儲存經常訪問的資料

8.常見的反爬蟲和應對方法?

1).通過Headers反爬蟲

從使用者請求的Headers反爬蟲是最常見的反爬蟲策略。很多網站都會對Headers的User-Agent進行檢測,還有一部分網站會對Referer進行檢測(一些資源網站的防盜鏈就是檢測Referer)。如果遇到了這類反爬蟲機制,可以直接在爬蟲中新增Headers,將瀏覽器的User-Agent複製到爬蟲的Headers中;或者將Referer值修改為目標網站域名。對於檢測Headers的反爬蟲,在爬蟲中修改或者新增Headers就能很好的繞過。

2).基於使用者行為反爬蟲

還有一部分網站是通過檢測使用者行為,例如同一IP短時間內多次訪問同一頁面,或者同一賬戶短時間內多次進行相同操作。

大多數網站都是前一種情況,對於這種情況,使用IP代理就可以解決。可以專門寫一個爬蟲,爬取網上公開的代理ip,檢測後全部儲存起來。這樣的代理ip爬蟲經常會用到,最好自己準備一個。有了大量代理ip後可以每請求幾次更換一個ip,這在requests或者urllib2中很容易做到,這樣就能很容易的繞過第一種反爬蟲。

對於第二種情況,可以在每次請求後隨機間隔幾秒再進行下一次請求。有些有邏輯漏洞的網站,可以通過請求幾次,退出登入,重新登入,繼續請求來繞過同一賬號短時間內不能多次進行相同請求的限制。

3).動態頁面的反爬蟲

上述的幾種情況大多都是出現在靜態頁面,還有一部分網站,我們需要爬取的資料是通過ajax請求得到,或者通過JavaScript生成的。首先用Fiddler對網路請求進行分析。如果能夠找到ajax請求,也能分析出具體的引數和響應的具體含義,我們就能採用上面的方法,直接利用requests或者urllib2模擬ajax請求,對響應的json進行分析得到需要的資料。

能夠直接模擬ajax請求獲取資料固然是極好的,但是有些網站把ajax請求的所有引數全部加密了。我們根本沒辦法構造自己所需要的資料的請求。這種情況下就用selenium+phantomJS,呼叫瀏覽器核心,並利用phantomJS執行js來模擬人為操作以及觸發頁面中的js指令碼。從填寫表單到點選按鈕再到滾動頁面,全部都可以模擬,不考慮具體的請求和響應過程,只是完完整整的把人瀏覽頁面獲取資料的過程模擬一遍。

用這套框架幾乎能繞過大多數的反爬蟲,因為它不是在偽裝成瀏覽器來獲取資料(上述的通過新增 Headers一定程度上就是為了偽裝成瀏覽器),它本身就是瀏覽器,phantomJS就是一個沒有介面的瀏覽器,只是操控這個瀏覽器的不是人。利selenium+phantomJS能幹很多事情,例如識別點觸式(12306)或者滑動式的驗證碼,對頁面表單進行暴力破解等。

9.分散式爬蟲主要解決什麼問題?

1)ip

2)頻寬

3)cpu

4)io

10.爬蟲過程中驗證碼怎麼處理?

1.scrapy自帶(但是成功率不高)

2.付費介面(若快http://www.ruokuai.com/home/pricetype

更多面試文件都上傳到百度網盤了

網盤地址 連結:https://pan.baidu.com/s/1h4NfOQQKlcPUmgihii0ZsA 

密碼:nj30

# 歡迎轉載,轉載請註明地址 https://mp.csdn.net/postedit/80165589

相關推薦

整理 python見面試題基本

1、大資料的檔案讀取  ① 利用生成器generator  ②迭代器進行迭代遍歷:for line in file2、迭代器和生成器的區別1)迭代器是一個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、dict、tupl

整理 python見面試題基本① ②③④⑤⑥⑦⑧⑨⑩

1.大資料的檔案讀取:  ① 利用生成器generator;  ②迭代器進行迭代遍歷:for line in file;2.迭代器和生成器的區別:答:(1)迭代器是一個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、di

史上 python見面試題

大資料的檔案讀取   ① 利用生成器generator   ②迭代器進行迭代遍歷:for line in file 迭代器和生成器的區別 1)迭代器是一個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、dic

python 見面試題web 後端

此貼持續更新,歡迎大家前來補充 目錄 1、.socket,udp,tcp 2、程序、協程、執行緒 3、多執行緒在web專案中的應用 4、 Python2中range 和xrange的區別? 5、深拷貝淺拷貝 6、celery  1、.socke

面試求職:資料庫見面試題資料庫優化思路

查詢分析器中執行:--建表table1,table2:create table table1(id int,name varchar(10))create table table2(id int,score int)insert into table1 select 1,'lee'insert into ta

Python見面試題彙總根據面試總結

Redis: Redis快取擊穿、快取雪崩、快取重建 回答參考: 快取擊穿:     當一個連線訪問快取資料庫中不存在的資料時,會直接通過快取資料庫到後端資料庫中查詢資料,但如果有大量連線在查詢一個不存在的資料,就會有大量連線直接訪問到後

熬夜吐血整理web前端面試題合輯

JavaScript篇 Javascript很多考題都出自紅寶書(JavaScript高階程式設計) JS 有哪些資料型別? 基本資料型別:String Boolean Number Unde

熬夜吐血整理web前端面試題合輯

Ajax/ ES6/Http等知識 Ajax是什麼? 如何建立一個Ajax? Ajax的全稱:Asynchronous Javascript And XML。 Ajax是一種用於建立快速動態網頁的技

python 見面試題整理

希望此文可以長期更新並作為一篇Python的面試寶典。每一道題目都附有詳細解答,以及更加詳細的回答連結。此篇是概念篇,下一篇會更新面試題程式碼篇。 (一)、這兩個引數是什麼意思:*args,**kwargs?我們為什麼要使用它們? 答:如果我們不確定往一個函式中傳入多少引數,或者我們希望以元組(tuple)

python爬蟲見面試題

前言   之所以在這裡寫下python爬蟲常見面試題及解答,一是用作筆記,方便日後回憶;二是給自己一個和大家交流的機會,互相學習、進步,希望不正之處大家能給予指正;三是我也是網際網路寒潮下崗的那批人之一,為了找工作而做準備。 一、題目部分 1、python中常用的資料結構有哪些?請簡要介紹一下。 2、

python爬蟲見面試題

前言   之所以在這裡寫下python爬蟲常見面試題及解答,一是用作筆記,方便日後回憶;二是給自己一個和大家交流的機會,互相學習、進步,希望不正之處大家能給予指正;三是我也是網際網路寒潮下崗的那批人之一,為了找工作而做準備。 一、題目部分 1、scrapy框架專題部分(很多面試都會涉及到這部分) (1

第十二章 Shell腳本編寫及見面試題

shell腳本 shell面試題 shell本章目錄:12.11 屏蔽網站訪問頻繁的IP1)屏蔽每分鐘訪問超過200的IP方法1:以Nginx日誌作為測試DATE=$(date +%d/%b/%Y:%H:%M) ABNORMAL_IP=$(tail -n5000 access.log |grep $DATE

php見面試題2

文字 select lec 面試題 subst 分析 mat 例如 %d 1、session與cookie的區別   1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。   2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COO

php 見面試題3

earch tla 遍歷目錄 phpstudy ech key -c clas handle 1、數組$a = array(‘a‘=>‘a‘,‘b‘=>‘b‘,‘c‘=>‘c‘),如何將array(‘d’=>‘d‘)快速插入 a 和 b 之間? f

python見面試題】之python 中對list去重的多種方法

ont dex 如果 原來 簡單 div set方法 ron 職位 在python相關職位的面試過程中,會對列表list的去重進行考察。(註意有時會要求保證去重的順序性) 1、直觀方法 1 li=[1,2,3,4,5,1,2,3] 2 new_li=[] 3 for

python見面試題

lis sort ldb pytho bsp font alex 作業 並且 在這裏存一下python常見的一些面試題,當然也可以用其他語言實現啦! 1.列表去重 1 """ 2 有一個列表[11, 2, 3, 3, 7, 9, 11, 2, 3],去重並且保持原

【JAVA秒會技術之秒殺面試官】JavaEE見面試題

parameter 和數 程序 配置 except 查詢 解析 list 就會 1.Struts2中,Action通過什麽方式獲取用戶從頁面輸入的數據,又是通過什麽方法把數據傳給視圖層顯示的? 答:(1)Action從頁面獲取數據的方式有三種: ①通過Act

【JAVA秒會技術之秒殺面試官】JavaSE見面試題

方法 變量 dir 步驟 註解 無法 t對象 面試 線程 21.在Java中,如何跳出當前的多重嵌套循環? 答:在最外層循環前加一個標記如A,然後用break A;可以跳出多重循環。(Java中支持帶標簽的break和continue語句,作用有點類似於C和C++中的go

數據庫見面試題1

過程 屬性 規則 ima isolation exec 執行過程 red ron 1. 超鍵、候選鍵、主鍵、和外鍵 定義: 超鍵(super key):在關系中能惟一標識元素屬性的集稱為關系模式的超鍵。 候選鍵:(Candidate Key):不含有多余屬性的超鍵稱為候選

【JAVA秒會技術之秒殺面試官】JavaSE見面試題

mark error 對象創建 事件 算法 pool ret sync 數量 41..比較一下Java和JavaSciprt? 答:其實Java和JavaScript最重要的區別是一個是靜態語言,一個是動態語言: (1)基於對象和面向對象:Java是一種真正的面向對象的語言