秋招正式結束,最後感謝百度給予的認可,真的有種受寵若驚。簡單回顧一下秋招。也給出自己的面經,文章最後列出兩個自己看的資料。
- 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日阿里電話一面
- 強引用和弱引用。
- HashMap實現。
- ArrayList和LinkList的區別;
- 紅黑樹;
- 設計模式;
- View的繪製;
體會:
- 說話要有條理,要會組織。
- 基礎知識要紮實。
- 要學會看源碼,專注某一個方面的技術,懂得透徹才行!
3月26日騰訊電話一面
- 異常,多線程,反射,什麼地方使用,解決了什麼問題!
- 泛型,和c 模版的區別,泛型擦除。
- activity和service的區別。
- activity,fragment,view的區別,什麼時候只能用activity,什麼時候只能用fregment。
- 進程保活,爲什麼程序會死掉。
- svn和git的區別。
體會:
- 想問題不能太久,不一定要一個具體的答案,重在分析!
-基礎,基礎,基礎,平時積累!
4月17日華爲面試
- StringBuilder和StringBuffer的區別,分別怎麼擴容
- 畫項目的一個結構
- 項目功能分塊
- 廣播分類,分類方式等,有序無序,如何讓一個APP接收另一個APP指定的廣播。
- 六種設計原則,用過哪些
- 23種設計模式,用了那些
- hashmap實現原理
- 活動的四種啓動模式,淘寶頁面的方案
- startservice和bindservice的區別
- 項目中是否使用異步,併發。
- framework結構,畫出來(懵逼)[你結構都不知道,寫出來的東西只是能用,華爲是做手機的,不是做Android的,繼續懵逼]
- 如何報心跳
13.內存泄漏,遇到的,如何處理的。
優酷(時間不記得了)
- RecyclerView 緩存機制,緩存多少個,爲什麼使用RecyclerView
- 微信小程序是如何運行起來的。
- Gradle如何分模塊編譯。
秋招
8月30日 平安科技
- JVM分那幾個部分
- 堆內存和棧內存的區別
- 有哪些異常,怎麼處理。
- 有哪些樹結構,應用場景
- 數據庫索引
9月2日 字節一面
- Android 4大組件(英文),及其作用。
- 活動的啓動模式和相應活動棧的變化
- 自定義view,界面是如何繪製到手機屏幕上的。
- HashMap HashTable ConcurrentHashMap的區別。
- HashMap中如何獲得key的hash值,hashmap的負載因子是否可以改變。
- 時間複雜度和空間複雜度分析。
- 手撕字符串反轉(擺手算法)
9月5日 字節二面(涼麪)
- HTTP狀態碼(1,2,3……開頭的分別代表什麼意思,206瞭解嗎)
- HTTPS和HTTP的區別,祕鑰是如何交換的;
- 活動的四種啓動模式,及其應用場景,問了singleTop的應用場景,沒回答好(投的android崗,二面唯一的android問題)
- get和post的區別,如果參數只是字符串,可以用get代替post嗎,我說不能,get參數長度受限,面試官:具體限制多少,(不知道)
4. Java的異常;(我居然答出除0是不可try的,笨死了) - 瀏覽器輸入網址,經歷了什麼。
- DNS解析瞭解嗎(只知道DNS解析是通過域名得到ip);
- HashMap和HashTable的區別,平時項目都使用的誰?(以爲不會再問計算機網絡了,結果……)
- TCP和UDP的區別;
- 3次握手和4次揮手。
- 手撕單鏈表添加,刪除,反轉(比較easy,最後面試官問會不會斷鏈);
9月2日 小米一面
- JVM 內存模型,簡單點的堆棧理解
- java四種引用在GC的表現
- final finally finalize 區別
- Http get post
- Android 消息機制,線程是如何確保其Looper只有一個的。
- ThreadLocal
- view繪製,3個函數
- Android 事件分發機制,三個函數,以及其中的調用關係。
9月4日 小米二面
- 手寫字符串轉數字(逐位解析,判斷溢出);
- Activity的生命週期函數和表現。
- 自定義view相關,其layout_width等屬性如何影響其呈現。
- bindService和startServie的區別和各自的應用場景。
- HashMap和HashSet的實現。
- volatile關鍵字的作用(講到了java內存模型,面試官問我怎麼了解到java內存模型的,我很誠實的說準備面試^~^);使用 volatile 可以禁止 JVM 的指令重排,保證在多線程環境下也能正常運行。
- java代碼在JVM上會亂序,爲何(不會)->指令重排列 ;
- 幾個線程池的線性個數設置,以及其如何管理生命週期;
- 裝箱和拆箱如何實現->valueOf 和 xxxValue(xxx爲相應包裝類型對應的基本數據類型,比如int)
- 泛型如何實現;
- 項目難點、如何解決。
9月2日 阿里一面
- 內存泄露 Android 層面,Java層面的原因。
- 項目中的Thread如何管理,有沒有封裝相應的工具類。
- ArrayList HashMap的區別。
- 棧和隊列的區別,分別用數組和鏈表實現隊列,比較區別。
- 有A、B兩個二叉樹,判斷A樹是否是B樹的一個子樹。
- 如何實現雙向循環鏈表,Android中雙向循環鏈表的使用。
- 有哪些排序,選擇一個排序,介紹他的實現思想,如何分析排序效率(我答了時間複雜度和空間複雜度,繼續追問,用空間換取時間,給了一個場景,如果用戶的手機內存比較小512,如果用空間太多,會有什麼影響)。
- TCP和UDP的區別,QQ聊天,視頻,遊戲,那個對可靠性需求高,那些用了TCP。
- Android中兩種廣播 靜態廣播和動態廣播,有什麼區別?(明明經常用,也知道,當時居然腦袋怎麼突然就想不起來了——常駐和非常駐的區別)。
- Android用到那些佈局,(答了經常用的線性和相對,繼續追問,那種會效率高點……)
- Thread AsyncTask IntenService 有什麼區別。
- 是否用過Android的Sqlite,(學習用過,就沒追問,估計知道我不會)
- Android xml佈局三種複用的方式 include,merge,ViewStub的區別(我只知道前兩種,也沒用實際用過,沒答上來)。
9月10日 招銀電話一面
- 類加載,在什麼時候加載一個類
- 類的初始化
- ThreadLocal
- Android中的進程通信
- 消息機制,爲什麼一個線程要有一個looper,不能共享嗎
- Service運行在單獨的進程還是UI進程
- webview,混合開發
- IntentService
- Binder參數限制
9月11日 貝殼一面(涼麪)
- px sp dp 的區別
- java內存模型,volatile關鍵字
- long double int 安全性(大意是多線程操作那個類型的變量是安全的),long double是如何存儲的。
- 數據庫索引,B 樹葉子節點存儲的信息
- 聚集索引和非聚集索引
- 海量數據排序。
- 指令重排列問題。
- 垃圾回收算法。
- 可回收分析,new一個對象是否可回收。
9月16日 海康威視一面
- 活動生命週期,活動的啓動模式。
- 服務的啓動方式,多次startService如果stop問題。
- 四大組件
- 爲何不能在子線程中更新UI問題。
- 項目。
- 說一個你關注的公衆號中的一篇文章。
(剩下一些記不清了,總體較爲基礎)
9月17日 華爲一面
- 項目
- 活動的四種啓動模式。
- C 申請內存的方式,如何釋放內存(我只答了析構函數,面試官還提示了delete)
- 四大組件
- android中java和一般的java有何區別(答得比較差,說了google針對android封裝了許多東西,比如說AsyncTask等,然後android運行在Dalvik虛擬機,並不是普通的jvm上,同時字節碼也不同,巴拉巴拉巴拉)
- 項目中是如何優化ZXing二維碼掃描的。
- java中的多線程池。
- 手撕一個android中多線程實現貪吃蛇的邏輯,在線程中獲得上下左右方向,並更新UI(這裏其實主要考察的是線程的使用,以及android中不能在子線程更新UI等)。
9月17日 華爲二面
- 先介紹項目。
- 手撕一個字符串問題,在字符串a中找到字符串b第一次出現的位置,以及出現了幾次(我悶頭一想這不是kmp嗎,結果寫了後,面試官說,你直接substring不就行了,寫什麼kmp,那一刻,覺得自己掛了)
- 說說項目中如何處理數據庫併發的。
- 如何解決sql注入攻擊(我說了參數綁定,面試官似乎不怎麼滿意)。
- 內存泄露
- 如何優化二維碼掃描(和一面面試官同樣的問題)
- java中8大基本數據類型。
- java泛型
(還有些不大記得了)
9月17日 華爲三面
- 先介紹項目,每一個都介紹,面試官對第一個比較感興趣,叫我仔細給介紹,然後還和我探討其中一些硬件方案。
- 有什麼樂趣,我說看中超,面試官說我心臟很強大啊。
- 問了一下android中四大控件,不是說三面就是聊聊人生嗎。
- 活動的啓動模式,平時怎麼使用的。
(其他就是一些人生話題了)
9月17日 美團一面
- 項目,每一個項目,感覺美團一面全程挖項目。
- 畫一下MVP模式,介紹MVP帶來的好處。
- 手撕兩個數組合併成一個數組,保持有序,寫出空間和時間複雜度。
- 如何優化二維碼掃描。
- android的靜態廣播和動態廣播
大部分在聊項目,就項目中的一些點做了一些詢問。
9月17日 美團二面
- 介紹項目
- 項目難點
- 微信小程序是如何運行起來的(我只說了從服務器上下載程序包,然後面試官問什麼格式,我不知道,然後面試官就說其實就是一個zip,然後跑起來的是H5,這個介紹對我而言非常重要,因爲百度面試官也同樣問了我)。
- 問我做了很多上層應用的開發,那對算法和數據結構還掌握多少,我說數據結構還行,算法有點薄弱,然後他說那就寫個算法吧,懵逼,寫個n的階層吧,一下覺得面試官又在逗我,最後寫完,他說我只是看看你還記得遞歸不,我........
- 問了android其他的開發框架,以及新的開發語言Kotlin等等。
- 進程間通信方式
- 內存溢出
- java內存模型
- GC
- tcp和udp
9月17日 vivo技術面
- 介紹項目
- android的消息機制
- 廣播分類,靜態廣播和動態廣播的區別。
- android中的服務,可以在服務中做耗時操作嗎。
- 你們是如何做進程保活的,介紹一些oom值。
- 將一個數組分成兩部分,使其和相接近,我說了和接近就是做差接近於0,然後採用遞歸嘗試着將一個數放到左邊右邊,面試官說那如果最後一個數很大呢,不會了……其實這個題應該用dp,採用揹包問題思想。
- 聊了約瑟夫環問題,1-50個人,圍成一圈,報數每9個出去,最後一個是誰,我說用循環單鏈表。
還有一些記不清了。
9月18日 歡聚時代一面
- 聊項目
- android 活動的生命週期和啓動模式。平時用了哪些
- android的消息機制
- android的view繪製,
- android 的事件分發,三個主要的函數。
- 內存泄露
- 如何找到界面卡頓(當時不知道)
- java中四種引用,new一個對象會被回收嗎
- GC算法
- 手撕 找到一個鏈表的中間元素,找到倒數第k個,有什麼高效的操作,沒想出來。
- tcp和udp
- 如何優化二維碼掃描
- 如何做的進程保活
9月18日 科大訊飛一面
- 活動的生命週期。
- 項目
- 科大訊飛的語音合成你使用了,有什麼問題,答了一些多音字讀不準確。
- 介紹了OCR,介紹了Tesseract。還問我現在如果叫我繼承一個OCR,識別手寫體需要多久,我說很快,因爲不需要訓練數據集。
科大訊飛可能在android端沒什麼大的投入,所以聊了一些其他的問題,也不怎麼記得了。二面在技術上就畫了一下後臺的項目分層結構。
9月18日CVTE電話面試
- 進程保活和活動拉起,簡歷有寫
- 如何優化二維碼掃描,還聊到了微信的二維碼掃描。
- 你怎麼看C 和java,巴拉巴拉巴拉
- java泛型
- java四種引用
- GC算法
- volatile關鍵字
- synchronized和reetrankLock
- awit和sleep的區別
- 爲什麼迅雷服務器下載會比瀏覽器快一點(叫我放開思想想一下,我說可能迅雷中間經過了他自己的服務器)
- https,對稱加密和非對稱加密
- 線程池和關鍵參數。
- 實時性要求很高的是遊戲是tcp還是upd。
9月19日 百度一面
- 重新說一遍筆試題中的SparseArray和Hashmap的區別。
- 介紹項目
- 二維碼掃描如何優化
- Camera如何調焦
- 重載和重寫的區別
- 如何在子類中調用父類的方法
- 介紹項目中的東西,將界面的結構畫出來,特別是層級關係。
- RecyclerView和ListView的區別
- android的消息機制,Handler的構造函數有傳入Looper的嗎,Looper.prepare是幹什麼的。
- 開發一個微信小程序的過程是怎樣的,微信小程序是如何運行起來的(此時真的很感激美團二面面試官)
- js是如何調用java代碼的,我說了我用過WebView寫過混合開發,懂一丟丟。
- 寫佈局文件時需要注意什麼?如何優化。
- 微信小程序是基於什麼運行的,我說了H5,面試官說其實就是一個瀏覽器跑了一個本地的網頁,也就是H5。
9月19日 OPPO技術面
- 介紹項目
- 聊項目,面試官用過ZXing,所以對我用的ZXing以及優化這塊非常感興趣,還說二維碼識別其實只需要部分信息就可以。再問我有沒有從bitmap上下功夫,我說失敗了。
- 什麼是ANR
- 四大組件
- 廣播的種類,以及使用。
- android的消息機制。
- view的繪製
- 內存泄露,使用什麼檢查,我說LeakCanary,他說LeaksCanary只能檢查一些組件啥的,並不全面。
- GC算法,GC Root中存放了那些信息。
- 標記-整理如何實現。
9月19日 歡聚時代二面
主管面,沒有多少技術問題,大多關注在項目上。
- 項目,難點,給面試官看了寫的微信小程序。
- 二維碼掃描優化如何做的。
- 前後臺是如何分工的。
- 在培訓用戶中的難點是什麼。
- 覺得把對用戶培訓的時間拿來學習算法和數據結構是不是要好很多?
- 工作地點等等……
9月19日 CVTE視頻面(涼麪)
1 . 介紹項目
- 項目中用到了什麼設計模式,打了單例模式和觀察者模式
- 寫一個觀察者模式,寫得不好,連觀察者和被觀察者都沒有搞清楚。
- 介紹一下MVP,MVVM
- 介紹一下2018年google開發者大會上提出的AAC(完全不知道,哎)
- java中的四種引用
- Android各個版本的新特性。
- LeaksCanary原理,還有用過其他的內存泄漏檢測工具嗎
- okttp源碼瞭解嗎
其他的不記得了
9月20日 百度二面
(這是我遇到最新穎的面試,面試官拋出概念,我自己講,能講多少講多少)
- 深挖簡歷上的各種瞭解。
- 講一下okttp,那些關鍵的對象,同步和異步的訪問函數。client是那個client
- ButterKnift如何使用,需要注意那些問題
- DataBinding如何使用,瞭解其實現原理嗎,你都不用MVVM,你用DataBinding幹什麼。
- 講一下AIDL,說說進程間通訊方式。
- 除了GPS定位還有什麼定位,我說網絡定位,問我如何實現,我說不知道,他開導說手機連接着什麼嘛,我說基站,然後一通巴拉巴拉,不知道自己說了啥。
- 講一下二維碼掃描的優化
- 說一下如何做到進程保活的,什麼是oom值,以及JobScheduler
- 學過C 嗎
- jvm內存分區,棧溢出發生在那
- 手撕 從先序遍歷和中序遍歷復原原來的二叉樹
- 手撕 快排 插入排序
- https的機制,加密,證書祕鑰交換等。
- android 的消息機制,
- view繪製
- 事件分發流程,攔截函數叫什麼,用沒用過事件分發。
- 學android看了那些書,《第一行代碼》有多少頁,第一行代碼和開發者探祕有那些內容。
- 佈局優化。
9月22日 百度三面
主管面,一半人生一半技術吧,最後介紹了20多分鐘目前他所在的部門所在做的東西,真的超乎了我這種菜雞的想像啊。
- 聊項目,很細很細
- 很關注二維碼掃描優化這塊,有沒有在bitmap上下功夫。
- 爲什麼做進程保活和活動拉起
- 爲什麼地圖用百度的,語音合成用科大訊飛的,我說做了一些比較,發現百度的在某些多音字上讀不正確。
其他的就是一些人生話題,三面感覺真的很nice。
資料
歡迎賞臉關注:家佳Talk
本文內容個人拙見,若有出入,歡迎指正!