開頭
相信大多數網際網路的從業者都有着這樣一個夢想:進大廠,獲得豐厚的薪酬,和更優秀的人一起共事,在技術上獲得更快的成長。
**然而部分人其實一直都陷入了“窮忙”的困局,覺得自己每天白天黑夜都在工作,高強度輸出,但是卻并沒有獲得機會的眷顧。**久而久之,既不知道自己忙什麼,也不知道怎麼能停下來。
這并不是時間的過錯,而是因為把解決方式過多押注在技術上,然後繼續在工作上不斷循環,這樣的狀态讓你極度缺少另一個層面的思考。
如何去打破這種僵局呢?很多人建議多讀書,但是從哪種類型的書開始看又該看誰的書呢?說實話,很多技術書寫到最後大同小異。但是萬變不離其宗,源代碼以及參考手冊需要多些鑽研,紮根底層是程式員應有的素養。
現在網際網路訊息如此便捷,學習資料從來不缺。硬碟裡都是各種學習資源,上下班坐地鐵,還要刷技術視訊。但是泛看不如精看、精讀。
這裡我總結了一些Android核心知識點,以及一些最新的大廠面試題、知識腦圖和視訊資料解析。
需要的**小夥伴私信【學習】**我免費分享給你,以後的路也希望我們能一起走下去。
面試經驗
自己大大小小投了也有20多家公司,不過經曆履歷篩選以及筆試淘汰,最終就經曆了7家公司的面試。下面我就把自己面試中問到的問題貼出來供大家參考,一些具體項目相關的就不貼了。
阿裡巴巴
阿裡是3月初開始投的,是自己第一次面試大型的網際網路公司,當時自己的準備也不夠充分,表現不是很好,經曆了三次技術面,最後挂了。
一面
- 自我介紹
- hashmap和hashtable
- jdbc
- 三次握手
- http狀态碼
- HTTPS加密:對稱,非對稱,CA憑證
- handler
- 線程池的使用
- sychonized,volatile
- binder
- activity繪制流程
- 事件響應流程
- activity周期,啟動模式
二面
- 自我介紹
- 對自己項目的介紹,架構圖呈現
- 對MVP和MVVM的了解。
- 四大啟動模式,以及場景對應
- Handler的機制介紹,為什麼不能在子線程初始化問題
- 設計模式中的單例介紹,使用場景(Okhttp的Seesion存儲等等),線上編寫
- 快排算法
- OkHttp的源碼分析,及整體架構的流程圖繪制
- 四大引用的問題和MVP架構相結合進行回答
- View繪制流程問題,如何不使用xml,來實作中間位置的定位
- 事件分發機制流程講解,以及如何實作單擊事件和長按事件的判定
- 關于為什麼選用mqtt協定的問題,優勢,原理
三面
- 自我介紹
- abstract和interface差別
- int和Integer差別
- 四種引用
- Java裡面int、char、long的位元組數
- 線程的建立方式
- RxJava的優缺點
- EventBus
- 從網絡上加載一個10M的圖檔,要考慮哪些
- http與https
- http 1.0 和 http 2.0之間的差別
- 設計模式準則
- Handler機制
- 算法:判斷一個連結清單是否回文算法,給定一個數組,将數組裡面的每一位向後移動k位
攜程
攜程當時投的時候就沒抱希望,招聘資訊上明确指定隻招固定的那幾所985高校,就随便投了,沒想到筆試都沒做就直接打電話面試了,不過問的問題确實很深入,結果顯然,一面就挂了。
一面
- 集合
- concurrenthashmap
- volatile
- synchronized與Lock
- Java線程池
- wait/notify
- NIO
- 垃圾收集器
- Activity生命周期
- AlertDialog,popupWindow,Activity差別
鬥魚
鬥魚是一家直播公司,給出的實習待遇是相當好,經室友推薦就投了履歷。最後流程走完,得知挂在了二面上,大概原因就是沒有拿得出手的項目,實際項目經驗不足。
一面
- 線程同步(五個線程如何順序執行)
- GC
- 内部類特點
- 四大引用範式
- 建立線程的方式(三個)
- arraylist和linkedlist
- 線程池(使用,種類,參數)
- hashmap(底層實作,沖突解決方式,擴容方式,線程安全?LinkedHashmap)
- 自定義VIew(View的繪制,自定義View的方法)
- 性能優化(布局和代碼)
- sp、dp和px的差別(适配問題)
- handler(基本原理,ThreadLocal原理和使用)
- 四大元件(問了生命周期和特點和基本使用)* 計網
- TCP和UDP
- HTTP建立過程
二面
- 問的都是一些項目問題,比較寬泛,沒問具體技術點
位元組跳動
位元組跳動是在三月底投的,當時找了一個月,都沒拿到拿得出手的offer,有點心煩意亂,就又海投了一波。3.24接了位元組跳動的面試,3.29進行的視訊面試。一共進行了3輪視訊面試,位元組的面試官很好,看得出來位元組的技術是很強的,也很注重算法。最終拿到offer。
一面
- 資料結構中堆的概念,堆排序
- 死鎖的概念,怎麼避免死鎖
- ReentrantLock
- synchronized
- volatile
- HashMap
- singleTask啟動模式
- 用到的一些開源架構,介紹一個看過源碼的,内部實作過程。
- 消息機制實作
二面
- synchronized與ReentrantLock
- ReentrantLock的内部實作
- 用到的一些開源架構,介紹一個看過源碼的,内部實作過程。
- Java中異常
- App啟動崩潰異常捕捉
- 事件傳遞機制的介紹
- ListView的優化
- 今日頭條推薦新聞去重,推薦的時候去掉使用者已經看過的新聞。
- 二叉樹,給出根節點和目标節點,找出從根節點到目标節點的路徑。手寫算法
- 模式MVP,MVC介紹
- 斷點續傳的實作
三面
- 集合的接口和具體實作類,介紹
- TreeMap具體實作
- synchronized與ReentrantLock
- 手寫生産者/消費者模式
- 邏輯位址與實體位址,為什麼使用邏輯位址
- volatile
- 一個無序,不重複數組,輸出N個元素,使得N個元素的和相加為M,給出時間複雜度、空間複雜度。手寫算法
- Android程序分類
- 前台切換到背景,然後再回到前台,Activity生命周期回調方法。彈出Dialog,生命值周期回調方法。
- Activity的啟動模式
騰訊
騰訊大家都知道網際網路巨頭,我是通過實習僧上履歷投遞獲得的這次面試機會,一共進行了兩輪電話面試,挂在了二面。
一面
- 自我介紹
- APP的啟動流程
- APP的安裝流程
- Rxjava的源碼
- 事件分發機制和多點觸控
- https和非對稱加密
- Retrofit的動态代理
- 幾種IPC方式的優劣,以及Binder的原理
- 本地持久化儲存的方法
- parcelable和serializable
二面
- 自我介紹
- 筆試題1:删除無序連結清單中的重複結點(能否優化)
- 筆試題2:先說一下二叉樹的有哪些周遊方法。寫一個二叉樹前序周遊的非遞歸形式。
- 講一下Java的記憶體。
- 建立一個字元串對象,這個對象配置設定在哪裡?
- String str = “123” + “456”;會建立幾個對象。
- 問了作業系統的問題,沒學過,是以也忘了問了什麼。
- 資料存儲有學過嗎?資料庫和檔案儲存有什麼差別?
- Activity有哪些啟動模式?
- 有什麼要問的?
最後
我這裡整理了一份完整的學習思維以及Android開發知識大全PDF,有需要的同學可以自行領取。
資料擷取方式:Android完整知識學習體系路線
當然實踐出真知,即使有了學習線路也要注重實踐,學習過的内容隻有結合實操才算是真正的掌握。
Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**
當然實踐出真知,即使有了學習線路也要注重實踐,學習過的内容隻有結合實操才算是真正的掌握。