android线程池!如何试出一个Android开发者真正的水平?内容太过真实
導語
2020年是轉折的一年,2021年算是收獲的一年,趁著金三銀四開始找工作。先分享一下offer的情況
- 阿里高德(offer)
- 愛奇藝(offer)
- 騰訊視頻(offer)
- 小米(被拒)
- 今日頭條(被拒)
在面試的過程中我深深的感受到,對于一個優秀的安卓開發來說,首先擺在第一位的還是他/她作為一個軟件工程師的基本素養。無論你是做前端還是后端,最后定義你的優秀程度的還是作為軟件工程師的基本素養,學習能力和編程能力,還有設計能力。
初級
初級研發工程師的定義是掌握基礎的Android知識,能夠獨立完成一個功能,工作年限大概在1-2年,這個層級大部分人通過看一些資料書籍再經過項目練習很快可以達到。這個級別的人往往需要掌握如下一些技能:
- 掌握Android 四大組件知識,深入了解相關生命周期,對于Application、Fragment、Intent常見的開發知識也必須掌握。
- 掌握Android 基本布局和控件的屬性和使用,常用布局有LinearLayout、RelativeLayout、ConstraintLayout等,控件有- TextView、ImageView、RecyclerView、ScrollView等。
- 對Android的資源訪問使用有基本了解,了解Android針對不同國家、語言、屏幕、API的適配原理。
- 掌握android系統服務和工具類的使用,對網絡訪問和數據庫操作有基本認知。
- 熟練掌握研發工具,如IDE、模擬器、網絡代理、日志等。
中級
我對中級工程師的定義是能夠熟練完成功能研發外,還需要掌握常見開源庫的一些原理,并仿照開源庫去造輪子練習。這個階段的人大多工作3-5年,業務開發能力熟練,碰到任何一個問題都能夠得到解決,這個級別的人往往需要具備如下技能:
- 熟悉SOLID基礎設計原則,掌握23種設計模式。
- 對于研發語言特性java/kotlin有深入理解,如反射、動態代理、apt等。
- 對Android架構有基礎了解,對apk結構和打包原理有深入了解。
- 對于Android各個版本特性有基本了解,如MD設計、權限管理、doze模式等。
- 熟練掌握各種研發調試工具,如git、gradle、mat、layout inspector等。
- 掌握Handler\AsyncTask原理,熟悉多線程開發。
- 對繪頁面制原理有初步理解,能夠實現一個復雜自定義控件。
- 能夠熟練掌握開源庫的使用,如圖片庫(Glide\Fresco)、網絡庫(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等,能夠對這些常用的庫進行二次封裝。
- 熟悉應用常見的優化方法,避免編寫內存泄漏的代碼。
高級
對于高級,就不僅限于功能和業務開發,還需要深入理解Android系統的運行原理,達到融會貫通,部分可夠作為Android端架構師。這一階段的人大多工作5-8年,具備開源庫設計能力,同時對于Android系統的運行原理也比較了解。
- 掌握java高級特性,如JUC、線程池、NIO\BIO等;掌握jvm虛擬機知識,如內存模型、GC原理、類加載機制、線程模型等。
- 對Android運行環境有深入理解,理解Android沙盒機制,掌握AIDL原理及Binder通信原理,了解app和activity啟動原理。
- 掌握熱修復原理,各大廠商方案的優缺點。
- 對于Android事件分發有深入理解,重點掌握觸摸事件機制。
- 深入理解Android繪制原理,理解VSYNC和surface機制和窗口原理。
- 深入理解Android動畫原理,包括補間動畫和屬性動畫。
- 對于Android安全機制有基本認知,理解Android安全原理。
- 深入理解端上設計范式思想,如mvc\mvp\mvvm\clean-arch等。
- 理解架構演進,有良好的分層和拆分思路,掌握模塊化、插件化、動態部署等。
- 對新技術敏感(,理解掌握下一代架構dynamic feature等。
如果達到這一水平,恭喜你,你已經超過70%左右的人,但是如果要再進一步,比如架構中/開發專家,那么除了理解Android的一些核心原理外,還需要具有架構設計能力,能夠從更高層面看待問題,理解整個系統的設計。
專家
作為開發專家,那么除了理解Android的一些核心原理外,還需要具有架構設計能力,能夠從更高層面看待問題,理解整個系統的設計。
- 理解微服務、SOA思想,對于后端開發有一定涉獵。
- 了解前端研發工具和思想,知道vue react等研發框架。
- 深入理解跨端技術,如phonegap、weex/RN flutter、小程序快應用等。
那么除了上面的技術方面你與高級工程師差在哪里呢?
1、工作經驗與技術積累
說到高級工程師大家的第一印象自然就是工作經驗豐富,技術夠牛逼。
注意這里說的是工作經驗,并不是指工作時間。有的人踏踏實實做項目,業余時間想著多學點新技術,堅持讀書,認真寫博客總結,多實踐,加上自己本身悟性又不差的,2、3 年的時間都可以有別人 3、5 年的工作經驗,成長為公司的高級工程師水到渠成。而有的人混日子,做的項目得過且過,業余時間玩游戲,追劇,也許你在公司工作了 10 年看起來兢兢業業,然而你對自己沒有更高的要求,安于現狀,不求進步,這類人即使有 10 年的工作時間,卻只能止步于此。
靠著自己持續不斷的學習,以及工作經驗的積累,一步一步,見得市面多,踩的坑也多,技術越來越牛逼也是理所應當的事,而技術是一個高級工程師最基本的要求,然而我卻認為只要不是傻子,對技術有點追求的人,想達到這點不難,只是時間長短問題而已,除了技術,你跟那些真正的高級工程師還有其他方面的差距!
2、責任心
高級工程師責任心一定很強,責任心是體現一個人的態度問題,對于一個 bug ,他們永遠都會重視,想盡一切辦法找到原因并盡快解決,而有的人對于 bug 卻是得過且過,解決 bug 的態度就是嘗試,認為從表面上解決了就 ok 了。
我們 CTO 十幾年的軟件開發經驗,有用戶反饋 bug ,不管多忙,不管什么時間,一定停下手頭上的事情,去找到原因并解決。我在薄荷的經歷,曾不止一次跟著他為了解決一個 bug 搞到深夜,有幾次深夜發現一個導致用戶不能付款的 bug ,我都躺床上睡覺了,被 CTO 喊起來半夜趕往公司去修復的經歷,當時還覺得不理解,時間長了,我才意識到這種責任心是職業素養,現在也深深的被感染,在任何時候、任何時間,我的手機、電腦都是不離身,出問題一定第一時間進行響應!
對比下你們,你們的責任心夠強么?
總結
最后為了幫助大家深刻理解Android相關知識點的原理以及面試相關知識,這里放上相關的我搜集整理的24套騰訊、字節跳動、阿里、百度2019-2021面試真題解析,我把技術點整理成了視頻和PDF(實際上比預期多花了不少精力),包知識脈絡 + 諸多細節。
還有?高級架構技術進階腦圖、Android開發面試專題資料?幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習。
點擊:《Android架構視頻+BAT面試專題PDF+學習筆記?》
即可免費獲取~
網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。
即可免費獲取~
網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。
2021年雖然路途坎坷,都在說Android要沒落,但是,不要慌,做自己的計劃,學自己的習,競爭無處不在,每個行業都是如此。相信自己,沒有做不到的,只有想不到的。祝大家2021年萬事大吉。
總結
以上是生活随笔為你收集整理的android线程池!如何试出一个Android开发者真正的水平?内容太过真实的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 表达式的LenB(123程序设计ABC)
- 下一篇: 支持同步的Todo软件