1. python程序員去面試時會被HR經常所問到的問題有哪些天津python培訓
一、常見的HTTP方法有哪些?
1、GET:請求指定的頁面信息,返回實體主體;
2、HEAD:類似於get請求,只不過返回的響應中沒有具體的內容,用於捕獲報頭;
3、POST:向指定資源提交數據進行處理請求(比如表單提交或者上傳文件),。數據被包含在請求體中。
4、PUT:從客戶端向服務端傳送數據取代指定的文檔的內容;
5、DELETE:請求刪除指定的頁面;
6、CONNNECT:HTTP1.1協議中預留給能夠將連接方式改為管道方式的代理伺服器;
7、OPTIONS:允許客戶端查看伺服器的性能;
8、TRACE:回顯伺服器的請求,主要用於測試或者診斷。
二、描述一下scrapy框架的運行機制?
從start_urls裡面獲取url發送請求,請求由請求引擎給調度器入請求對列,獲取完畢後,調度器將請求對列交給下載器去獲取請求對應的響應資源,並將響應交給自己編寫的解析方法做提取處理,如果提取出需要的數據,則交給管道處理,如果提取出url,則繼續執行之前的步驟,直到多列里沒有請求,程序結束。
三、 可變類型和不可變類型
1、可變類型有list,dict.不可變類型有string,number,tuple.
2、當進行修改操作時,可變類型傳遞的是內存中的地址,也就是說,直接修改內存中的值,並沒有開辟新的內存。
3、不可變類型被改變時,並沒有改變原內存地址中的值,而是開辟一塊新的內存,將原地址中的值復制過去,對這塊新開辟的內存中的值進行操作。
四、is和==有什麼區別?
is:比較的是兩個對象的id值是否相等,也就是比較倆對象是否為同一個實例對象。是否指向同一個內存地址
== : 比較的兩個對象的內容/值是否相等,默認會調用對象的eq()方法
五、urllib 和 urllib2 的區別?
urllib 和urllib2都是接受URL請求的相關模塊,但是urllib2可以接受一個Request類的實例來設置URL請求的headers,urllib僅可以接受URL。urllib不可以偽裝你的User-Agent字元串。
urllib提供urlencode()方法用來GET查詢字元串的產生,而urllib2沒有。這是為何urllib常和urllib2一起使用的原因。
2. python面試必備題目有哪些
Q:你做一個自我介紹吧?
旁白:其實遇到好幾家面試官都讓我做自我介紹了,該如何自我介紹陽哥估計都會背了,好玩(惡心)的是在萬達信息面試,面試了3個技術官,每個人都分別讓我做了自我介紹,尼瑪,他們3個就不會溝通一下要問我啥嗎,一個問題至於問我3遍嗎~:funk:陽哥是敢怒不敢言,畢竟在人家的地盤。
PS:自我介紹的內容就不說了,每個人都是獨特的,我就跟大家說一下應該如何自我介紹吧。
一個優良的自我介紹會給面試官留下深刻的印象,大部分情況下,所謂的面試好壞其實看的就是你給面試官留下的印象怎麼樣了,我們用俗語叫感覺。
自我介紹應該分以下幾個部分,按照一定的邏輯連貫起來。如果連貫不起來,或者不夠熟練一定在台下多背幾遍,多講幾遍,但是面試的時候不要說的跟背過似的,高境界就是讓面試官感覺你是臨場發揮的,卻又比背的都好。
1)個人基本信息(姓名、年齡、老家、居住地等)
2)自己來自哪裡(工作地點),是干什麼的(給自己一個清晰的定位,比如:我是一名Android開發工程師),擔任過什麼職務、做過什麼樣的項目
3)自己為何來貴公司面試
4)最後祝願(希望能得到貴公司的認可等等,不用太多,一兩句話就ok)
Q:介紹一下你做過的項目吧?
PS:黑馬那麼多項目,隨便准備3個就ok了。
介紹項目大概的思路如下:
1)這個項目是干什麼的(比如是一個類似網易新聞的地方新聞客戶端,或者類似美團的o2o,或者類似豌豆莢的一個應用市場,或者類似淘寶的購物平台)?解釋就是拿一個市場上耳熟能詳的應用跟自己的應用做類比,省的面試官聽的雲里霧里的。
2)自己負責了哪些模塊(功能)的職責(比如負責系統的架構,核心代碼的編寫,xx功能模塊的開發等等)
3)自己在這個項目中擔當的責任(比如,這個項目是自己獨立開發的,這個項目是和另外一個同事一起架構一起開發的,這個項目是自己負責了幾個核心模塊)
4)項目中都用到了哪些技術
5)從項目中學到了哪些東西(可以從技術方向和業務兩個方向入手)
旁白:面試官問的很多技術性問題跟之前問的都大同小異,因此這里只給出有特色且技術含量高的。陽哥正在寫面試寶典,該寶典核心內容針對的還是技術問題,陽哥會從javase基礎到javase高級,從Android基礎到Android高級以及到Android項目依次展開分析,其次也會寫一些常見的非技術性問題,敬請期待~
Q:①在Listview的優化中,我們為何使用ConvertView?②為何使用ViewHolder?③你認為哪個更能解決問題?④你認為view.inflate和view.findviewById哪個更耗時,為什麼?⑤如果這兩個AP讓你重新寫,你怎麼寫?
PS:上面的問題,陽哥認為是面試以來遇到很難的一個,也是很有技術含量的一道題。前一半問題還好回答,最後一個問題真的需要發揮想像了。
A:①使用ConvertView可以實現對view的復用,這樣大大節約了每次創建對象的時間,提升了ListView的顯示效率。②使用ViewHolder作為內部類,可以將view的子控制項封裝在ViewHolder類中,然後通過View.setTag(ViewHolder)將view和ViewHolder進行綁定,這樣我們就不用每次都調用view的findViewById(id)方法來查找控制項。③使用ConvertView解決了一大部分問題,使用ViewHolder實現了控制項換時間的問題,因為給View對象設置一個Tag本身就是佔用內存的,因此ViewHolder的使用還是需要區分不同的應用場景的, 沒有絕對的好與不好。如果內存足夠需要高效則ViewHolder建議使用,否則不建議使用。④當然是view.inflate耗時,這個函數完成的功能是把xml布局文件通過pullParser的形式給解析到內存中,需要io,需要遞歸子節點。⑤我其實還不太相信我寫出來的代碼比Google官方寫的好,如果讓我寫的話我可能會這樣考慮,當用戶在使用view.inflate的時候將多個id作為數組添加到形參中,這樣在初始化view的使用我就可以給這個view直接調用setTag方法綁定需要的子控制項。不過這個原生方法其實也應該保留共不同的需求使用。
PS:技術面試時間並不長,我回答了幾個之後,他們兩個大眼瞪小眼,A看看B問:你還有什麼問的嗎?B說我沒有,你還有嗎?A說我也沒了。那行,接下來,他們就讓我等人事了。
3. Python編程面試常見問題有哪些
Python編程面試題目一:python下多線程的限制以及多進程中傳遞參數的方式,以及區別
(1)python下多線程的限制以及多進程中傳遞參數的方式
python多線程有個全局解釋器鎖(global interpreter lock),這個鎖的意思是任一時間只能有一個線程使用解釋器,跟單cpu跑多個程序一個意思,大家都是輪著用的,這叫“並發”,不是“並行”。
多進程間共享數據,可以使用 multiprocessing.Value 和 multiprocessing.Array
(2)python多線程與多進程的區別
在UNIX平台上,當某個進程終結之後,該進程需要被其父進程調用wait,否則進程成為僵屍進程(Zombie)。所以,有必要對每個Process對象調用join()方法 (實際上等同於wait)。對於多線程來說,由於只有一個進程,所以不存在此必要性。
多進程應該避免共享資源。在多線程中,我們可以比較容易地共享資源,比如使用全局變數或者傳遞參數。在多進程情況下,由於每個進程有自己獨立的內存空間,以上方法並不合適。此時我們可以通過共享內存和Manager的方法來共享資源。但這樣做提高了程序的復雜度,並因為同步的需要而降低了程序的效率。
Python編程面試題目二:lambada函數
lambda 函數是一個可以接收任意多個參數(包括可選參數)並且返回單個表達式值的函數。 lambda 函數不能包含命令,它們所包含的表達式不能超過一個。不要試圖向lambda 函數中塞入太多的東西;如果你需要更復雜的東西,應該定義一個普通函數,然後想讓它多長就多長。
更多關於Python編程的技巧,干貨,資訊等內容,小編會持續更新。
4. python運維開發工程師面試常見問題有哪些
面試python運維開發工程師每家公司對專業知識的考察側重點是不一樣的,下面給你整理了一些,希望能幫助到你!
python
1、python是強類型還是弱類型的語言
2、python的動態性體現在哪
3、python的namespace:四種;len()等函數的命名空間
4、range和xrange的區別,談到了迭代器
5、於是問怎麼實現迭代器,然後又問了生成器,yield語句
6、將list的中的一萬條字元串合成一條字元串的方法
7、python多線程(g il)
8、python的三目運算符有嗎? 怎麼用一行代碼實現三目運算
linux
1、問linux命令
2、top和ps在進程佔有資源率的統計方式有什麼不同
3、然後扯到了頁表,內存管理,TLB
5、linux文件系統:inode,inode存儲了哪些東西,目錄名,文件名存在哪裡
5. 2022年Python技術類面試題總結(面試題+答案解析)
這是一位有著五年 Python 經驗的好友最近對 Python 崗位面試後的一篇經驗總結,從 Python 就業方向到 Python 面試題。
Python 就業方向 :
下面是 Python 面試知識點,總結了華為、阿里巴巴等互聯網公司 Python 常問面試題。每道題都提供參考答案,希望能夠幫助你在求職面試中脫穎而出,找到一份高薪工作。
這些面試題分為 Python 基礎和 Python高級,內容包含: 基礎語法、文件操作、模塊與包、數據類型、元類、內存管理與垃圾回收機制以及 Python 函數 等知識點。
(一) Python 基礎語法
(二) 文件操作
(三) 模塊與包
(四) 數據類型
(五)企業面試題
(一) 元類
(二)內存管理與垃圾回收機制
(三)函數
(四) 面向對象
由於篇幅有限,這份 Python 面試寶典已經被整理成了PDF文檔,有需要 Python 面試寶典全套完整文檔(面試題+答案解析)的可以 免費領取!
6. 軟體測試面試題:WEB+網路|介面測試|性能測試|自動化測試
1. http代碼表,常考題目
404:找不到資源
500:伺服器內部錯誤,無法完成請求。
501:伺服器不支持請求的功能,無法完成請求。
502:充當網關或代理的伺服器,從遠端伺服器接收到了一個無效的請求。
301:永久移動。請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI,今後任何新的請求都應使用新的URI代替。
302:臨時移動。與301類似。但資源只是臨時被移動,客戶端應繼續使用原有URI。
200:成功。
2. TCP/IP四層網路模型
鏈路層、網路層、傳輸層、應用層。
3. TCP/UDP區別?
TCP: 可靠傳輸協議,需要三次握手連接,有確認重傳機制,特點是可靠、准確、有擁塞控制,缺點就是比較慢,傳輸量比較小,適用於升級、下載;一句話:TCP是可靠的傳輸。
UDP: 不可靠傳輸協議,面向非連接的協議,優點是傳輸量大、速度快,缺點是已丟失、沒有擁塞控制,適用於直播、視頻等。一句話:UDP是不可靠的傳輸。
4. html css js運行的先後順序是什麼?
界面載入的時候先載入html在載入css最後載入js
5. session和cookie的區別是什麼
1. session存放在伺服器端用來校驗客戶端的身份
2. cookie存放在客戶端,每次從客戶端往伺服器發請求時,將cookie帶到伺服器端,用來校驗客戶端的身份
1. 怎麼用JMeter測試介面?
如果使用JMeter進行介面測試:
1) 測試前了解需求,根據介面規格說明書梳理業務;
2) 接下來設計用例,分析介面的入參和出參,分清楚有哪些有效輸入和無效輸入,設計用例(原則:用最少的用例覆蓋所有有效輸入,針對每一個無效的輸入設計一個測試用例,如果有錯誤碼沒有覆蓋到,還要對每個未覆蓋的錯誤碼分別設計一個用例);
3) 准備測試數據,比如:測試所需的賬號、密碼、key 等信息;
4) 打開JMeter,創建一個線程組,根據介面類型,填寫好對應的介面地址和請求方式等;
5) 參數化配置,添加配置元件CSV Data Set Config,定義變數,並准備CSV格式的數據,變數的引用用${變數名}的格式;
6) 添加斷言來判斷測試結果的正確性,用得最多的是響應斷言;
7) 添加監聽器,比如查看結果樹,對測試結果進行監聽;
8) 運行測試用例;
9) 查看監聽器結果,來判斷用例的執行是成功還是失敗,針對失敗的用例,分析其失敗原因;
10) 針對測試中發現的問題,給開發提單,直到問題最終解決。
11) 最後輸出測試報告。
2. 怎麼用Postman測試介面?
如果使用Postman測試介面:
其中1,2,3點相同,工具使用方面則比JMeter跟簡單,工具的主要的步驟是添加對應的請求、填寫主機URL及入參、添加測試套、運行測試套、分析結果出報告。
3. 在JMeter上如何把上一個請求的結果作為下一個請求的參數?
使用正則表達式提取器提取上一個請求的響應中的信息,保存一個引用名稱比如abc,在下一個請求的參數中,用${abc}的格式來引用提取的結果。
常用的正則表達式格式:(.+?),其中.表示匹配任意字元串,+表示只匹配一次,?表示匹配到就停下來。
一般是我們功能測試完成最後兩三天時間測試性能。
1、先是分析需求計算出並發數,TPS,響應時間和 CPU,內存,硬碟和網路IO這些指標。
2、制定測試方案,主要包括環境,計劃和具體測試那些場景(如可靠性,並發,負載,壓力測試等)
3、根據場景用Badboy錄制腳本,導出為JMeter工具支持的腳本。
4、用JMeter工具打開腳本,進行腳本調試,加一些斷言,監聽器,參數化等。
5、接下來執行性能測試,然後主要收集監聽器和收集伺服器CPU,內存,硬碟和網路IO等分析是否滿足需求,如果滿足就輸出性能測試報告。
6、如果指標不能滿足,反饋給開發進行調優。調優後繼續測試,一直到滿足需求後最終輸出測試報告。
1. Python怎麼定義一個函數?
你可以定義一個由自己想要功能的函數,以下是簡單的規則:
1) 函數代碼塊以def關鍵詞開頭,後接函數標識符名稱和圓括弧()。
2) 任何傳入參數和自變數必須放在圓括弧中間。圓括弧之間可以用於定義參數。
3) 函數的第一行語句可以選擇性地使用文檔字元串—用於存放函數說明。
4) 函數內容以冒號起始,並且縮進
5) return[表達式]結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回None
2 Python切片
3. Python上用過什麼庫/模塊?
webdriver:定位和操作元素
time:設置等待時間
ActionChains:動作鏈,完成滑鼠的相關操作
Keys:鍵盤的相關操作
WebDriverWait:設置顯式等待
Expect_Conditions:針對單個元素,設置顯式等待的場景
PIL:截圖
Select:下拉選擇框的操作
unittest python:自帶的單元測試框架
HTMLTestRunner:運行腳本,生成報告
ddt:實現數據驅動測試,行為和數據分離
4. 你做過自動化測試嗎?
我在上一份工作中,公司去年下半年也開始規劃做Web 自動化,採用Python作為開發語言,通過Selenium WebDriver定位和操作頁面元素,自動化框架用的是unittest。我主要負責寫測試腳本。
假設一個測試團隊有5個人:1資深(測試經理)+2~3個中級(自動化+手動)+1 個初級(手動)
5. 使用什麼工具進行的自動化測試
使用的工具是Selenium(Web自動化工具)
6. 用的什麼編程語言
用的Python
7. Selenium 用的是哪個版本的的?Python用的是哪個版本的?
用的是selenium 3.11.0和Python2.7.10
8. Selenium的工作原理?
1)對html元素定位
2)模擬對第一步定位到的元素進行點擊、輸入、選擇等操作一句話:定位元素,操作元素。
9. 元素定位方法有哪些?
要點:8種定位方法
1) 根據元素的屬性值定位,比如 id、name、class、標簽名、鏈接文字和部分鏈接文字;
2) 根據CSS選擇器定位;
3) 根據 XPath 定位;
10. 子頁面里的元素怎麼定位?
先切換到框架里,然後再定位,用switch_to_frame函數根據子頁面id或name,切換到子頁面;定位完了如果要再定位主頁面的元素,要用switch_to_default_content 函數先返回主頁面。
11. 怎麼定位alert彈窗?或者這樣問:怎麼處理JS原生窗口?
要點:主要涉及點擊彈窗確認按鈕、強行關閉彈窗、獲取彈窗中的文字等操作。
1) 點擊彈窗的確定按鈕,用如下函數:
driver.switch_to_alert().accept()
2) 強行關閉,點擊右上角的叉叉,用如下函數:
driver.switch_to_alert().dismiss()
3) 獲取彈窗里的文字,用如下函數:
driver.switch_to_alert().text
12. 怎麼運行自動化用例並生成測試報告?
以unittest為例,我通常的做法是把用例載入到測試套中,做成一個腳本,在命令窗口下運行腳本,報告的生成用第三方模塊HTML TestRunner來生成。
13. 怎麼定位/操作圖片中的驗證碼?
用tesseract OCR引擎處理圖片中的驗證碼,步驟:
(1)對整個屏幕截屏,保存成png格式的圖片;
(2)在截取的圖片中定位驗證碼圖片的位置坐標;
(3)根據坐標對驗證碼截圖;
(4)在圖片中提取驗證碼,輸入到輸入框。