1. 程式人生 > >騰訊測試開發面試總結

騰訊測試開發面試總結

昨天接到了秋招以來的第一場面試,面試了騰訊的測試開發崗,自己感覺不是特別好,寫此片部落格只為總結下此次面試。

以前自己總覺得自己還不錯,秋招應該可以找到一份工作,但此次面試對我猶如當頭一棒!人不可驕傲,學習是一件終身去完成的事,不要以為自己學會了,就可以做自己可以做的事。記得有個故事:兩個人在森林中遇到了一隻老虎,那麼老虎先吃誰呢?當然是吃跑的慢的。老虎就像這個社會的淘汰法則,你只要比別人慢,或者用程式設計師的來講,你的技術只要比別人菜,你就有可能被吃。搞技術開發的,當問題來臨時,解決不了,沒有什麼理由,菜就是原罪。

一、當下都有哪些爬蟲技術、與反爬蟲手段?

爬蟲技術:

1、python自帶的urlib2和urlib或者第三方模組request

此種方案適合簡單的頁面爬蟲,比如爬取部落格的文章等等,相對於其他的一些高階爬蟲來講,它沒有異常處理與請求速度控制等,需要我們取用額外的程式碼去控制。

2、scrapy框架 

相比urlib等基礎爬蟲,請求排程、異常處理都已經進行了基礎的封裝、而且有第三方的csrapy-redis模組支援分散式、使得程式設計師將重點放在了頁面分析與規則編寫上面。

3、python selenium和PhantomJS

具有很好的反爬蟲技術、可以通過技術手段去模擬出和人非常類似的操作行為,缺點就是速度比較慢、但是爬蟲一幫來講對於速度的要請求不是很高、更注重的是資料的穩定、這種方式對於抓取反爬蟲機制做的好的大型網站比較適用

反爬蟲技術:

在開始前我先推薦一篇由攜程酒店研發部經理寫的一篇博文,看完之後對反爬蟲有了基本的認識。

1、後臺對方問進行統計、如果單個IP訪問超過閾值,予以封鎖

缺點:容易誤傷普通使用者並且因為IP的價格較低,使用者完可以買上幾十萬個IP來爬取資訊,因此封鎖IP帶來的收益與損失不成正比

2、後臺對訪問進行統計,如果單個的userAgent訪問超過了閾值,予以封鎖。

缺點:對於未未進行userAgent隨機生成的爬蟲效果比較好,但是當爬蟲去隨機生成多個合法的userAgent時,才方法並不成功,對而且殺傷力過大、誤傷嚴重。

3、後臺對訪問進行統計,如果單個session訪問超過閾值,予以封鎖。

缺點:session被封鎖了,但是session不值錢,重新申請就可以了。

4、通過js指令碼去防止防止爬蟲:

原因:爬蟲的本質來講只是一段程式、它不會像人一樣去應對各種變化,比如驗證碼、滑動解鎖之類的操作。因此網站可以在被使用者拿到資料前,強制讓使用者登入。甚至可以通過js程式碼去生成一大段的隨機數字,然後要求瀏覽器通過js的運算的數這一段數字的和,在返回給伺服器等等。

5、通過君子協議(robots.txt)去限制爬蟲

要說最好的爬蟲網站莫屬google了,但是所有的搜尋引擎全部都遵循著一個協議:robots.txt

robots.txt(統一小寫)是一種存放於網站根目錄下的ASCII編碼的文字檔案,它通常告訴網路搜尋引擎的漫遊器
(又稱網路蜘蛛),此網站中的哪些內容是不應被搜尋引擎的漫遊器獲取的,哪些是可以被漫遊器獲取的。因為一
些系統中的URL是大小寫敏感的,所以robots.txt的檔名應統一為小寫。robots.txt應放置於網站的根目錄
下。如果想單獨定義搜尋引擎的漫遊器訪問子目錄時的行為,那麼可以將自定的設定合併到根目錄robots.txt,
或者使用robots元資料(Metadata,又稱元資料)。比如我們需要看百度的robots.txt那麼我們需要在瀏覽器輸
入www.baidu.com/robots.txt/
robots.txt協議並不是一個規範,而只是約定俗成的,所以並不能保證網站的隱私。注意robots.txt是用字串
比較來確定是否獲取URL,所以目錄末尾有與沒有斜槓“/”表示的是不同的URL。robots.txt允許使用類
似"Disallow: *.gif"這樣的萬用字元

所以當我們需要爬蟲時,我們可以通過遵守這個協議的內容“合法”獲得自己的資訊。

非常喜歡上面推薦的部落格裡面的一句話,其實爬蟲反爬蟲是個遊戲,RMB玩家才最牛逼。

沒有堅固不可破的盾,也沒有刺穿一切的矛,在爬蟲與反爬蟲裡面,成本與價效比才是關鍵。

二、如何使用python去檢測一個伺服器發生了記憶體洩漏?

記憶體洩露表現為:記憶體回收低點為不斷增高(以每次記憶體回收的最低點連成一條直線,那麼它是一條上升的線):記憶體的回收頻率越來越高,記憶體的佔用率越來越高。

三、python的記憶體模型?

在Python中一切皆物件,Python的記憶體模型,也可以說是Python的物件的記憶體模型。

python因為與C/C++不一樣,我們在C/C++中,當例項化一個物件後,在例項化的物件的作用域之外或不再使用該例項化物件時,需要們手動將物件刪除,將建立物件申請的記憶體進行釋放。但是在python中我們因為存在垃圾回收機制,所以不需要我們手動去刪除一個物件。python中的垃圾是指當物件有一個變數名與他進行連線並引用,但是自某一個該物件的變數名去引用其他物件,該物件沒有任何的變數名指向它,那麼這個物件就會成為垃圾。

python的垃圾回收機制有三種:引用計數回收器(Reference-count Based Collecter) 、標記清除回收器(Mark-and-sweep Collecter)、世代回收器(Generation Collecter)

一個Python物件即PyObject,必須包含ob_refcnt和ob_type,ob_refcnt是這個物件的引用計數,而ob_type則是指向了一個_typeobject的結構體指標,它是Python內部的一種特殊結構,它是用來指定一個物件型別的型別物件即PyTypeObject。在型別物件中有定義了大量的函式指標,這些函式指標最終都會指向某個函式,或者Null,這些函式指標可以視為型別物件中所定義的操作,而這些操作直接決定者一個物件在執行時所表現的行為。在python中,物件的核心其實非常簡單,一個是引用計數,一個是型別資訊。當一個pyobject的引用計數為零時,也就是它要被垃圾回收機制回收的時刻。

引用博文

四、詳細說明下python的堆和棧

基本概念:

棧(stacks)是一種只能通過訪問其一端來實現資料儲存與檢索的線性資料結構,具有後進先出(last in first out,LIFO)的特徵

堆通常是一個可以被看做一棵樹的陣列物件。堆總是滿足下列性質:(1)二叉樹中所有的父節點的值都不大於/不小於其子節點的值(2)根節點的值必定是所有節點中最小/最大的。

將父節點的值不大於子節點且根節點的之最小的稱為最小堆,反之稱為最大堆。對是一種高階資料結構,在python中有相應的模組deapq

(1)每當執行緒在建立的時候,作業系統為每一個系統級的執行緒分配棧,並且每一個執行緒智慧擁有一個棧;當作業系統通過呼叫語言的執行時(runtime)去為應用程式分配堆。

(2)棧附屬於執行緒,因此當執行緒結束時棧被返回回收。對通常通過執行是在應用程式啟動時被分配,當應用程式(程序)退出時被回收

(3)當執行緒被建立的時候,設定棧的大小。在應用程式啟動的時候,設定堆的大小,但是可以在需要的時候去拓展它(分配器向作業系統申請更多的記憶體)

(4)棧比堆要快,因為它的存取模式使它可以輕鬆的釋放和重新分配記憶體,然而堆在分配和釋放的時候有更多的複雜的bookkeeping參與,另外在棧上的每個位元組被頻繁的複用也就意味著他可能對映到處理器快取中,所以很快

(5)對於堆相對於棧的先進後出模型棧數儲存沒有固定的順序位置,你可以在任何順序插入和刪除,因為堆上的記憶體申請位置是無序的,釋放也是無序的。

五、python執行緒、程序、協程之間的區別

概念:

程序:

程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動。程序是系統進行資源分配與排程的一個獨立單位。每個程序都有自己獨立的記憶體空間,由於程序比較重量‘佔據獨立的記憶體,所以上下文程序的切換開銷(棧、暫存器、虛擬記憶體、檔案控制代碼等)比較大,但是相對也比較安全。

執行緒:

執行緒也叫輕量級程序,它是一個基本的CPU執行單元,也是程式執行過程中最小的單元,由於執行緒ID、程式計數器、暫存器集合、和堆疊共同組成。它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源。執行緒間通訊主要通過共享記憶體,上下文切換很快,資源開銷較少,但相比程序不夠穩定容易丟失資料。

協程:

協程,又被稱為微執行緒,一個執行緒可以擁有多個協程,協程擁有自己的暫存器上下文和棧。協程在執行過程中,可以進行中斷,然後轉區執行別的子程式,在適當的時候在返回來接著執行,注意:這個過程是在一個子程式中中斷,去執行其他的子程式,不是函式呼叫,有點類似於CPU的中斷。

程序與執行緒比較:

(1)執行緒是屬於程序的,執行緒執行在程序空進內,同一程序所產生的執行緒共享同一記憶體空間。

(2)當程序退出時該程序所產生執行緒都會被強制退出並清除

(3)執行緒可與屬於同一程序的其它執行緒共享程序所擁有的全部資源,但是其本身基本上不擁有系統資源,只擁有一點在執行中必不可少的資訊(如程式計數器、一組暫存器和棧)

執行緒與協程比較:

(1)一個執行緒可以擁有多個協程。

(2)執行緒程序都是同步機制,而程序是非同步。

(3)對於多執行緒應用,CPU通過切片的方式來切換執行緒間的執行,執行緒切換時需要耗時(儲存狀態,下次繼續)。協程,則只使用一個執行緒,在一個執行緒中規定某個程式碼塊執行順序。所以協程的切換比執行緒方便。

(4)因為協程就是在一個執行緒內部,對於記憶體的操作不會出現衝突,向程序與執行緒那樣對共享資源加鎖,只需要程式在執行時判斷狀態即可。

很喜歡玩LOL,以前電子經濟圈流傳著:電子競技菜是原罪。現在在找工作時也一樣,菜是原罪!!!!

相關推薦

測試開發面試總結

昨天接到了秋招以來的第一場面試,面試了騰訊的測試開發崗,自己感覺不是特別好,寫此片部落格只為總結下此次面試。 以前自己總覺得自己還不錯,秋招應該可以找到一份工作,但此次面試對我猶如當頭一棒!人不可驕傲,學習是一件終身去完成的事,不要以為自己學會了,就可以做自己可以做的事。記

後臺開發面試總結,原創,吐血推薦!!

前段時間專心面過騰訊,經過了N輪的技術面,結果還是掛了,但沒掛在技術面,比較欣慰,回來之後寫一點總結,以供有夢想進入騰訊做後臺伺服器開發的同學參考,本文章為胡成精心總結,胡成原創,copy和轉載請通知。ps:()之內的文字由作者點評,非面試題文字。 Linux和os:

python面試測試開發工程師

今天面試了騰訊的測試開發工程師崗位,總體感覺一般,問的問題都還是比較基礎性的東西,當然也問了很多實習期間做的專案,各佔一半吧。下面基礎部分的東西總結一下: 1、假定我有100M的一個文字資料,但是我的電腦記憶體只有10M,我怎麼在有限的資源條件的情況下,找出這個文字中出現次數最多的那一行字串

-測試開發-18年暑期實習-一面

面了一個小時左右,一去就是手寫程式碼,然後問C++,linux,網路,問得比較細比較深,而且都是單個獨立的題目,很難扯到別的知識點上面。 1、二叉樹的中序遍歷,遞迴和非遞迴,寫出來(遞迴很快寫了,非遞迴折騰了很久沒想明白),單鏈表逆序(說了思路,用兩個指標

後臺開發面試記錄

AI崗的競爭實在是太激烈了,想轉開發,中午投了騰訊沒想到這麼快就筆試+面試……自己完全沒有準備好,痛定思痛,就從這次記錄開始。 筆試部分: 1、實現C++中的memcpy函式 2、兩個有序的單鏈表,將它們合併 3、一個雙鏈表,實現刪除功能 4、有編號1

已拿到offer 2015年暑期實習面試總結(技術崗)

前言 本人2012屆,廣州某985高校軟體學院本科生一枚,技術方面絕對不能與我班大神們相比。於4月25日正式簽了offer,崗位是後臺開發,想想經過了簡歷篩選,筆試,三輪面試,自己還是挺幸運的,現在就把面試的細節和經歷和大家分享一下。 失敗經歷 從3月開始,聽聞各大公司會開始在學校進行暑期實習

[2017/06/02]後臺開發實習生面試總結

————————–6月2號更—————————– 現在才被面試,都是因為自己zz。。四月份網申的時候寫的遠端面試,忘了改面試地點,於是成功GG錯過面試。誰知五月份的時候超凡學長突然告訴我鵝廠有實習生補招,要了我最新的簡歷。本來覺得沒什麼希望,結果前幾天突然收到

網易2019校招測試開發面試問題總結

背景介紹:上海雙非碩士,非計算機專業,有過兩段實習經驗(霍尼韋爾,自動化測試半年;愛奇藝,圖片生產開發三個月),投的豬場崗位是,杭州研究院測試開發工程師。 本人於2018年7月19日在網上找的內推方式進行網申的,8月11日進行的線上測評,8月21日收到的面試通知,8月26日到杭面試(前三面一天內

後臺開發社招記錄(電話面試

天吶,我又進行了騰訊電話面試,真的是一個面試官一個風格呀,和之前的面試官相比,覺得之前面試官太好了,問的問題很簡單,很少,最起碼電面通過還給了我去現場面試的機會,而且是在毫無準備的狀況下的,這次從上週五到週一,又從週一到今天,週末還準備了下,而今天的面試官估計不會再給我機會了,涼涼呀。。。。 上次面試15分

測試面試遇到的java筆試題

去騰訊面試測試,面試官給出了一個比較簡單的題,當時沒寫出來,現在補上來自己寫的很粗糙的一個答案。 扔出去一塊磚,撿回一塊玉 希望大家能夠指點一下我這個小菜雞~ 問題:從一個日誌檔案中找到有幾處error錯誤,將錯誤數量寫在另一個檔案中。 (當時沒聽清楚是寫錯誤資訊還是

2016年android開發工程師面試題目

1、 Android dvm的程序和Linux的程序, 應用程式的程序是否為同一個概念   DVM指dalivk的虛擬機器。每一個Android應用程式都在它自己的程序中執行,都擁有一個獨立的Dalvik虛擬機器例項。而每一個DVM都是在Linux 中的一個程序,所以說可

2019年8月面試前端開發實習生記錄

  昨天在BOSS直聘三投了騰訊燈塔專案的前端開發實習生崗位,通過簡歷後第二天就安排電話面試了,起先以為是人事面,沒想到直接是技術面,有點意外,準備的不是很充分,可以說整個過程都有點懵哈哈哈。 然後面試小哥根據那邊的崗位技術需求和我這邊簡歷上寫的技術棧問了一系列問題(努力記起),我做記錄如下。這次面

我的第一次面試 —— AI安全 一面總結

前言 在校兩年半,沒經歷過面試的毒打,第一次面試給了騰訊,週二晚上學長幫推的簡歷週三下午就打電話來問週四晚上有沒有空面試。那天下午還在趕著資料庫的實驗報告,腦子有點轉不過來就說了有空,然後仔細一看好像前兩天剛搶了節課,正好是週四晚上 orz,算了算了,翹了,週五再去蹭兩節,面試重要。 emmmm。。。從來沒面

java高級開發面試總結

添加 觀察 應用程序 這一 面試總結 參數 spa ring 入口 Java高級工程師面試題總結及參考答案 (轉載)博客原文鏈接:https://www.cnblogs.com/java1024/p/8594784.html 一、面試題基礎總結 1、 JVM結構原理、G

Java開發5面面經:Treemap+同步鎖+MVCC+快取+慢查詢+雪崩

  一面(電話) 說說對JVM的理解 treemap和hashmap有什麼區別? Java多執行緒的的5大狀態圖流轉 mysql主鍵和唯一索引的區別 說說最近的專案 如何實現session共享,用redis如何實現 快取擊穿的概念和解

PHP開發規範v1.0

1引言 1.1定義及縮略語 縮略詞 說明 海豹平臺 運維中心提供的研發平臺,提供框架、公共基礎元件、公共業務元件加速業務的日常研發工作 1.2參考文件 海豹平臺WIKI:http://wiki.seals.webdev.com/ 1.3目的 本規範由程式設計原則組成,融合並提煉了開發人員長時

有n根長度不同的木棒,隨意選取三根湊一個合法的三角形,求總拼湊方案的數量(2018軟體開發-後臺開發方向秋招補考試題第三題)

題目: 有n根長度不同的木棒,隨意選取三根湊一個合法的三角形,求總拼湊方案的數量。對於兩個方案,只要有一根木棒的長度不同,則視為不同拼湊方案。 輸入描述 第一行為正數t(0 <= t <= 10),表示測試用例數 接下來每兩行一個測試資料,第一行一個整數n

軟通動力網易遊戲外包專案組測試工程師面試總結

前言:        在星期一中午吃午飯的時候,軟通HR的小姐姐就打電話過來通知我星期五下午2點過去面試,說是我筆試通過了。我當時在想,筆試的內容好像是一共有5道題,其中3道是簡答題(有關於遊戲方面的),另外兩道是資料庫的題和資料結構的題。當時我也不知道自己是怎麼做的,因為

2018百度校招、校招 面試經驗

百度校招面試經驗   一到九月份,就開始了各種筆試。每天晚上七點到九點,大家都可以在機房看到我一個人在那裡自言自語。2018年09月16號晚上,我和我女朋友筆試完在外面吃東西時接到百度的面試通知。接

2018年後臺開發技術崗社招面經-順利拿到offer

       公眾號:內推派,歡迎大家一起學習交流。作者從事後臺web伺服器開發,主要在linux上使用C語言程式設計。畢業後在公司負責CDN快取元件開發,2.5年工作經驗。文章介紹了在騰訊面試過程和心得,希望對相關工作的小夥伴有所幫助,大家一起學習進步。本文主要分以下3個部