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é)構(gòu)烹棉,如果找的不是根元素攒霹,那么也只有遍歷查找了)

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é)構(gòu)中的散列和查找)盗忱;

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

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

    (2)最好跟對象的一些數(shù)據(jù)相關(guān)趟佃,能夠唯一標識一個對象(比如你每個對象都有不會改變的名字的話扇谣,就可以根據(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)用哪個方法;我還是認為不會報錯……他們是包含與被包含的關(guān)系簿训,就像一個方法有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í)行應該是開機之后相關(guān)服務啟動之后吧(猜測))

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é)構(gòu)運作過程奠旺;

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)商品詳情頁判莉,在商品詳情頁點了關(guān)注之后,怎么使得返回商品列表之后也更新了關(guā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è)锻狗。與程序相關(guān)的課程有多少?有學計算機組成原理焕参、計算機網(wǎng)絡嗎轻纪?

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

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

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

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

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

hr面:(記不全)

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

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

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

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

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

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

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

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

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嫉晶,一起剝皮案震驚了整個濱河市骑疆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌车遂,老刑警劉巖封断,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斯辰,死亡現(xiàn)場離奇詭異舶担,居然都是意外死亡,警方通過查閱死者的電腦和手機彬呻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門衣陶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柄瑰,“玉大人,你說我怎么就攤上這事剪况〗陶矗” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵译断,是天一觀的道長授翻。 經(jīng)常有香客問我,道長孙咪,這世上最難降的妖魔是什么堪唐? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮翎蹈,結(jié)果婚禮上淮菠,老公的妹妹穿的比我還像新娘。我一直安慰自己荤堪,他們只是感情好合陵,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著澄阳,像睡著了一般拥知。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碎赢,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天举庶,我揣著相機與錄音,去河邊找鬼揩抡。 笑死户侥,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的峦嗤。 我是一名探鬼主播蕊唐,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烁设!你這毒婦竟也來了替梨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤装黑,失蹤者是張志新(化名)和其女友劉穎副瀑,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恋谭,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡糠睡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疚颊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狈孔。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡信认,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出均抽,到底是詐尸還是另有隱情嫁赏,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布油挥,位于F島的核電站潦蝇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏深寥。R本人自食惡果不足惜护蝶,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翩迈。 院中可真熱鬧持灰,春花似錦、人聲如沸负饲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽返十。三九已至妥泉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洞坑,已是汗流浹背盲链。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留迟杂,地道東北人刽沾。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像排拷,于是被迫代替她去往敵國和親侧漓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350