有贊研發面經(Java細節)
有贊研發面經(Java細節)
本文首發於微信公眾號:程式設計師江湖
有贊
Java開發工程師
有贊:問得非常細節
一面:
1 Java併發技術瞭解嗎,說了執行緒,juc的執行緒池,併發容器,阻塞佇列,原子資料型別等。
2 問我原子資料型別怎麼實現,cas
3 執行緒池有哪些引數,阻塞佇列用的是普通佇列麼,答不是,是blockingqueue
4 concurrenthashmap和hashmap的區別,chm的實現原理,你在什麼場景下用到chm,為什麼,我說了多執行緒查詢資料,put可能覆蓋,或者hashmap的擴容可能產生死鏈
5 還用過哪些資料結構,list,set,map,stack和queue。
6 Spring瞭解麼,問我瞭解五大元件不,不瞭解,說了ioc和aop。然後問我分別怎麼實現的,使用xml和註解配置實現類有什麼區別,怎麼解析它們的資料。
7 Spring如何動態地載入一個bean到bean容器中,不是通過配置檔案配置的,不會。
8 Spring aop的實現原理,如何加一層動態代理的,我說是建立bean過程中直接生成代理類的例項
9 Spring的spring quartz知道麼,必須不知道
10 spring原始碼看過麼,mvc瞭解麼,說了一下mvc的原理和請求過程
11 hibernate和mybatis的原始碼看過麼,沒有
12 如何實現不同環境中配置檔案的自動切換,使用指令碼或者命令,他說使用hibernate的註解可以實現切換。
13 nio和io的區別,nio是阻塞輪詢的,如何改用非同步通知的機制,我說使用aio註冊非同步回撥函式。
14 nio的包裝框架了解麼,我說netty,看得深入麼,我說沒有深入看。
15 分散式服務dubbo瞭解麼,有哪些功能,如何自己實現一個dubbo,我分別從rpc和微服務的角度說了一下。問我有哪些序列化方式。
16 mysql問了幾個簡單問題。
17 對我們公司瞭解麼,只是稍微瞭解。
二面:
1 專案
2 Java的記憶體模型,堆和棧分別存什麼
3 Java的深拷貝和淺拷貝
4 Spring的aop怎麼實現的,動態代理的原理是什麼
5 Spring MVC的請求過程。
6 跳出Spring,說一下瀏覽器的請求過程
7 網路程式設計這一塊,你瞭解哪些,說了socket和nio
8 nio的底層實現一般是epoll,講一下epoll吧。
9 mysql的索引說一下,二級索引是怎麼進行查詢的
10 MySQL的兩個引擎區別
11 hibernate的orm是怎麼實現的,我說的是xml和註解的解析,以及jdbc封裝
12 hibernate的事務如何實現,我說是jdbc的事務實現。
13 分散式資料庫查詢一個表的前十條資料,對id進行hash來索引節點,如何進行查詢。我說那就對id hash,找到節點分別查詢。
14 分散式系統的概念,如果有資料一致性怎麼辦,答cap和base
15 瞭解哪些分散式技術,說了快取,負載均衡,訊息佇列,Hadoop
16 負載均衡的衡量指標,不知道
17 訊息隊列了解哪個,rabbitmq和kafka,為什麼kafka比rm快,答了零拷貝,具體實現原理答錯了,應該是避免複製資料到應用緩衝,直接使用sendfile傳輸資料。
18 hadoop瞭解哪些,hdfs的檔案讀寫機制說一下。
19 沒什麼問題了
20 需要來現場面試,其實我不想去現場面,然後隔天給我發了拒信
三面:
1 自我介紹和專案
2 Java的記憶體分割槽
3 Java物件的回收方式,回收演算法。
4 CMS和G1瞭解麼,CMS解決什麼問題,說一下回收的過程。
5 CMS回收停頓了幾次,為什麼要停頓兩次。
6 Java棧什麼時候會發生記憶體溢位,Java堆呢,說一種場景,我說集合類持有物件。
7 那集合類如何解決這個問題呢,我說用軟引用和弱引用,那你講一下這兩個引用的區別吧。
8 Java裡的鎖瞭解哪些,說了Lock和synchronized
9 它們的使用方式和實現原理有什麼區別呢,使用的話,synchronize用於方法和程式碼塊,可以鎖物件和類以及方法,Lock一般鎖一塊程式碼。並且Lock可以搭配condition使用。
實現原理的話,synchronized使用底層的mutex鎖,需要系統呼叫,而Lock則使用AQS實現。
10 synchronized鎖升級的過程,說了偏向鎖到輕量級鎖再到重量級鎖,然後問我它們分別是怎麼實現的,解決的是哪些問題,什麼時候會發生鎖升級。
11Tomcat瞭解麼。說一下類載入器結構吧,我說不知道,說了些別的。
12 問我會什麼框架,說了Spring,問我Spring中如何讓A和B兩個bean按順序載入,我說依賴關係,他問怎麼實現,然後說要用dependon註解,我說不了解。
13 beanfactory和applicationcontext是什麼關係,使用有什麼區別。
14 MySQL的sql優化了解麼,答瞭解索引優化。
15 他問我如何做一條sql的優化,說了慢日誌和explain。
16 MySQL叢集的主從複製怎麼做的,具體有哪些執行緒做哪些事情,使用了哪些日誌。
17 CAP定理說一下,為什麼三者只能選二,為什麼分割槽容忍性必須保證。
18 平時瞭解哪些技術是犧牲了一致性來保證可用性的,我說訊息佇列,他問我MySQL是不是,我說MySQL主從複製應該是。
19 工作中CAP的A和P是怎麼選擇的,我說選P吧,他的意思是選A。
20 演算法題:
一:10億個數去重,我說用hash分片做,他說可能不均勻,然後我說了bitmap,他說那數字量更多怎麼辦,我說那就兩個bitmap把。他說下一題吧。
二:十億個數找前10個最大的,小頂堆過一遍即可。他說如果要提高效率呢,我說可以分片做堆排序再進行歸併即可。他說OK。
▼更多精彩內容
更多校招乾貨請關注公眾號:程式設計師江湖!
喜歡記得來一個