1. 程式人生 > >面試總結,百度,測試,開發

面試總結,百度,測試,開發

學姐、學長總結的面試題  感謝學姐(針對質量部測試開發)

1.幾種常見演算法看下,能夠大概描述出來演算法的過程,複雜度(排序、查詢等)

2.給你設定幾種場景,讓你解答:比如給你兩部手機,讓你站在一百層樓高的地方,假設在第n層手機摔下就會摔破,問你怎樣用著兩部手機確定這個臨界層。

(場景測試-百度質量部)

3.怎樣知道一個連結串列裡是否有環的存在,以及確定環的位置  如何確定兩個連結串列是否有相同的部分

4.網路一些知識,比如http幾次握手的情況,ack等包,結束是否只能由伺服器段先斷開之類的。網路幾層,常見網路裝置屬於哪層?

在TCP/IP協議中,TCP協議提供可靠的連線服務,採用三次握手建立一個連線。

第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;

第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。

5.測試幾種方法.

6.給定一個很大檔案,記憶體裡放不下,怎樣搜尋裡面是否有需要的關鍵字,從百度搜索內容,描述一下大致的過程

7. 從網上找找百度質量部面試面試題目

8. C語言 記憶體分配機制(堆疊區別,靜態儲存區)       

9. 陣列指標和指標陣列有什麼區別 

10、海量搜尋問題 找找海量搜尋面試題看看

百度搜索關鍵字放在一個大檔案裡,該檔案在記憶體裡裝不下,使用者可以輸入關鍵字,在檔案裡查詢關鍵字,看關鍵字是否在該檔案裡,給一個解決方案。(Hash方法)           

11、搜尋的原理 在百度頁面輸入關鍵字,得到搜尋結果,解釋一下這個過程是什麼樣的

12.深度搜索演算法        單鏈表 就地 反轉 

13.Linux常見的命令看看(必考) 

14、TCPUDP的區別

15、網路裝置

16、socket

1.Linux核心有一定的瞭解;  

2.熟悉資料庫的使用,

3.熟悉基本的網路配置及路由器、交換機等網路裝置的配置; 

4.瞭解TCP/IP協議

5.測試流程  有幾種方式像什麼白盒 黑盒   功能測試  效能測試 單元測試等等 

1.自我介紹啦 專案相關的

2.多準備 多看看常見面試題   

3.還有網上關於質量部面試的題目   這些比較有針對性一些 

實際遇到的面試題

一面

首先要自我介紹

1、程序與執行緒的區別 

一面第一個問題,自我介紹都沒介紹完說了我知道的一些,他都說沒答到點子上,問到底要怎麼答,面試的GG

讓我自己上網搜答案。。。

答:什麼是程序(Process):普通的解釋就是,程序是程式的一次執行,而什麼是執行緒(Thread),執行緒可以理解為程序中的執行的一段程式片段。在一個多工環境中下面的概念可以幫助我們理解兩者間的差別:

程序間是獨立的,這表現在記憶體空間,上下文環境;執行緒執行在程序空間內。
一般來講(不使用特殊技術)程序是無法突破程序邊界存取其他程序內的儲存空間;而執行緒由於處於程序空間內,所以同一程序所產生的執行緒共享同一記憶體空間。
同一程序中的兩段程式碼不能夠同時執行,除非引入執行緒。
執行緒是屬於程序的,當程序退出時該程序所產生的執行緒都會被強制退出並清除。
執行緒佔用的資源要少於程序所佔用的資源。
程序和執行緒都可以有優先順序。
線上程系統中程序也是一個執行緒。可以將程序理解為一個程式的第一個執行緒

多執行緒同步方法

 1臨界區:通過對多執行緒的序列化來訪問公共資源或一段程式碼,速度快,適合控制資料訪問。 

  2互斥量:為協調共同對一個共享資源的單獨訪問而設計的。    3訊號量:為控制一個具有有限數量使用者資源而設計。    4事件:用來通知執行緒有一些事件已發生,從而啟動後繼任務的開始。

2、標準模板庫STL 用過的庫函式 (一面)

3、做過的有關測試的專案,沒有問很細,測試用例是不是自己寫的,根據做的專案,設計怎麼測試自己的專案

4、靜態函式庫、動態函式庫 區別 自己做的專案是屬於動態的還是靜態的

5、Linux程式設計怎麼樣(百度貌似基本上程式都跑在linux上,這個肯定要問到)

我直接答的linux常用命令還可以,在linux環境下做過實驗,核心不瞭解

演算法題

大部分是告訴他思路,面試官哥哥會把問題簡化,再一點點啟發,一點點給問題加條件,要把自己思想解釋懂給他聽,練練口才啊~還有準備好紙筆,一些程式碼,不好憑空想象~

1、在棧中,找出最小值,給出push pop 求最小值min函式(不破壞棧的原始的順序、用最小的時間)

2、矩陣中 橫排 每行的資料是從小到大的,豎排 每一列也是從小到大 給出一個數用最快的時間查詢一個數是否在矩陣中(空間複雜度)

3、括號匹配 【 ( 看左右括號是否匹配 數學規則:{【(

1)不考慮數學規則

2)考慮數學規則

最後要把第三個 跟面試GG討論完解決的思路後,把這個程式碼寫一下,發給他,限時近一個小時,可以用虛擬碼,一開始說的,寫程式碼的時候不用掛電話,後來就是說了機房不能說話,就讓我把電話掛了~

二面

二面還是先自我介紹,的第一個問題,集合數的儲存模式,一聽就有點懵了,啥是集合數??委婉的告訴她不知道什麼是集合數,她就說,儲存模式有陣列等,我當時很亂,就把我自己理解的,所有在記憶體中儲存模式的,那些,陣列、連結串列、棧、堆、常量區等等,都答了,想想真2

之後圍繞之前做過的專案問的比較多,比較詳細,詳細到了一些功能的實現,遇到的問題,怎麼解決的等等,根據專案問了資料庫的語句,找出資料中最大的前十個,給忘了,就說了C++中的實現方法,還自己引申了一下,答了記憶體中放的下的資料怎麼處理、放不下怎麼處理、找出最大的前十個怎麼處理,前一萬個怎麼處理。。。

也是回答了一些測試的題,測試一個函式,設計測試用例,函式功能:兩個已經排好序的陣列,合併成為一個有序陣列。

做過的白盒測試 實驗 自動化測試 有沒有寫過指令碼語言

問了 測試網路是否連通 ping命令

Linux 我還是像一面那麼答的,這回讓我列出了我自己熟悉的linux命令,我就說了一些,她問了一個退出vim怎麼退出,就回答了,儲存退出,不儲存退出的命令等等。

還問了 編碼量最大的專案,最近半年自學的東西,自學的途徑等等。

我每次最後都要面試我的人給我一些建議,一是有些人給的建議很誠懇,像小米,直接說基礎太差,要我好好學習基礎;二是,基本上可以知道還有沒有機會接著面了~直接問有沒有戲,別人不一定會說。

面小米遇到的面試題:

1、cc++分別是怎樣動態分配和釋放記憶體的(小米)

2、儲存位置的區別 棧區、堆區、全域性變數、程式碼區(小米)

全域性變數儲存在全域性靜態儲存區,區域性變數存在堆疊中

3、自己寫一串程式碼實現atoi函式的功能,然後根據自己寫的程式碼,寫出測試用例,再根據測試用例完善些的程式碼(小米)

之前面小米的一個經驗:不會的千萬不要說你會,我提了下C#,面試官直接問我C#C++的區別,勉強說了一些,說著說著,說了一底層介面這個名詞,面試官又問我底層介面有哪些,我當時想死的心都有了,於是,自己不熟悉的,在他還沒具體細問問題的時候先告訴他會什麼,不會什麼,例如linux,我直接答的linux常用命令還可以,在linux環境下做過實驗,核心不瞭解,就不會死很慘。

還有,簡歷注意下,之前朋友簡歷上寫的 學過的課程中 有一個 linux核心 ,這課確實是學了,百度的面試官問了一個問題 你比較熟悉哪一個linux核心命令,我們來深入探討一下啊,這個就不好答了~

最後希望對大家有用吧~