主頁 > 軟體設計 > 給公司面了一個10年經驗的Android開發,心態崩了

給公司面了一個10年經驗的Android開發,心態崩了

2021-04-03 14:00:36 軟體設計

部門最近專案很多,在擴招,面了不少android程式員,結果竟然沒有一個合適的,

偶然看到一份,10年作業經驗,做過各種Android開發,精通各種技術的簡歷,看著還比較合適,于是聯系過來面試了,

說實話,當人事把簡歷遞到我面前的時候,我稍稍的驚呆了一下,這個作業經歷比我長一倍的“大牛”,要知道面試他的是我這么個中級的開發,會不會鄙視我,以至于鄙視我們公司,我們公司只是一個普通的上市公司,跟一線互聯網公司相比還是差遠了,但是我還是很有公司榮譽感的一個人,

所以,我先給自己定了幾條:

  1. 不能問一些簡單的弱智白癡問題,必須要有深度,絕對不能讓“大牛”感到:“面試官的問題很Low!”的感覺,

  2. 盡量少說話,不然萬一問了“大牛”一個問題,“大牛”回答后,反問我一個,我回答不上來,那更糗,

  3. 還有幾個,當時想出來的,現在想不起來了,

面試程序:

: 簡述Handler訊息機制,

“大牛”: 嗯?

: 就是說一下Handler發送和接收訊息的實作,尤其是Message的訊息載體的作業流程,

“大牛”:這個,額,不太清楚,,,

:(趕緊換一個方向)Service和IntentService有什么區別?

“大牛”: Service和什么?

: IntentService,

“大牛”: 沒用過,,(他開始有點不好意思)

: (哦,沒事,這個可能確實太冷門了)那Service和Activity之間的通訊怎么實作?

“大牛”: 這個,通信,額,你指的是?

: 就是傳值,比如Service里面某個后臺任務結束,怎么通知當前活動Activity,并且把結果傳遞出去?

“大牛”: 哦,這個,啊,想想,,,沉默10s后,,,

: 額,比如用廣播的方式?(我都尷尬的主動給了他一點提示)

“大牛”: 哦,對,廣播,Broadcast之類的,

: 那還有其他方式嗎?

“大牛”:嗯,廣播,額,,,(又是10s后)比如?

: 介面回呼,,,(算了不糾結這個,他知道廣播,那順便問個這個),那Context 的sendBroadcast和LocalBroadcastManager 的sendBroadcast有什么區別?

“大牛”: 這個沒聽說過,,,,,,,

后面的問題,我從MVP、MVVM等流行結構框架問到多執行緒同步,然后再問點擊事件分發,到自定義View,再聊影片效果實作,基礎的ArrayList、HashMap底層實作,final static關鍵字用法,進階的設計模式里面單例模式和觀察者模式的實作,java類加載、記憶體分配,他沒有一個問題能確確定定的回答出來,要么“不知道”、“沒用過”,要不支支吾吾的說不出個123,

哦,對了,聊的程序中,他反復說自己用過什么什么第三方的庫顯得自己很能干,

我問他:有沒有開源過什么自己寫的庫? 他說沒有,那我問他:讀過ImageLoader的原始碼嗎?ImageLoader的本地快取機制是怎么實作的?他說不知道,我告訴他,你說的所有的庫,我都用過,并且絕大部分我都看過原始碼實作,另外,像ImageLoader、Pull2RefreshListView這種庫,我作業兩年后就自己實作過簡易的版本,還分別做過擴展,

最終最終我確定這個所謂的10年作業經驗的“大牛”,就是網上那種“一個經驗用了N年而不是有N年經驗”的人,

回過頭我又仔細看了看他的簡歷,10年程序中,這個人換了8家公司,最長的一家呆了不到2年,最短的半年就不干了,簡歷里也沒有自己獨立完成過的專案,簡歷上大部分所謂的Android專案,全部都是基礎控制元件的簡單羅列,沒用過設計模式,沒用過分層框架設計,跟我第一年參加作業寫出的東西一個鳥樣,

在這次面試后期又面試了幾個人,說實話都不盡如人意,這些面試者都有一個共同點:任何他們知道的知識點都是停留在知道、用過的層面,具體實作和怎么擴展優化都答不出來,

再想想這兩年都在說Android開發飽和,我感覺這個說法有欠缺,飽和的是這種初級安卓開發,會簡單的頁面實作,但程式可擴展性和維護性,欠缺考慮,框架結構設計缺失,(當然不是說代碼必須按照條條框框的寫,而是說在合適的地方用合適的方法,某個地方明明一個方法函式就能解決,后期沒有什么需要擴展的地方,那你非得按照JAVA面向物件思想,寫一個類物件,再用個設計模式一框,那就舍本求末了,

我感覺我現在依然徘徊在中級工程師級別,由于各種原因,比如家庭等等,我學習的時間也感覺比剛作業的時候少了好多,精力也差好多,一想到這些,就有種念頭:我可能永遠也達不到那種網上動輒能碼出10000 star開源庫的大牛,或者隨手寫個深入透徹的解惑答疑的技術博客就有N個評論和轉發的神人,所以我又有些動力,努力學習下去,這些人才應該成為自己的目標,

下面我從面試官角度來分析,在面試程序中的對候選人一些考查點吧,知己知彼百戰不殆,面試程序中逆向思考一波,有助于我們怎么應對技術面,

候選人人設是否跟簡歷一致

主要看候選人是否坦誠真實,這個會直接影響能不能通過,候選人上的專案經驗和技能點應該盡可能與候選人匹配,比如說,候選人說做了XX專案,但是問起是怎么實作的,卻答不上來,或者說熟悉xx技能點,卻只會呼叫常用的api,對其原始碼細節一點都不熟悉,那多半是不給過的,如果候選人要吹牛B,能拿出能圓上吹牛B的實力,也是可行的,比如說某某模塊其實是你同事做的,但是你也完全理解了,可以應答如流,面試官是不會計較的,

技術的扎實程度和專案經驗匹配程度

考查包括對技術的理解和解決問題的能力,包含一些細節,運用的場景,實作的原理等等,目的是為了測驗候選人技術水平上限,答得越清晰,越深入,對細節掌握越牢靠越好,不一定需要全部答出答完美才能拿到offer,但這些題回答的效果最能影響到offer能談多少錢,小廠偏重于技能、專案經驗匹配度,大廠偏重于基礎、原理,小公司,面試官通常希望候選人盡快上手,就希望候選人有類似競品或者功能開發經驗的候選人,所以也可以從這些方面做準備,大公司呢,可能會提出一些場景來考查候選人怎么設計,這就要求候選人功底深厚,邏輯嚴謹了,上面的題集我沒寫答案,因為我覺得很多題本就沒有標準答案,也沒有必要背題的“標準答案”,優秀的回答,應該是形成自己的理解輸出的,說的有理有據就行,

候選人亮點、優勢

一般是作為候選人的加分項,或者是面試官為了更快的打開話題,了解候選人的優勢,并測測候選人的優勢到底屌到什么程度,這個問題回答好了,候選人甚至能翻盤,

溝通能力

在一線搬磚過的應該都懂,每天正正經經寫代碼的時間通常不到一半,還得花不少時間跟產品撕,跟后臺撕,跟UI撕等等,所以溝通協調能力也是很重要的,候選人需要理解面試官出題意圖,表達要邏輯清晰,最好是候選人能跟面試官建立起討論技術的氛圍,這方面很容易被多數候選人忽略,但其實挺重要的,面試官也許不能直接決定要你,但是一般可以直接決定淘汰你,候選人要不卑不亢,保持謙遜,候選人技術再屌,態度傲慢的話,也是很容易翻車的,但也不能太慫,顯得沒有技術底氣,所以最好是和諧的討論氛圍,

學習能力,自驅性

一般總監或負責人會比較關注這個,

答會的問題

要聽明白面試官的出題意圖,也就是注意審題,不要答非所問,如果對面試官提出的問題不是很理解,及時進一步溝通,把問題問清楚,這也體現了溝通能力,畢竟平時作業時,也會接到一些不是很清晰的需求,自己主動獲取更清晰的需求也是程式員的優秀素質,

回答要盡量清晰準確,最好能答到問題的本質,展示出你對技術的更深層次的探索和挖掘,同時要注意面試官的反饋,這時候就要察言觀色了,

如果面試官聽的津津有味,并不斷追問加大問題難度,那么恭喜你,你回答的很好!

如果面試官表現得有點不耐煩,那就精簡下回答,畢竟面試時間有限,去掉那些啰嗦的話和題目關聯不大的東西,

如果發現面試官問的題越來越簡單,越來越常規表面,那么就得警惕下了,可能是你之前的回答太一般,讓面試官覺得你比較菜,所以就不給你出難題了,這種情況就算最后給到offer,多半價格也談上不去了,甚至還可能是為了給你個臺階下,然后讓你回家等遙遙無期的通知了,這種情況下就得把問題回答得更深入一些了,知道多少答多少,盡可能主動展現出自己的水平來,

答不會(不確信)的問題

首先要對這個問題有一定的思考分析,不要輕易的說不會,但也不能完全不會還瞎答,完全不會的還是要敢于說不會,坦誠也是必要的素質,

如何思考分析呢?以我的經驗來看,主要是從問題的關聯知識或者可替代方案的角度來思考,對問題不是很清楚了解的時候,嘗試從已知的相關聯的知識點來做出合理推測,比如從一些開源庫里面借鑒思路,或者從Android原始碼里面借鑒思路,但是這種情況就得跟面試官說清楚,你是推測的,還要說下為什么要這么推測,避免面試官誤以為你不懂裝懂,還有一種方式,就是你也提出一個可替代的能解決問題的方案,

總結

每個行業都有做得好的也有做得差的,只要不斷學習不斷進步,就能摘到別人摘不到的果實,

對于程式員來說,要學習的知識內容、技術有太多太多,很多人在剛接觸這個行業的時候或者是在遇到瓶頸期的時候,總會遇到一些問題,比如學了一段時間感覺沒有方向感,不知道該從哪里入手去學習,可以關注我,每天更新各種技術干貨,

至此,做為一名Android開發者,接下來我想分享一下這些年來,我對于技術一些歸納和總結,和自己對作為一名Android高級開發者需要掌握那些技能的筆記分享,希望能幫助到有心在技術這條道路上一路走到黑的朋友!

1.高級UI,自定義View

UI這塊知識是現今使用者最多的,當年火爆一時的Android入門培訓,學會這小塊知識就能隨便找到不錯的作業了,

不過很顯然現在遠遠不夠了,拒絕無休止的CV,親自去專案實戰,讀原始碼,研究原理吧!

2.NDK模塊開發

內容主要涉及以下幾個方面:

  • NDK 模塊開發
  • JNI 模塊
  • Native 開發工具
  • Linux 編程
  • 底層圖片處理
  • 音視頻開發
  • 機器學習

3.資料結構與演算法

為什么要研究資料結構?

這是因為所有的程式本質上是對資料進行處理,如何高效的處理資料,這依賴于資料本身的結構(如型別(整型、浮點型等)、維數、是否為復雜型別(結構體型別、型別別)等)以及資料之間的邏輯關系(線性、非線性等),

資料結構離不開演算法,設計好的資料結構就是為了讓演算法順利方便的實施,

4.Java進階與內核原理

內容主要涉及以下幾個方面:

  • HashMap
  • ArrayList
  • LinkedList
  • Hashset原始碼分析
  • 記憶體模型
  • 垃圾回收演算法( JVM )
  • 垃圾回識訓制和呼叫 System.gc()的區別
  • 類加載程序
  • 反射
  • 多執行緒和執行緒池
  • 設計模式
  • Java的泛型
    等等…

5.Flutter技術進階

本篇知識要點:

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


6.360度全方面性能調優

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

1、設計思想與代碼質量優化

2、程式性能優化

  • 啟動速度與執行效率優化
  • 布局檢測與優化
  • 記憶體優化
  • 耗電優化
  • 網路傳輸與資料儲存優化
  • APK大小優化

3、開發效率優化

  • 分布式版本控制系統Git
  • 自動化構建系統Gradle

4、專案實戰

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

7.Framework精編內核決議

主要內容包含:

  • 深入決議Binder
  • 深入決議Handler
  • Dalvik VM 行程系統
  • 深入決議 WMS
  • PackagerManagerService

8.Jetpack架構組件從入門到精通

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架構組件之Lifecycle
  • Android Jetpack Compose 最全上手指南

9.2020大廠面試高頻知識點

一、圖片
二、網路和安全機制
三、資料庫
四、插件化、模塊化、組件化、熱修復、增量更新、Gradle
五、架構設計和設計模式
六、性能優化
七、Android Framework
八、Android優秀三方庫原始碼


由于篇幅原因,以上完整版資料PDF如有需要,可以 點贊+評論 支持下我,然后【點擊這里】免費閱讀下載,

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

標籤:其他

上一篇:Nginx架構淺析

下一篇:springcloud面試題【第一期】

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