測試開發面試題-某大廠

引言:大廠面試主要看重一下幾個方面:

  • 大廠喜歡編程能力強的,並且要有實戰經驗的
  • 大廠喜歡基礎知識紮實的哥哥姐姐
  • 大廠喜歡有自己獨到見解的哥哥姐姐

1、python如何管理項目:版本控制,虛擬環境

學習django的時候在用的虛機環境的管理方式。Pip install virtualenv就好了,就可以在一個不同項目間管理不同的包,就不用擔心包的版本衝突,或者Python2和3的切換了。就像一個一個的房子吧,有點像docker,個人認爲。對比之下java是用maven做管理,面試的也會問到maven如何處理衝突,(答案不全,後續補充)

2、py2和py3的區別

一、爲什麼要了解Python3和Python2的區別

隨着時間進入2020年這個節點,Python官方發表聲明不在維護Python2版本的技術更新,成爲了Python開發領域一個重要拐點。

目前,大部分公司的項目都是以前基於Python2版本開發,許多項目延續到如今還在使用,至於原因,當然是項目直接遷移升級成Python3成本過高。

於是出現了一種解決方案,這些繼續使用Python2版本的公司,可以在技術社區通過付費購買維護服務的方式,讓專業技術團隊,針對性的維護Python2版本開發的項目。

1.公司項目基於Python2需要維護
2.維護需要專業技術人員
專業技術團隊,大家想想,Python是近年越來越火,新生力量,絕大部分都是從Python3起步開始學習,所以掌握的都是新知識,其實很少人知道具體區別,並且加以運用。

3.絕大新生力量僅會Python3
綜上所述,一個開發人員,在掌握Python3版本開發技術的前提下,熟練使用Python2也逐漸稱爲非常重要的一部分

那麼,接下來我們來看看Python3和Python2版本有哪些區別吧。

二、版本區別使用

1、print

python2中print爲輸出語句
Python3中print是一個函數
Pyhton2無需括號 Python3需要括號

2、range 與 xrange

range()在Python2中會得到一個列表,xrange(1,3)得到一個生成器
在Python3中是生成器,沒有xrange

3、字符串

Python2中存儲字符串,底層使用ascii編碼
python3存儲字符串,使用的是Unicode

4、異常處理

python2 中的異常處理語法
Python3 中的異常處理語法

5、打開文件

Python2有打開方式

f = file()
f = open()
Python3中打開方式

f = open()
with()

6、標準輸入

python2有兩種標準輸入

info = raw_input(“提示消息:”),輸入數據全部轉換爲字符串

info = input(“提示消息:”),輸入什麼就輸出什麼數據類型,輸入字符串加引號

Python3標準輸入

info = input(“提示消息:”) 輸入的爲字符串類型

7、除法運算

Python2 中

/表示的是整除,但是加上浮點數就是真實除法
Python3 中

/表示的就是真實的除法,//表示的整除

8、自定義類型

Python2

保留了原始的類型繼承關係的經典類,同時也支持繼承 object 而衍生的新式 類,所以在多繼承操作過程中會出現兩種不同的數據檢索方式,讓中大型項目的開發變得撲 朔迷離。
Python3

廢棄了經典類,只保留了新式類,也就是現在我們通用的自定義類型,直接 或者間接繼承自 object。
原文鏈接:https://blog.csdn.net/weixin_44238683/java/article/details/106223990

3、深copy和淺copy的區別

https://www.cnblogs.com/xiaxiaoxu/p/9742452.html

4、元組和鏈表的區別

第一點:元組是不可變的常量對象,鏈表可變修改下個節點的指向
第二點:元組的每個元素沒有指向下個元素,鏈表有next節點

5、有自己獨到見解

1、如何預防生產bug的出現
2、如何去看流媒體行業的發展
3、測試過程中如何使用你的自動化工具

6、如何修改一個接口的返回值

抓包工具的斷點功能,可以修改接口的request,或者respones
但是面試官不滿意啊,涼涼後想到了mock,人家就是想問這個的吧,python裏面有mock包。網上資料很多,我就不贅述了,因爲我也是百度的,沒有獨到見解了。

7、一個文件很大,且裏面都是ip地址,讓你找出出現頻率最高的10個IP。

#思路,遍歷文件,對ip做個正則匹配,ip做key,個數做value。但是面試官問了,如果ip不同,文件有很大,有沒有考慮結果佔用的內存問題,我想到的是吧這個文件按照多少行去做切割分治,面試官再次引導,ip的可能性是2的32次方種可能。 我沒有想出更好的辦法。下來百度了下。
https://blog.csdn.net/cnnumen/article/details/5781226
原來面試官的引導是在ip存的時候取模的方式,將分件切割,這是不是有點像很多分庫分表的意思呢。

8、Redis的瞭解,常見的操作

可能有實際沒有使用過,回到也是天天看研發代碼而來,set值並設置有效期,get一個key的值。後面做了百度。
面試中:redis的瞭解回答,第一,非關係性數據庫,mysql是關係型數據庫
第二:redis存儲在緩存中,mysql在硬盤中
第三:redis讀寫速度快,mysql讀寫慢
第四:redis不安全,mysql安全,內存收到掉電影響,比如redis服務掛了
其他我就沒有更深的理解了,面試管也很和藹,一直說知道多少說多少,所以我就又吧啦吧啦了點,redis的熱點問題,mysql和redis的拆離集羣做負載均衡等,面試官根據我說的問了,mysql爲什麼要做讀寫服務的拆分,我只回答了我的理解,就是要讀寫消耗不同,服務調用評率不同,可以根據服務讀任務多多分配讀的mysql服務,達到資源合理利用。

9、Session,cookie,token的區別

我這session和cookie知道啊,token但是傻眼了,但是實際接觸過啊,直接回到了token見到過的是作爲接口入參,用於鑑權的。
下來我有思考了下,說說我對token的理解
第一點:token也可以作爲session機制,返回給客戶端時放入cookie,再次請求從cookie中去取
第二點:token可以有接口調用方通過計算獲得,接口服務相同計算去校驗。
例如:一個接口要用所有字段key值排序並md5後生成一個token傳入接口做鑑權
第二點:token不放入cookie等返給客戶端,減少通過cookie的攻擊。
例如:獲取用戶信息,客戶端需要請求接口A,接口A根據id找到token,token會計算出一個約定的字段和值返回給客戶端,客戶端再用這個字段取請求真正的用戶信息接口B獲取用戶信息。在這個過程中沒有什麼我們常見的session,cookie,name等字段,防止了攻擊,即使截獲一個相當於亂碼的串也毫無意義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章