奇虎360程序員面經(jīng)((2022年-2023年))_第1頁
奇虎360程序員面經(jīng)((2022年-2023年))_第2頁
奇虎360程序員面經(jīng)((2022年-2023年))_第3頁
奇虎360程序員面經(jīng)((2022年-2023年))_第4頁
奇虎360程序員面經(jīng)((2022年-2023年))_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、360奇虎360程序員面經(jīng)職位類型:程序員 面試地點(diǎn):北京 招聘公司:奇虎 360現(xiàn)在這大環(huán) 境也不好,找工作這么難,找個(gè)好工作就跟難了,但是我相 信,只要你有真本領(lǐng),就不會(huì)發(fā)愁找工作滴!最近我就開始想我向往的公司發(fā) 出了求職信,并且成功獲得了面試邀請(qǐng),所以現(xiàn)在先讓我們一起看看面試問題 吧。一面主要是考察算法和數(shù)據(jù)結(jié)構(gòu),難度因面試官而異。聽同學(xué)說他一面的 時(shí)候,面試官就讓他寫了個(gè)堆排序,然后就是不聽地問工程,感覺很輕松。我 就沒那么好運(yùn)了,至少問了五六個(gè)算法,還好hold住。1.寫個(gè)快速排序吧。答:這個(gè)算是基本功吧,對(duì)于想要互聯(lián)網(wǎng)公司offer的筒子們,最基本的 幾個(gè)排序都得做到能隨時(shí)隨地手寫

2、代碼,而且不出錯(cuò)。手寫代碼也是對(duì)基本功 的考察,千萬不要覺得能在電腦上寫代碼就ok 了 ,記住,一定要在白紙上寫 下來,你才能確定你會(huì)寫。2.IP的有效值是1.001255.255.255.255,寫個(gè)程序,參數(shù)是一個(gè)char*的IP ,返回這個(gè)IP是否合法。答:這題在考察程序員對(duì)邊界條件的考慮。至少有以下幾點(diǎn)是要考慮到的:1.IP超過或缺乏四位2某一位超過了合法范圍;3.某一位除了數(shù)字,還包含 了其他非法符號(hào)。這一題可以使用strtok取出IP的每一位,然后檢查該位是 否合法(數(shù)值范圍,是否包含非法字符),最后檢查是否有四位。.一個(gè)字符串?dāng)?shù)組 char *A口二China,Chinese,C

3、hese,.,求這個(gè)數(shù) 組中字符串的最長公共前綴,例如這三個(gè)字符串的最長公共前綴是Ch。答:使用字典樹,類似的問題還有給你一些QQ號(hào),讓你求這些QQ號(hào)的 最長公共前綴。字典樹大家可以去網(wǎng)上搜一搜。.求兩個(gè)字符串的最大公共子串,例如abcdefg和zxdefy,最長公共子 串是def。答動(dòng)態(tài)規(guī)劃。具體的解法和代碼在我的隨筆Algorithm分類中有。.單向鏈表反序。答:這個(gè)簡單,網(wǎng)上一大堆解法。.多個(gè)已序數(shù)組求交集。答:這個(gè)問題攜程也考了,具體做法是將這些數(shù)組兩兩分組,求交集,再 將結(jié)果繼續(xù)兩兩分組,求交集,直到最后得出結(jié)果。對(duì)于兩個(gè)已序數(shù)組A,B , 求交集的方法是令i,j=Oif A= =

4、Bj,那么A是交集中的值,i j ; if ABj,j; if A一面總算是抗住了。本以為二面會(huì)輕松一點(diǎn),誰知道二面更難。.了解進(jìn)程池嗎?答:不了解,只知道線程池。追問:那你說說線程池。答:線程池的思想是這樣的:一臺(tái)服務(wù)器有許多任務(wù)要處理,同時(shí)不斷有 新的任務(wù)進(jìn)來。從前是來一個(gè)任務(wù)就起一個(gè)線程,起的線程來完成任務(wù),完成 以后就銷毀該線程。如果任務(wù)很多的話,這樣不斷地起線程,銷毀線程,會(huì)很 費(fèi)時(shí)間。于是就有了線程池。線程池就是一次起多個(gè)線程,將任務(wù)放在一個(gè)隊(duì) 列中,線程池中的線程從隊(duì)列中取出任務(wù)去執(zhí)行,執(zhí)行完了以后檢查隊(duì)列是否 為空,如果為空,說明所有任務(wù)都執(zhí)行完了,線程就會(huì)休眠(注意不是銷毀)

5、, 等到又有新的任務(wù)時(shí),主線程會(huì)去喚醒線程池中的線程,讓他們繼續(xù)工作,這 樣就防止了不斷地分配和銷毀線程。簡單的線程池實(shí)現(xiàn)代碼可以在網(wǎng)上搜到。追問:在線程從任務(wù)隊(duì)列中取任務(wù)時(shí),有沒有方法不適用鎖?答:這個(gè)問題騰訊也問了,騰訊的問法是,進(jìn)程間的共享內(nèi)存,有沒有辦 法不適用鎖而同步地讀寫?我完全不會(huì),讀。面試官后來提示說,這個(gè)任務(wù)隊(duì)列不一定要所有線程共用一個(gè),可以讓一 個(gè)線程有一個(gè)任務(wù)隊(duì)列,這相當(dāng)于讓多消費(fèi)者的模型變成了單消費(fèi)者。這樣消 費(fèi)者之間就不用加鎖同步了。而生產(chǎn)者和消費(fèi)者之間,要想不適用鎖的話,可 以用循環(huán)隊(duì)列來實(shí)現(xiàn)。對(duì)于這個(gè)知識(shí)點(diǎn),我會(huì)在另一個(gè)帖子中詳細(xì)說明。.咱們來看看進(jìn)程池吧,首先,

6、一個(gè)進(jìn)程A,起了子進(jìn)程H , H阻塞在讀取 它的stdin上,A向H的stdin發(fā)送數(shù)據(jù),這個(gè)怎么實(shí)現(xiàn)?答:完全懵了,什么叫一個(gè)進(jìn)程A起了子進(jìn)程H?后來我才弄明白,原來 他的意思是,A進(jìn)程fork產(chǎn)生了一個(gè)子進(jìn)程,然后子進(jìn)程調(diào)用exec函數(shù),啟 動(dòng)了 H。我原來的想法是,既然H是A的子進(jìn)程,如果不設(shè)置FD.CLOEXEC 標(biāo)志,那么H的文件描述符0(標(biāo)準(zhǔn)輸入)應(yīng)該和A的是共享文件表項(xiàng)的。那直 接讓A往自己的標(biāo)準(zhǔn)輸入里寫不就行了嗎?后來面試官的意思是用管道,讓H 將stdin翻開在管道的一端上(fdopen),然后A向管道里寫數(shù)據(jù)。這個(gè)應(yīng)該更 穩(wěn)妥吧。誰能保證FD_CLOEXEC不會(huì)被設(shè)置呢?追

7、問:現(xiàn)在A能向H發(fā)命令,然后H讀取命令,開始工作。如果A起了多 個(gè)H ,那么,A就成了控制進(jìn)程,而多個(gè)H就成了工作進(jìn)程,這就是進(jìn)程池 了?,F(xiàn)在,A讀取一個(gè)文件,每讀取一行,就將內(nèi)容發(fā)送給工作進(jìn)程H,然后 由H寫到自己的標(biāo)準(zhǔn)輸出上,這個(gè)怎么實(shí)現(xiàn)?答:這個(gè)直接用一個(gè)循環(huán),順序?qū)懴蛎總€(gè)進(jìn)程就好了。追問:那如果在寫第一個(gè)進(jìn)程的時(shí)候就發(fā)生阻塞了呢?而后面的進(jìn)程可以正 常工作。答:傻了,應(yīng)該用select嘛。將要寫的文件描述符都加到select的可寫描 述符集中,這樣哪個(gè)可寫就寫哪個(gè)。追問:現(xiàn)在將A的標(biāo)準(zhǔn)輸出重定向到另一個(gè)文件上,然后讓H的輸出結(jié)果 都寫到該文件上,怎么實(shí)現(xiàn)?答:想了老半天,終于想出來了。

8、還是select嘛。再建一個(gè)管道,將H的 標(biāo)準(zhǔn)輸出翻開在管道的一端,另一端放在select的可讀字符集中,如果可讀, A就可以讀到H的輸出了,然后再寫到標(biāo)準(zhǔn)輸出上,就行了。3用過epoll沒?答:沒有。大家趕緊去學(xué)一下吧,太多面試官問了。.寫個(gè)memcpy吧。答:這個(gè)簡單,只要注意如果dest或者src為空的時(shí)候,就直接返回。.非遞歸地中序遍歷二叉樹。答:其實(shí)面試官之前問的是后續(xù)遍歷,不過他看我沒寫過非遞歸的,就降 低了一點(diǎn)難度,讓我寫個(gè)中序遍歷。遞歸的寫法很簡單,相信大家都會(huì)。這里 為什么要用非遞歸呢?因?yàn)榉沁f歸的效率更高。我以前就偷懶,想著會(huì)一種寫法 就夠了,誰知道今天恰恰考了非遞歸。不過

9、咱也不能直接來句不會(huì)。你可以不 會(huì),但不要馬上說不會(huì),這表達(dá)出你遇到困難很容易就放棄。應(yīng)該先想一想, 如果實(shí)在不會(huì),有的面試官會(huì)給你一些提示,如果你能按照提示答出結(jié)果,也 許面試官會(huì)更欣賞你,這證明你很會(huì)學(xué)習(xí),一點(diǎn)就通。面試官看我無從下筆, 說你先給我花花棧的結(jié)構(gòu)吧。我一聽,棧?莫非這一題要用棧才能解?其實(shí)遞歸 不就是程序自己調(diào)用自己,而程序不就是在棧里運(yùn)行的嗎?簡單來說,遞歸的最 后一層,就像棧頂元素。最后一個(gè)進(jìn)去,最先解出來。順著這個(gè)思路,我居然 寫出了代碼。面試官看了看,。匕至此,二面結(jié)束。后來和面試官談了談職業(yè)開展方面的內(nèi)容,頗有收獲。面試官年紀(jì)也不 大,3年前從華科畢業(yè)的,如今已經(jīng)是一個(gè)頭目了。他說,咱們是碼農(nóng),不過 碼農(nóng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論