“備胎”5年,我一直在等...(外包——字節跳動)

自我介紹

雙非二本,軟件工程,自學前端,今年畢業。

喜歡編程,古風,日語和英語。

求職期間寫了一個小博客,感興趣的可以看看

https://github.com/274942954/ByteDance-Android-Architect-learning-note/tree/master

爲什麼離職?

這個問題,幾乎我參加的每一場面試都會問到。我是2020.7.1畢業,最後離職日期是2020.12.18。這段工作經歷很短,被問到也很正常。最主要原因還是追求更大的發展空間和技術突破。

在我導師跳槽去美團後,團隊內就出現了明顯的技術斷層。我遇到的某些問題,能夠與之商量的同事也越來越少。至於源碼,數據結構和算法層面的交流就更少了。

而這些深層次的東西,纔是真正意義上的技術棧,是真真正正能提高個人技術能力和核心競爭力的東西。

跳槽前該考慮的事?

在我看來,決定是否跳槽成功的核心因素有兩個:個人技術能力和當前招聘市場的大環境。建議先將自身技術能力和招聘要求做一個比對,如果覺得可以勝任,再去投遞也不遲。至於市場環境,大概是金三銀四,金九銀十和年末擴招三大階段吧。

如果技術已經準備ok,簡歷也完善過,那就可以開始投遞了。內推也好,其他招聘軟件也好,自行選擇即可。

最最最重要的一件事,不建議裸辭。如果裸辭,做好心理準備。大多數情況下,換一份滿意的工作,整個面試流程加offer審覈到offer call再到最終郵件offer,耗時一個月是很正常的。在職面試都會有焦慮感,更何況是裸辭。

如果工作年限很短,又是裸辭,那我只能說在簡歷篩選上會很喫虧。比如我,投字節15個崗位,都被幹掉,到第16個才約上面試。投快手4次內推,被幹掉4次,最快的一次一小時左右就把我幹掉了。不得不說,快手效率還是到位的。不死心的我又投了第五次,成功約上了面試。至於後來爲什麼能再約上猿輔導,百度,58同城,去哪兒網,美團的面試,我猜應該都是因爲運氣...又或者,實在很缺人?

字節跳動面試經歷

一面

  1. java有哪些集合
  2. Set, List, Map都有哪些實現類,有什麼區別
  3. ArrayList和LinkedList區別
  4. HashMap原理,put時怎麼判斷key是不是null
  5. gc的幾種算法
  6. 如何識別是不是垃圾(引用計數器,可達性分析),引用計數法有什麼問題,gc root有哪些
  7. java爲什麼採用可達性分析不用引用計數器
  8. java中多線程怎麼通信的
  9. synchronized和volatile區別
  10. sleep()和wait()的區別
  11. 講一下https
  12. 編程中用https發請求和http有啥不同嗎
  13. 寫過Socket嗎
  14. http請求有哪些方式,get/post區別
  • 編程題:找出數組中,升序子數組長度top2的數組

二面

  1. java的4種引用方式
  2. finalize()作用
  3. 寫一個雙重檢驗的單例模式,這樣就能保證線程安全了嗎,怎麼解決
  4. volatile原理,瞭解ReentrantLock嗎
  5. http1.0, http1.1, http2的區別
  6. http狀態碼
  7. 如何關閉http連接
  8. try catch finally怎麼用,一般什麼時候用finally
  9. 還了解什麼設計模式
  • 編程題:找出島嶼個數,leetcode第200題

這個編程題我沒寫出來,面試官引導了將近一個小時也沒寫出來,然後居然過了。。

三面

  1. 從List中刪除指定元素(有重複),要求只用list接口的函數(就是考察對list的熟悉程度,不是算法題)
  2. 重載和重寫的區別
  3. 多態的原理
  4. 項目中的難點
  • 編程題:從非降序數組中找出第一次出現的target元素下標
    int[] array = {1,2,2,2,3,3,5,6,8}, int target =2
需要答案複製下面GitHub鏈接即可

https://github.com/274942954/ByteDance-Android-Architect-learning-note/tree/master

技術方面該如何準備?

結合我20多次的面試經驗,總結出一個核心:基礎。即便是大廠,也不會忽略問基礎,反而更重視這個。基礎不穩,地動山搖。基礎穩如狗,大廠隨便走。以下我提到的資料都會在文末給出鏈接,大家可自行查看。

面試知識點

  • 思維腦圖

  • Android面試過程所需要掌握的技術

一場面試都有一個流程,拿Android面試來說,面試內容不可能全是Android問題,裏面應該會有編程基礎相關的問題。我對Android面試中的問題做了下分類,如下所示:


一般來說,一個Android應用開發崗位是不需要太強的數據結構和算法的,但是這並不意味着候選者可以完全不懂數據結構和算法,所以數據結構和算法大家還是要稍微瞭解下,由於它不是必須的,所以就算面試過程中回答的不好也沒關係,只要後面的Java、Android相關的問題能夠完美回答就好。有同學和我反饋,說面試掛在了數據結構和算法,這在社招中應該是不多見的,這多半是因爲Android的問題也沒有很好地回答出來,這就是社招和校招的不同之處,校招看基礎,社招看技術深度和業務。

關於設計模式和架構,其實中高級面試對這個的要求並不是特別高,熟悉下常見的設計模式基本就ok,比如單例模式、工程模式、觀察者模式等。

接下來主要描述下面試過程中對Android技術的要求。在我對Android的理解這篇文章中,我對Android的技術類別做了一下劃分,如下所示

對於大部分面試者來說,大家的目標崗位應該是中高級,中級崗位(百度T4)需要掌握的知識點是:基本知識點、深入知識點;高級崗位(百度T5)需要掌握的知識點是:基本知識點、深入知識點、基本知識點的細節和系統核心機制。

1. 基本知識點
比如四大組件如何使用、如何創建Service、如何進行佈局等。這類知識是需要熟練掌握的,並且也沒什麼難度。

2. 稍微深入的知識點
比如AIDL、Binder、多進程、View的繪製流程、事件分發、消息隊列等。這類知識對於高級開發者來說也是必須掌握的,然而相信很多候選者在面試之前並不能對這些問題了如指掌。這些問題基本都是面試過程中很常見的問題,也是高級崗位所必須掌握的問題,不搞定這些問題無法達到百度的高級工程師的標準,因此也不可能通過面試。

3. 基本知識點的細節
比如Activity的啓動模式和標記位、Service同時處於start和bind狀態時的停止問題、AsyncTask的同步異步問題以及使用時的限制等,這種問題還有很多。這類知識點,大家在開發過程中可以並不會去注意,這會導致一個問題,那就是開發應用沒問題,但是在面試時面試官只要稍微問下細節或者特殊情況,就hold不住了。 這類問題也是高級開發者所需要掌握的,有些面試官喜歡問一些看似刁鑽的問題,但是候選者如果回答不了也是不好的。

4. 系統核心機制
比如主線程的消息循環、主線程如何和AMS如何跨進程交互、SystemServer進程中的各種Service的工作方式、AsyncTask的工作原理等。這類知識對於高級開發者也是建議掌握的,因爲它們可以讓開發者理解Android的運行體系。 這類問題並不是所有的Android面試都會涉及到,但是技術含量高的大公司有可能涉及此類問題。

5. 瑣碎的知識點
此類知識點我把它們定義爲一些重要但是沒有什麼技術難度的問題,比如如何打開一個網頁、如何打電話、如何發短信、如何定位、多點觸控等,這類問題往往不好記憶,但是需要的時候去查一下就能立馬搞定。這類問題基本上不會出現在面試過程中。

尾聲

最近小編在大神哪裏買下了幾十套阿里、頭條、騰訊和美團等公司2020-2021年金三銀四的面試題,把技術點整理成了視頻+文檔(總計20G,實際上比預期多花了不少精力),包含知識脈絡 + 諸多細節,由於篇幅有限,這裏以圖片的形式給大家展示一部分。

這份資料尤其適合:

1.沒有工作經驗,但基礎非常紮實,對Android工作機制,常用設計思想,常用Android開發框架掌握熟練的。
2.具有一定工作經驗的,但面對目前流行的技術不知從何下手,需要快速提升核心競爭力的人羣。
3.在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以報名。
4.想了解“一線互聯網公司”最新招聘需求/技術要求,對比找出自身的長處和弱點所在,評估自己在現有市場上的競爭力如何;
5.做了幾年Android開發,但還沒形成系統的Android知識體系,缺乏清晰的提升方向和學習路徑的程序員。

相信它會給大家帶來很多收穫。(更全的內容和資料,在文末獲取)
Android面試題(部分展示)

  • 精華Android 初級-高級學習進階思維腦圖(有幾百個細分支,系統學習)

  • 學習筆記(只展示部分)

  • 大廠面試筆記(包含面試題+解析+面試HR必備知識+學習Android基礎—高級知識點)

學習方向給你們看一下精簡版本了,需要完整版的可以找我分享 。由於簡書限制網盤鏈接,需要相關學習筆記的可以複製我的GitHub地址,

下載獲取你需要的學習筆記:複製下面GitHub鏈接即可
https://github.com/274942954/ByteDance-Android-Architect-learning-note/tree/master

或者複製打開鏈接,羣文件夾自己下載:https://jq.qq.com/?_wv=1027&k=Nf77fQ97

總結

如果你對自己的智商,解決問題的能力,鑽研的態度,有信心,it行業非常適合你;能力鍛煉出來了,工資就高,不停的拋出問題給你解決,讓你有成就感;技術水平隨着時間積累,越到後期越強;那你趕緊去報班/自學,從實習生做起,3年之後自然NB;如果你想混(鑽研精神不足),真的會很慘;半輩子沒掙得什麼像樣的資產(初級程序員工資真心不高),長期加班熬夜落下一身病,然後40歲除了編程啥也不會,編程還賊菜,在小公司廝混業務代碼,老闆說不定什麼時候就說散夥,然後和小夥子們競爭初級程序員崗位。。。。。;

堅持8年的老前輩的經歷告訴我,在錯誤的方向上,越堅持越受傷;

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