我是一個本科期間成績年級倒數(shù)20的差生愚争,沒參加過實驗室或者重量級比賽映皆。
春招成果
最后也是決定去字節(jié)跳動了挤聘,因為我最開始接觸Android開發(fā)就是因為字節(jié)跳動和我們學校的校企培訓,對字節(jié)跳動有感情捅彻。
但是無奈自己大學期間沒怎么好好學習组去,所以秋招有點拉垮。 我做了什么 因為在8月份知道自己有些拉垮步淹,于是決定說要在秋招先找一個實習从隆,鍛煉一下基本素養(yǎng),然后在春招發(fā)力缭裆。這是我的招聘策略键闺。實習期間幾乎天天加班,自己學習澈驼,鍛煉技術(shù)辛燥,每天寫工作總結(jié),維護博客缝其。實習三個月過得比較艱苦挎塌,同時也很感激我的實習公司,領(lǐng)我入門氏淑,我的負責人也給了我很多技術(shù)上以及解決問題上的幫助勃蜘。
然后在12月份由于學校的事多了起來,所以就離職了假残,然后也在這個時候我開始琢磨起了我的個人項目缭贡。因為我沒有拿得出手的Android項目,所以就自己構(gòu)思了一個辉懒,并且開始動手實現(xiàn)阳惹。并且在其中加入了我最新接觸到的知識點:LiveData、DataBinding眶俩、BiometricPrompt莹汤、AndroidQ適配、自定義View颠印、TransitionAnimation等纲岭。并且在其中使用到了設(shè)計模式:工廠模式、簡單工廠线罕、單例模式止潮、構(gòu)造器模式等。并且設(shè)計了許多的接口用于多態(tài)的相關(guān)特性處理钞楼。
這些實踐都讓我在面試的時候能夠體現(xiàn)出自己的思考和解決問題能力喇闸,而不是單純地背概念。于此同時,我開始了慘無人道的刷題之旅燃乍,從放假到現(xiàn)在3個月時間唆樊,我刷了快300道LeetCode……不把自己當人就行了。并且在二月份刻蟹,我開始在各大平臺上搜索Android客戶端的面經(jīng)逗旁,將遇到的題目復制下來,自己寫了一遍舆瘪。針對自己不熟練的部分痢艺,回歸教材反復研究,甚至將知識點加入項目中介陶。比如單例模式我除了用DLC還是用了靜態(tài)內(nèi)部類,并且弄懂了原理色建。
于此同時哺呜,我會將自己不清晰的點或者高頻考點通過分析源碼、寫Demo的方式分享成博客箕戳,比如之前面經(jīng)里出現(xiàn)了的觸摸事件的分發(fā)某残、Handler機制、ThreadLocal陵吸、紅黑樹平衡二叉樹AVL樹等玻墅。通過將輸入轉(zhuǎn)化為輸出,鞏固自己的記憶壮虫。終于澳厢,經(jīng)過了整個寒假的自虐之后,我也成為了Offer收割機囚似。
校招準備步驟 簡歷+項目+刷題+復習基礎(chǔ)+做面經(jīng) 簡歷 簡歷什么的確實沒有啥發(fā)言權(quán)……LZ簡歷什么的極其拉垮剩拢,但是還好學校是985,也有一些公司愿意撈饶唤。然后最近發(fā)現(xiàn)我的簡歷出現(xiàn)了不止一處錯別字……所以這個方面我沒啥好分享的徐伐。但是有一點是底線--誠實,不能把自己不會的寫上去募狂。面試官是基于簡歷問你問題办素,能通過篩選證明用人單位認可這份簡歷,只要你的表現(xiàn)對得起簡歷即可祸穷。
項目 如果大家不選擇像我一樣純從0開始搭建項目的話性穿,可以選擇去github上找適合自己方向的項目×缓撸基于自己的需求找到對應(yīng)的項目季二,把項目跑通、搞懂甚至優(yōu)化,那這就可以是自己的項目胯舷。 刷題 當然可以從簡單開始刷刻蚯,LZ最開始的時候那叫一個痛苦,easy都不會桑嘶,只能看答案寫炊汹。抄答案抄了60多題之后就可以自己寫了,因為熟練了逃顶。再之后發(fā)現(xiàn)有些medium可以秒撕了讨便,easy基本看一眼就有思路。
技巧就是最開始抄抄答案沒事以政,抄多了也就會了霸褒。無他,唯手熟爾盈蛮。 復習基礎(chǔ) 這個每個方向可能略有不同废菱,LZ只拿Android端舉例,Android端的基礎(chǔ)從重要往輕排序大概是這樣:算法抖誉、Java(一門精通的語言)殊轴、計算機網(wǎng)絡(luò)、操作系統(tǒng)(很多廠甚至不問)袒炉。算法這點是字節(jié)的老師一直強調(diào)的旁理,你可以沒有基礎(chǔ),但是代碼能力必須很強我磁。
對于其他的方面孽文,高頻考題一定要復習透徹,拿計網(wǎng)舉例夺艰,TCP/IP協(xié)議族得熟悉吧叛溢,OSI模型得熟吧。LZ面了這么多家劲适,沒遇到網(wǎng)絡(luò)方面新的題型楷掉,要是達不到理解(下面有個小技巧),那死背總會吧霞势。 做面經(jīng) 這里是做烹植!不是看,是把題復制下來自己做愕贡,只是看很容易忘的草雕。面經(jīng)一定要自己寫一遍,就是打字打出來固以,不要只是腦子里過一遍墩虹。
這是我的部分總結(jié)嘱巾,近一年的大廠客戶端面經(jīng)我都是這么寫的。萬字肯定破了诫钓。推薦使用OneNote旬昭。 技巧 經(jīng)過了整個春招的磨礪,除了硬實力之外菌湃,有一些需要自己注意的技巧分享出來:
1问拘、簡歷不要投太早,容易因為太久沒被處理導致心態(tài)崩潰惧所。因為我之前2月底投了一波骤坐,但是那時候很多廠簡歷篩選工作還沒開始,搞得自己無名焦慮下愈,頭發(fā)又少了纽绍。
2、不要給面試官一種你在背知識點的感覺势似,要結(jié)合實現(xiàn)進行分析顶岸。我這里有一句話:數(shù)據(jù)結(jié)構(gòu)決定算法、算法決定數(shù)據(jù)結(jié)構(gòu)叫编。就拿TCP舉例,你要是遇到TCP的頭部結(jié)構(gòu)有什么的問題霹抛,是不是就懵了搓逾,覺得這是靠背誦的。但是你套上這句話杯拐,聯(lián)想一下知識點:SACK確認機制霞篡、滑動窗口、全雙工通道端逼、套接字結(jié)構(gòu)……是不是就能夠理解為什么需要那些頭部結(jié)構(gòu)了朗兵,都是有對應(yīng)的功能需要實現(xiàn)才會出現(xiàn)這些結(jié)構(gòu)的。遇事不決拿結(jié)構(gòu)分析顶滩。
3余掖、多看源碼,源碼里面有很多注釋礁鲁,很多時候看看注釋就知道這個類是干什么的了盐欺,然后再往下跟,會有助于自己理解邏輯仅醇。更重要的是讓面試官知道你這種跟源碼的學習方式冗美。
4、調(diào)整好心態(tài)析二,不要因為某些廠把自己掛了就覺得自己不行粉洼。這是我被掛多了之后的心得节预,此處不留爺自有留爺處。
5属韧、面心儀的公司之前先面幾家其他公司安拟,小公司或者同等體量的公司。
6挫剑、面試一次復盤一次去扣,整理自己發(fā)揮不好的點。不能說一次問你不會兩次問你還不會吧樊破,那不是能力問題愉棱,那是態(tài)度問題。而且很多廠是有面試記錄的哲戚,二三面專挑你面試不好的問題問你奔滑。
7、表現(xiàn)自己對于計算機顺少、碼代碼的熱情以及愿意鉆研的精神朋其。這里說的熱情不是讓你自我介紹的時候說喜歡碼代碼,而是不經(jīng)意間透露一些脆炎。比如有維護個人博客梅猿、比如一直在維護個人github、比如在遇到問題的時候提了各種解決方案最后根據(jù)某種選擇策略決定了最終方案袱蚓、比如最近遇到的問題以及現(xiàn)在解決到了哪一步……
我舉個例子吧,LZ最近準備的案例是BiometricPrompt相關(guān)几蜻,這是AndroidP開始有的生物識別類喇潘,意在同一生物識別的彈窗樣式而讓用戶對于識別更加放心。但是彈窗會使得背景Activity偏藍梭稚,于是想解決這個問題颖低,找到了源碼FragmentDialog,發(fā)現(xiàn)里面關(guān)于Style和Theme部分的代碼是通過從Bundle中取出的值決定的弧烤,但是Bundle是BiometricPrompt中利用構(gòu)造器模式進行初始化的忱屑,而且是private的,所以沒有接口可以定制暇昂。
于是想通過反射試試能否修改對應(yīng)Bundle中的數(shù)據(jù)想幻。實現(xiàn)之后發(fā)現(xiàn)失敗了,因為回看FragmentDialog中话浇,它將Theme和Style對應(yīng)處理寫死了脏毯,只是通過int值不同調(diào)用不同的case而已。所以修改Bundle是行不通的幔崖,現(xiàn)在在想能否利用動態(tài)代理相關(guān)思想hook一下對應(yīng)的setStyle或者setTheme方法食店,達到修復背景顏色問題渣淤。
但是這樣子又違背了這個類創(chuàng)造出來的目的,所以最近在苦惱這一點吉嫩。項目里還是利用了AndroidM的相關(guān)生物識別操作自定義彈窗做的价认。 看我加粗的部分:提出問題+初步解決方案+失敗了+失敗原因分析+下一步操作+對于這個操作的思考。
不要求你解決了什么問題自娩,但是你要體現(xiàn)出來用踩,你真的在思考。這確實是我最近遇到的問題忙迁,我解決方案還是使用AndroidM相關(guān)庫進行的自定義脐彩。
上面這段話透露了什么?你樂于思考姊扔、會解決問題惠奸,你在學習新技術(shù),你知道版本適配問題恰梢,你會利用源碼作為解決問題的工具佛南,你知道動態(tài)代理和hook,你會利用反射解決問題嵌言。上述能力都是我想體現(xiàn)的嗅回,一個案例就夠了。
我通過這個案例已經(jīng)打動不少面試官了摧茴,各位要做的就是按照我的模式找到自己解決的問題绵载。 心得 有不少人問我是怎么學習的,那我確實也有一本書我認為還不錯的書推薦給大家《Android插件化開發(fā)指南》蓬蝶,網(wǎng)上肯定能下到電子版,版權(quán)問題不發(fā)鏈接猜惋。這本書不要當做是插件化相關(guān)書籍看丸氛,他是以插件化的角度介紹了整個Android的體系。 挑對應(yīng)章節(jié)看即可著摔。最后談一下為什么自己會選擇Android開發(fā)吧缓窜。最開始是因為自己確實不行,然后得找一個缺口大的崗位谍咆,借著校企培訓的契機得知了字節(jié)跳動特別缺Android開發(fā)人員禾锤。于是就決定自己做Android。但是做著做著就愛上了Android開發(fā)摹察,也愛上了非常忙碌的生活恩掷,所以一直就有個正循環(huán)。
如果大伙真的不知道選什么方向供嚎,可以考慮考慮大前端:H5黄娘、Android峭状、IOS。尤其IOS缺人缺炸了……
之前復習的時候逼争,我也有把我整理好的面經(jīng)优床,面試題整理出來,平臺上放不下誓焦,就不放了胆敞,總而言之,多刷面經(jīng)杂伟,有時間就做思維知識體系整理移层,在平臺上收獲到了非常多優(yōu)秀的面經(jīng),也有很多小伙伴特別樂于助人稿壁。所以我也就把我自己的經(jīng)歷分享出來幽钢,希望能夠幫助甚至激勵一些人吧。