筆試稍微回顧一下:
第一題是列舉程序間進行通訊的方式,列舉至少三種,這個很簡單。第二題是考察strlen和sizeof的用法以及如果函式引數列表是陣列的情況,也是經常遇到的問題,注意引數列表中的陣列實際編譯器會優化為指標,所以跟傳入指標是一樣的。第三題讓你想一種策略,就是某個程式只能有乙個進行在執行,不能執行多份程序,問如何實現,我答的是關於程序同步的東西,不知道原題意思是不是要考察這個。
第四題寫**,是乙個三色球排序的問題,相同的球放到一起,讓你按順序輸出紅白藍三種顏色的球,可以用012來表示,要求只能掃瞄一次陣列。
第五題也是寫**,實現c的strstr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char
*
strstr
(
const
char
*s1,
const
char
*s2)
s1++;
}
return
null;
}
else
return
(
char
*)s1;
}
第六題也是寫**,讓你寫乙個二叉樹的刪除,這個二叉樹並不一定是排序二叉樹,所以你要自己設想一種方式。這個各種資料結構的書裡面都有。
一面是乙個做android的牛人,很年輕,上來就讓我寫乙個memmove的函式,就是拷貝源位址的字串到目的位址中,給了兩個指標。這道題主要要考慮記憶體區域重疊的地方,我大概寫了一下,花了10分鐘(平時練習略少),面試官看了一下,問有沒有優化的地方,**還有什麼問題。我說記憶體洩露的問題,沒有注意到,忘記free了,還有,如果有重疊的部分,直接就整體從尾部做搬移就行了,不用先拷貝重疊區域,面試官點點頭。後面又問了android方面和linux以及語言的一些基本問題,問的東西很多,基本上只要我答到點子上就會立馬問下乙個問題,也沒有問很細節的東西,感覺就是看你的知識面夠不夠寬而不是是不是深入,下面是一些我能想到的知識點:
android部分:
activity生命週期
broadcast型別
執行緒同步如何實現
service的生命週期,service啟動有哪幾種方式
activity之間傳資料有哪幾種方式
資料持久化有哪幾種
binder是什麼,講述一下binder的實現大致過程,怎麼進行程序間通訊
有沒有遇到過anr,怎麼處理?
linux部分:
slab分配記憶體的策略
如果給你一塊記憶體,你自己去規劃這塊記憶體,怎麼實現乙個記憶體分配策略,至少需要哪些記錄?
linux原始碼中大量使用static的函式宣告是因為什麼?
什麼是中斷,中斷的過程簡單描述一下。
目前能想到的大概是這麼多,然後最後問我是不是真的想做移動開發,對移動開發有什麼理解。估計看我挺想做這塊的,就說,那我就帶你去安排個二面吧。
百度軟體開發和測試面試
2 手寫演算法直到陣列最後乙個節點的路徑和 3 什麼是管道 什麼是訊號量 程序ipc 1 管道 pipe 管道可用於具有親緣關係的程序間的通訊,是一種半雙工的方式,資料只能單向流動,允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊,管道只能承載無格式位元組流。2 fifo 命名管道克服了管道沒有...
2015百度校招筆試題(移動軟體開發方向)
憑記憶記錄,描述不一定太準確 一 簡答題 1.heap和stack的區別 2.移動端應用開發和pc端及伺服器端開發的不同 3.給定乙個無序陣列以及乙個特定的數,查詢出陣列中兩個數之和等於該特定的數,並輸出下標,要求時間複雜度為o n 二 演算法設計題 1.找出兩個字串的最長公共子串 2.陣列中某乙個...
百度2014軟體開發工程師筆試題詳解 轉)
一.簡答題 1.簡述iso的7層設計 解析 應用層 提 用程式間通訊 表示層 處理資料格式 資料加密等 會話層 建立 維護和管理會話 運輸層 建立主機端到端連線 網路層 定址和路由選擇 資料鏈路層 介質訪問,鏈路管理 物理層 位元流傳輸 2.如何在多個程序間進行資料共享 至少寫出3種 linux下 ...