我的Android開發校招之路

       終於,我的秋招結束啦!從7月17日開始,到10月19日結束。三個月裏,有汗水、有挫敗、有喜悅、有成長、有蛻變....。謹以此帖,記錄自己的研究生生涯及秋招之路,希望能對後面的其他同學有所幫助。

(一)自我介紹
       樓主本碩就讀於西安某211,計算機應用技術專業。學術上的成果主要有:一作SCI二區論文*1、專利*3。主要的研究方向是:安卓安全、安卓開發、深度學習。
       本科階段的自己沒有清晰的目標,在大三的時候加入了考研大軍,在獲得某校優研資格的情況下由於自身的原因選擇了考研本校。看着自己同寢的哥們去了西交、好朋友去了東南大學...,心裏真不是滋味。初入學研究生的時候便決定好好努力,在找工作的時候進入大廠!
       應聘的崗位是安卓開發崗,秋招的最終去向是字節跳動。
(二)秋招的Offer總結


      共投遞了30餘家公司,至少拿到了九家公司的offer。結果分爲以下幾種情況:
      1.拿到offer的公司:
      oppo、字節跳動、浦發銀行、蘑菇街、美團、中興、小米、CVTE、360、華爲(12月9日從池子裏撈起來)。
      2.在offer池的公司(池子深的看不到底啊):
      新浪微博。
      3.筆試未通過的公司:
      拼多多、猿輔導、大疆、滴滴。
      4.面試未通過/無反饋的公司:
      多益網絡、騰訊(九面)、網易雷火、阿里。 
      5.自己拒絕後續面試的公司:
      虎牙、科大訊飛、貝殼找房、快手、商湯科技。
(三)校招公司
      這一節是對自己參加校招的大部分公司的說明,oppo、字節跳動、美團的面經在我的這篇帖子(2019校招字節跳動、美團、oppo安卓開發新鮮麪筋)中有詳細說明,後面不再贅述這些麪筋,談點不一樣的:
       3.1.oppo
       兩輪技術面試+一輪HR面試,秋招的第一個offer,oppo的核心價值觀是本分,對於oppo,自己充滿了感激。從給提前批同學的優惠政策到後續的校招調薪...。無疑顯示這是一家人性化且本分的公司,希望貴公司的發展越來越好吧。
       3.2.字節跳動
       字節是一輪筆試+三輪面試+一輪HR面試。筆試五道a了2.4道。一面的面試官(我的第一次面試)問題偏基礎,循循善誘地引導面試者,受益匪淺,至少不再害怕面試;涉及到Handler、線程通信、內存泄漏、垃圾回收及引用類型等,手撕代碼是斐波那契的變體。二面的時間大約在半小時左右,談了項目和相關基礎知識,並未手撕代碼。三面的技術面試官較爲嚴肅,知識點涉及到ActivityManager、四大組件、View繪製、項目相關,手撕代碼是Leetcode mdium難度的670題最大交換。7月底便收到oc,8月5日收到意向書。
      3.3.浦發銀行
       浦發銀行是去西安現場面試的,我是第一個面試者,六個面試官坐成一排,面試涉及面較廣:包括死鎖、銀行家算法、JVM調優、熱修復、數據結構相關基礎等。筆試是在一個大的機房中進行的,筆試題目包括跳臺階、最長迴文子序列、連續整數最大和。
       3.4.蘑菇街
       蘑菇街的一面側重基礎,面試官能夠很耐心的解答問題,手寫了冒泡排序,整體難度偏簡單;二面側重項目和工程能力,譬如V1簽名和V2簽名的不同等,手寫了最長迴文子串;三面是項目+手撕代碼,手撕了兩個代碼:1.單向鏈表的倒數第k個節點;2.升序的整數數組,在其中找到兩個數,使得它們的和是一個給定的sum,輸出其中一個解就可以了。蘑菇街後面又有組織offer party、報的薪資(算是ssp了)也是很有誘惑力,感謝、感恩。
       3.5.美團
       美團很看重基礎的深度,這從我的《2019校招字節跳動、美團、oppo安卓開發新鮮麪筋》中的問題可以看出來,美團遇到了一個情況是:8月26日完成技術三面,8月28日完成hr面了,一個月一直沒有拒信或者意向書,給官方的郵箱反映了下,又重新約我三面(面試官真的是很贊,花了20min給我介紹了公司的技術路線、研究方向等等),感覺好像是他們的工作失誤導致拖了一個月忘了,然後重新走三面往後的流程,最終也拿到了offer。建議:如果HR一直沒有反饋的話,自己一定要發郵件問一問,否則就會出現我這樣的情況。
       3.6.中興、CVTE
       中興沒啥講的,一面講了講項目,二面偏綜合測試。CVTE是技術面兩面,二面面試官人很好,給我展示了公司的相關產品,但報價低於預期。
       3.7.小米
       小米剛開始面試的是北京的IOT部門,HR面oc後我說想換到南京的MIUI部門,所以加了一輪面試。一面把項目撕了一遍;二面深入考察了Volatile關鍵字、設計模式相關以及多線程、多進程通信。加面印象不深,只記住了兩道題:(1)64匹馬,8個賽道,最快找出跑得最快的4匹馬(https://blog.csdn.net/u013829973/article/details/80787928);(2)有+1,-1,*2三種操作,問從整數A到整數B的最少操作次數。建議:oc時不要再換base了,加面很麻煩的。
       3.8.華爲
       今年華爲HC(尤其是cbg)減少,導致的一個問題就是門檻升高,加了手撕代碼環節,面試難度略微加大一些,華爲的老師感覺年齡都偏大,普遍有一點優越感,一共是兩輪技術面、一輪業務主管面。流程三輪目前是走完了,目前狀態是在offer池中。一面手撕了:兩個字符串,求最長公共子串;二面手撕了:(1)一個string數組和一個字符串,如果string數組的每個string都在字符串中有出現,則返回計數器的數值。譬如string數組【“hello”,“epoll”,"Kevin"】字符串是lloephki,返回的值是2;(2)兩個數組,第一個是【2,0,1,2,0,1】,第二個是【2,1,0】。要求得到按照數組二排序的數組一。即最後結果是【2,2,1,1,0,0】。
       3.9.騰訊
       騰訊面試了9次,撈了掛、掛了撈,兩次到三面,一次到兩面。只能說無緣了。
       WXG:一面問基礎,二面撕項目+手撕代碼。撕項目花了兩小時;手撕代碼一小時。知道了自己的薄弱點:項目瑕疵地方需改進;算法能力待加強;博客需整改,刪除level不夠的blog。
       CSIG:一二輪交叉面之後到第三面掛掉了。
       TEG:CSIG三面掛後的第二天,實在是不想回答問題,然後一面就涼了。
       PCG:三面問題偏實踐和發散,自己答得不好,掛掉了。
       3.10.阿里
       阿里的問題相對更發散,問題偏業務、偏應用場景,最終在三面之後收到了拒信。
       3.11.商湯科技
       面試體驗最差的公司且沒有之一,參考我的這篇帖子:https://www.nowcoder.com/discuss/269964。
(四)技術棧
4.1.Android基礎

      對於應屆生,大多數的公司更看重基礎和源碼一些。
      書籍:《第一行代碼》、《Android開發藝術探索》、《Andoir進階之光》部分。
      相關鏈接:
      https://blog.csdn.net/weixin_38244174/article/details/94335429
      https://blog.csdn.net/weixin_38244174/article/details/92627290
     涉及知識點:
    1.Activity的啓動模式和生命週期(特殊情況下生命週期)。
    2.進程間通信(Bundle、AIDL、Messenger等的使用和優劣勢)。
    3.Binder(源碼)。
    4.BroadCastReceiver的靜態註冊、動態註冊、分類等。
    5.View的事件體系、View的工作流程以及自定義View。
    6.View動畫、幀動畫和屬性動畫。
    7.消息傳遞機制:Handler(源碼)工作機制、AsyncTask(源碼)、HandlerThread(源碼)。
    8.Android的三級緩存策略,如何高效加載Bitmap?ImageLoader、Picasso、Glide(源碼)、Fresco。
    9.Android的插件化技術。
   10.性能優化之ANR優化、內存泄漏泄漏原因及優化、ListView和RecyclerView的優化及區別、佈局優化等等。
   11.JNI和ndk相關。
   12.Frgment的生命週期、相比Activity的優勢。
   13.網絡加載框架:Xutils、Okhttp(源碼)、Volley、Retrofit。
   14.Service的生命週期、兩種啓動方式。
   15.數據存儲:文件存儲、Sqlite、SharedPreference、LitePal。
   16.ContentProvder的寫法。
   17.線程池的分類、寫法和優勢。
   18.MVC、MVP、MVVM。
      目前能想到的就這麼多。多寫多練多看源碼是提高之道。
4.2.Java基礎
      書籍:《Java語言程序設計基礎篇》、《Java語言程序設計進階篇》(Y.Daniel Liang)、《深入瞭解Java虛擬機》、JavaGuide。
       相關鏈接:
       https://blog.csdn.net/weixin_38244174/article/details/92631738
       https://github.com/Snailclimb/JavaGuide
       涉及知識點:
       Java基礎:三大特性;接口抽象類區別;拆箱裝箱;==和equals的區別;hascode與equals;static關鍵字;final關鍵字;異常處理等;基本數據類型。
       Java容器:無外乎List、Map和Set。ArrayList(擴容、源碼)、LinkedList(源碼)、Vector的區別;HashMap(源碼)、HashSet和Hashtable的區別;ConcurrentHashmap的實現方式、HashSet如何保證不重複的。
       Java併發:進程、線程區別;併發、並行的區別;死鎖與避免,sleep和wait方法;sychronized、volatile關鍵字瞭解及區別;Java內存模型;線程池;鎖的分類。
       JVM:Java內存區域;JVM垃圾回收;類加載過程;類加載器。
4.3.數據結構
       書籍:《數據結構-用C語言描述》
       相關鏈接:
       https://blog.csdn.net/weixin_38244174/article/details/89599374#comments
       https://blog.csdn.net/weixin_38244174/article/details/92631738
       涉及知識點:
       棧與隊列;二叉樹的遍歷查找、哈夫曼樹、紅黑樹;圖的深度廣度優先遍歷;查找(順序、折半、哈希法);九大排序時間複雜度、空間複雜度、穩定性。
4.4.計算機網絡:
       書籍:《計算機網絡》(謝希仁第七版上篇)、JavaGuide
       相關鏈接:
 https://blog.csdn.net/weixin_38244174/article/details/90707622
 https://github.com/Snailclimb/JavaGuide/blob/master/docs/network/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C.md
       涉及知識點:
       TCP/IP結構與功能;三次握手與四次揮手及爲什麼是這樣?TCP、UDP區別;流量控制、擁塞控制、滑動窗口;url的輸入到顯示主頁;狀態碼;HTTP長連接短連接;Session和Cookie;Http1.0和Http1.1的區別;Http和Https的區別。
4.5.操作系統
       書籍:Github的CS-notes
       涉及知識點:
       線程、進程區別;讀者-寫者問題;死鎖的條件、預防(互佔不循)、檢測和避免(銀行家);虛擬內存,分段、分頁;頁面調度算法(Lru、FIFO、OPT等)。
4.7.設計模式
       書籍:《大話設計模式》
       涉及知識點:單例模式;工廠模式等。
4.8.算法
       書籍:《劍指offer》、Leetcode探索之騰訊篇。
(五)簡歷
        一份好的簡歷是建立在平時認真積累、與求職意向相吻合的基礎上的。下面是我的一些建議:
       1.不要用花裏胡哨的模板,搞技術的儘可能格式簡潔,內容豐富;
       2.個人信息寫清楚:姓名(哪一年畢業),電話、郵箱、CSDN博客或Github鏈接等。
       3.求職意向、受教育經歷要寫清楚。
       4.項目內容/實習經歷(至少是互聯網前幾的公司,否則只會降低自己的Level)按照時間、項目名稱、項目內容、負責部分、完成情況進行說明,科研成果需說明哪個區幾作;
      5.曾獲的獎項如果有互聯網+比賽、數學建模大賽的成績固然好,沒有的話寫獎學金感覺也可以,拿獎學金的話說明也不會差到哪裏去。
      6.專業技能分爲了解、熟悉、精通三等,一般不要填寫精通,技能在於精而不是多,有的同學恨不得把所有的語言都寫上...。
      貼一個別人的簡歷。

                                
(六)建議:
       1.未雨綢繆,厚積薄發。研究生的研究方向很可能與找工作的方向不一致,踏實完成導師佈置任務的同時,一定要抽出時間思考自己的方向。與學長、同學多交流。在完成項目的同時找到興趣點。厚積薄發是指在Github、CSDN上都有相應的貢獻,厚積才能薄發。
       2.項目爲主,基礎爲輔。既要有與工作方向相契合的項目,有難度和創新點,簡單的CRUD項目就算了;又要在計算機基礎上多下功夫,Android基礎、Java基礎、計算機基礎知識等等缺一不可。
       3.放平心態,冷靜大方。複習需要放平心態,不要因爲今天這個同學拿了這個公司的offer那個同學拿了那個公司的offer而出現情緒上的波動,從而影響自己的效率。一顆平常心,答出真水平。面試是互相選擇的過程,在回答面試官的問題時儘可能禮貌客氣,儘可能有理有據,儘可能深入底層,儘可能全面概括。但碰到某些苛刻的面試官(譬如*湯某面試官,別說什麼壓力面)要勇於懟上去。
       4.及時溝通,面試總結。和HR及時溝通,若不及時溝通可能會出現某團一個月後加面我的情況,如果HR面一週後及時詢問,應該不會出現加面的情況;某米的HR面時自己說了想將base從北京改到南京,然後又加面了,emm..不應該的。每面試結束一場一定要聽至少一遍,總結一遍,這樣纔會有成長(掛了的面試聽起來也太痛苦了叭)。
       5.刷題刷題再刷題...刷面經。算法的話如果平時積累沒那麼多的話,把劍指offer和Leetcode騰訊篇、頭條篇刷上兩三遍就差不多穩了,畢竟大多數的手撕代碼只會給面試者十幾分鐘的時間去寫,難度也會相對低一些。剛開始的話可以刷一刷面經,這裏也感謝牛客平臺和衆位大佬的面經帖。
       6.堅持就是勝利。想想自己的兩年半研究生涯,從剛開始進入實驗室的種種不適應到現在項目組的小組長,一路走來着實不易。考研選擇、給學姐打雜、被分配到好幾個項目等等,很苦很累,但堅持下來了,而且我可以說在每一個項目組都有在認真積極的解決問題,從不曾抱怨過。山重水複疑無路,柳暗花明又一村。堅信量變引起質變,美好的事物終將發生。
        感恩,感謝。下一站,字節跳動,我來了!

       安卓開發交流羣:651325026。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章