2019我的秋招

秋招正式結束,最後感謝百度給予的認可,真的有種受寵若驚。簡單回顧一下秋招。也給出自己的面經,文章最後列出兩個自己看的資料。

  • 3月:
    擠出時間去找了幾家實習,在毫無準備的情況下,因爲知道不能出去實習,正是這幾次被按在地上摩擦的面試經歷,讓自己清晰的認識到找工作需要好多好多東西。
  • 9月:
    正式開始秋招,這期間每天都在焦慮中度過,尤其在字節二面掛收到感謝信,小米二面完未收到恭喜涵,特別是貝殼一輪遊之後自己深深的陷入的自我懷疑,每天味覺不振,每晚都會醒好幾次,人也變得更加消瘦。但是還得繼續,不想面臨一畢業就失業的尷尬局面,9月前半段瘋狂筆試,中下旬瘋狂面試,還記得打破記錄的是一天面了5家,面完人都坐不住了,每天在外面,面試前的緊張,面完趕下一場的疲於奔命,有的時候真的感覺好無助,特別是19號那天中午在餐館裏吃了午餐,趴在那睡得那一會,真的想給我個offer,讓我結束秋招吧。
  • 轉機:
    9月20日凌晨,像平常一樣,凌晨兩點左右醒來,發現郵箱裏收到了vivo的錄用函,那一刻真的很感動,很晚很晚了,激動得好久才睡着,白天下午就去了簽約溝通會,還送了一個大禮包,真的很感謝。在那之後又收到了歡聚時代的口頭offer,以及oppo的offer,就這樣慢慢的好起來,心情和狀態慢慢好轉,到最後面試百度時,真的很放鬆。
  • 總結一下面試的公司:
    vivo 歡聚時代 oppo 海康威視 百度 華爲 收到offer,美團 小米 4399等消息,科大訊飛收到offer意向書怎麼又通知無法進入下一階段, 貝殼一面掛,字節二面掛,阿里一面掛,招銀電話面掛,CVTE二面掛,快手、京東筆試不過,滴滴、愛奇藝、小紅書、網易、老虎集團、酷狗、招銀信用卡中心筆試之後無消息,猿輔導、keep面試沒去,很抱歉。
  • 最後:
    真心感謝這個過程中出現的每一個面試官,這個過程雖然很痛苦,但是對自己的積累真的很重要,後面面試中出現了很多內容都得到了前面面試官的點撥,非常感謝。也感謝那個疲於奔命的自己,即使面試衝突了,哪怕時間錯過了,我也會毫不猶豫的趕過去,也感謝這些公司給了面試機會,特別是vivo和百度。

總結:關於秋招總結幾點,

- 1 心態,被拒絕是難免的,一定要調整好心態,同時面試時適度緊張,想開點,心態是最重要的。

- 2 基礎,每個學科的基礎性知識要掌握好,秋招的過程是一個查漏補缺的過程,做好每一面問題的記錄,後來惡補。

- 3 簡歷,簡歷上寫的東西一定要好好理解透,如果被面試官發現你是真的只是會用,那會很被動,也不用理解很透,只需要瞭解個大概,核心概念要知道。

- 4 項目,簡歷上的項目要爛熟於心,最好介紹前要介紹一下應用背景。

- 5 技巧,從自我介紹開始,就要學會介紹自己擅長的,在回答問題的時候也要學會將面試官引導到自己會的領域。

- 6 關於手撕代碼,其實現場手撕題目一般不會太複雜,多爲鏈表、數組排序、查找、二叉樹、字符串操作、海量數據操作等,面試官主要考察你的思路、代碼風格等。最好掌握遞歸、動態規劃等思想。如果寫不出來,也就沒有必要一直耗着,有思路說一下也行。

實習

3月19日阿里電話一面

  1. 強引用和弱引用
  2. HashMap實現。
  3. ArrayList和LinkList的區別;
  4. 紅黑樹;
  5. 設計模式;
  6. View的繪製;

體會:

  • 說話要有條理,要會組織。
  • 基礎知識要紮實。
  • 要學會看源碼,專注某一個方面的技術,懂得透徹才行!

3月26日騰訊電話一面

  1. 異常,多線程,反射,什麼地方使用,解決了什麼問題!
  2. 泛型,和c 模版的區別,泛型擦除。
  3. activity和service的區別。
  4. activity,fragment,view的區別,什麼時候只能用activity,什麼時候只能用fregment。
  5. 進程保活,爲什麼程序會死掉。
  6. svn和git的區別。

體會:

  • 想問題不能太久,不一定要一個具體的答案,重在分析!
    -基礎,基礎,基礎,平時積累!

4月17日華爲面試

  1. StringBuilder和StringBuffer的區別,分別怎麼擴容
  2. 畫項目的一個結構
  3. 項目功能分塊
  4. 廣播分類,分類方式等,有序無序,如何讓一個APP接收另一個APP指定的廣播。
  5. 六種設計原則,用過哪些
  6. 23種設計模式,用了那些
  7. hashmap實現原理
  8. 活動的四種啓動模式,淘寶頁面的方案
  9. startservice和bindservice的區別
  10. 項目中是否使用異步,併發。
  11. framework結構,畫出來(懵逼)[你結構都不知道,寫出來的東西只是能用,華爲是做手機的,不是做Android的,繼續懵逼]
  12. 如何報心跳
    13.內存泄漏,遇到的,如何處理的。

優酷(時間不記得了)

  1. RecyclerView 緩存機制,緩存多少個,爲什麼使用RecyclerView
  2. 微信小程序是如何運行起來的。
  3. Gradle如何分模塊編譯。

秋招

8月30日 平安科技

  1. JVM分那幾個部分
  2. 堆內存和棧內存的區別
  3. 有哪些異常,怎麼處理。
  4. 有哪些樹結構,應用場景
  5. 數據庫索引

9月2日 字節一面

  1. Android 4大組件(英文),及其作用。
  2. 活動的啓動模式和相應活動棧的變化
  3. 自定義view,界面是如何繪製到手機屏幕上的。
  4. HashMap HashTable ConcurrentHashMap的區別。
  5. HashMap中如何獲得key的hash值,hashmap的負載因子是否可以改變。
  6. 時間複雜度和空間複雜度分析。
  7. 手撕字符串反轉(擺手算法)

9月5日 字節二面(涼麪)

  1. HTTP狀態碼(1,2,3……開頭的分別代表什麼意思,206瞭解嗎)
  2. HTTPS和HTTP的區別,祕鑰是如何交換的;
  3. 活動的四種啓動模式,及其應用場景,問了singleTop的應用場景,沒回答好(投的android崗,二面唯一的android問題)
  4. get和post的區別,如果參數只是字符串,可以用get代替post嗎,我說不能,get參數長度受限,面試官:具體限制多少,(不知道)
    4. Java的異常;(我居然答出除0是不可try的,笨死了)
  5. 瀏覽器輸入網址,經歷了什麼。
  6. DNS解析瞭解嗎(只知道DNS解析是通過域名得到ip);
  7. HashMap和HashTable的區別,平時項目都使用的誰?(以爲不會再問計算機網絡了,結果……)
  8. TCP和UDP的區別;
  9. 3次握手和4次揮手。
  10. 手撕單鏈表添加,刪除,反轉(比較easy,最後面試官問會不會斷鏈);

9月2日 小米一面

  1. JVM 內存模型,簡單點的堆棧理解
  2. java四種引用在GC的表現
  3. final finally finalize 區別
  4. Http get post
  5. Android 消息機制,線程是如何確保其Looper只有一個的。
  6. ThreadLocal
  7. view繪製,3個函數
  8. Android 事件分發機制,三個函數,以及其中的調用關係。

9月4日 小米二面

  1. 手寫字符串轉數字(逐位解析,判斷溢出);
  2. Activity的生命週期函數和表現。
  3. 自定義view相關,其layout_width等屬性如何影響其呈現。
  4. bindService和startServie的區別和各自的應用場景。
  5. HashMap和HashSet的實現。
  6. volatile關鍵字的作用(講到了java內存模型,面試官問我怎麼了解到java內存模型的,我很誠實的說準備面試^~^);使用 volatile 可以禁止 JVM 的指令重排,保證在多線程環境下也能正常運行。
  7. java代碼在JVM上會亂序,爲何(不會)->指令重排列
  8. 幾個線程池的線性個數設置,以及其如何管理生命週期;
  9. 裝箱和拆箱如何實現->valueOf 和 xxxValue(xxx爲相應包裝類型對應的基本數據類型,比如int)
  10. 泛型如何實現;
  11. 項目難點、如何解決。

9月2日 阿里一面

  1. 內存泄露 Android 層面,Java層面的原因。
  2. 項目中的Thread如何管理,有沒有封裝相應的工具類。
  3. ArrayList HashMap的區別。
  4. 棧和隊列的區別,分別用數組和鏈表實現隊列,比較區別。
  5. 有A、B兩個二叉樹,判斷A樹是否是B樹的一個子樹。
  6. 如何實現雙向循環鏈表,Android中雙向循環鏈表的使用。
  7. 有哪些排序,選擇一個排序,介紹他的實現思想,如何分析排序效率(我答了時間複雜度和空間複雜度,繼續追問,用空間換取時間,給了一個場景,如果用戶的手機內存比較小512,如果用空間太多,會有什麼影響)。
  8. TCP和UDP的區別,QQ聊天,視頻,遊戲,那個對可靠性需求高,那些用了TCP。
  9. Android中兩種廣播 靜態廣播和動態廣播,有什麼區別?(明明經常用,也知道,當時居然腦袋怎麼突然就想不起來了——常駐和非常駐的區別)。
  10. Android用到那些佈局,(答了經常用的線性和相對,繼續追問,那種會效率高點……)
  11. Thread AsyncTask IntenService 有什麼區別。
  12. 是否用過Android的Sqlite,(學習用過,就沒追問,估計知道我不會)
  13. Android xml佈局三種複用的方式 include,merge,ViewStub的區別(我只知道前兩種,也沒用實際用過,沒答上來)。

9月10日 招銀電話一面

  1. 類加載,在什麼時候加載一個類
  2. 類的初始化
  3. ThreadLocal
  4. Android中的進程通信
  5. 消息機制,爲什麼一個線程要有一個looper,不能共享嗎
  6. Service運行在單獨的進程還是UI進程
  7. webview,混合開發
  8. IntentService
  9. Binder參數限制

9月11日 貝殼一面(涼麪)

  1. px sp dp 的區別
  2. java內存模型,volatile關鍵字
  3. long double int 安全性(大意是多線程操作那個類型的變量是安全的),long double是如何存儲的。
  4. 數據庫索引,B 樹葉子節點存儲的信息
  5. 聚集索引和非聚集索引
  6. 海量數據排序。
  7. 指令重排列問題。
  8. 垃圾回收算法。
  9. 可回收分析,new一個對象是否可回收。

9月16日 海康威視一面

  1. 活動生命週期,活動的啓動模式。
  2. 服務的啓動方式,多次startService如果stop問題。
  3. 四大組件
  4. 爲何不能在子線程中更新UI問題。
  5. 項目。
  6. 說一個你關注的公衆號中的一篇文章。
    (剩下一些記不清了,總體較爲基礎)

9月17日 華爲一面

  1. 項目
  2. 活動的四種啓動模式。
  3. C 申請內存的方式,如何釋放內存(我只答了析構函數,面試官還提示了delete)
  4. 四大組件
  5. android中java和一般的java有何區別(答得比較差,說了google針對android封裝了許多東西,比如說AsyncTask等,然後android運行在Dalvik虛擬機,並不是普通的jvm上,同時字節碼也不同,巴拉巴拉巴拉)
  6. 項目中是如何優化ZXing二維碼掃描的。
  7. java中的多線程池。
  8. 手撕一個android中多線程實現貪吃蛇的邏輯,在線程中獲得上下左右方向,並更新UI(這裏其實主要考察的是線程的使用,以及android中不能在子線程更新UI等)。

9月17日 華爲二面

  1. 先介紹項目。
  2. 手撕一個字符串問題,在字符串a中找到字符串b第一次出現的位置,以及出現了幾次(我悶頭一想這不是kmp嗎,結果寫了後,面試官說,你直接substring不就行了,寫什麼kmp,那一刻,覺得自己掛了)
  3. 說說項目中如何處理數據庫併發的。
  4. 如何解決sql注入攻擊(我說了參數綁定,面試官似乎不怎麼滿意)。
  5. 內存泄露
  6. 如何優化二維碼掃描(和一面面試官同樣的問題)
  7. java中8大基本數據類型。
  8. java泛型
    (還有些不大記得了)

9月17日 華爲三面

  1. 先介紹項目,每一個都介紹,面試官對第一個比較感興趣,叫我仔細給介紹,然後還和我探討其中一些硬件方案。
  2. 有什麼樂趣,我說看中超,面試官說我心臟很強大啊。
  3. 問了一下android中四大控件,不是說三面就是聊聊人生嗎。
  4. 活動的啓動模式,平時怎麼使用的。
    (其他就是一些人生話題了)

9月17日 美團一面

  1. 項目,每一個項目,感覺美團一面全程挖項目。
  2. 畫一下MVP模式,介紹MVP帶來的好處。
  3. 手撕兩個數組合併成一個數組,保持有序,寫出空間和時間複雜度。
  4. 如何優化二維碼掃描。
  5. android的靜態廣播和動態廣播
    大部分在聊項目,就項目中的一些點做了一些詢問。

9月17日 美團二面

  1. 介紹項目
  2. 項目難點
  3. 微信小程序是如何運行起來的(我只說了從服務器上下載程序包,然後面試官問什麼格式,我不知道,然後面試官就說其實就是一個zip,然後跑起來的是H5,這個介紹對我而言非常重要,因爲百度面試官也同樣問了我)。
  4. 問我做了很多上層應用的開發,那對算法和數據結構還掌握多少,我說數據結構還行,算法有點薄弱,然後他說那就寫個算法吧,懵逼,寫個n的階層吧,一下覺得面試官又在逗我,最後寫完,他說我只是看看你還記得遞歸不,我........
  5. 問了android其他的開發框架,以及新的開發語言Kotlin等等。
  6. 進程間通信方式
  7. 內存溢出
  8. java內存模型
  9. GC
  10. tcp和udp

9月17日 vivo技術面

  1. 介紹項目
  2. android的消息機制
  3. 廣播分類,靜態廣播和動態廣播的區別。
  4. android中的服務,可以在服務中做耗時操作嗎。
  5. 你們是如何做進程保活的,介紹一些oom值。
  6. 將一個數組分成兩部分,使其和相接近,我說了和接近就是做差接近於0,然後採用遞歸嘗試着將一個數放到左邊右邊,面試官說那如果最後一個數很大呢,不會了……其實這個題應該用dp,採用揹包問題思想。
  7. 聊了約瑟夫環問題,1-50個人,圍成一圈,報數每9個出去,最後一個是誰,我說用循環單鏈表。
    還有一些記不清了。

9月18日 歡聚時代一面

  1. 聊項目
  2. android 活動的生命週期和啓動模式。平時用了哪些
  3. android的消息機制
  4. android的view繪製,
  5. android 的事件分發,三個主要的函數。
  6. 內存泄露
  7. 如何找到界面卡頓(當時不知道)
  8. java中四種引用,new一個對象會被回收嗎
  9. GC算法
  10. 手撕 找到一個鏈表的中間元素,找到倒數第k個,有什麼高效的操作,沒想出來。
  11. tcp和udp
  12. 如何優化二維碼掃描
  13. 如何做的進程保活

9月18日 科大訊飛一面

  1. 活動的生命週期。
  2. 項目
  3. 科大訊飛的語音合成你使用了,有什麼問題,答了一些多音字讀不準確。
  4. 介紹了OCR,介紹了Tesseract。還問我現在如果叫我繼承一個OCR,識別手寫體需要多久,我說很快,因爲不需要訓練數據集。
    科大訊飛可能在android端沒什麼大的投入,所以聊了一些其他的問題,也不怎麼記得了。二面在技術上就畫了一下後臺的項目分層結構。

9月18日CVTE電話面試

  1. 進程保活和活動拉起,簡歷有寫
  2. 如何優化二維碼掃描,還聊到了微信的二維碼掃描。
  3. 你怎麼看C 和java,巴拉巴拉巴拉
  4. java泛型
  5. java四種引用
  6. GC算法
  7. volatile關鍵字
  8. synchronized和reetrankLock
  9. awit和sleep的區別
  10. 爲什麼迅雷服務器下載會比瀏覽器快一點(叫我放開思想想一下,我說可能迅雷中間經過了他自己的服務器)
  11. https,對稱加密和非對稱加密
  12. 線程池和關鍵參數。
  13. 實時性要求很高的是遊戲是tcp還是upd。

9月19日 百度一面

  1. 重新說一遍筆試題中的SparseArray和Hashmap的區別。
  2. 介紹項目
  3. 二維碼掃描如何優化
  4. Camera如何調焦
  5. 重載和重寫的區別
  6. 如何在子類中調用父類的方法
  7. 介紹項目中的東西,將界面的結構畫出來,特別是層級關係。
  8. RecyclerView和ListView的區別
  9. android的消息機制,Handler的構造函數有傳入Looper的嗎,Looper.prepare是幹什麼的。
  10. 開發一個微信小程序的過程是怎樣的,微信小程序是如何運行起來的(此時真的很感激美團二面面試官)
  11. js是如何調用java代碼的,我說了我用過WebView寫過混合開發,懂一丟丟。
  12. 寫佈局文件時需要注意什麼?如何優化。
  13. 微信小程序是基於什麼運行的,我說了H5,面試官說其實就是一個瀏覽器跑了一個本地的網頁,也就是H5。

9月19日 OPPO技術面

  1. 介紹項目
  2. 聊項目,面試官用過ZXing,所以對我用的ZXing以及優化這塊非常感興趣,還說二維碼識別其實只需要部分信息就可以。再問我有沒有從bitmap上下功夫,我說失敗了。
  3. 什麼是ANR
  4. 四大組件
  5. 廣播的種類,以及使用。
  6. android的消息機制。
  7. view的繪製
  8. 內存泄露,使用什麼檢查,我說LeakCanary,他說LeaksCanary只能檢查一些組件啥的,並不全面。
  9. GC算法,GC Root中存放了那些信息。
  10. 標記-整理如何實現。

9月19日 歡聚時代二面

主管面,沒有多少技術問題,大多關注在項目上。

  1. 項目,難點,給面試官看了寫的微信小程序。
  2. 二維碼掃描優化如何做的。
  3. 前後臺是如何分工的。
  4. 在培訓用戶中的難點是什麼。
  5. 覺得把對用戶培訓的時間拿來學習算法和數據結構是不是要好很多?
  6. 工作地點等等……

9月19日 CVTE視頻面(涼麪)

1 . 介紹項目

  1. 項目中用到了什麼設計模式,打了單例模式和觀察者模式
  2. 寫一個觀察者模式,寫得不好,連觀察者和被觀察者都沒有搞清楚。
  3. 介紹一下MVP,MVVM
  4. 介紹一下2018年google開發者大會上提出的AAC(完全不知道,哎)
  5. java中的四種引用
  6. Android各個版本的新特性。
  7. LeaksCanary原理,還有用過其他的內存泄漏檢測工具嗎
  8. okttp源碼瞭解嗎
    其他的不記得了

9月20日 百度二面

(這是我遇到最新穎的面試,面試官拋出概念,我自己講,能講多少講多少)

  1. 深挖簡歷上的各種瞭解。
  2. 講一下okttp,那些關鍵的對象,同步和異步的訪問函數。client是那個client
  3. ButterKnift如何使用,需要注意那些問題
  4. DataBinding如何使用,瞭解其實現原理嗎,你都不用MVVM,你用DataBinding幹什麼。
  5. 講一下AIDL,說說進程間通訊方式。
  6. 除了GPS定位還有什麼定位,我說網絡定位,問我如何實現,我說不知道,他開導說手機連接着什麼嘛,我說基站,然後一通巴拉巴拉,不知道自己說了啥。
  7. 講一下二維碼掃描的優化
  8. 說一下如何做到進程保活的,什麼是oom值,以及JobScheduler
  9. 學過C 嗎
  10. jvm內存分區,棧溢出發生在那
  11. 手撕 從先序遍歷和中序遍歷復原原來的二叉樹
  12. 手撕 快排 插入排序
  13. https的機制,加密,證書祕鑰交換等。
  14. android 的消息機制,
  15. view繪製
  16. 事件分發流程,攔截函數叫什麼,用沒用過事件分發。
  17. 學android看了那些書,《第一行代碼》有多少頁,第一行代碼和開發者探祕有那些內容。
  18. 佈局優化。

9月22日 百度三面

主管面,一半人生一半技術吧,最後介紹了20多分鐘目前他所在的部門所在做的東西,真的超乎了我這種菜雞的想像啊。

  1. 聊項目,很細很細
  2. 很關注二維碼掃描優化這塊,有沒有在bitmap上下功夫。
  3. 爲什麼做進程保活和活動拉起
  4. 爲什麼地圖用百度的,語音合成用科大訊飛的,我說做了一些比較,發現百度的在某些多音字上讀不正確。
    其他的就是一些人生話題,三面感覺真的很nice。

資料

java 計算機網絡 操作系統等

Android相關

大神整理的劍指Offer

歡迎賞臉關注:家佳Talk

歡迎賞臉關注:家佳Talk

本文內容個人拙見,若有出入,歡迎指正!

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