3年 Android 開發的面試心經(后悔當初沒有拿 N+1)

作者:勇闖天涯

當某人順利通過大廠面試時,總會有人認為這是運氣比較好罷了,但他們不曾得知對方之前受過多少苦和委屈,又付出了多少努力一步步去突破這些困境。正是因為他們的努力付出,在合適的時間與地點,用自己付出的成果牢牢找抓了自己的機遇。遇到機遇這可以說是運氣,能不能抓住這還得看你自己的實力。

廢話不多說了,直接來說說我最近的面試經歷吧。我投簡歷的公司有很多,基本都收到了面試通知的邀請,其中有讓我心血沸騰的簡歷,也有讓我感到失望到無助的經歷,于是我將這些經歷都記錄下來了,細想之后很值得,面試了這么多家公司,要是到最后什么都沒有留下來,那就白白浪費了這么多的時間。至少對我來說將一些好的經歷與差的經歷進行整理總結,最后肯定能等到我想要的答案。希望這些能給想換工作的大家提供幫助。

離職原因

公司裁員的時候我們老大對我說:你留下來好好干,后面不管公司怎么分股份、期權、肯定不會少你。當時我很信任老大,跟著老大一起干感覺就是一種享受。

但是沒有想到公司裁員后,公司內部動蕩很大,主業務線從客戶端A業務線轉移到B業務上。我主要負責的是A客戶端的架構,于是我閑下來了。B業務線那邊很忙,沒時間配合我做一些架構上的事情。于是我每天就在腦補的查看各種學習文檔,補充知識點能量。

做了幾天后,后悔自己當時沒有那 N+1 走人,有種被老大忽悠的感覺。因為后面發生的是我就暫且不講了。只怪本人經歷尚淺,看不清一些大的趨勢,還是老鳥們聰明,拿錢走人,然后換一個新工作,好不自在啊

沒過多久我就離職,開啟了我的面試之旅~

面試分級

我在家休息了一周左右的時間,給自己簡單的放松了一下。休息完后就開始了投遞簡歷(世界那么大,我想去看看)。這次看機會與以往不同,我決定先想好好的準備一番,然后開始投遞簡歷,主要通過的是朋友內推,Boss直聘。

這次看機會我將所有公司分為三類:

1.A類: BAT公司,非常靠譜,各項待遇都是很優厚的
2.B類:一些知名的互聯網公司(基本都在C輪以上),基本很靠譜,該有的都少不了
3.C類:就是那些正在招聘的公司,沒啥名氣,雖然錢多但是事也多。靠不靠譜真還不知道,只能碰運氣

基礎很重要

以前自己一直覺得從事 Android 開發工作都好幾年了,去面試基礎問題應該沒什么問題。正式因為自己傲嬌的自信,導致自己總是碰壁,尤其是遇到很多基礎性的提問,一時尷尬的不知道怎么回答?還有一種情況就是,一些問題面試前都記得很準確,但到我回答的時候,卻怎么也打不上了。

于是在這次面試前,我在網上收集整理了一些 Android 開發相關的學習文檔、面試題等進行了復習學習。還把自己之前做過的一些項目中遇到的問題進行了回顧,并找到了相應的解決方案。心想這次應該沒有那么尷尬的碰壁了吧。

為了方便以后能夠利用空余時間進行查閱翻閱復習,我特此整理在該筆錄里面了,如有需要參考的可以直接去我 https://qr18.cn/CgxrRy 訪問查閱

剛踏入架構師之路的經歷

這次我給自己的規劃是做一個架構師,但是我深知架構師可不是鬧著玩的,必須要有很強的一面,因此我在簡歷里面寫的只是“架構師方向”。我在K公司 做得是架構師方向,因此我覺得有必要朝著這個方向發力,雖然現在不是很厲害,但是堅持一兩年后,即使不是非常厲害,但是也距離非常厲害很近(這里使用了《孫子兵法》的一句:“求其上,得其中;求其中,得其下,求其下,必敗。” )。

這個想法來源于在K 公司我第一任leader曾經跟我說過的話:『對于新東西,如果你覺得掌握了,但是不應用到項目里面來,是沒有什么意義的,時間長了還是會忘記的。』我很慶幸我有一個好老大(我是屬于雙領導型的,K 公司 A項目的負責人是我的leader,但是我的直接匯報對象是 K 公司的副技術總監,下文就成為老大),用他的話來說就是經常踢著我的屁股走。

當我在網上了解到很多實用的新技術時,跟他隨意吐露一句話,他就能非常用心的傾聽我的想法,并鼓勵我將這些東西帶入到項目中來。從那以后我就開始看很多新技術,感覺合適的會引進到我們的項目中。從之后的證明中來看,是非常有價值的。

面試經歷

A公司一面

  1. 自定義view
  2. Handler機制
  3. 組件化和插件化
  4. HashMap的源碼
  5. retrofit和okhttp的源碼用到了哪些設計模式
  6. NDK靜態庫和動態庫編譯流程
  7. openGL渲染模式
  8. Android中的動畫有哪些它們之間的區別
  9. 談談mvvm

A公司二面

  1. 講之前做的項目負責哪塊,根據業務采用什么架構
  2. 使用過哪些設計模式,項目中遇到哪些棘手的問題,如何解決的。

A公司三面

這個是hr說,整體問下以前公司的情況等問題

感受:自己簡歷上寫的東西要熟悉,基本面試官都是根據簡歷來問的。對自己以前做的項目也好好梳理,提前組織好語言,挖掘項目閃光點。

B公司一面

  1. java引用,以及引用隊列,以及使用場景
  2. 拆裝箱
  3. LeakCanary
  4. map
  5. 線上性能監控
  6. SharedPrefrence 遇到的問題
  7. 手寫算法

B公司二面

  1. Handler
  2. 進程間通信
  3. 序列化
  4. 動畫
  5. native崩潰捕獲原理
  6. 結合項目提問
  7. Recyclerview的點擊事件原理
  8. 啟動一個空的apk,回啟動幾個線程
  9. 手寫算法

B公司三面

  1. 跳槽原因
  2. 原來公司規模
  3. 預期薪資
  4. 個人優勢

感受
1.簡歷上寫的一定要了解,并且知道原理
2.多熟悉項目,找出一些能聊得功能點
3.崩潰捕獲,以及解決(java ,native)
4.優化需要知道(大廠都會問)
5.了解由點到面,需要把知識連貫起來
6.還有如果想要高薪,一定要多跳槽,一般大廠工資漲幅都是有限度的,最高漲幅百分之30,除非你特別牛皮

C公司一面

  1. MediaCodec連環炮:MediaCodec報錯,只有錯誤碼,沒有任何其它信息,如何解決?使用MediaCodec遇到了哪些問題?同步使用和異步使用有什么區別?
  2. 如何計算音頻幀,一幀音頻幀有多大
  3. YUV基礎知識,相比于RGB減少了多少空間,YUV 各個分量都是0實際渲染出來是什么顏色的,NV21和NV12有什么區別
  4. MP4是如何存儲音視頻文件的,它是什么結構
  5. OpenSL 相關的問題,如何使用。可以干什么不可以干什么
  6. 結合項目問題

C公司二面

1.SurfaceView和TextureView區別
2.OpenGL ES相關問題,MVP矩陣左乘和右乘有什么區別,什么是外部紋理,為什么叫外部
3.OpenGL如何渲染一個View
4.VBO是用來干嘛的解決什么問題
5.結合項目問問題

C公司三面

1.項目是什么架構,如何設計的,為什么這么設計
2.算法題:字符串反轉
3.平時如何學習的

感受:音視頻開發感覺OpenGL ES問的比較多

D公司一面

1.問的項目中哪些用到了hook技術,是怎么實現的
2.Okhttp底層原理
3.點擊應用圖標的啟動流程
4.hashmap在java7和java8的區別,為什么要引入紅黑樹

D公司二面

1.項目是怎么搭建的,用到了哪些技術點
2.arouter用到了什么技術點,是用來解決什么問題
3.socket底層原理
4.一個功能是如何從分析需求到落地的
5.如何帶領團隊的

感受:主要簡歷要寫的好,盡量圍繞簡歷上的點來刷面試題,不一定都要研究透徹,被問到自己不熟的點,可以盡量嘗試著往自己熟悉點帶,例如之前我被問到pms是怎么管理package信息的,我就說目前我對pms了解不深,主要也是研究了ams,然后就把自己了解的說一下就好了。

總結

先說再投簡歷前,首先要對自己的簡歷進行優化,簡歷中填寫的一些項目經歷要熟悉。還有就是在面試前期要復習好基礎知識點,不要像文章前面說的,等到被提問是自己回答不上來,那就真的尷尬了!!!

最后跟大家分享一下我這面試前期進行收集整理復習的一些 Android 開發相關的學習文檔、面試題、Android 核心筆記等等文檔,希望能幫助到大家學習提升,為了方便以后能夠利用空余時間進行查閱翻閱復習,我特此整理在該筆錄里面了,如有需要參考的可以直接去我 https://qr18.cn/CgxrRy 訪問查閱

祝想找工作換工作的小伙伴們都能去自己心儀的公司,前程似錦!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40996.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40996.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SSH連接工具匯總

xshell 這是個熟悉的軟件啦,目前我正在使用Xshell_7 鏈接:https://www.xshell.com/zh/xshell/ FinalShell 國產軟件,有windows和MAC版本;使用方便而且免費,但是軟件比較占用內存。但是都2021年了,筆記本…

AlphaZero能否從圍棋和國際象棋飛躍到量子計算?

一項新的研究表明,DeepMind驚人的游戲算法AlphaZero可以幫助釋放量子計算的力量和潛力。 自兩年多前出現以來,AlphaZero一再證明了其快速學習能力,將自己提升到圍棋,國際象棋和將棋(日本象棋)的特級大師級別…

VHDL記錄

文章目錄 使用function名稱作為“常量”numeric_std包集中使用乘法的注意項variable的使用對于entity設置屬性的方法在entity聲明中嵌入function的定義VHDL仿真讀寫文件File declaration/File handingFile readingFile writing小例子 使用函數 模塊中打印出調試信息 使用functi…

RTC實驗

一、RTC簡介 RTC(Real Time Clock)即實時時鐘,它是一個可以為系統提供精確的時間基準的元器件,RTC一般采用精度較高的晶振作為時鐘源,有些RTC為了在主電源掉電時還可以工作,需要外加電池供電BCD碼,四位二進制表示一位…

Java Persistence APl(JPA)——JPA是啥? SpringBoot整合JPA JPA的增刪改查 條件模糊查詢 多對一查詢

目錄 引出Jpa是啥?Jpa的使用創建實體類寫dao接口類寫服務類 crud增刪改查增加修改根據id刪除全查詢分頁查詢 條件查詢模糊查詢單條件查詢多條件查詢模糊查詢排序查詢 多對一查詢定義實體類auto主鍵策略下新增進行全查詢測試 全部代碼application.yml配置類pom配置文…

Java反射機制是什么?

Java反射機制是 Java 語言的一個重要特性。 在學習 Java 反射機制前,大家應該先了解兩個概念,編譯期和運行期。 編譯期是指把源碼交給編譯器編譯成計算機可以執行的文件的過程。在 Java 中也就是把 Java 代碼編成 class 文件的過程。編譯期只是做了一些…

Python學習筆記第五十二天(Pandas 安裝)

Python學習筆記第五十二天 Pandas 安裝查看安裝版本 安裝驗證后記 Pandas 安裝 安裝 pandas 需要基礎環境是 Python,開始前我們假定你已經安裝了 Python 和 Pip。 使用 pip 安裝 pandas: pip install pandas安裝成功后,我們就可以導入 pandas 包使用&…

iPhone(iPad)安裝deb文件

最簡單的方法就是把deb相關的文件拖入手機對應的目錄,一般是DynamicLibraries文件夾 參考:探討手機越獄和安裝deb文件的幾種方式研究 1、在 Mac 上安裝 dpkg 命令 打包 deb 教程之在 Mac 上安裝 dpkg 命令_xcode打包root權限deb_qq_34810996的博客-CS…

神經網絡基礎-神經網絡補充概念-26-前向和反向傳播

簡單比較 前向傳播(Forward Propagation): 前向傳播是神經網絡中的正向計算過程,用于從輸入數據開始,逐層計算每個神經元的輸出值,直到得到最終的預測值。在前向傳播過程中,我們按以下步驟進行…

驅動DAY4 字符設備驅動分步注冊和ioctl函數點亮LED燈

頭文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #define PHY_LED2_ADDR 0X50007000 #d…

一百五十八、Kettle——Kettle各版本及其相關安裝包分享(網盤鏈接,不需積分、不需驗證碼) 持續更新、持續分享

一、目的 最近因為kettle9.3的shim問題看了好多博客,都沒有網盤分享。后來有一位博主分享了kettle9.2的shim安裝包,已經很感謝他,但是是博客分享,下載還需要搞驗證碼下載碼之類的。 kettle9.2的shim安裝包下載好后,一…

圖數據庫_Neo4j基于docker服務版安裝_Neo4j Desktop桌面版安裝---Neo4j圖數據庫工作筆記0004

然后我們來看看如何用docker來安裝Neo4j community server 首先去執行docker pull neo4j:3.5.22-community 去拉取鏡像 然后執行命令就可以安裝了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下訪問一下這個時候,要用IP地址了注意 然后再來看一下安裝Desktop 去下…

Sigmastar SSC8826Q 2K行車記錄儀解決方案

一、方案描述 行車記錄儀是智能輔助汽車駕駛,和管理行車生活的車聯網智能終端設備,利用智能芯片處理器、GPS定位、網絡通信、自動控制等技術,將與行車生活有關的各項數據有機地結合在一起。 行車記錄儀如今已經成了必不可少的車載用品之一&…

雙向-->帶頭-->循環鏈表

目錄 一、雙向帶頭循環鏈表概述 1.什么是雙向帶頭循環鏈表 2.雙向帶頭循環鏈表的優勢 3.雙向帶頭循環鏈表簡圖 二、雙向帶頭循環鏈表的增刪查改圖解及代碼實現 1.雙向帶頭循環鏈表的頭插 2.雙向帶頭循環鏈表的尾插 3.雙向帶頭循環鏈表的頭刪 4.雙向帶頭循環鏈表的尾刪…

ATF(TF-A) 威脅模型匯總

安全之安全(security)博客目錄導讀 目錄計劃如下,相關內容補充中,待完成后進行超鏈接,敬請期待,歡迎您的關注 1、通用威脅模型 2、SPMC威脅模型 3、EL3 SPMC威脅模型 4、fvp_r 平臺威脅模型 5、RSS-AP接口威脅模型 威脅建模是安全…

淺學實戰:探索PySpark實踐,解鎖大數據魔法!

文章目錄 Spark和PySpark概述1.1 Spark簡介1.2 PySpark簡介 二 基礎準備2.1 PySpark庫的安裝2.2 構建SparkContext對象2.3 SparkContext和SparkSession2.4 構建SparkSession對象2.5 PySpark的編程模型 三 數據輸入3.1 RDD對象3.2 Python數據容器轉RDD對象3.3 讀取文件轉RDD對象…

IDEA的常用設置,讓你更快速的編程

一、前言 在使用JetBrains的IntelliJ IDEA進行軟件開發時,了解和正確配置一些常用設置是非常重要的。IDEA的強大功能和定制性使得開發過程更加高效和舒適。 在本文中,我們將介紹一些常用的IDEA設置,幫助您更好地利用IDEA進行開發。這些設置包…

Java面向對象——封裝以及this關鍵字

封 裝 封裝是面向對象編程(OOP)的三大特性之一,它將數據和操作數據的方法組合在一個單元內部,并對外部隱藏其具體實現細節。在Java中,封裝是通過類的訪問控制修飾符(如 private、protected、public&#x…

Linux MQTT智能家居項目(智能家居界面布局)

文章目錄 前言一、創建工程項目二、界面布局準備工作三、正式界面布局總結 前言 一、創建工程項目 1.選擇工程名稱和項目保存路徑 2.選擇QWidget 3.添加保存圖片的資源文件: 在工程目錄下添加Icon文件夾保存圖片: 將文件放入目錄中: …

網絡層協議

網絡層協議 IP協議基本概念協議頭格式網段劃分特殊的IP地址IP地址的數量限制私有IP地址和公網IP地址路由IP協議頭格式后續 在復雜的網絡環境中確定一個合適的路徑 IP協議 承接上文,TCP協議并不會直接將數據傳遞給對方,而是交付給下一層協議,…