作者:MingLL
背景:211本科菜雞
今年由于疫情,上半年一直在家里,2月份本來無憂無慮,呆在家里不給國家添亂的時候,發現身邊的同學找到了大廠的offer,心里開始有點慌張,
本來想在3月份如果能回到學校,就開始考研之路,但誰曾想這個假期,一直到了9月份,在家也嘗試過考研,自己還是耐不住學習的寂寞,放棄了,走上了找作業的路途,

3月份,開始投簡歷,在牛客網上,找了幾個內推,投了位元組,騰訊和Alibaba,(ps:那時候也不知道誰給的勇氣),本來以為自己的簡歷不可能過篩選的,但每個投的簡歷都收到了面試通知,(ps:可能那時候投的是實習吧)


無一例外,每一次的失敗都是以失敗告終,中間被撈起來,又被拒絕,可能是自己的能力沒有達到他們公司的標準吧,
到8月份,還是沒有收到一家公司的offer,在開學前總結了一下這段時間的面試,感覺自己總是在飄在空中,沒有站在地下,

基礎還是沒有打牢,9月份沒有再投簡歷,靜下心,學習基礎知識, 在10月份的時候,開始了新一輪的投遞,
美團,知乎,bilibili,拼多多,京東,等待了好久,沒有一個邀請我做筆試和面試的,那時候真的以為,抓不住秋招尾巴了,只能自己安慰自己說:自己的能力還不夠,再加油,春招一定進大廠,
在漫長的等待后,美團給我發來了面試通知,開啟了我做夢般的面試流程,星期一 一面,星期四 二面,星期五 三面,晚上就收到了offer通知,
真的就像做夢一樣,Offer到手的時候人還是懵逼狀態,面試官問的問題我還記得,今天就幫大家總結總結經驗吧,

一面
上來首先自我介紹,隨后兩道演算法題
1、陣列中最長上升子序列
2、連續子陣列最大和
3、匿名內部類訪問區域變數的時候,為什么變數必須要加上final?
4、HashMap底層資料結構?怎么解決hash碰撞?擴容機制是怎樣的?
5、講一講HashTable和HashMap的區別?
6、LinkedHashMap知道嗎,講一下?
7、講一講HashMap和TreeMap的區別?
8、JVM記憶體區域模型?各部分具體的作用是什么?
9、類加載的程序講一下?
10、synchronized和volatile的區別
11、DCL一定是安全的嗎?為什么?
12、什么是指令重排?
13、apk有幾種安裝方式?apk的安裝程序是怎樣的?
14、講一講Android都用過哪些虛擬機?Dalvik虛擬機和ART虛擬機的區別是什么?
15、Android系統是基于Linux內核的,為什么還要用虛擬機?
16、講一講事件分發機制?.
反問:
1、對Android未來發展的看法?
2、部門是做什么的?
二面
1、自我介紹
2、lifecycle了解嗎
3、recycleview了解嗎(不了解)
4、非對稱加密,對稱加密
5、https,http
6、狀態碼的含義,404,502
7、tls ssl四次握手
8、tcp三次握手
9、apk組成
10、leakcanary原始碼結構
11、retrofit和okhttp的原始碼結構
12、view的繪制程序
13、activity,Window,view的關系(還好看過原始碼)
14、activity有幾個Window
15、事件分發原始碼
16、activity啟動另外一個activity的時候橫屏切換再點擊回傳,程序中發生的生命周期
17、自己做的專案用到的設計模式
18、了解的設計模式在原始碼上哪些地方有用到
19、int float double多少位
這些問題寫出來看著挺簡單的,但是會一直往深了問,比如一個activity啟動另外一個activity,而且我感覺這個面試官是想到哪就問到哪
反問:
1、面試情況如何?
三面
1、自我介紹
2、先寫一個演算法題,一個陣列,有正有負,是否存在一個三個數的子序列,并且嚴格遞增,解釋了一下子序列,解釋了一下嚴格遞增,O(n2)寫了,讓優化……提示提示提示,我死活想不出來,這時候面試官的提示越來越高大上,提示包含關系,提示命題的逆否,提示到我越來越想不起來……過了很久很久,然后說我們下一個環節【此時已經知道肯定沒戲了】【力扣334】
3、執行緒池,執行緒池引數,從提交任務開始的程序
4、jvm執行緒怎么調度的
5、執行緒生命周期,我說到中間他就會打斷說那這個情況怎么出現呢,java怎么實作的,如何結束執行緒?提供了什么方法
6、java 的鎖怎么實作的?
7、顯式控制各個執行緒競爭的有哪些物件呢?
8、問作業系統一定有執行緒嗎?
9、static、final、finalize、finally?
10、設計題,討論一下,如果我們要自己做一個在線合作檔案,類似騰訊檔案,有兩個需求,一個是多個人在操作的時候盡可能快的要讓另一個人去看到前面人的改動;另一個需求是要處理所有人操作的競爭問題,你是怎么想的呢?excel直觀,如果是一個doc型別在協作呢?
11、了解資料庫嗎?為什么資料庫用索引來查找會很快呢?
12、一個執行緒會占用多少系統資源呢?
反問:
1、給我什么建議?
寫在最后的話
面試真的可以提升自己很多的知識,大廠對應屆生的包容真的很高,他們不會因為你沒有專案經歷把你掛掉,不會因為你沒有實習經歷把你掛掉,不會因為你沒有競賽經歷把你掛掉,
這些都沒有都可以,面試官會跟你聊基礎知識,比如計算機網路,作業系統,計算機組成原理,你要掌握的夠深入,那樣面試也是可以過的,
有一次面試,面試官跟我討論TCP連接, 當客戶端和服務器建立三次握手后,客戶端突然斷網,這時候服務器會知道客戶端掉線了嗎?
然后客戶端網恢復了,還需要在建立TCP的三次握手嘛?
那時候會有四次揮手嗎?
當時我被這個問題問的有點兒懵,(后面也嘗試找到這個問題的答案,理解的還不是很深刻,有知道的小伙伴可以給我講解一下)
大廠對計算機的基礎知識的考察真的很深入,后面想了想確實,計算機的基礎掌握牢靠了,在接觸新的知識真的很快,計算機方面的知識又是更新特別快的,需要不斷的學習,基礎真的很重要,
所以綜上,真的別杞人憂天,沉下心來學好基礎,提升技能比什么都重要,如果你找不到作業,只能說你學的還不夠好,或者能力還不達標,并不能說明沒有這個崗位的招聘,以個人能力的不行來否定整個市場的需求是弱者的行為!
最后,在這里我也分享一份干貨,大佬收錄整理的Android學習PDF+架構視頻+面試檔案+原始碼筆記,還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,
也可以分享給身邊好友一起學習并且大多數都整理了答案,熟悉這些知識點會大大增加通過前兩輪技術面試的幾率,

最后,祝大家都能進入自己心儀的大公司,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232031.html
標籤:其他
下一篇:VHDL實作全加器
