主頁 > 軟體設計 > 低學歷沒飯吃?一個老Android的心酸面試歷程,同是六年菜鳥偏偏我最難熬

低學歷沒飯吃?一個老Android的心酸面試歷程,同是六年菜鳥偏偏我最難熬

2021-04-03 14:28:05 軟體設計

前言

因為公司要搬離上海,所以只能出來找作業了,這段時間被虐的夠慘的,一個學歷就被搞死了,同事作業經驗跟我差不多,都是6年的老菜鳥,本科,投了10家面了兩家,我投了幾十家暫時才面了3家,差距,誰在跟我說學歷不是問題,我一磚頭拍不死他丫的,廢話不多說了,總結了一下:

第一家:A公司 100~500人左右

筆試題:

  1. broadcast 的兩種注冊方式,兩者的區別?LocalBroadcast是什么,實作原理是什么?

  2. Handler Looper Message MessageQueue的原理

  3. 事件傳遞機制 筆試的話就把網上的那個經典的圖畫上去就好了,如果不知道的話,自己百度一下好了

  4. 手寫快速排序 偽代碼實作就好了

  5. 性能優化(先考慮,面試的時候問的)

面試題:

  1. 自我介紹,我一般都是講講最近一個專案做的內容,講講為什么這么做,

  2. OkHttp的原理,UrlConnection和OkHttp之間的關系

  3. LruCache內部實作

  4. Retrofit的實作,為什么要用動態代理來處理

  5. 講了一下公司專案里面涉及到錄屏的功能,大致講了一下幀率的控制和音視頻的同步問題 (從后面的面試看來,這個一般不會怎么問,畢竟Android搞音視頻的還不多)

  6. 組件化,公司專案里組件化,所以就講了一下如何組件化重構代碼,怎么做組件之間通訊的

  7. 插件化原理,公司專案里沒怎么用到過,就簡單的描述了一下dexclassloader和利用反射機制拿到AssestManager去加載apk中的資源

  8. 約束布局的用法,以及約束布局的內部實作(這個真心不知道,GG了)

  9. 滑動沖突的解決辦法(內部攔截和外部攔截)

  10. MediaCodec的版本兼容問題

  11. Android 8.0版本兼容問題(沒仔細考慮過,GG了)

  12. 專案里面的IM是怎么實作的,我們當時用的是MQTT的一個開源jar包實作的,他也沒細問,估計不是他想要的答案吧

  13. 怎么做記憶體泄漏檢測和滑動卡頓檢測的

  14. touch事件的傳遞機制又問了一遍(我后面面試的公司都問了這個東西,很重要,要徹底吃透他,最好自己寫個demo,不同的回傳值,看看效果)

最后的結果就是GG了,我也不知道為什么....

第二家:B公司 幾個人

沒問技術,就問了一下專案和期望薪資,然后說后面再約技術面,估計嫌棄工資開高了,

第三家:C公司 100~500人左右

筆試題

(3頁紙的面試題,手都寫廢了,奇怪的很,為什么Android現在都需要筆試題了....)

  1. Java的四大參考

  2. Java中的泛型理解

  3. Android為什么用Bundle來傳遞資料而不用簡單的Map

  4. 什么是ANR?如何避免ANR?

  5. 轉屏是如何保存Activity的狀態?

  6. 什么是記憶體泄漏?什么是記憶體溢位?有什么區別?如何避免它們?

  7. Java中有哪些設計模式?代碼手寫一個設計模式的實作.

  8. launchMode

  9. View的繪制流程(重點)

  10. 事件分發機制(重點)

  11. 三級快取原理

  12. 行程的保活

  13. 如何用intent傳遞一張圖片

  14. 還有幾個改錯題,基本上都是開發中會遇到的,

一面:

  1. 事件傳遞

  2. view繪制

  3. 行程保活

  4. AIDL,Messenger 等等,跟筆試題都差不多,聊聊專案,專案上問的都是跟上家公司差不多

二面:

  1. View的繪制

  2. 事件傳遞,這個問的比較活,A控制元件消費事件以后,后續的事件怎么傳遞的,滑動沖突的解決方案, 套嵌滑動的NestedScrolling相關的東西,Behavior(這一塊問的太多了,直接拿個效果出來,讓你講講實作的思路什么的,到最后整個人都蒙了)

  3. 問了一下dex檔案格式,Android Runtime里面的classlinker相關的,以前有沒有做過逆向,怎么玩脫殼的

HR面:聊專案,聊有成就感的專案,聊管理,聊團隊溝通的問題

目前為止還沒訊息,十有八九是GG了

面試總結一下

總結一下吧主要涉及的幾塊內容就是:

  1. 四大組件
  2. handler
  3. View的繪制
  4. 事件分發機制
  5. 滑動沖突
  6. 滑動套嵌
  7. 行程保活
  8. 性能優化

面試注意事項

前期準備和知識點

一般外地的面試,前幾輪都會選擇電話面試的方式,所以大家約好時間后,請記得到時候一定要騰出時間,找個安靜的地方,放松心情專心接面試的電話,耐心的聽完面試官的問題,快速仔細的分析題目想考的知識點,再結合自己的理解回答面試官的問題,

在面試前,需要給自己定制一個學習計劃,一些基礎的必問的知識點需要牢牢的記住,

面試的具體思路

一般面試官都會讓你先來個自我介紹,可以介紹下自己的學習經歷和作業經歷,在專案中擔任的角色和從事的作業,然后會側重點讓你講一個你的代表作和用到的技術,然后根據你講的技術對你深挖,也會問到你專案中碰到的難題和問題是如何解決的,這個就是考驗你解決問題的能力,最好可以提前準備好一兩個經典的案例到時候好有的講,

其次就是溝通程序中不要太緊張,盡量讓自己充分的思考,把自己所會的和能聯想到的用較好的表達方式告訴面試官,讓面試官可以走進你的思考方式中,一個擁有好的溝通和表達的程式員會更加受到面試官的喜愛,

面試復習路線

接下來分享的系統學習資源以詳解各大互聯網公司的 Android 常見面試題為主線,從面試的角度帶你介紹必備知識點,以及該知識點在專案中的實際應用

幫你在現在的基礎上,重新梳理和建立 Android 開發的知識體系,無論是你短期內想提升 Android 內功實力,突破自己作業中的能力瓶頸,還是準備參加 Android 面試,都會在這份資料中有所一些識訓,

從架構基礎開始,分了8個模塊來逐步從基礎進階到架構師的環節:

多余的話就不講了,接下來將分享面試的一個復習路線,如果你也在準備面試但是不知道怎么高效復習,可以參考一下我的復習路線,有任何問題也歡迎一起互相交流,加油吧!

架構師筑基語言基礎

目前Android APP開發主流語言就是Java語言,Java語言最大的特性就是提高了軟體的互動可能性,可以說安卓手機幾乎所有應用程式都是利用Java語言來進行撰寫的,

知識要點:
1、深入理解Java泛型
2、注解深入淺出
3、并發編程
4、資料傳輸與序列化
5、Java虛擬機原理
6、高效IO

設計思想解讀開源框架

隨著互聯網企業的不斷發展,產品專案中的模塊越來越多,用戶體驗要求也越來越高,想實作小步快跑、快速迭代的目的越來越難,插件化技術應用而生,如果沒有插件化技術,美團、淘寶這些集成了大量“app”的應用,可能會有幾個g那么大,

所以,當今的Android移動開發,不會熱修復、插件化、組件化,80%以上的面試都過不了,

知識要點:
1、熱修復設計
2、插件化框架設計
3、組件化框架設計
4、圖片加載框架
5、網路訪問框架設計
6、RXJava回應式編程框架設計

360°全方位性能調優

在不同層次的開發工程師手里,因為技術水平的參差不齊,即使很多手機在跑分軟體性能非常高,打開應用依然存在卡頓現象,

另外,隨著產品內容迭代,功能越來越復雜,UI頁面也越來越豐富,也成為流暢運行的一種阻礙,綜上所述,對APP進行性能優化已成為開發者該有的一種綜合素質,也是開發者能夠完成高質量應用程式作品的保證,

知識要點:
1、設計思想與代碼質量優化
2、程式性能優化
啟動速度與執行效率優化
布局檢測與優化
記憶體優化
耗電優化
網路傳輸與資料儲存優化
APK大小優化

3、開發效率優化
分布式版本控制系統Git
自動化構建系統Gradle

4、專案實戰
啟動速度
流暢度
抖音在APK包大小資源優化的實踐
優酷回應式布局技術全決議
網路優化
手機淘寶雙十一性能優化專案揭秘
高德APP全鏈路原始碼依賴分析
徹底干掉OOM的實戰經驗分享
微信Android終端記憶體優化實踐

Android框架體系架構

Android框架體系架構(高級UI+FrameWork原始碼) 這塊知識是現今使用者最多的,我們稱之Android2013~2016年的技術,

Android開發者也往往因為網上Copy代碼習慣了而導致對這塊經常“使用”的代碼熟悉而又陌生:熟悉的是幾乎天天在和它們打交道, 天天在復制這些代碼 ;陌生的是雖然天天和這些代碼打交道,但是并沒有深入研究過這些代碼的原理,代碼深處的內涵,

知識要點:
1、高級UI晉升
2、Android內核組件
3、大型專案必備IPC
4、資料持久與序列化
5、Framework內核決議**

NDK模塊開發(音視頻開發系列)

NDK(Native Development Kit縮寫)一種基于原生程式介面的軟體開發工具包,可以讓您在 Android 應用中利用 C 和 C++ 代碼的工具,通過此工具開發的程式直接在本地運行,而不是虛擬機,

在Android中,NDK是一系列工具的集合,主要用于擴展Android SDK,NDK提供了一系列的工具可以幫助開發者快速的開發C或C++的動態庫,并能自動將so和Java應用一起打包成apk,

知識要點:
1、NDK開發之C/C++入門
2、JNI模塊開發
3、Linux編程
4、底層圖片處理
5、音視頻開發
6、機器學習

Flutter學習進階

2020 年無疑是 Flutter 技術如火如荼發展的一年,現在這門技術也依然非常有價值,

每一個移動開發者都在為 Flutter 帶來的“快速開發、富有表現力和靈活的 UI、原生性能”的特色和理念而癡狂,從超級 App 到獨立應用,從純 Flutter 到混合堆疊,開發者們在不同的場景下樂此不疲的探索和應用著 Flutter 技術,也在面臨著各種各樣不同的挑戰,

知識要點:
1、Flutter跨平臺開發概述
2、Windows中Flutter開發環境搭建
3、撰寫你的第一個Flutter APP
4、Flutter Dart語言系統入門**
……

微信小程式開發

微信小程式作為現在比較火的編程開發應用場景之一,深受市場的青睞,這讓不少開發者眼饞不已,但是對于初學者來說,就完全摸不著頭腦了,不知道微信小程式開發制作需要學習那些知識,有需要的朋友可以參考本篇,

本篇知識要點:
1、小程式概述及入門
2、小程式UI開發
3、API操作
4、購物商場專案實戰

Android相關原始碼解讀

“編程語言是程式員的表達的方式,而架構是程式員對世界的認知”,所以,程式員要想快速認知并學習架構,讀原始碼是必不可少的,閱讀原始碼,是解決問題 + 理解事物,更重要的:看到原始碼背后的想法;程式員說:讀萬行原始碼,行萬種實踐,

主要內含微信 MMKV 原始碼、AsyncTask 原始碼、Volley 原始碼、Retrofit原始碼、OkHttp 原始碼等等,

Android BAT高級開發面試題及答案決議

面試前夕,刷題沖刺

面試的前一周時間內,就可以開始刷題沖刺了,請記住,刷題的時候,技術的優先,演算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎么會問,

關于面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:

以上內容均免費分享給大家,需要完整版的朋友,點這里可以看到全部內容,或者點擊 【這里】 查看獲取方式,

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

標籤:其他

上一篇:看不懂!這份‘阿里內部必讀Redis實戰筆記’憑什么能讓你月薪漲3k?

下一篇:普歌-逆越團隊:Java面向物件知識點【封裝、繼承、多型、抽象】

標籤雲
其他(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