20屆秋招頭條Android面經(jīng)(已拿iOS offer,附部分解答)

一面:

1.activity和service怎么通信

(回答了啟動service的方式。。但是面試官說讓我說怎么通信不是問啟動。。。我就從兩種啟動方式說了一下不同的啟動方式怎么通信了,但是面試官問我還有嗎答不出了,扯了一下activity和service的跨進程的通信)

2.因為扯到了跨進程通信,就讓我說一下安卓上有什么跨進程的通信方式

(答了廣播,socket,基于binder那些,剪貼板,文件,管道。。。都是下意識說的,沒答全)

3.說到了管道,讓我說一下在Android的時候會用到管道嗎

(我說了平時沒有用到,但是linux下敲命令行的時候會用到"|",這個實際上會用到管道,后面還補充說Android的Handler機制是用到管道的。。面試官說平時基本不怎么用到的)

4.Java 兩個整型相加怎么知道有沒有溢出

(我說如果是int相加,就用long保存結(jié)果,然后與Integer.MAX_VALUE和Integer.MIN_VALUE比較。然后如果long都存不下的話,可以用Java提供的一些數(shù)值類來表示數(shù)字,進行運算(回來查了一下,BigInteger和BigDecimal可以提供這種大數(shù)字的運算)。面試官說如果不用這些呢,如果是兩個正數(shù)相加呢,我沒答上來,但我說了一下正數(shù)相加溢出的話符號位會改變。。。問了面試官,也是這個答案,他正數(shù)相加溢出會變成負數(shù))

5.Java怎么停止線程

(這是我之前面試沒回答上來的問題似乎,但那時問的是安全地停止一個線程。。。我就答了捕獲InterruptException和isInterrupt()標志位那些。。(跑題)然后面試官說不是這個,就說怎么停止線程就好。。。于是回答了線程池的shutdownAll()方法那些;還說了一下設置標志位,作為循環(huán)停止的條件;然后還說如果是有l(wèi)ooper的線程,可以停止looper。。。感覺不是答得很好)

(1.標記位;2.Thread類的interrupt()方法(stop()已廢棄);3.線程池使用shutDownAll();4.Looper的quit方法或quitSafely方法)

6.假如有4個線程同步開始,其中第4個線程要等前面三個線程執(zhí)行完進行些統(tǒng)計操作,要怎么操作呢。

(說了CountDownLatch和那個柵欄CyclicBarriy(不會拼)?但是說得不太好,因為我用得少不是特別理解,面試官看出來我回答得不好,讓我說說它們的區(qū)別,這個應該回答得沒什么大問題?(后來發(fā)現(xiàn)問題大了!我把countDownLatch說成信號量了,給記串了,但是面試官看起來也沒發(fā)現(xiàn)?))

7.如果不通過使用Java的并發(fā)包的現(xiàn)成類庫來實現(xiàn)一個CountDownLatch,怎么實現(xiàn)?

((嗯這個也是描述信號量的,所以是錯誤回答)我回答是(感覺基本是下意識回答的,沒有腦子了),維護一個volatile的數(shù)字,然后通過++和--操作來控制數(shù)字的大小,并用sychronized塊保證++和--操作的原子性;然后當一個線程要調(diào)用countdown操作的時候,發(fā)現(xiàn)這個值為0,那么就主動調(diào)用wait()方法;如果一個線程調(diào)用++的操作,那么當從0加到1的時候,就調(diào)用鎖上的notifyAll(),來通知沉睡的線程。因為使用notifyAll喚醒的線程可能有多個,所以被喚醒的線程還需要再次檢查數(shù)字是不是為0,應該需要一個循環(huán)檢查的邏輯)

8.那么使用你這個CountDownLatch的這3+1個線程,一共需要幾個鎖呢?

(一個呀,因為只有在同一個鎖上才能保證互斥呀)

9.知道大頂堆和小頂堆嗎,一個數(shù)組建堆,時間復雜度是多少呢?

(原地建堆O(n),但是數(shù)學證明沒搞懂,如果逐個插入,則是O(nlogn)(這個回答的時候不是很清晰,這個答案不太自信))

10.在堆中找指定的一個元素復雜度是多少?

(答了O(n)。。。我說又不是二叉搜索樹這種更加有序的結(jié)構,如果找的不是根元素,那么也只有遍歷查找了)

11.看你簡歷上也有寫網(wǎng)絡方面的知識,https的過程說一下

(這是我之前面試跪過的題目。。。但是我這次不怕了。。給他說了一下ssl層的握手過程,然后面試官有問我ssl握手生成的這幾個隨機數(shù)有什么用,我說了這幾個隨機數(shù)是用來生成真正的對稱密鑰的,還可以防止重放攻擊,并且三個偽隨機數(shù)更接近真正的隨機)

二面:

1.Unicode和ASCII的區(qū)別

(說實話這個我不記得,我就說了一下Java是Unicode編碼,然后占用16bits,然后說ASCII編碼范圍應該比Unicode要小)

2.Unicode有哪些種類?Java是哪種?

(不知道。。面試官說是utf-8就是一個。。(我知道Java不是標準的UTF,但是我沒說))

3.json這種格式知道嗎,是怎樣的,有什么用?

(存儲一些鍵值對(屬性)吧,可以用花括號表示一個json對象,還有方括號表示json數(shù)組;json這種格式可以用來表示一個序列化的對象)

4.序列化除了json還有什么可以使用?

(xml格式也可以吧)

5.說說Android上的序列化?

(serializable和Parcelable,使用方式講了一下)

6.Java的serializable有個Id,你知道是有啥用的嗎?

(類的版本吧,定義之后可以最大限度恢復對象,說了一下serializable可以用于深拷貝)

7.深拷貝淺拷貝說說?

(描述了一下定義吧)

8.Object的hashcode()用來干嘛,怎么自己實現(xiàn)hashcode?

(頭條之前問過我這個問題,但是我沒講好(所以才會掛嘛)。

這次的話,我說了一下

  1. hashcode的作用(用在hashmap這種數(shù)據(jù)結(jié)構中的散列和查找);

  2. 我認為一個好的hashcode定義的要求:(

    (1)不能經(jīng)常改變,因為改變會導致無法找到原本的key對象;

    (2)最好跟對象的一些數(shù)據(jù)相關,能夠唯一標識一個對象(比如你每個對象都有不會改變的名字的話,就可以根據(jù)對象名字生成);

    (3)在一個整型中0和1分布盡可能均勻,不能前面都是000后面才有幾個數(shù)字,這樣比較容易產(chǎn)生碰撞)

  3. 談談根據(jù)以上要求怎么生成hashcode)

    (復盤:個人感覺可以吹吹哈希洪范攻擊?還有怎么解決哈希洪范攻擊)

9.JNI講講?

(講了一下System.load之類的加載.so庫的兩個方法,還有Java方法和cpp方法的簽名匹配)

10.一個a包里的B類的c方法,cpp代碼中的方法一定要a_B_c()這樣嗎

(也可以自定義映射,我有看到別人的代碼中有這樣的映射)

11.Java的泛型講講,有啥用?咋實現(xiàn)的

(有泛型方法和泛型類;實現(xiàn)就是編譯期的時候進行了轉(zhuǎn)型,有對應的虛擬機指令;一般來說運行時不可以獲取泛型參數(shù)的類型,但是有一種情況可以)

12.在什么情況下可以在運行時獲取泛型參數(shù)

(在父類是一個泛型類,子類繼承這個父類并實現(xiàn)這個泛型參數(shù)的時候,可以通過反射getGenxxxType()的方法獲取泛型參數(shù)列表具體的泛型)

13.上界通配符和下界通配符講講

(這個講得不太好,就是說了一下寫法,還有每個寫法表示的是什么)

(List<? extends T>:get:T;put :任何都不行;List<? super T>:get:Object;put:T)

14.兩個方法,一個方法的參數(shù)是泛型的,一個參數(shù)是正常的類(如String),會怎么樣?

(我認為不會報錯吧,因為泛型參數(shù)可以匹配所有類型參數(shù),應該會優(yōu)先調(diào)用更準確的方法……面試官覺得會報錯,因為編譯器會分不清應該調(diào)用哪個方法;我還是認為不會報錯……他們是包含與被包含的關系,就像一個方法有Object參數(shù)和String參數(shù),調(diào)用的時候如果傳入一個String類型的參數(shù),靜態(tài)委派也是優(yōu)先調(diào)用String的那個方法)

(回到宿舍實測,不會報錯)

15.輸入網(wǎng)址到返回ip的過程

(講了一下DNS服務的請求過程)

16.假設你你緩存的ip地址過時了,怎么辦

(我猜測說,要是ip過期的話,會無法響應請求,那客戶端就可以再走一次DNS請求的流程(這個答案不好哈哈哈哈))

17.你認為DNS機制是怎么解決這個問題的,你可以嘗試參考http的緩存機制想想

(每次使用之前與DNS服務器對比一下?(is_modify_since?)或者定義一個過期時間,過期之前都可以直接使用這個ip地址)

18.廣播有幾種,有序和粘性講講

(粘性不記得了,有序講了一下優(yōu)先級)

19.注冊廣播的方式,你覺得靜態(tài)注冊廣播這個是什么時候執(zhí)行的呢

(靜態(tài)注冊和動態(tài)注冊?執(zhí)行應該是開機之后相關服務啟動之后吧(猜測))

20.本地廣播

(只能在進程內(nèi)傳播消息,使用handler實現(xiàn),工作機制就是……說了一下廣播過濾那些吧,然后再發(fā)消息到指定的廣播接收器去處理)

21.線程進程區(qū)別

(1.進程是系統(tǒng)分配資源的單位;2.線程是系統(tǒng)分配和調(diào)度cpu資源的單位;3.線程獨立性沒有進程高;4.一個進程可以有多個線程……等等)

22.講到內(nèi)存資源,線程有什么數(shù)據(jù)是私有的

(虛擬機棧,以及上面的方法參數(shù)?還有ThreadLocal的話可以定義一個線程私有的對象,之后說我知道ThreadLocal的實現(xiàn)方式,然后就跟他說了一下ThreadLocal以及它的ThreadLocalMap那些……以及它不會內(nèi)存泄漏的原因)

(面后復盤補充,jvm中虛擬機棧、程序計數(shù)器、本地方法棧都是線程私有的)

23.算法:二叉樹的右視圖

(思路是層次遍歷最后一個,但是連層次遍歷都寫錯了)

24.算法:兩個棧實現(xiàn)隊列

(寫出來了,但是面試官說可以優(yōu)化,沒說好)

25.講講實習項目遇到的問題

(項目的長時間運行崩潰的問題:

1.描述程序的整個結(jié)構運作過程;

2.問題處理思路:

(1)如何探究原因;

(2)找到原因后嘗試解決,嘗試提出解決方案;

(3)無法解決,寫好日志分析報告交給leader;

面試官:那最后這個問題解決了嗎?

我:我離職了不知道情況了。

面試官:這個問題你可以問問他們解決了沒有。

我:那我想問一下您認為有什么解決辦法嗎?

面試官:沒有接觸這一類的問題,我也不清楚。)

26.有什么想問我的:

工作氛圍(哪方面的氛圍?學習氛圍、加班情況);

程序員職業(yè)發(fā)展建議以及如何快速融入工作。

三面:(記不全)

  1. 自我介紹

  2. 內(nèi)核態(tài)用戶態(tài)的區(qū)別

  3. 用戶態(tài)可以訪問內(nèi)核態(tài)的內(nèi)存嗎,你說的一些有風險的指令,具體是怎么阻止用戶態(tài)程序去執(zhí)行有風險的指令的

  4. 既然用戶態(tài)不可以訪問內(nèi)核態(tài)的內(nèi)存,那么在做一些比如網(wǎng)絡連接的操作的時候肯定需要內(nèi)核態(tài)內(nèi)存,用戶態(tài)程序怎么做到使用內(nèi)核態(tài)內(nèi)存的

  5. 說到跨進程通信方式,你知道有什么跨進程通信方式嗎?

  6. 你說到的共享內(nèi)存,管道,消息隊列,binder他們之間有什么區(qū)別嗎?

  7. 你說到廣播、內(nèi)容提供器也有使用binder與AMS通信,那他們與binder之間有什么區(qū)別嗎(廣播、內(nèi)容提供器的實質(zhì)是不是就是binder)?

  8. 為什么要寫這樣一個測速的程序?

  9. 兩個Activity,一個顯示商品列表,一個實現(xiàn)商品詳情頁,在商品詳情頁點了關注之后,怎么使得返回商品列表之后也更新了關注狀態(tài)呢?

  10. 你說的發(fā)布訂閱模式,你知道有什么框架使用了這個設計模式嗎?

  11. 假如兩個Activity數(shù)據(jù)量比較大呢,要更新相當多的東西呢?

  12. 你把model層設置為單例的話,那這個列表不斷下滑,加載更多內(nèi)容,最后導致占用相當多的內(nèi)存怎么辦?liveData、ViewModel你可以了解下

  13. 算法題:"www.toutiao.cn"轉(zhuǎn)成"cn.toutiao.www"

  14. 有什么想問我的?(在頭條工作的體驗?這個你可以問hr)

四面:(記不全)

  1. 你是哪里人?為什么選擇投上海的崗位?除了上海,還有什么意向的城市嗎?為什么不喜歡北京?上海也是這樣啊?

  2. 問專業(yè)。與程序相關的課程有多少?有學計算機組成原理、計算機網(wǎng)絡嗎?

  3. 除了看書以外學習途徑?你在安卓的群上一般討論什么東西?印象深刻的是什么?

  4. 你在wifi是上海的實習嗎?你這個在wifi的部門不是專門做安卓的吧?有沒有安卓方面導師?都是靠你自己摸索的嗎?項目有幾個人在負責,都是你在負責嗎?

  5. 因為什么而接觸安卓?你在這個團隊里負責什么角色?貢獻了多少代碼比如有多少頁面是你寫的?

  6. 有沒有什么社團之類的讓你接觸安卓?

  7. 有什么想問我的?(問了對應屆生的期望)

hr面:(記不全)

  1. 你認為你前面的面試表現(xiàn)怎么樣?

  2. 你是女生為什么要來上海這么遠工作?

  3. 你覺得抖音(還是字節(jié)跳動來著)怎么樣?

  4. 你提到技術驅(qū)動型,你認為怎么樣才是技術驅(qū)動型公司?

  5. 你提到你是抖音的用戶,但是使用頻率不高,是因為什么,因為抖音的內(nèi)容質(zhì)量不好嗎?

  6. 你提到抖音是音視頻相關,你對音視頻開發(fā)是比較感興趣嗎?

  7. 實習工作中有沒有遇到什么較大的問題?這個問題是什么原因有沒有探究?

  8. 大學期間有沒有遇到什么比較大的挫折?

  9. 你提前批有投過頭條沒有通過,是因為沒有準備好嗎?

  10. 如果通過了面試,你會提前來實習嗎?

  11. 有什么想問我的?(在頭條工作的體驗?我這個崗位的發(fā)展空間?)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370