主頁 > 軟體設計 > 30K入職騰訊,全靠這份606頁的Android面試指南

30K入職騰訊,全靠這份606頁的Android面試指南

2021-04-17 11:34:42 軟體設計

前言

光陰似箭,日月如梭,時間真的過得飛快, 加上實習,從事 Android 開發,差不多有 5 年了,在上家公司職務、薪酬感覺已經到達了天花板,沒有上升的余地,而且在這家公司過于安逸了,想換個有挑戰性的崗位,

通過朋友內推參加了騰訊面試,具體部門這邊就不說了,面試涉及到的范圍很廣,設計模式、優化、原始碼等等,還是具有一定挑戰性的,在面試前花了大概三個月的時間準備,在上班的空閑時間刷題,也不枉我準備了這么久啊,

下面分享一下面經:

一面

1.mmap + native 日志優化?

2.廣播和 EventBus 的區別?

3.常用設計模式你了解哪些?

4.跨行程通信有哪些?

5.簡單講講 binder 驅動吧?

6.跨行程傳遞大記憶體資料如何做?

7.說說 ConcurrentHashMap 的實作原理說下,初始化大小是多少?

8.啟動優化怎么優化?

9.你寫的 rxpay 和 rxlogin 具體怎么實作的?

10.kotlin + fullter 方面的

二面

1.單例設計模式都寫寫,靜態內部類是怎么保證執行緒安全的?

2.synchronized 底層實作原理,ReentrantLock 公平鎖與非公平鎖,

3.主執行緒等待所有執行緒執行完畢,再執行某個特定任務怎么實作?原理和原始碼看過沒?

4.自定義 view 的一般流程,要注意些什么如何優化,點擊事件和長按時間分別是怎么實作的?

5.四種啟動模式,在原始碼分析中的原理是怎樣的?

6.講講 bindService 的程序,你當初是怎么優化后臺服務行程的?

7.開發中你都用到了哪些設計模式?說說當時具體的場景,為什么你要用方法工廠,另外兩種呢?

三面

1.講講 handler 的底層實作原理?

2.說說你做的日志記錄優化?

3.你看過 binder 驅動的原始碼,說說他的記憶體映射程序,說說客戶端等待服務端處理回傳的流程,如果要跨行程傳遞大記憶體資料你具體會怎么做?簡單寫一寫吧,

4.在公司做過哪些優化?

5.程序中遇到的一些最難解決的問題?

6.提到了動態修復替換加載 so ,那你知道怎么修復 class 嗎?怎么修復資源呢?

7.還有什么要問的?

三面之后就是HR面了,沒有什么特別好說的東西,這里就省略了,

下面分享一份幫我內推的朋友給我的《Android面試指南》,包含了各個互聯網大廠的面試重點,

一、Android基礎+進階

1.Activity啟動模式
2.Activity的啟動程序
3.行程通訊
4.Android Binder之應用層總結與分析
5.行程保活方法
6.從原始碼了解handler looper ,messageQueue思路
7.handler如何實作延時發訊息postdelay()
8.Android中為什么主執行緒不會因為Looper.loop()里的死回圈卡死?
9.RxJava原理及如何封裝使用
10.okhttp原始碼分析
11.retrofit原始碼分析

12.LeakCanary核心原理原始碼淺析
13.LruCache 使用及原理
14.ARouter原理
15.注解框架實作原理
16.Android 如何撰寫基于編譯時注解的專案
17.RxJava2+Retrofit2+OkHttp3的基礎、封裝和專案中的使用
18.Rxjava2.0+Retrofit+Okhttp(封裝使用)+MVP框架搭建
19.Android 插件化和熱修復知識梳理
20.Android開發中比較常見的記憶體泄漏問題及解決辦法
21.如何檢測和定位Android記憶體泄漏
22.圖片占據的記憶體演算法
23.為什么圖片需要用軟參考,MVP模式中的view介面用弱參考
24.基于DataBinding與LiveData的MVVM實踐
25.App穩定性優化
26.App啟動速度優化
27.App記憶體優化
28.App繪制優化
29.App瘦身
30.網路優化
31.App電量優化
32.安卓的安全優化
33.為什么WebView加載會慢呢?
34.如何優化自定義View

二、Java基礎+進階

1.HashMap
2.ArrayList
3.LinkedList
4.Hashset原始碼分析
5.記憶體模型
6.垃圾回收演算法(JVM)
7.垃圾回識訓制和呼叫 System.gc()的區別?
8.類加載程序
9.反射
10.多執行緒和執行緒池
11.創建多執行緒方式、執行緒池作業原理
12.設計模式(六大基本原則、專案中常用的設計模式、手寫單例等)
13.斷點續傳
14.Java 四大參考
15.Java 的泛型
16.介面、抽象類的區別
17.從 java 容器類的設計討論抽象類和介面的應用

三、資料結構與演算法面試題

1.常用的資料結構有哪些?
2.陣列
(1).如何在一個1到100的整數陣列中找到丟失的數字
(2).如何在給定的整數陣列中找到重復的數字? (小米)
(3).如何在未排序整數陣列中找到最大值和最小值?(位元組跳動)
(4).在Java中如何從給定陣列中洗掉多重復制?
(5).大數相加(今日頭條)

3.鏈表
(1).那查詢第一個跟倒數第二個呢?(這就不一樣了,第一個直接給了頭結點,倒數第二個需要從倒數第一個開始查詢,走兩步) (騰訊)
(2).arrayList底層原理 (滴滴)
(3).如何在一次遍歷中找到單個鏈表的中值?(中國平安)
(4).如何證明給定的鏈表是否包含回圈?如何找到回圈的頭節點?(優酷)
(5).兩個有交叉的單鏈表,求交叉點 (華為)
(6).如何得到單鏈表的長度?(360)
(7).如何在不使用遞回的情況下逆轉單鏈表?(小米/美團)
(8).怎么判斷鏈表有環? (滴滴)

4.佇列&堆疊
(1).如何使用堆疊實作佇列的功能(廣州荔枝FM)
(2).兩個堆疊實作一個佇列(蘑菇街)
(3).兩個佇列實作一個堆疊 (騰訊)
(4).對比一下佇列和堆疊,以及它們底部實作 (騰訊)

5.二叉樹
(1).如何在給定的二叉樹中執行先序遍歷?(百度)
(2).如何實作后序遍歷演算法?(百度)
(3).如何在給定陣列中執行二分法搜索?(蘇寧)
(4).已知前序遍歷為{1,2,4,7,3,5,6,8},中序遍歷為{4,7,2,1,5,3,8,6},它的二叉樹是怎么樣的?
(5).輸入兩棵二叉樹 A 和 B,判斷 B 是不是 A 的子結構, (愛奇藝)
(6).請實作兩個函式,分別用來序列化二叉樹和反序列化二叉樹(YY)
(7).平衡二叉樹和紅黑樹的區別?(位元組跳動)
(8).什么是平衡二叉樹,它有什么特征 (美團)
(9).B 樹,B+樹

6.HashMap
(1).HashMap的底層原理是什么?執行緒安全么? (百度)
(2).HashMap中put是如何實作的? (滴滴)
(3).談一下hashMap中什么時候需要進行擴容,擴容resize()又是如何實作的?
(4).什么是哈希碰撞?怎么解決? (滴滴)
(5).HashMap和HashTable的區別 (小米)
(6).HashMap中什么時候需要進行擴容,擴容resize()是如何實作的? (滴滴)
(7).hashmap concurrenthashmap原理 (美團)
(8).arraylist和hashmap的區別,為什么取數快?(位元組跳動)

7.圖
(1).旋轉輸出矩陣
(2).給定一個矩陣 int matrixA[m][n],每行每列都是增序的,實作一個演算法去尋找矩陣中的某個元素 element. 搜狗

8.排序演算法有哪些?
9.查找演算法
10.串

四、計算機網路部分

1.HTTP協議
2.TCP/IP協議
3.TCP的三次握手與四次揮手理解及面試題
4.網頁中輸入url,到渲染整個界面的整個程序,以及中間用了什么協議?
5.TCP和UDP的區別?
6.HTTP的幾種請求方法具體介紹
7.HTTP請求和回應報文的格式,以及常用狀態碼
8.一個 TCP 連接上面能發多少個 HTTP 請求

由于篇幅限制,展示了部分內容截圖,需要這些檔案資料的,可以點贊支持一下我,然后【點擊這里】免費閱讀下載,

面試準備建議

1.基本資訊

  • 簡歷不要太花哨, 你是應聘的技術, 不是設計師
  • 簡歷把一些基本資訊要說清楚(無關的不要寫, 比如頭像之類的)
  • 有個人博客, 跟 GitHub 的寫上, 若沒有內容那就算了,因為你寫了,面試官勢必會滿懷期待地點進去看,如果這個時候呈現給他的卻是空白頁或者寥寥幾行內容的話,這種一落千丈的感受會給面試官留下非常不好的印象
  • 應屆畢業生需寫上相關證書之類, 有經驗的可不寫
  • 簡歷控制在兩頁 A4 紙

2.專案經驗

  • 一般寫 2, 3個代表性的專案就好,優先寫本職作業相關的
  • 時間為倒序
  • 說明你在專案當中的職責作用
  • 專案模塊需要了解大概邏輯與思路,以及一些關鍵的技術點,以防面試官問到
  • 沒有專案經驗的也要模仿一兩個小 Demo

3.須知

  • 自己親自做的東西一定要明白, 如果不是自己親自做的, 請慎重騙面試官
  • 問的時候會問一些知識點相關的話題,比如你的資料是需要 api 互動的,那可能會問 http 相關, json 資料決議相關,快取相關,圖片加載相關等
  • 對用到的知識點雖用不著一定要看原始碼的地步,但是最好要懂原理,比如圖片加載一定要知道二級快取,一些常見的快取演算法

4.注意事項

  • 去面試前一定要花點時間了解下你面試的這家公司(本身有自己產品的下載體驗一下,以防面試程序中問到,或者可以給產品提點意見)
  • 面試的時候態度要謙虛點
  • 學習能力很重要(一定要讓面試官感受到你是一個好學的人)
  • 個人興趣(不要提什么打游戲, 唱歌之類的, 可以說一下業余時間提下自己經常上一些技術社區,看一些技術博客之類的)
  • 除了基本的知識點, 面試官通常都會問一些比較深的領域(可能你沒有接觸過,但不要氣餒, 面試官在考察下你的技術的深度, 這些領域一般包括設計模式, 虛擬機, 插件化, React Native之類的)

5.面試前一定要多刷刷面試題

面試前多刷面試題,是對面試最起碼的尊重,

雖然我在這里不提倡大家臨時抱佛腳,但是適當地抱一抱佛腳也比那些什么都不準備,就直接裸面的人要好很多,至少你的態度是端正的,

你來面試也是需要花費面試官時間的,簡單準備一下不香嘛?萬一你運氣好,恰好這家公司職位擴充,降低面試要求了呢?你這么隨便,豈不是把白花花的機會全都給浪費掉了嘛!

最后

如果你想去一家不錯的公司,但是目前的硬實力又不到,我覺得還是有必要去努力一下的,技術能力的高低能決定你走多遠,平臺的高低,能決定你的高度,

如果你通過努力成功進入到了心儀的公司,一定不要懈怠放松,職場成長和新技術學習一樣,不進則退,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/277080.html

標籤:其他

上一篇:【Java從入門到天黑|01】SE入門之Java的前生今世

下一篇:Ajax的基礎原理和簡單封裝

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more