【大牛系列教學】靠著這份面試題跟答案

開篇閑扯

打工人,打工魂,我們生而人上人。當“資本主義”逐漸禁錮我們人(大)上(韭)人(菜)肉體的時候,那一刻我才明白那個日不落帝國·資本主義收割機·瑞民族之光幸·瑞幸咖啡是多么的了不起,盡管我不懂咖啡,但還是要說一聲謝謝!說到咖啡,喝完就想上廁所,對寫bug的我來說太不友好了,畢竟我不(很)喜歡帶薪上廁所。

回歸本次的不正經Java文章。上篇文章末尾處已經提到了,主要會把我對Synchronized的理解進行一次全方位的梳理,如果能幫助到大家吊打面試官,萬分榮幸。

一面

一面就做了一道算法題,要求兩小時內完成,給了長度為N的有重復元素的數組,要求輸出第10大的數。典型的TopK問題,快排算法搞定。

算法題要注意的是合法性校驗、邊界條件以及異常的處理。另外,如果要寫測試用例,一定要保證測試覆蓋場景盡可能全。加上平時刷刷算法題,這種考核應該沒問題的。

二面

  1. 自我介紹下唄
  2. 開源項目貢獻過代碼么?(Dubbo提過一個打印accesslog的bug算么)
  3. 目前在部門做什么,業務簡單介紹下,內部有哪些系統,作用和交互過程說下
  4. Dubbo踩過哪些坑,分別是怎么解決的?(說了異常處理時業務異常捕獲的問題,自定義了一個異常攔截器)
  5. 開始進入正題,說下你對線程安全的理解(多線程訪問同一個對象,如果不需要考慮額外的同步,調用對象的行為就可以獲得正確的結果就是線程安全)
  6. 事務有哪些特性?(ACID)
  7. 怎么理解原子性?(同一個事務下,多個操作要么成功要么失敗,不存在部分成功或者部分失敗的情況)
  8. 樂觀鎖和悲觀鎖的區別?(悲觀鎖假定會發生沖突,訪問的時候都要先獲得鎖,保證同一個時刻只有線程獲得鎖,讀讀也會阻塞;樂觀鎖假設不會發生沖突,只有在提交操作的時候檢查是否有沖突)這兩種鎖在Java和MySQL分別是怎么實現的?(Java樂觀鎖通過CAS實現,悲觀鎖通過synchronize實現。mysql樂觀鎖通過MVCC,也就是版本實現,悲觀鎖可以通過select… for update加上排它鎖)
  9. HashMap為什么不是線程安全的?(多線程操作無并發控制,順便說了在擴容的時候多線程訪問時會造成死鎖,會形成一個環,不過擴容時多線程操作形成環的問題再JDK1.8已經解決,但多線程下使用HashMap還會有一些其他問題比如數據丟失,所以多線程下不應該使用HashMap,而應該使用ConcurrentHashMap)怎么讓HashMap變得線程安全?(Collections的synchronize方法包裝一個線程安全的Map,或者直接用ConcurrentHashMap)兩者的區別是什么?(前者直接在put和get方法加了synchronize同步,后者采用了分段鎖以及CAS支持更高的并發)
  10. jdk1.8對ConcurrentHashMap做了哪些優化?(插入的時候如果數組元素使用了紅黑樹,取消了分段鎖設計,synchronize替代了Lock鎖)為什么這樣優化?(避免沖突嚴重時鏈表多長,提高查詢效率,時間復雜度從O(N)提高到O(logN))
  11. redis主從機制了解么?怎么實現的?
  12. 有過GC調優的經歷么?(有點虛,答得不是很好)
  13. 有什么想問的么?

三面

  1. 簡單自我介紹下
  2. 監控系統怎么做的,分為哪些模塊,模塊之間怎么交互的?用的什么數據庫?(MySQL)使用什么存儲引擎,為什么使用InnnoDB?(支持事務、聚簇索引、MVCC)
  3. 訂單表有做拆分么,怎么拆的?(垂直拆分和水平拆分)
  4. 水平拆分后查詢過程描述下
  5. 如果落到某個分片的數據很大怎么辦?(按照某種規則,比如哈希取模、range,將單張表拆分為多張表)
  6. 哈希取模會有什么問題么?(有的,數據分布不均,擴容縮容相對復雜 )
  7. 分庫分表后怎么解決讀寫壓力?(一主多從、多主多從)
  8. 拆分后主鍵怎么保證惟一?(UUID、Snowflake算法)
  9. Snowflake生成的ID是全局遞增唯一么?(不是,只是全局唯一,單機遞增)
  10. 怎么實現全局遞增的唯一ID?(講了TDDL的一次取一批ID,然后再本地慢慢分配的做法)
  11. Mysql的索引結構說下(說了B+樹,B+樹可以對葉子結點順序查找,因為葉子結點存放了數據結點且有序)
  12. 主鍵索引和普通索引的區別(主鍵索引的葉子結點存放了整行記錄,普通索引的葉子結點存放了主鍵ID,查詢的時候需要做一次回表查詢)一定要回表查詢么?(不一定,當查詢的字段剛好是索引的字段或者索引的一部分,就可以不用回表,這也是索引覆蓋的原理)
  13. 你們系統目前的瓶頸在哪里?
  14. 你打算怎么優化?簡要說下你的優化思路
  15. 有什么想問我么?

四面

  1. 介紹下自己
  2. 為什么要做逆向?
  3. 怎么理解微服務?
  4. 服務治理怎么實現的?(說了限流、壓測、監控等模塊的實現)
  5. 這個不是中間件做的事么,為什么你們部門做?(當時沒有單獨的中間件團隊,微服務剛搞不久,需要進行監控和性能優化)
  6. 說說Spring的生命周期吧
  7. 說說GC的過程(說了young gc和full gc的觸發條件和回收過程以及對象創建的過程)
  8. CMS GC有什么問題?(并發清除算法,浮動垃圾,短暫停頓)
  9. 怎么避免產生浮動垃圾?(記得有個VM參數設置可以讓掃描新生代之前進行一次young gc,但是因為gc是虛擬機自動調度的,所以不保證一定執行。但是還有參數可以讓虛擬機強制執行一次young gc)
  10. 強制young gc會有什么問題?(STW停頓時間變長)
  11. 知道G1么?(了解一點 )
  12. 回收過程是怎么樣的?(young gc、并發階段、混合階段、full gc,說了Remember Set)
  13. 你提到的Remember Set底層是怎么實現的?
  14. 有什么想問的么?

五面

五面是HRBP面的,和我提前預約了時間,主要聊了之前在螞蟻的實習經歷、部門在做的事情、職業發展、福利待遇等。阿里面試官確實是具有一票否決權的,很看重你的價值觀是否match,一般都比較喜歡皮實的候選人。HR面一定要誠實,不要說謊,只要你說謊HR都會去證實,直接cut了。

  1. 之前螞蟻實習三個月怎么不留下來?
  2. 實習的時候主管是誰?
  3. 實習做了哪些事情?(尼瑪這種也問?)
  4. 你對技術怎么看?平時使用什么技術棧?(阿里HR真的是既當爹又當媽,)
  5. 最近有在研究什么東西么
  6. 你對SRE怎么看
  7. 對待遇有什么預期么

總結

談到面試,其實說白了就是刷題刷題刷題,天天作死的刷。。。。。

為了準備這個“金三銀四”的春招,狂刷一個月的題,狂補超多的漏洞知識,像這次美團面試問的算法、數據庫、Redis、設計模式等這些題目都是我刷到過的

并且我也將自己刷的題全部整理成了PDF或者Word文檔(含詳細答案解析),有需要的朋友可以戳這里即可免費領取

我的美團offer涼涼了?開發工程師(Java崗)三面結束等通知...

66個Java面試知識點

架構專題(MySQL,Java,Redis,線程,并發,設計模式,Nginx,Linux,框架,微服務等)+大廠面試題詳解(百度,阿里,騰訊,華為,迅雷,網易,中興,北京中軟等)

我的美團offer涼涼了?開發工程師(Java崗)三面結束等通知...

算法刷題(PDF)

面試題詳解(百度,阿里,騰訊,華為,迅雷,網易,中興,北京中軟等)**

[外鏈圖片轉存中…(img-5JAR76gP-1623850583781)]

算法刷題(PDF)

我的美團offer涼涼了?開發工程師(Java崗)三面結束等通知...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386065.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386065.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386065.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab實現二項分布

二項分布 1. 求n次獨立重復試驗中事件A恰好發生k次的概率P。 命令:pdf 或 binopdf 格式:pdf (‘bino’, k, n, p) 或 binopdf (k, n, p) 說明:該命令的功能是計算二項分布中事件A恰好發生k次的概率。pdf為通用函數,bino表示二項分布,binopdf為專用函數,n為試驗總次數,…

【工作感悟】成功入職阿里月薪45K

前言 苦苦尋覓找工作之間,殊不知今日之時乃我心之痛,難道是我不配擁有工作嘛。自面試后他所謂的等待都過去一段時日,可惜在下京東上的小金庫都要見低啦。每每想到不由心中一緊。正處為難之間,手機忽然來了個短信預約后續面試。 我…

Mysql優化技巧

索引優化,查詢優化,查詢緩存,服務器設置優化,操作系統和硬件優化,應用層面優化(web服務器,緩存)等等。這里的記錄的優化技巧更適用于開發人員,都是從網絡上收集和自己整理…

【工作經驗分享】不會真有人覺得mybatis很難學吧

什么是自旋鎖和互斥鎖? 由于CLH鎖是一種自旋鎖,那么我們先來看看自旋鎖是什么? 自旋鎖說白了也是一種互斥鎖,只不過沒有搶到鎖的線程會一直自旋等待鎖的釋放,處于busy-waiting的狀態,此時等待鎖的線程不會…

華為面試題

技術面試: java: java學了幾年,看過什么書,有沒有看過thinking in java這本書 java的公共父類是什么,object類中有什么方法 object中有個hashcode方法,這個方法是用來做什么的, equal 與 的區…

【工作經驗分享】這些新技術你們都知道嗎

前言 近年來,微服務架構(Microservices Architecture)已經成為一種主流的軟件開發方法論,所謂微服務( Microservices ),就是一些具有足夠小的粒度、能夠相互協作且自治的服務體系。 微服務架構基于分布式系統,同時借助了面向服務架構和企業服…

京東面試題(JAVA)

京東17號一面問題與回答情況(Java崗) 作者:牛客190525號 Q1: HashMap的原理, 以及HashMap如何擴充bucket的大小 A1: 原理答上來了,如何擴容瞎答的,之前不知道擴容之后已經哈希的MapEntry如何處理,當時就…

【微信小程序】使用Hystrix的插件機制

前言 在本篇文章開始前,我想想來回答一個問題:我為什么要寫這一篇關于面試的文章? 原因有三:第一,我想為每一個為夢想時刻準備著的”有心人“盡一份自己的力量,提供一份高度精華的Java面試清單&#xff1…

大話數據結構——數據結構緒論

數據:描述客觀事物的符號,是計算機可以操作的對象,是能被計算機識別,并輸入給計算機處理的符號集合。 有兩個要素: 可以輸入到計算機中能被計算機程序處理 數據元素:組成數據的基本單位,也就…

【微信小程序】目前最全的《Java面試題及解析》

開頭 在找工作的過程中,對于 Redis 技術知識的掌握已經成為必須的技能。美團面試常常就會被問到Redis相關知識,而這次我就差點倒在了美團3面,面試官連問我以下幾個Redis的問題,然后就卡殼了… redis了解嗎?你說說怎么…

大話數據結構——算法

算法:算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,并且每條指令表示一個或多個操作。 為什么把數據結構和算法一起說? 想想羅密歐與朱麗葉,梁山伯和祝英臺,少了一個你總會覺得奇怪…

java線上培訓班學費一般多少,成長路線圖

前言 眾所皆知的,Linux的核心原型是1991年由托瓦茲(Linus Torvalds)寫出來的,但是托瓦茲為何可以寫出Linux這個操作系統?為什么它要選擇386的計算機來開發?為什么Linux的發展可以這么迅速?又為什么Linux是免費的?以及目前為何有這么多的 Linux版本(…

將visio的圖片插入latex(png格式轉換成eps格式圖片)

EPS和PDF轉換工具:http://www.xdowns.com/tag.asp?keywordEPS%D7%AApdf 這個軟件親測可以轉換,但是,仍然不能插入latex中,就像之前曾嘗試強制改變后綴名轉成eps一樣,效果是不佳的。 樓主的圖是在visio上畫的&#x…

java線程池使用實戰,太牛了!

前言 今天這篇文章中簡單介紹一下一個 Java 程序員必知的 Linux 的一些概念以及常見命令。 如果文章有任何需要改善和完善的地方,歡迎在評論區指出,共同進步!筆芯! 正式開始 Linux 之前,簡單花一點點篇幅科普一下操作…

大數據基礎技術和應用

大數據概述 數據的表現形式: 線下數據信息化:數據庫、文字記錄、照片……互聯網-移動互聯網:網頁數據、用戶行為記錄、數字圖像……傳感器:設備監控、智能家居、攝像頭…… 大數據的4V特征: 大量化(Vol…

java線程池參數面試題,附贈復習資料

前言 作為同時具備高性能、高可靠和高可擴展性的典型鍵值數據庫,Redis不僅功能強大,而且穩定,理所當然地成為了大型互聯網公司的首選。 眾多大廠在招聘的時候,不僅會要求面試者能簡單地使用Redis,還要能深入地理解底…

Hadoop 大數據平臺架構與實踐

初識Hadoop Hadoop是一個開源的分布式存儲分布式計算平臺。 Hadoop核心組成部分: HDFS:分布式文件系統,存儲海量的數據。MapReduce:并行處理框架,實現任務分解和調度。 Hadoop可以用來做什么? 搭建大型…

java線程池有幾種,講的太透徹了

前言 該文檔在Github上收獲40Kstar的Java面試神技(這贊數,質量多高就不用我多說了吧)非常全面,包涵Java基礎、Java集合、JavaWeb、Java異常、OOP、IO與NIO、反射、注解、多線程、JVM、MySQL、MongoDB、Spring全家桶、計算機網絡、…

HIVE入門

Hive概述 什么是 Hive? * Hive 是建立在 Hadoop HDFS 上的數據庫倉庫基礎建構 * Hive 可以用來進行數據庫提取轉化加載(ETL) * Hive 定義了簡單的類似 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據 * Hi…

java線程面試題博客園,超詳細

簡介 HikariCP 是用于創建和管理連接,利用“池”的方式復用連接減少資源開銷,和其他數據源一樣,也具有連接數控制、連接可靠性測試、連接泄露控制、緩存語句等功能,另外,和 druid 一樣,HikariCP 也支持監控…