2021新的一年,開啟新的征程,回顧2020,真是太“南”了。
從年初各大廠裁員,竟然成為一件理所應當的事情,到四月份 GitHub 上“996.ICU” 引起了大家的共鳴。即使我們兢兢業業“996”,但依舊難以抵御 35 歲時的“心方意亂”。
但,焦慮和不安是弱者做的事情,強者都是時刻保持學習的心態,在職業發展的前 5 年搭建出自己的知識體系,就能做到無懼無畏。
我認識很多優秀的 Android 工程師,他們絲毫不焦慮,因為他們知道清晰地知道自己的薄弱處和強項。
和他們的交流中,我總結了 3 點經驗,分享給你
背景
面是是上海的Android leader崗位,周日一輪面試,自我感覺答的都還不錯。
結果收到郵件面試結束了,說什么"你優秀的學識和能力給我們留下了深刻的印象!經過對你綜合情況的仔細評估,并經過與崗位需求進行謹慎匹配和權衡之后, 非常遺憾,我們這次沒有和你達成合作。但你的信息已經被錄入到公司人才庫"。意思就是掛了唄。
后來打電話問hr,沒跟我說原因。然后面試過程中,有一點奇怪的地方,面試前面試官跟我說我面的而這個崗位有點奇怪,他也沒跟我說哪奇怪。
面試過程
下面是面試官提的一些問題:
面試官:點擊一個圖標到這個應用啟動的全過程(前面是項目經驗沒啥好說的)。
回答:
點擊圖標后通過startActivity遠程調用到ams中,ams中將新啟動的activity以activityrecord的結構壓入activity棧中,并通過遠程binder回調到原進程,使得原進程進入pause狀態,原進程pause后通知ams我pause了。ams再根據棧中activity的啟動intent中的flag是否含有new_task的標簽判斷是否需要啟動新進程,啟動新進程通過startProcessXXX的函數。啟動新進程后通過反射調用ActivityThread的main函數,main函數中調用looper.prepar和lopper.loop啟動消息隊列循環機制。
最后遠程告知ams我啟動了。ams回調handleLauncherAcitivyt加載activity。在handlerLauncherActivity中會通過反射調用Application的onCreate和activity的onCreate以及通過handleResumeActivity中反射調用activity的onresume。一個應用就此啟動。
面試官:Retrofit原理。
回答:
主要是通過動態代理將接口直接轉換成代理對象。動態代理和靜態代理的區別,動態代理直接在虛擬機層面構建字節碼對象。
面試官:View自定義的流程,實現哪些方法。
回答:
實現OnMeasure,onlayout,onDraw。
繼續問“onMeasure中會用哪些方法?”(我覺得這題可能沒大好,我是想回答的詳細點的,結果還沒打到點他就說好,繼續下一題,不知道是認可了還是覺得我答的過于啰嗦,如果覺得太啰嗦可以提出來啊。。。)
我回答onMeasure 中傳入兩個int數值,這個數值32位,前2位表示模式,后30位表示寬度、高度。這是外表容器給內部view的限制。
一種模式是容器給你多大的值,你就是多大的值(match_parent),
第二種,容易給內部view多大的空間,內部view不用管,是多大就是多大。
第三種,容器給子view多大的空間,和子view自己算出來的占用空間,選擇小的那個(wrap_content)。說到這我正打算說onMeasure會調用measureChildwithmargin類的函數,他說好了,然后下一題。
面試官:怎么設計app的。
回答:
基本都用的mvc架構,曾經有個項目使用mvp。還有其它一些整體設計上的問題,很零碎,但都答的差不多。
面試官:(最后是算法題,面試官的表述不是很清晰,所以開始沒理解他的意思,我歸納一下題目)
有1,3,7三個面值的金錢,現在要取n元。怎么取個數最少。(n是已知數) 意思就是 1 * a+3 * b+7 * c=n 什么情況(a+b+c)最小。
當然這是我自己歸納出來的,他開始的描述讓我想哭。
回答:
開始腦子有點沒反應過來,把它當邏輯題做了,想了5分鐘后才反應過來,這是編程題啊。遍歷呀, a的取值范圍(0n)b的取值范圍(0n/3) c的取值范圍(0~n/7) 遍歷取最小值。當然這種情況效率并不高,我當時也和面試官說了,沒太考慮效率,如果需要可以再改。感覺他也認可,思路對就行了。 其它一些零碎的問題沒印象了,主要就這些。
我想大家應該看過很多分享面試成功的經驗,但根據幸存者偏差的理論,也許多看看別人面試失敗在哪里,比如我這次的掛了的面試,大家可以對比下,發現一些自己回答的話會有哪些問題,這樣對自己之后的面試才更有幫助。
【延伸Android必備知識點】
【Android部分高級架構視頻學習資源】
**Android精講視頻領取學習后更加是如虎添翼!**進軍BATJ大廠等(備戰)!現在都說互聯網寒冬,其實無非就是你上錯了車,且穿的少(技能),要是你上對車,自身技術能力夠強,公司換掉的代價大,怎么可能會被裁掉,都是淘汰末端的業務Curd而已!現如今市場上初級程序員泛濫,這套教程針對Android開發工程師1-6年的人員、正處于瓶頸期,想要年后突破自己漲薪的,進階Android中高級、架構師對你更是如魚得水,趕快領取吧!
【Android進階學習視頻】、【全套Android面試秘籍】點擊這里查看免費領取方式!
**任何市場都是優勝略汰適者生存,只要你技術過硬,到哪里都不存在飽和不飽和的問題,所以重要的還是提升自己。懂得多是自己的加分項 而不是必須項。門檻高了只能證明這個市場在不斷成熟化!**另外一千個讀者就有一千個哈姆雷特,所以以上只是自己的關鍵,不喜勿噴!
重要的還是提升自己。懂得多是自己的加分項 而不是必須項。門檻高了只能證明這個市場在不斷成熟化!**另外一千個讀者就有一千個哈姆雷特,所以以上只是自己的關鍵,不喜勿噴!
如果你是卡在缺少學習資源的瓶頸上,那么剛剛好我能幫到你。歡迎關注會持續更新和分享的。