自我介紹
雙非二本,軟件工程,自學前端,今年畢業。
喜歡編程,古風,日語和英語。
求職期間寫了一個小博客,感興趣的可以看看
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同城,去哪兒網,美團的面試,我猜應該都是因爲運氣...又或者,實在很缺人?
字節跳動面試經歷
一面
- java有哪些集合
- Set, List, Map都有哪些實現類,有什麼區別
- ArrayList和LinkedList區別
- HashMap原理,put時怎麼判斷key是不是null
- gc的幾種算法
- 如何識別是不是垃圾(引用計數器,可達性分析),引用計數法有什麼問題,gc root有哪些
- java爲什麼採用可達性分析不用引用計數器
- java中多線程怎麼通信的
- synchronized和volatile區別
- sleep()和wait()的區別
- 講一下https
- 編程中用https發請求和http有啥不同嗎
- 寫過Socket嗎
- http請求有哪些方式,get/post區別
- 編程題:找出數組中,升序子數組長度top2的數組
二面
- java的4種引用方式
- finalize()作用
- 寫一個雙重檢驗的單例模式,這樣就能保證線程安全了嗎,怎麼解決
- volatile原理,瞭解ReentrantLock嗎
- http1.0, http1.1, http2的區別
- http狀態碼
- 如何關閉http連接
- try catch finally怎麼用,一般什麼時候用finally
- 還了解什麼設計模式
- 編程題:找出島嶼個數,leetcode第200題
這個編程題我沒寫出來,面試官引導了將近一個小時也沒寫出來,然後居然過了。。
三面
- 從List中刪除指定元素(有重複),要求只用list接口的函數(就是考察對list的熟悉程度,不是算法題)
- 重載和重寫的區別
- 多態的原理
- 項目中的難點
- 編程題:從非降序數組中找出第一次出現的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年的老前輩的經歷告訴我,在錯誤的方向上,越堅持越受傷;