先說下樓主經歷:
其實我之前已經寫過一篇關於自己秋招
經歷的文章了,裡面有很多面試題,可以作為參考:
下面重新介紹一下自己:
我個人是雙非本,去年五月份至今一直在 JD 實習,拿到了 JD 的 offer 後,偶然的機會(boss 上)就開始面試
部門是百度雲 cdn 具體好像是做音視訊相關的,主要語言是 Java 和我本人相符
一、二、三面兩天面完,具體的問題記不清楚了,以下內容僅憑回憶(上班摸魚寫的):
正文
一面面經:2021/1/21 下午五點
是個小姐姐,但是很嚴肅
- 自我介紹
- 介紹實習專案、難點、參與的工作
- 專案用到的設計模式以及其他設計模式
- syn 鎖(升級過程、降級?(讀寫鎖)一些底層原理)
- 作業系統執行緒間同步機制
- syn 和 lock 區別
- 執行緒池、引數詳解?你怎麼設定引數(I/O 密集型、計算密集型)
- JVM 記憶體區域
- 如何排查一下線上 OOM 問題?
- 類載入機制?
- 雙親委派?tomcat 如何打破的?
- 寫程式碼 1 翻轉連結串列(秒)2 手寫快排序 介紹各個排序演算法時間複雜度
- 在看的書籍?知識?《深入理解 Java 虛擬機器》說下最深刻的部分?我說了個 R 大寫的 JVM 是如何區分出是引用型別還是基本型別
- 反問 大約 47 min
二面:2020/1/22 上午十一點
HR 說的是一個高 T 二面面試我,果不其然,一個禿頭大叔。
- 自我介紹
- 介紹京東實習專案
- 專案分散式鎖怎麼用的?主從的快取 master 節點 down 了怎麼辦?(Redlock)
- 腦裂問題(配置檔案)、資料傾斜(一致性雜湊,虛擬節點)、資料分片
- 快取穿透、擊穿、雪崩
- Redis 哨兵?cluster?
- zset 底層,為什麼用壓縮列表(避免記憶體碎片),跳錶查詢複雜度?log(n)(逮住 Redis 真就往死裡問啊)
- 看你部落格裡有微服務,講講微服務、分散式?
- 專案中各個服務之間怎麼呼叫的?我說用 JSF(JSF 是京東內部的RPC通訊工具,類似於 dubbo)
- 分散式 CAP 定理
- 講講分散式事務解決方案,各自優缺點(內心。。。還好前幾天看過)
- 寫題 忘記具體是啥了 反正都是屬於 easy 的題目,大約 50+min
還有一些回憶不起來了,好像是 Spring 原始碼的東西,電腦面試沒有錄音,總之摳得很細,面試官果然是個大佬。。。
三面 2020/1/22 晚上八點半
- 介紹自己
- 兩個棧實現一個佇列
- 基本上就是一些非技術問題,嘮家常、談理想、問 offer
- 可能是我比較能 bb 三面約 1 h 15min
十分鐘 HR 聯絡微信聯絡說過了,讓我等接下來的補筆試、測評郵件
1/26下午收到郵件做完後 HR 叫我安心等待,最遲週五給發 offer。
lz 從去年二月份開始春招找實習,(雙非本科學歷)到現在差不多過去了一年。大大小小的面試也經歷過了不少,也相應的拿了一些公司的 offer,下面是我的一些個人見解加上別的大佬的一些參考,希望能拋磚引玉,如有瑕疵,還請多多指教!
我認為的面試 = 基礎 + 能力 + 規劃以及一些面試技巧
其實也就是對應著一個人的:過去(學過的知識)、現在(擁有的能力)、未來(規劃)
基礎
這個就很簡單了比如
- 最基本的資料結構、演算法;
- 以Java 為例的一些基礎知識:JVM、集合、框架;
- 計算機作業系統、計算機網路;
- 通用的一些中介軟體:netty、nginx、redis、MySQL 等。
這些是基本上都要知道的,尤其是一些面試常問的必須要數量掌握,儘管有人認為這是背書,但是連背書都不背的說明態度有問題,肯定是不是被公司接受的。
當然以上說的太籠統了,具體的複習路線可以參考其他大佬的作品,如不嫌棄可以看一下我寫過的一些部落格 https://blog.csdn.net/weixin_44104367 本文只做一些面試經驗相關的總結、概述。
能力
這方面主要是圍繞實習、專案來展開的基本上 = 技術硬實力 + 能力軟實力。
比如:有實習的
- 在實習期間做了哪些事能夠證明自己的能力
- 如何在開發過程中優雅的書寫程式碼?(其實一些知識譬如設計模式大家都會背,但是能夠真正將這個知識落到實地的又有幾個呢?
- 專案開發過程中如何一步步提升自己的技術能力、業務水平?
- 如何快速的理解業務?適應環境?
- 對於實習OR專案的思考總結?
要明白一點:工作了的人很喜歡問一些 case,尤其是一些領導特別喜歡問,哪怕這個專案技術再牛,那麼它是如何落地的呢?他的場景是什麼?為了解決什麼問題?使用了什麼方法 OR 工具?達到的效果如何?最終能滿足預期嗎?
比如大家都會背一些 Spring 原始碼,設計模式,但是能自己將這二者結合起來嗎?比如結合 Spring 原始碼+設計模式開發?(這篇文章就是個例子 淘系技術部的 https://mp.weixin.qq.com/s/94oe5c_7ouE1GbyiPfNg5g)
對面試官而言,他們已經聽吐了這些背的東西,如果自己能講的讓面試官眼前一亮,那麼即時面試問題回答的不太好 最起碼也能證明自己對於技術是有追求、有思考的,而不是一個背題機器。
對於一個技術而言,它在這個公司存在的意義就是為了一些變現業務服務 技術服務於業務,用業務創造價值。
個人認為學生狀態過渡到工作狀態就是理論轉化為實踐動力的過程 有些人總覺得校招生身上有一股書生氣
大概就是:理論的東西多而幼稚,有些不切實際的想法,能不能落地呢?
規劃
這點其實發現面試總結裡面很少有人去談,但是看到脈脈上,十個 HR,九個都會喜歡聽到候選人這方面的一些思考、總結。
路線規劃
舉個例子比如:會不會提前去規劃自己的人生路線?
這是從網上找的一張圖,可以看到有很多路線,究竟哪一條適合自己?可能很多人壓根沒思考過這個問題?另外自己適合哪一行呢?教育?廣告?地圖?還是純技術?
隔行如隔山,因為我從去年五月份就來實習,也換過倆部門,所以對於這些事情比其他人要深刻一些。
只有清楚知道自己喜歡的才有動力去做好他 不喜歡的只是為了生活被動的產出。
不是所有人都適合做純技術、也有的人壓根就不適合搞業務,究竟那條大路通向自己心中的羅馬,只有自己清楚
而這些事很多人都這麼回覆的:先有了工作再說。
看過很多人 尤其是 90 後工作半年跳槽、一年的也有。反正給我的感覺就是:不踏實
。對於公司而言就是不忠誠:誰能保證你從上一家公司跳又能幹多長時間又跳走了呢?公司培養一個人的代價又有誰去承擔呢?
在一個公司呆夠超過五年 最起碼可以說明這個人在這個行業、公司站住腳了。
有的人入職以後才發現自己不太適合這個行業、這個方向,於是就跳槽,簡歷就花了。
簡歷一花,找工作就更不好找。別的公司不知道,JD 這邊有的部門五二原則卡的很嚴格(五年內只在兩家公司工作過,也就是說平均一家公司至少工作兩年時間 https://www.jianshu.com/p/ac8f28f58e11)
這還是次要,更重要的是自己能確保這個新的方向就自己適合或者喜歡嗎?於是又開始跳、跳、跳。
人生往往是一步錯、步步錯。
別人已經在自己合適的方向上工作很久了 而你還在思考自己要做什麼。
男怕入錯行,女怕嫁錯郎,說的大概就是這個意思。
時間規劃
大家都知道程式猿 35 是一道坎,到時候要麼轉管理,要麼成為 CTO,自己對於自己的成長路線是一個什麼規劃呢?
管理路線:三年能夠處理日常開發當中的任何問題;五年能夠在技術上達到自己一個比較理想的狀態;七年能夠成為小組 leader;十年能夠成為部門 leader
技術路線:三年夠在技術上能夠有較大提升;五年成為架構師;七年成為資深架構;十年成為總監等。
能夠表達出這些,最起碼能夠說明自己比較踏實,是一個有規劃、有思想的人。
面試經驗
對於面試經驗這塊真的就只能實戰找感覺了,每個人都有自己的一個表達方式,不過套路都是差不太多:
揚長避短
像樓主本人學校不好但是一直在 JD 實習,那麼自我介紹的時候可以說自己實習時間比較長等。
學校比較好但是導師不放實習的可以著重說下自己的學校經歷,paper、競賽情況,都沒有的可以說能夠凸顯自己能力的地方
適當的往自己會的方向引導面試官
有的面試官會自己電腦前放一個題庫,但是大部分不會,會根據簡歷上,自己腦海中搜尋問題。
比如問你 MySQL 調優,自己知道那些就說哪些,比如你知道索引這塊哪些自己知道原理就說那些:(is null 判斷可能會導致放棄索引、儘量避免使用判斷等)再往下往往會問原理,因為你知道最左字首原則、MySQL 優化器的索引代價分析、選擇過程,你就可以輕鬆回答上來。
但是你不太懂索引相關的原理就不要胡言亂語,瞎往自己不擅長的領域引導面試官,可以從設計規範方面談起(使用 varchar 而不是 char 等等)因為面試官一般會問:為什麼?自己在學習知識的過程中也要經常問自己一句:為什麼?比如都知道函式表示式操作會導致索引失效,那麼原理呢?
面試充滿了不確定性
你又不是RMB 不會所有人都喜歡你。
這個恐怕很多人是深有體會:我面試面的挺好的啊,問題都回答上來了,怎麼還是掛了?放寬心態,該佛系的時候佛系一點啦。
面試充滿了不確定性,能和麵試官聊得來,即便問題回答的不怎麼樣,面試官也會放你一馬。
有的人跟面試官聊不來,甚至面試過程中發生了爭執,那肯定就是不給過了唄。
面試是一個雙向選擇的過程
你被面試官面試的時候其實你也在考量這個部門、這個面試官技術水平、人品以及是否願意引導新人等。
一般面試自己的都會和自己入職後的工作關係是在一起的,一般是自己的同事、直屬領導。
如果面試官為人和善、願意引導你解答出問題來,那麼入職之後你的成長速度也會更快的。
如果面試官技術問題問的很模糊其辭,不夠專業,那麼面試多了你也會感受出來。
你不是非我不要,我也不是非你們部門、公司不選,面試就是一個雙向選擇的過程。
爛大街的專案儘量不要寫
秒殺系統 、商城系統。
原因自己體會 懂得都懂
學歷差的自信一點
牛客上認識了很多盆友,大家的學歷大多數都比我這個雙非渣本菜雞學歷高得多,這也不是意味著學歷差就一定不行,我這不是也上岸了百度、京東了麼。
衷心勸誡 22 屆及以後畢業學歷較差的盆友,學歷差不代表一切。
但正是因為學歷的問題,就需要我們比別人付出更多,別人不會的可以通過學校、paper 補過來,但是我們一無所有隻能衝。
確實像 bat 這大廠對於學歷的要求不是特別高(某東除外,很多部門明確要求學歷 211 及以上)
PS
都在問啥專案比較好,我從個人角度談一下:有實習的話肯定是公司的專案比較好 無論是體量還是專業程度
沒實習的話可以做個:仿製 dubbo、netty、tomcat、簡單的 ioc 容器啦 或者一些實實在在能落地的專案,因為一個專案落沒落地面試官一問就知道。
前者會更好的走完一個底層的流程,從原理搞懂這些中介軟體,會比直接背書強。
真正走完一個流程的專案遠遠優於那些網上的專案 沒有實際的背景 那些開發中的情況面試官一問就破(以上為個人觀點)
以上內容純手打,囿於樓主本人的認知階層,目前暫時總結了這麼些,算是回饋一下牛客吧 希望22屆及以後的同學們看到這篇帖子能夠有所啟發,寫的不好多多包涵!