看了幾百份面經,我發現每次面試的問題都逃不過這幾方面

你好, 我是 yes。java

由於最近在主攻的面試方面的文章。面試

本身在網上翻閱了不少面經,也創建了面試題交流羣。數據庫

因此看了不少真實的、新鮮的面試題。設計模式

再結合下本身的面試經歷、本身面別人的套路和以前朋友之間的面試交流。微信

我總結了下,提問方向基本上都是固定的。網絡

讓咱們一塊兒來看看吧~多線程

項目

毋庸置疑,這玩意很是重要。架構

幾乎全部的面試,面試官都會讓你介紹本身的項目。數據庫設計

他會問你:分佈式

  • 項目總體架構

  • 共包含哪些服務

  • 服務之間信息流是如何流轉的

  • 在項目中,有沒有遇到什麼難點

  • 有沒有排查過項目的線上問題

  • 你以爲你如今的設計有什麼問題麼?

  • 若是你負責的服務從100TPS變成1萬TPS會有什麼問題?怎麼處理?

  • 若是你負責的這個功能以後須要頻繁變動,你怎麼設計?

  • 等等等

固然還有不少種問法,不過都會結合你當前的項目進行發問。

面試官想考察你:

  • 這個項目是否是真的是你作的

  • 是否對項目總體都有把控和關心

  • 平日裏是否有對項目進行總結性思考

  • 是否有線上故障處理能力

  • 是否有設計和架構思惟

  • 一些知識點是否能學以至用,好比線程池原理說的很溜,可是不知道在項目上怎麼用。

因此要多多準備本身的項目,扒一扒你本身負責的模塊。

多想一想,若是產品要頻繁變動需求的話,這裏應該怎麼設計。

若是公司今年發展的很迅速,客戶量激增的話,你負責的服務會有什麼問題?

須要怎麼處理、怎麼設計?

由於這很是容易被問到,若是你答的好。

那麼不只突出你這我的有點東西,還會體現出你平日裏喜歡鑽研和思考。

對了,跟面試官介紹項目的時候,不要一上來就深刻細節

在下面這篇文章中,我說的很清楚了,能夠看看。

頭條終面:寫個消息中間件

Java基礎

這個也很重要。

HashMap呀、ConcurrentHashMap喲

Synchronized呀、Reentrantlock喲

volatile呀、threadlocal、線程池等多線程相關的。

JVM、GC。

這些問題仍是很常見的,並且網上基本上都有,大多數同窗稱之爲「八股文」。

百度百科:八股文(英譯:Stereotyped Writing;Eight-Legged Essay),也稱制義、制藝、時文、八比文,是明清科舉考試的一種文體。八股文章就「四書五經」取題,內容必須用古人的語氣,絕對不容許自由發揮,而句子的長短、字的繁簡、聲調高低等也都要相對成文,字數也有限制

不過,八股文也能看出深度的。

就拿 Synchronized 說,通常說個能自動解鎖、可重入啥的,而後就鎖升級一套combo。

好點的還能說說字節碼層面,扯個 ObjectMonitor

再好點那就是我這篇了,嘿嘿。深刻JVM來理解Synchronized

若是你還熟悉 AQS 的話,你會發現好像機制是同樣的呀。

都有一個同步隊列,還有條件等待隊列,而後喚醒 CAS 搶鎖。

因此當面試官問你 Synchronized ,你把 JVM 的實現跟他一說,再給他延伸一下 AQS ,怎麼說?

這波,有點秀。

面試官對你的印象,確定很深,那你這概率不就大大的?

因此有點追求,你稍微深刻點,你就比大部分人都牛。

對了,Java 基礎面試題我但是已經整理了 52 題了,答案也寫了,還不知道的去我公衆號翻翻吧。

中間件

通常你的簡歷確定會寫 Redis、Memcache、Kafka、RocketMQ、RabbitMQ、Dubbo、Spring Cloud 之類的。

你寫啥基本上會問啥。

我拿 Redis 舉個例子:

  • 你的項目爲何會選擇用Redis而不是Memcache(技術選型)

  • 你項目中通常怎麼用 Redis 的

  • 線上遇到 Redis 的相關問題沒

  • 你對 Redis 瞭解有多深?源碼看過嗎

  • 說說 Redis rehash

  • Redis 集羣瞭解麼?

  • Redis 分佈式鎖怎麼用?有什麼問題?

固然,還有不少問題,好比什麼過時策略啊,AOF 之類的,我就不一一列舉了。

總之,這些問題想要獲得的反饋是:

  • 項目上真正的使用,使用到哪一個程度

  • 看看你是否有選型能力,仍是隻是個不會思考的工具人

  • 看看你對一個東西鑽研有多深

  • 是否有中間件相關排查和處理問題的經歷

中間件的問法基本上就是這麼個套路。

我號上也寫了不少相關的了,好比 Kakfa 和RocketMQ 的對比呀之類的。

因此,打有準備的仗。

若是你以爲時間來不及,你能夠挑一個重點攻克一下,和麪試官說我xxx比較熟,這樣也是 ok 的。

畢竟,沒有人是全能的。

數據庫

這個也是必問的,通常都是 MySQL。

會問一些:

  • 項目上如何設計索引的呀

  • 寫 SQL 有哪些須要注意的

  • 分庫分表相關

  • 數據太多怎麼查詢

  • 常問索引結構,爲何要這樣設計?

  • 能說說索引查找的流程麼?瞭解多少說多少

  • 如何優化 SQL

  • 隔離級別、MVCC

  • MySQL 的鎖機制

  • redo log 、undo log 之類的

基本上就是這麼些個問題,這麼一列其實也就這樣。

從中看看:

  • 是否有 SQL 調優能力

  • 是否有數據庫設計能力

  • 對數據庫原理了解多少,即深度

嘿嘿,等着個人 MySQL 系列吧~

設計、場景、架構類

好比:

  • 一個短鏈服務如何設計

  • 排行榜如何設計

  • 查找附近的人,如何設計

  • 等等

這類就是看看你我的的設計能力了。

包括條理是否清晰、考慮是否全面、表述是否通順等等。

而後會和你互動,會問若是要這樣的話怎麼設計呀,若是要那樣的話呢?

你說我擴容,我說不準擴容。

你說我限流,我說不準限流。

因此,這個仍是得看看你的應變能力和平日的積累了。

其餘

社招的話主要就這幾方面,不過不排除一些其餘問題。

這個其餘,指代的東西其實不少、很廣。

好比,網絡相關的 TCP、UDP、HTTP、HTTPS。

操做系統相關的用戶態、內核態、零拷貝、內存分頁等等。

這種會有,不過出現頻率不會那麼高。

社招基本上圍繞項目來展開的,以上的問題,校招多些。

對了, Spring 、設計模式之類的,其實也比較常問,就劃到其餘這個類目吧。

上機

大廠逃不過筆試。

  • 手寫個LRU

  • 反轉鏈表

  • 生產者消費者

  • 多線程順序打印

  • 二叉樹之類的

反正通常不會太難,最多中等難度。

這個平時日得多練練,注意是不要在 idea 裏面寫。

在 LeetCode 上直接寫好,畢竟到時候沒有聯想功能。

靠日積月累的刷題了,天天一題刷刷更健康!

也能夠針對性的練習,好比把多線程專題一次性都刷完,而後再刷刷鏈表的啥的。

反正就是靠練,幾乎須要造成肌肉記憶。

雖然說 LeetCode 上面題目不少,可是常考的其實不外乎就那麼幾種。

最後

差很少了,提問基本上不會脫離這幾個方向。

而且這幾個方向也都有固定的問題,不會偏離不少。

因此針對性的準備準備,不打無準備之仗。

準備完畢以後,

那你就是麪霸了。

歡迎關注個人公衆號【yes的練級攻略】,更多硬核文章等你來閱,關注也可拉你800多人的面試交流羣。

我是yes,咱們下篇見。

本文分享自微信公衆號 - yes的練級攻略(yes_java)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索