一份來自一月寒冬網際網路一線的面經(附面試題)
1.背景:
因為公司變動,lz不得不出來看看機會, 面試的崗位主要是後端,歷經三週,面了北京大大小小的幾家公司,最後收穫了滿意的offer。
自己也成長收穫了不少, 謹以筆記,自己可以日後回憶,也希望能幫助到最近寒冬下需要找工作的同學,在文章的後面會附上一點小心得和建議。
2.level
我是16年本科畢業, 算上實習接近2年半-3年的工作經歷吧,一直做java後端。 自己定位大概能到p6+的水平。有大廠經驗,本科211, 所以面試機會總體來說還是挺多的。
3.過程
大概是從元旦過後開始寫簡歷,投簡歷,從7號開始陸陸續續面了若干公司, 有好有壞,以表格形式記錄如下,以我面試的時間排序。
宣告:雖然部落格沒有什麼人看,但是如果您認為記錄有不實或者傷害到下述公司名譽啥的, 直接聯絡我刪除即可。
公司 | 部門 | 渠道 | 結果 | 感受(辦公環境,面試難度,感受) |
百信銀行 |
DevOps |
Boss |
4+0,拿到offer. (4技術面 0hr面,下同) |
百信的位置和辦公環境都很不錯,位於安貞門。 面試官人很nice,沒有多餘的操作, 並且友好地幫我倒了一杯水。 主要針對簡歷中的專案,以及java基礎進行面試。 難度也是循序漸進, 說實話因為是第一家面試, 我確實很多地方沒有準備好,但是還是感謝面試官給我機會。 感受:之前感覺銀行可能比較水, 但是感覺各方面都挺與時俱進的, 待遇和人文也很有競爭力。 百信應該有大幾百人的研發團隊,各方面應該都不輸於D輪的網際網路公司。 總體是比較讚的。 |
動動 | Boss | 線上筆試 |
3道Codility,英文,大概3h限時, 我應該1h就寫完了,用例跑通我就提交了,但是隻有一道題ac。(很奇怪,也沒有錯誤用例的提示,和LeetCode有些不一樣) 然後hr還是讓我去面試, 我拒絕了,可能是我當時已經對這家公司沒有太大興趣了。 |
|
悉見科技 | 筆試+面試 |
一家AI創業公司, 看jd介紹不錯就去了。 最後發現是在一個很偏,有點破的創業園,裡面環境有點像家鄉的網咖。 筆試3道很簡單的題, 面試也沒什麼深度,面試官說實話感覺挺菜的。 總體技術和網際網路差別很大, 我當時也是抱著練手的態度過去。 所以也沒下文了。 |
||
vivo | 金融 | Boss | 視訊面試 |
1面視訊面,難度循序漸進,兩位面試官提問。 面試官說第二天hr聯絡我,結果也沒聯絡。我也沒問了。 主要是因為vivo在深圳,我在北京,可能我也不是很想換城市,後面投的都是在北京了。 |
美團 | -- | Boss | 3+0 拿到offer |
美團的環境感覺就是標準的網際網路風格, 面試官也很務實友好, 難度循序漸進,二面會問一些底層,併發的理解。 美團無論是從技術沉澱還是我面試團隊的潛力, 都是我很心儀的。 很幸運也給了我一個不錯的定級和待遇。 |
小米 | 有品 | Boss | 2面撤了 |
說實話,我開始是不想投小米的,但是考慮到我是湖北人,可能回武漢。 但是!!!我面試之前應該在脈脈上搜一搜這個部門的。 這個部門位於清河一個挺偏的地方, 周圍彷彿回到了18縣小鄉鎮。 面試官也是low爆炸了,一面面試官穿了一個脫鞋,讓我在樓下等了20min,前臺態度也不好。 然後竟然去了一個茶吧檯面試。不過一面面試官總體態度還行。(小米不提供飲水,面試官帶我去飲料機買了瓶汽水,當然是我自費,從小米出來我就有了帶水的習慣了。) 二面簡直是個活寶,上來站著問,你懂hashmap嗎, 我簡單答了一下陣列+連結串列,然後按理應該往碰撞,或者併發的方向繼續問, 結果坐下,抖腿,問什麼抓包的原理,然後扯的亂七八糟的。 最後憋了一分鐘吧,出了一個很無聊的題(LeetCode第十題)。 我實在不想浪費彼此時間,就直接走了。 小米本身在我心中還是個挺有態度的公司,和雷總也是老鄉。 哎,真是重新整理了我的三觀。 |
脈脈 | 效能 | Boss | 2+1 |
脈脈我覺得公司和產品一樣nice, 位於768,環境很安靜。 hr笑的很開心,面試官也很有禮節。 他們主後端是用python, java主要做一些離線和效能的工作。 因為第一天3面面試官不在, hr讓我第二天過去, 但是由於面試過程中瞭解到是去做效能平臺,財務平臺。 秉著發展的考慮,我還是拒絕了。 但是我還是推薦脈脈, 小而美。 |
位元組跳動 | 廣告 | 獵頭 | 3+1,拿到offer |
面完小米之後,我覺得我不能在小公司上面浪費時間,同時也有了美團的offer。 於是我把其餘的面試都取消了,只剩下了頭條和阿里。 頭條辦公環境,位置都很好。 每層都有食堂(請我吃了一頓,很好吃) 同學們給我最大的感受是 年輕,有活力,友好。 還有就是真的忙。 我身邊已經有陸陸續續不少同事選擇了頭條了。 面試難度其實沒有傳說中的那麼難, 不至於手寫紅黑樹,但是基本的資料結構和演算法要熟悉,每一面都會寫演算法。 hr感覺也很盡心盡責。 |
阿里巴巴 | 文學 | Boss | 3+1 |
阿里巴巴的面試總體有點失望,首先hr沒預約會議室,導致在休息區面試。 也沒有茶水,雖然我自帶了。 然後是辦公區到處都是螢幕,迴圈著馬雲的創業視訊。 三面面試中規中矩。 文學本來就不是我投的部門(我投的uc,不知道咋流過去了,然後讓我面試,我也想試一試吧,然後hr說我螞蟻簡歷沒過,可我壓根沒投過) 阿里最難的是hr面, 一個hr非要充當心裡學家,問你人生高潮是啥, 非常沒有禮貌,說話直接打斷,也沒什麼信用,感覺這群hr把阿里搞得烏煙瘴氣。 特別是hr套路很多, 面完了說沒有hc,hc要審批(那你喊我來幹嘛) ,然後我有很優秀的同事面過了 ,我說有人拿offer了 ,hr又說人家面的早。讓我感覺她就是在刷kpi啥的。 反正這個部門我是不建議去了, 周圍拿到文學offer的同事也打算拒了再看看。 |
亞馬遜 | 物流倉儲 | Boss | 還沒面 |
4.總結及建議
1.一定要提前準備好,刷一定量的題,特別是現在各大公司都有自己的招聘系統,如果一面就掛了,可能直接就拉黑,後續面試就更難了。
2.關於刷題,大概刷完劍指offer上面的經典題, 或者leetcode前100道應該就夠了,我建議有選擇的刷,主攻排序,連結串列,大檔案處理這些面試高頻的,也有意義的。
3.關於練手,我覺得不要有太大的心裡負擔, 你去一般公司面試,對於公司可能是一種匹配,但是對個人可是一次很好的自我認知反省的機會,甚至會改變後續的很多結果。
我們結合對行業的瞭解,如下公司可以說小而美(其實也是大獨角獸了),本身就值得加入,面試也有很多收穫: 猿輔導,脈脈,探探,瓜子,vivo網際網路。
當然拿大廠的邊緣部門練手也未嘗不可,就是有風險有記錄。
當然也有一些黑名單,面試官迷之自信,態度傲慢,技術淺顯, 建議大家面試前脈脈一下。。
最後一棒子打死,感覺位於清河的公司,可能都不太利於個人生活和發展。
4.關於基礎,我在下面附上一些前輩整理好的url。一定要夯實打撈。
5.我覺得面試禮儀是衡量雙方的重要標準, 面試者要注重自己的儀表整潔,談吐禮貌自然。 可以從公司面試官的行為判斷出公司的大體人員素質,我個人比較看重公司行政或者面試官是否能給瓶礦泉水或者倒杯水,我認為這是尊重一個面試者的基本表現,雖然後來我都是自己帶水。 我面試中就小米和阿里沒有(並且阿里文學是飯點約去面試,也不管飯,餓著肚子從5點面到9點多),然後就是雙方是否守時,我一般提前20分鐘到,提前10分鐘給hr打個電話。
6.關於面試難度,我覺得正常應該是圍繞簡歷和基礎循序漸進,一上來手撕紅黑樹,給個hard基本要dp的,或許不是真心想招人的。
當然,即使難點也不要慌, 表達好自己的思考過程, 即使錯了也沒太大關係。
其他的想到在整理吧。
5.面試題+基礎
各家的面試題其實都大同小異, 掌握基礎和原理,走到哪都不怕。
電腦沒電了 明天去公司再整理格式吧。
reids
知道 redis嗎,redis是如何做持久化的
介紹下 redis的特點,redis的基本資料結構,資料持久化方式,主從之間如何同步;
導致redis效能瓶頸的操作
redis有哪些介面
Redis的實現模式;
redis為什麼這麼快?
java-core
1 、List 和 Set 的區別2 、HashSet 是如何保證不重複的3 、HashMap 是執行緒安全的嗎,為什麼不是執行緒安全的(最好畫圖說明多執行緒環境下不安全)?4 、HashMap 的擴容過程5 、HashMap 1.7 與 1.8 的 區別,說明 1.8 做了哪些優化,如何優化的?6 、final finally finalize7 、強引用 、軟引用、 弱引用、虛引用8 、Java 反射9 、Arrays.sort 實現原理和 Collection 實現原理10 、LinkedHashMap 的應用11 、cloneable 介面實現原理12 、異常分類以及處理機制13 、wait和sleep
java-併發
1、 synchronized 的實現原理以及鎖優化? 2、 volatile 的實現原理? 3、 Java 的訊號燈? 4、 synchronized 在靜態方法和普通方法的區別? 5、怎麼實現所有執行緒在等待某個事件的發生才會去執行? 6、 CAS? CAS 有什麼缺陷,如何解決? 7、 synchronized 和 lock 有什麼區別? 8、 Hashtable 是怎麼加鎖的 ? 9、 HashMap 的併發問題? 10、 ConcurrenHashMap 介紹? 1.8 中為什麼要用紅黑樹? 11、 AQS12、如何檢測死鎖?怎麼預防死鎖? 13、 Java 記憶體模型? 14、如何保證多執行緒下 i++ 結果正確? 15、執行緒池的種類,區別和使用場景? 16、分析執行緒池的實現原理和執行緒的排程過程? 17、執行緒池如何調優,最大數目如何確認? 18、 ThreadLocal原理,用的時候需要注意什麼? 19、 CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差別 ?20、 LockSupport工具 21、 Condition介面及其實現原理 22、 Fork/Join框架的理解 23、分段鎖的原理,鎖力度減小的思考24、八種阻塞佇列以及各個阻塞佇列的特性
- 單機上一個執行緒池正在處理服務,如果忽然斷電了怎麼辦(正在處理和阻塞佇列裡的請求怎麼處理)?
- 為什麼要使用執行緒池?
- 執行緒池有什麼作用?
- 說說幾種常見的執行緒池及使用場景。
- 執行緒池都有哪幾種工作佇列?
- 怎麼理解無界佇列和有界佇列?
- 執行緒池中的幾種重要的引數及流程說明。
JVM
1、詳細 jvm記憶體模型 2、講講什麼情況下回出現記憶體溢位,記憶體洩漏? 3、說說 Java執行緒棧 4、 JVM 年輕代到年老代的晉升過程的判斷條件是什麼呢? 5、 JVM 出現 fullGC 很頻繁,怎麼去線上排查問題? 6、類載入為什麼要使用雙親委派模式,有沒有什麼場景是打破了這個模式? 7、類的例項化順序 8、 JVM垃圾回收機制,何時觸發 MinorGC等操作 9、 JVM 中一次完整的 GC 流程(從 ygc 到 fgc)是怎樣的 10、各種回收器,各自優缺點,重點 CMS、 G111、各種回收演算法 12、 OOM錯誤, stackoverflow錯誤,permgen space錯誤
- 說一下對 jvm的理解, jvm的組成部分,各個部分的儲存內容以及常見的jvm的問題排查步驟。
- 對JVM熟不熟悉?簡單說說類載入過程,裡面執行的那些操作?
- JVM方法區儲存內容 是否會動態擴充套件 是否會出現記憶體溢位出現的原因有哪些。
- 介紹介紹CMS。
- 介紹介紹G1。
- 為什麼jdk8 用metaspace 資料結構用來替代perm?
- 簡單談談堆外記憶體以及你的理解和認識。
- JVM的記憶體模型的理解,threadlocal使用場景及注意事項?
- JVM老年代和新生代的比例?
- jstack ,jmap ,jutil 分別的意義?如何線上排查JVM的相關問題?
- Java虛擬機器中,資料型別可以分為哪幾類?
- 怎麼理解棧、堆?堆中存什麼?棧中存什麼?
- 為什麼要把堆和棧區分出來呢?棧中不是也可以儲存資料嗎?
- 在Java中,什麼是是棧的起始點,同是也是程式的起始點?
- 為什麼不把基本型別放堆中呢?
- Java中的引數傳遞時傳值呢?還是傳引用?
- Java中有沒有指標的概念?
- Java中,棧的大小通過什麼引數來設定?
- 一個空Object物件的佔多大空間?
- 物件引用型別分為哪幾類?
- 講一講垃圾回收演算法。
- 如何解決記憶體碎片的問題?
- 如何解決同時存在的物件建立和物件回收問題?
- 講一講記憶體分代及生命週期。
- 什麼情況下觸發垃圾回收?
- 如何選擇合適的垃圾收集演算法?
- JVM中最大堆大小有沒有限制?
- 堆大小通過什麼引數設定?
- JVM有哪三種垃圾回收器?
- 吞吐量優先選擇什麼垃圾回收器?響應時間優先呢?
- 如何進行JVM調優?有哪些方法?
- 如何理解記憶體洩漏問題?有哪些情況會導致記憶體洩露?如何解決?
Spring
1 、BeanFactory 和 FactoryBean ?2 、Spring IOC 的理解,其初始化過程?3 、BeanFactory 和 ApplicationContext ?4 、Spring Bean 的生命週期,如何被管理的?5 、Spring Bean 的載入過程是怎樣的?6 、如果要你實現Spring AOP ,請問怎麼實現?7 、如果要你實現Spring IOC ,你會注意哪些問題?8 、Spring 是如何管理事務的,事務管理機制?9 、Spring 的不同事務傳播行為有哪些,幹什麼用的?10 、Spring 中用到了那些設計模式?11 、Spring MVC 的工作原理?12 、Spring 迴圈注入的原理?13 、Spring AOP 的理解,各個術語,他們是怎麼相互工作的?14 、Spring如何保證 Controller
Netty
分散式相關
1、 Dubbo的底層實現原理和機制 2、描述一個服務從釋出到被消費的詳細過程 3、分散式系統怎麼做服務治理 4、介面的冪等性的概念 5、訊息中介軟體如何解決訊息丟失問題 6、 Dubbo的服務請求失敗怎麼處理 7、重連機制會不會造成錯誤 8、對分散式事務的理解 9、如何實現負載均衡,有哪些演算法可以實現? 10、 Zookeeper的用途,選舉的原理是什麼? 11、資料的垂直拆分水平拆分。 12、 zookeeper原理和適用場景 13、 zookeeper watch機制 14、 redis/zk節點宕機如何處理 15、分散式叢集下如何做到唯一序列號 16、如何做一個分散式鎖 17、用過哪些 MQ,怎麼用的,和其他 mq比較有什麼優缺點, MQ的連線是執行緒安全的嗎 18、 MQ系統的資料如何保證不丟失 19、列舉出你能想到的資料庫分庫分表策略;分庫分表後,如何解決全表查詢的問題 20、 zookeeper的選舉策略 21、全域性ID
mysql:
http://www.iocoder.cn/Interview/MySQL-01/
mysql索引的實現原理
Innodb中,什麼是聚集索引,非聚集索引,他們是什麼關係
插入一條記錄時,聚集索引和非聚集索引是如何修改的
建立索引的標準是什麼
檢視SQL 是不是使用了索引?(有什麼工具)
SQL 索引的順序,欄位的順序
MySQL 分頁查詢語句,mysql分頁有什麼優化