2019Android面經 ---已拿網易雲音樂內推offer

七月底收到網易雲音樂的內推碼,並不抱希望能進去,就想着鍛鍊一下,做好了簡歷進行了投遞,也是第一次投遞,沒想到經過層層篩選拿到了offer,本人用了幾年網易雲音樂,也快十級了,能拿到這個offer真像做夢一樣

以下問題僅供參考,因爲每個人Android主要學的方向不一樣,所以每個人問到的問題肯定也會有所不同

8月中網易筆試

筆試是在牛客網上進行的,20道單選一共20分, 4道算法題一共80分, 2道問答題一共20分, 算法題一道也沒做出來, 第一題基本快做出來了, 問答題問了一道AIDL的, 我平時沒涉及到過,就沒做, 第二道題是問Handler, message, looper的, 大二跟着一篇博文好好看了一下源碼,有點印象,就答上了。

過幾天後網易一面

筆試完後其實就覺得自己掛了,畢竟一道算法題都沒做出來,這幾天也沒好好複習Android的,面試實屬來得有點突然,很多都是憑以前項目得記憶在答,其過程也比較緊張, 說話吞吞吐吐的,盡力去表達自己的想法

題目及回答:

  1. 自我介紹(簡單介紹了自己從大一入學到現在大三找工作期間的所學所做)
  2. 介紹項目及其所用技術(剛開始有點緊張,說得有點不清楚,說自己用到了多線程,netty,service, okhttp, 自定義View等,反正能說的儘量說)
  3. 多線程怎麼同步的(我說netty, notify, 消費者, 生產者模式, 阻塞隊列,又是能說的儘量說)
  4. Synchorized關鍵字修飾靜態方法與實例方法的區別(我直接就懵逼,跳過,後來去看了,主要是鎖的對象不同)
  5. 有沒有了解okhttp的底層(沒有, 不清楚, 又跳過, 其實很久以前看過一點點, 但都忘了)
  6. 網絡編程用了哪些(我說:okhttp, service, AsyncTask)
  7. http的header知道哪些(沒去看,pass)
  8. http code(當時懵逼了,就pass了,其實自己知道,就是200, 404 ,500這些code)
  9. TCP, UDP區別 (說:UDP是盡最大力量傳輸,協議簡單協議頭好像就8字節(其實就是8字節), TCP較複雜, 有擁塞控制,滑動窗口,三次握手,四次揮手,且面向連接)
  10. Android oom怎麼解決,有啥工具(我:handler內部類會與外部類綁定,可能會OOM,要記得在OnDestory中解綁與取消註冊等,使用軟引用或弱引用,在Application類中onLowMenory方法中釋放一些不必呀的資源,工具的話確實沒用過就說不知道)
  11. final關鍵字作用(我:修飾方法和類後使之不可改變,修飾變量時JVM會對其有所優化(這個是聽別人說的,其實自己並不清楚))
  12. 不小心提到了JVM,於是被問JVW GC(我不是很瞭解JVM就強答了一下,以前看過回收機制,說了python的引用計數,然後又說了Java的圖不可達)
  13. dp, sp, px的區別,其分別指代什麼(我:sp用於文字, dp和px差不多有2倍差距,具體多少記不得了, 但用過)
  14. 聽說你用過圖片裁剪,請問怎麼裁剪圖片的一部分(不太清楚,跳過)
  15. Android四種啓動模式與使用場景(基礎知識,恰好又複習到了,就直接答上)
  16. HashMap get與put實現(說了hash表的衝突解決,怎呢確定位置等)
  17. Android事件分發機制(以前跟着一篇博文好好看了源碼,但忘了很多了,想細說,但又說不清,面試官就叫我不要死扣細節,然後我就簡單說了個大概)
  18. handler, looper, message(大概說了looper啓動時就創建, handler發送message對象給messageQueue中,然後looper會調用loop方法去循環處理messageQueue中的message)
  19. 你說你使用到了換膚框架,你對換膚原理有所瞭解麼(我:以前看過,好像是重啓Activity,其他的也記不得了)
  20. Java堆和棧的區別(很久以前看過,也忘了,當時也沒答上)

最後問我有啥問題,我就問面試完後還有幾輪面試,我這次面試結果多久能出來(當時沒準備這些,也不知道怎麼問,就隨便問了)
整個面試過程差不多半個多小時,主要問題就是第一次面試緊張,沒經驗,不瞭解底層

兩天後小米一面

  1. 接口和抽象類的區別(看過, 說了面向接口編程,回調,抽象類能幫子類進行一些邏輯封裝等)
  2. Java裏屬於值傳遞還是引用傳遞(我說都有,然後還分析了一波,結果他說只有值傳遞…)
  3. Java基本數據類型有哪些
  4. hashMap實現原理
  5. Synchorized關鍵字作用
  6. ==和equals區別
  7. 主方法中有一個String a = “一個字符串”, 傳入一個方法中 a = new String(“另一個字符串”),那麼a = ?
  8. Android四種啓動模式及其應用
  9. Android中從A活動到B活動的執行生命週期
  10. 反射有了解麼,在Android中的應用?
  11. OOM可以被捕獲麼?(很奇怪的問題,當時分析了一波,分析到了Android虛擬機和內核,說可以被捕獲,其實確實可以被捕獲,try…catch中的可以)
  12. 斐波那契數的遞歸會導致什麼異常(Stackoverflow)
  13. 一道算法題(一個人站在一棵二叉樹哦的左邊,問能看到哪些節點,打印出來,面試官很好,引導我,然後我寫了一個層次遍歷,還是沒做出來,但也沒做多久)
  14. 講一下設計模式六大原則
  15. ArrayList和LinkedList區別
  16. Android6.0, 7.0, 8.0 新特新
  17. 重寫equals與重寫hashcode

小米一面的收穫很大,首先第一個問題就告訴我不要着急回答問題,你可以思考一下,然後很多問題其實都是一起在答,或者說引導我,比如設計模式那個,還問我面向接口編程,接下一句話,我說:不要面向實現,而且自從小米一面後,我的網易二面及現場面都不緊張了,回答不上的問題,想一下再說,不要急

不久後網易二面

  1. 叫我不要緊張,自我介紹(還是介紹自己大一到大三所學所做)
  2. 讓我講述一下第一個項目,用了什麼技術,有自己覺得做的很好的地方麼,有哪些難點?(第一個項目有點久遠了,介紹了一些遇到的困難,主要是邏輯很複雜,然後又是因爲這是自己初學Android的第一個項目,感覺做得有點難受)
  3. 你多線程用在哪?線程同步體現哪?
  4. AsyncTask源碼有看麼(我說:沒看,但我知道它其實就是一個擁有5個核心線程128個最大線程的線程池)
  5. 在那個項目中爲什麼不用線程池(沒必要,線程不多,也不會經常創建刪除,另外就是當時剛做這個時不太瞭解線程池)
  6. okhttp使用過程講一下(因爲一面問過我,所以我連源碼都去看了,先講了全局共享的okhttpClient然後講了okhttp中有一個線程池,然後講了一下使用流程)
  7. 你講講第二個APP你主要用了什麼技術,怎麼實現的(第二個APP我全程操刀,還重構了一次代碼,所以印象較爲深刻,然後主要講了自定義View,事件分發機制,其實用的東西並不多,主要是界面)
  8. 我看你APP中有很多按鈕都是文字加圖標的形式,你是怎麼實現的(相對佈局加drawable文件中的layer)
  9. 你爲什麼用TextView放圖標,你的圖片爲啥不用ImageView(我說我用的圖標都是矢量圖)
  10. 你首界面的View是怎麼實現的,用到了canvas的旋轉麼?(沒用,講了Android座標系,然後說我都是用數學的方式計算出位置來的,比如距離頂部1/16 * height等等)
  11. 自定義View怎麼實現(複雜的View可以繼承自ViewGroup,在裏面可以做很多操作,比如layout佈局,添加其他View控件,或者是View的onDraw方法,直接進行繪製我那個自定義View就是這麼實現的)
  12. 你說到了ViewGroup,你說下ViewGroup中經常重寫的幾個方法(onLayout用於佈局,onMeasure用於測量控件大小,還有就是構造方法中可以自定義xml屬性等)
  13. 你怎麼實現取色的?(我說:不是有一個十字麼?移動放大縮小圖片中自己想要的點到十字處去,然後通過數學的方式,計算這個點對應圖片中點的位置,取出其RGB值)
  14. 你講講事件分發機制,你怎麼用的?(我:在切換頁卡時滑動事件可能會與圖片的滑動事件相沖突,所以這裏就要對點擊滑動事件進行判斷,判斷其點擊位置,然後確定是滑動圖片還是滑動頁卡)
  15. 你這個彈窗是怎麼實現的?(我:popWindow)那你講一下(就簡單講了一下)
  16. 用過Dialog麼?(我:用過)瞭解麼?(我:不太瞭解,平時就只是把它當作普通的對話框使用)
  17. dp, px,sp(複習漏了…)
  18. 你說你有參加過ACM比賽,講一下(我:12月份去交通大學參加的,當時我做了一道題,是說一個m * n的矩形,判斷是否能夠折成一個正方體,題目給出了邊長爲1的正方體的所有展開圖,其實算不上什麼算法,應該算是根據小問題推解大問題的過程,當時險些做出來,就差零點零幾毫秒)
  19. 除此之外,你還做了哪些東西?(我:做了很多demo,跟着網上的教程還做了一個電商APP,學到了簡單的組件化開發,學做了一個網絡請求框架,接觸了Fragment的一個框架,還知道了Fragment懶加載)
  20. Fragment講一下,懶加載怎麼實現的?(簡單回答)
  21. 你爲什麼不在你的第二個APP中使用Fragment呢?
  22. 你最近有學什麼新技術麼?

我的問題:
23. 你覺得我在這次面試中有哪些回答得較好,哪些回答較差(他說:總的來說還不錯,挺好的)
24. 你覺得對於我這種應屆生, 所應聘的這個崗位,我還差哪點,哪些技術棧(他說,其實的話,主要還是缺乏實踐,真正的項目不像你平時做的demo那樣,會考慮到很多,必須測試通過,還需要很多項目經驗)
25. 日常問面試結果通知時間

8月28號網易現場HR面

到了現場面其實反而不緊張了

  1. 自我介紹
  2. 講一下你最得意的APP(第二個)
  3. 這個APP有哪些技術難點(數學計算困難)
  4. 你是怎麼學習Android的(csdn, 簡書, GitHub拉項目看代碼)
  5. 你覺得杭州怎麼樣
  6. 你有哪些興趣愛好
  7. 你有哪些缺點
  8. 對於上午的宣講你有什麼建議
  9. 你單身麼?
  10. 你爲什麼不去實習
  11. 你有沒有想過考研

8月28號網易現場總監面

總監面感覺很難,很多都答不上

  1. 自我介紹
  2. 創新實驗室是什麼?
  3. ViewPager滑動卡頓(已經懶加載,頁面自定義View也優化)
  4. okhttp源碼
  5. handler, message, looper
  6. 裁剪圖片
  7. http, header中與緩存相關的頭
  8. cookie是個啥
  9. OKIO有了解麼
  10. 數據庫索引
  11. 組件化開發,什麼是組件化,組件應該滿足什麼條件
  12. 日常生活中你是如何避免重複工作的
  13. View動畫實現方式
  14. 最近有在瞭解新技術麼
  15. 怎麼學習Android的?
  16. 換膚原理,有了解換膚框架原理麼?
  17. 爲什麼大三不實習
  18. 爲什麼想搞一個換膚呢?具體需求?
  19. 自定義View中有一個四參構造方法,請問後兩個形參作用?

另外本人雙非大學,連四級都沒過,但現在大四,打算大學裏面把它過了,能拿到offer真的很意外也很高興,也感謝網易,讓我第一次做了飛機,哈哈哈,坐飛機去的,然後又做動車回來,賊累,網易食堂確實好吃,但是人蠻多的,特別又是夏天,比較熱,也祝大家都能拿到心儀的offer

最後貼上幾張自己做的那個APP的截圖吧
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章