金三銀四你準備好了嗎?接下來總結一下阿里、美團、騰訊的面試經歷和一份Java面經。
阿里
一面(3/8 21:17,電話,61 分 47 秒)
- 自我介紹
- 項目來歷
- MySQL 和 MongoDB 的區別
- 關係型數據庫和非關係型數據庫的區別,各自在什麼情況下使用
- 為什麼海量數據時適合用非關係型數據庫
- 為什麼研究生讀的通信,而不是計算機
- 上過或自學過哪些計算機課程,對計算機網絡挺熟悉的吧
- 對 HTTPS 有沒有了解,有沒有寫過相關代碼
- 老闆有 2000 元給我和同學分錢,首先由我提出分錢方案。如果同學不同意,則總額變為 1000 元,並由同學提出分錢方案。如果這時我不同意,則倆人各拿 100 元。請問一開始我應該怎麼給出分錢方案?
- 假設有一個線程在取隊列中的消息,怎麼停止這個線程
- 讀過哪些源碼,分別說一下 Android 和 Java 的
- 讀過哪些 Android 開源庫源碼
- 項目中遇到過什麼難題
- 印象深刻的幾次學習經歷
- 看你用過 Ubuntu,平時是不是用 Linux,熟悉Linux嗎,都用它幹什麼
- 有什麼問題想問的
二面(3/12 20:30,電話,82 分 33 秒)
- 介紹一下項目
- 一連串問了多個問題關於項目中給設備配置入網過程的細節
- 項目中與設備通信的數據格式,還可以用哪些數據格式,做過什麼優化
- 設計一種變長的傳輸數據格式
- UDP 和 TCP
- 介紹一下 MQTT 協議(項目中用到的一個協議)
- 項目中有沒有做過一些監控日誌
- Elasticsearch是什麼(因為我說到才問的)
- CrashHandler 的實現
- 設計一個日誌監控和上傳模塊,深入問了很多細節和考慮的方面
- Android 各個版本的變化
- 介紹一下 Flutter 框架
- 平時怎麼了解和學習新知識的
三面(3/21 15:31,電話,30 分 57 秒)
- 問了很多項目細節,關於本地存儲、音樂播放等基礎模塊的封裝
- 有沒有把音樂播放模塊開源出去
- 項目中解決過什麼難題
- HTTP/2.0 有什麼變化
- 在一個手機屏幕上有兩列(類似於瀑布流),給你一些高度不同的 item,怎麼擺放才能讓這兩列的整體高度最小?
- HR面(3/28 20:16,電話,14 分 47 秒)
- 為什麼來阿里
- 有什麼優勢能讓你來我們部門
- 業餘有什麼愛好
- 解決難題的經歷
- 遇到過什麼挫折
- 選擇上海還是杭州
頭條(一二面:3/23 晚,現場。三面、HR面:3/26 下午,現場。)
一面
- 自我介紹
- 項目來歷
- 項目中本地存儲怎麼做的
- 訪問本地存儲的類應該怎麼設計
- 說一下對 BInder 的理解
- BInder 紅黑樹的節點是以什麼區分的
- SurfaceFlinger、VSYNC
- SurfaceView 原理
- HTTP 響應內容
- Retrofit 內部實現
- 動態代理的原理
- EventBus 內部實現
- 手寫二分查找
二面
- 看過哪些書
- 說一下《Java 併發編程實戰》的作者有哪些人,還認識哪些大牛,比較喜歡誰,會去關注嗎
- HashMap 版本變化和原理
- 手寫快速排序並解釋
- 各種排序的複雜度和穩定性
- 類成員的權限怎麼定
三面
- JVM 內存區域
- volatile 和重排序
- Java 內存模型
- 引用計數和可達性分析
- finalize 原理
- Android 界面刷新原理
- Android 性能優化有哪些方法
- 觀察者模式、責任鏈模式
- OkHttp 內部實現、有沒有緩存
- 從輸入一個 URL 到看到一個頁面的過程
- 看過哪些書
- 是不是實驗室做開發的同學中最強的
HR面
- 為什麼來頭條
- 作為項目負責人,完成了哪些工作
- 實習時長、什麼時候來
騰訊
一面(3/12 19:00,電話,40 分 34 秒)
- 能不能來深圳
- 介紹項目
- 為什麼用 SharedPreferences,怎麼存 JSON
- 項目中遇到什麼難題
- 廣播和組播
- 重男輕女,生女孩會生到男孩為止,問男女比例
- Gson原理
- SQL語句、數據庫優化
- ORM、DAO、DSL
- 模板方法模式
二面(3/15 14:50,電話,17 分 46 秒)
- 上過哪些計算機課程
- Java 類加載
- Android 類加載,DexClassLoader有什麼用
- 散列表有哪些解決衝突的方式
- LinkedList 和 ArrayList 比較
- TCP 的擁塞控制
- 能不能來深圳
美團(3/14 下午, 現場,大約 4 小時)
一面
- 自我介紹
- 項目來歷
- 為什麼喜歡 Java,然後問了一些 Java 的特性
- 線程和協程,為什麼協程比線程效率高
- RecyclerView 圖片錯位問題
- Fragment 的 commitAllowStateLoss 方法
- Activity 與 Fragment 怎麼通信
- Handler 怎麼解決內存洩漏問題
- 其他內存洩漏情況
- 單擊事件和雙擊事件哪個先觸發
- selector 為什麼能夠切換背景,原理是什麼
- 不考慮具體頁面,怎麼從根本上優化界面卡頓
- SurfaceFlinger、VSYNC
- 描述一下 Handler 的原理
- 依次打印二叉樹每層最左邊的結點
二面
- 怎麼判斷對象是否要進入老年代
- Eden 和 Survivor 的比例和回收規則
- 新生代為什麼用複製算法
- 說一下對 Binder 的理解
- 說一下 ActivityManagerService、ActivityManagerNative 等幾個類的區別
- 手寫各種單例模式
- 跳臺階問題
- 求兩個鏈表的交點
- 判斷二叉樹是否左右對稱(只考慮結構對稱,不考慮值)
三面
- MVP 及 MVP 怎麼解決內存洩漏
- 項目架構
- 說一下 SharedPreferences
- 給一個數組,判斷是否存在一對相等的前綴和與後綴和
- 平時怎麼學習的
- 有什麼想學的新技術、學習計劃
HR面
- 對我們部門的印象怎麼樣
- 有沒有參加別的面試
- 如果阿里和美團都要你,你選哪個
- 家是哪兒的
- 瞭解阿里面試情況
- 實習時長、什麼時候來
- 瞭解騰訊面試情況
Java面經
第一章:java基礎
第二章:集合類Set
第三章:鎖volatile synchronized Lock ReentrantLock AQS CAS
第四章:java多線程
第五章:Java進階ssh/ssm框架
第六章: Java內存模型和垃圾回收
第七章:Juc包
設計模式
第七章:數據結構與算法
第八章:數據庫
第九章:網絡
這份文檔的內容很多,所以只為大家整理出來了目錄,獲取這份文檔後臺私信【學習】二字即可。
第十章:操作系統
第十一章:Linux命令
閱讀更多 java架構 的文章