一小伙工作快3年了,拿到了阿里雲Android開發崗位P6的offer,算HR面一起,加起來有6輪面試了,將近3個月的時間,1輪同級 + 1輪Android用人部門leader + 1輪Android 組leader + 1輪項目CTO + 1輪HR + 1輪HRBP。
一路上各種事件分發機制、自定義View、handler原理、多線程、hashmap、手寫算法、計算機網絡等等直接面試到自己懷疑人生,而自己跟HR談論薪資的時候也是沒有任何底氣,說是22k,結果被HR壓倒了19k,現在拿的都是15k的offer了。
有阿里巴巴的程序員直接表示,你說的這些面試題現在全忘光了,現在也能拿到22k的薪資。
果然是“面試造航母、工作擰螺絲”呀!
但是他自己也表示,是很想去阿里雲的,為這次面試准備了好久,現在感覺好失望,想知道還可以跟HR再談談嗎?關鍵是自己都在系統確認過offer了。
也有熱心的阿里內部員工表示,確認過了沒可能了,一旦確認要重新發offer流程比較麻煩需要大佬批准,基本沒可能,就算不確認和阿里hr談錢也難。這種情況下看你自己能否接受了。
也有網友說是:你要22k時就輸了,這種時候比自己心理實際與其加3k~5k給HR划價用,不然HR豈不是毫無成就感。
好像也是哦!有點像去菜市場買菜一樣。
還有更慘的百度程序員表示自己只有一年工作經驗,面試了阿里,只給了18k,現在在想要不要跳槽。
找工作不可避免的要涉及到面試,但是對於多數程序員來說,解決各種bug信手拈來,滿足各種需求不在話下,面試的溝通介紹,還有最后的薪酬問題簡直是比寫代碼痛苦百倍的事。這就造成入職同樣level的公司,有人年薪幾十萬,有的人用白菜價就把自己賣了。
那么Android開發該如何准備面試、如何和HR談薪呢?
一、如何寫簡歷
平時有在做修改簡歷的收費服務,在公司里也會當個面試官啥的,總的來說也算看過很多簡歷了。但是大部分人的簡歷的套路都是一樣的,項目用了什么技術棧,做了什么功能,總的來說就是流水賬。
那么一旦你寫出有別於這類套路的簡歷,你的簡歷必然會被用人方多看幾眼,增加點成功率也是必然的。
一般來說我會這樣建議別人寫簡歷:
-
全文杜絕任何的精通字眼,如果你真的精通,不需要投簡歷找工作了。
-
簡歷控制在兩頁左右,不需要找什么簡歷模板,直接 Markdown 生成 PDF 文件,面試官不在意你的簡歷有多好看,他更在意的是你的簡歷內容。
-
任何英文單詞注意大小寫,數字以及英文注意與中文之間有空格。
-
項目中無需介紹這個項目到底有啥功能,單刀直入這個項目中最值得說的內容。比如遇到的 Bug,自己的思考等等。但是可能很多人會說,業務很簡單沒什么好說的或者壓根沒遇到什么問題。遇到這個問題的時候,首先跳脫出業務的框架,去思考其他的問題。相信每個人都寫過組件,但是對於如何設計一個好的組件來說就不是每個人都能做的事情了。
-
寫項目經驗最好按照這樣的思路:遇到了什么問題,如何解決以及結果。
-
假設簡歷上的每個技術點面試官都會問到,斟酌所有的知識點,保證都能回答。
二、我的經驗水平能拿多少的工資
對於這個問題,我真的很想說多少經驗真的和多少工資沒多大關系。
相同的一年經驗,有人只能拿 10K,但是有人卻能拿到 20K,原因就在於兩個人的技術能力不一樣。
你技術好,就能比別人多要工資;你技術一般,就只能拿少點的工資,這是一個很現實的問題。所以工資只與技術掛鈎,而不是你所謂的經驗。
如果只是想了解行業平均薪水,直接去看當地的企業給出的工資是多少就好了。如果覺得自己薪水不符合行業平均薪水,就勇敢的跳槽唄。
三、問到項目中的技術難點怎么回答
對於這個問題來說,面試官考察的就是你的學習能力以及解決問題的能力。
很多人遇到這個問題會很懵逼,感覺基本啥問題都谷歌解決了。當然如果你真的有遇到不是馬上能通過谷歌解決的問題便是極好的,按照描述問題、如何解決問題、結果這幾個步驟來回答就行了。
那么如果你覺得你的項目真的很簡單,沒有什么可說的話,就按照以下的幾個思路來聊這個話題。比如說你之前從沒接觸過某個技術,你是如何去學習這個技術的,在學習的過程中遇到了什么問題,怎么解決的。比如說你寫了這個項目,自己有了什么感悟、想法。
因為這道題目面試官不是說一定要聽你講出項目里到底遇到了什么難的問題,而是考察你的學習能力以及解決問題的能力。即使你沒有什么干貨可以說,說點自己的學習過程、挫折、想法感悟也是可以的,畢竟總比說感覺都很簡單來的好。
四、如何和 HR 聊天,比如談錢等等
首先你面到 HR 了,說明你基本已經成為備選人之一了。這時候 HR 會和你聊很多問題,這些問題都是為了了解你的一些個人情況的。比如說性格啦、反應能力、情商等等。另外大部分公司的 HR 並沒有一票否決權,面試沒有成功多半是有更好的備選人而不是因為 HR 把你卡掉了。
然后說到談錢的一個問題。首先以最少的工資招到需要的人肯定是 HR 的考核之一,所以壓價是很正常的一個事情。並且上家公司的薪資也是一個很重要的參考,一般來說漲薪幅度在 30% 以上是很牛逼的事情了,通常都在 20% 左右。
你的開價一般就是 offer 的上限了,考慮到壓價的情況,你可以在原本期望薪水上上浮 2K 左右,然后可以根據面試的情況來有選擇性的開價。
- 面的不錯,本來想要 16K 的,那么就多要個 2-3K 沒啥問題
- 面的一般,那就報 16 K 吧
- 面的一般或者不大好,但是又很想進這家公司,可以酌情下降 1-2K,這個主要還是看自己
- 不怎么想去這家公司,隨意開價
我自己做Android開發已經是第6個年頭了,畢業后兩年,有幸加入到字節跳動這個大家庭。在字節的4年,見證了太多人的來來去去,印象很深一個同事,跳槽阿里薪資直接double,但也看到很多人鍍着“大廠”的金四處碰壁,終究還是倒在了技術上!
我自己或許也算是個成功的例子,在4年的時間里從1-1做到了2-2,當然,這背后的“辛酸淚”就留到日后再說。總的來說,歸功於自己不斷地學習,復盤總結,提升技術!以下分享一下我4年來具體的學習路線及筆記文檔,希望能幫助到有心提升技術的朋友!
以下完整學習筆記PDF,可以點贊+評論支持下打工人老弟,點擊這里免費自取!
一、架構師築基必備技能
安卓手機的開發語言是Java(Kotlin也是對java的封裝),Android Framework 也是默認使用Java 語言,熟練掌握Java 語言是Android 開發者的必備技能。
本篇包含知識點:
1.深入 Java 泛型
2.注解深入淺出
3.並發編程
4.數據傳輸與序列化
5.Java 虛擬機原理
6.反射與類加載
7.高效 IO
二、高級UI
UI這塊知識是現今使用者最多的。當年火爆一時的Android入門培訓,學會這小塊知識就能隨便找到不錯的工作了。
不過很顯然現在遠遠不夠了,拒絕無休止的CV,親自去項目實戰,讀源碼,研究原理吧!
三、Framework精編內核解析
眾所周知,Android是一個基於Linux實現的操作系統。但對於Linux內核來說,Android也僅僅只是一個運行在內核之上的應用程序,與其他運行在內核之上的應用程序沒有任何區別。
所以Android也需要運行環境,需要Linux內核在啟動完成后加載Android Framework運行所需要的資源。當Framework完成初始化后才能繼續啟動相應的APK應用程序。
主要內容包含:
- 深入解析Binder
- 深入解析Handler
- Dalvik VM 進程系統
- 深入解析 WMS
- PackagerManagerService
筆記內容全部免費分享,有需要完整版筆記的小伙伴【點擊我】免費獲取哦!
四、360°全方面性能調優
簡單來說,一個APP 是需要從三個方面被關注的,業務功能、符合邏輯的交互、性能響應。如果我們在使用一個 APP 時候,經常滑動時經常卡頓、時不時崩潰、有些功能設計簡直非常規,比如在 Web 網站有樹層級等面包屑點擊,你非要在手機也搞一個類似樹級點擊加載,那是不是有點強人所難了,我上拉下拉、左滑右滑不行嗎,非要通過點擊才行嗎?那么性能優化核心是什么呢?追求快、穩、省、小,關注卡頓、內存泄漏和崩潰、代碼質量和邏輯、安裝包大小四個方面。想進一步的了解的話,可以查閱下筆者這篇文章《我把阿里、騰訊、字節跳動、美團等Android性能優化實戰整合成了一個PDF文檔》
五、Android第三方框架
隨着互聯網企業的不斷發展,產品項目中的模塊越來越多,用戶體驗要求也越來越高,想實現小步快跑、快速迭代的目的越來越難,還有應用之間的互相調用等等問題,插件化技術應用而生。
當今的Android移動開發,不會熱修復、插件化、組件化,80%以上的面試都過不了。
本篇內容要點(1042頁)
- 熱修復設計
- 插件化
- 組件化框架設計
- 圖片加載框架
- 網絡請求框架
- RXJava 響應式編程框架設計
- IOC 架構設計
- Android架構組件Jetpack
六、NDK模塊開發
NDK是原生開發工具包,這套工具允許Android使用C/C++代碼,並提供了眾多的平台庫。
主要內容包含:
- NDK 模塊開發
- JNI 模塊
- Native 開發工具
- Linux 編程
- 底層圖片處理
- 音視頻開發
- 機器學習
七、Flutter學習進階
2019 年無疑是 Flutter 技術如火如荼發展的一年。
每一個移動開發者都在為 Flutter 帶來的“快速開發、富有表現力和靈活的 UI、原生性能”的特色和理念而痴狂,從超級 App 到獨立應用,從純 Flutter 到混合棧,開發者們在不同的場景下樂此不疲的探索和應用着 Flutter 技術,也在面臨着各種各樣不同的挑戰。
本篇知識要點:
1、Flutter跨平台開發概述
2、Windows中Flutter開發環境搭建
3、編寫你的第一個Flutter APP
4、Flutter Dart語言系統入門
…
八、微信小程序開發
微信小程序作為現在比較火的編程開發應用場景之一,深受市場的青睞,這讓不少開發者眼饞不已。但是對於初學者來說,就完全摸不着頭腦了,不知道微信小程序開發制作需要學習那些知識,有需要的朋友可以參考本篇。
本篇知識要點:
1、小程序概述及入門
2、小程序UI開發
3、API操作
4、購物商場項目實戰
九、Android相關源碼解讀
只要是程序員,不管是Java還是Android,如果不去閱讀源碼,只看API文檔,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。