美團點評社招java一面java
一、作一下自我介紹吧,簡單說一下你的項目?
二、有遇到過內存泄漏嗎?大家是怎麼解決的?這個前陣子確實遇到過一次,還算運氣比較好。
三、java的基本類型有哪幾個?String是否是java的基本類型?String爲何要是final類型的?
四、反射機制的底層實現是什麼?動態呢?動態的實現原理?
五、hashmap瞭解嗎?說一下hashmap相關的一些東西?hashmap是線程安全的嗎?爲何是線程安全的?concureenthashmap瞭解嗎?他是如何實現線程安全的?你剛纔說1.8基於cas?cas的ABA問題怎麼解決?
六、說一下JVM的線程模型?這些區域都分別是幹啥用的?java線程模型和jvm線程模型注意區分、總結下,網上不少文章都是錯的。
七、說一下java類加載器的工做機制?類加載在那個區域進行的?
八、說一下java的線程模型?violate瞭解嗎?他的原理是什麼?violate是線程安全的嗎?爲何不是?
九、保證線程安全的解決方法有哪些?說一說讀寫鎖吧,讀寫鎖的讀
十、數據庫的索引有哪幾種?爲何要用B+樹來作索引?組合索引和幾個單個的索引有什麼區別?數據庫的大表查詢優化了解嗎?MVCC機制瞭解不?MVCC機制有什麼問題?怎麼去解決這個問題?mysql慢語句調優作過嗎?說說你是怎麼作的?
十一、redis瞭解嗎?你說說怎麼用redis實現分佈式鎖?
十二、spring中Bean的做用域,springMVC的controller是線程安全的嗎?怎麼去保證線程安全呢?
1三、消息隊列有用過嗎?說說你怎麼用的?你這麼用感受不大對吧。。大寫的尷尬。。
1四、計算機網絡瞭解嗎?說一說TCP三次握手和四次揮手吧,感受這個真的是計算機網絡必考知識點啊,每次問到計算機網絡都會問這個。time_wait狀態產生的緣由是什麼?,有什麼危害?能夠如何避免?
1五、leetcode153. 尋找旋轉排序數組中的最小值
假設按照升序排序的數組在預先未知的某個點上進行了旋轉。mysql
( 例如,數組 [0,1,2,4,5,6,7] 可能變爲 [4,5,6,7,0,1,2] )。程序員
請找出其中最小的元素。面試
你能夠假設數組中不存在重複元素。redis
示例 1:spring
輸入: [3,4,5,1,2]
輸出: 1sql
示例 2:數據庫
輸入: [4,5,6,7,0,1,2]
輸出: 0數組
你手裏有哪些offer了?最快何時能入職呢?還有什麼問題想問的?而後說會有hr聯繫你,次日就接到了hr約二面時間的通知。安全
總結下來,面試問的東西仍是挺寬的,並且問的很細,一個知識點基本都是問到答不上來爲止。仍是有不少東西須要增強?在美團的面試中仍是學到了一些東西。
1.首先仍是問項目。問的比較細,比較全。
2.String,StringBuffer,StringBuilder的區別,爲何String是不可變的,StringBuffer和StringBuilder哪一個是線程安全的,他們分別適用於什麼場景。
3.java類加載過程是怎麼樣的,說一下volatile。
4.併發包瞭解嗎?假如幾個線程之間相互等待,能夠用哪一個併發類來實現,他的原理是什麼?
5.數據庫慢查詢優化了解哪些?說了不少,面試官說假如這些都已經作好了仍是很慢怎麼辦?最後不清楚問了下面試官,面試官主要想了解數據庫分區的知識。
6.說一下spring容器的啓動過程?
7.講一下分佈式鎖,基於zookeeper實現和redis實如今性能上有什麼差別?
8.kafka如何保證不丟消息又不會重複消費。瞭解大數據相關的一些技術嗎?
9.最後寫了道題,leetcode55. 跳躍遊戲
給定一個非負整數數組,你最初位於數組的第一個位置。
數組中的每一個元素表明你在該位置能夠跳躍的最大長度。
判斷你是否可以到達最後一個位置。
示例 1:
輸入: [2,3,1,1,4]
輸出: true
解釋: 咱們能夠先跳 1 步,從位置 0 到達 位置 1, 而後再從位置 1 跳 3 步到達最後一個位置。
示例 2:
輸入: [3,2,1,0,4]
輸出: false
解釋: 不管怎樣,你總會到達索引爲 3 的位置。但該位置的最大跳躍長度是 0 , 因此你永遠不可能到達最後一個位置。
最快何時能過來?有什麼問題想問的?而後說後面有hr再和你聯繫。
面試官首先問了不少簡歷中的一些基本信息.畫一下你這個項目與哪些工程交互,它在大家的產品中處於什麼樣一個位置
畫一下大家這個項目的架構圖,挑一個你以爲比較難的業務場景來說一下,
大家這個項目中都遇到了哪些問題呢?說說大家最後都怎麼解決的
寫了一段代碼,問這個代碼最後輸出什麼?申請多大的內存空間,都在什麼位置申請的
public class Test {
public static void main(String[] args) {
String str = "hello";
test(str);
System.out.println(str);
}
public static void test(String str){
str = str + "world";
System.out.println(str);
int[] a = new int[1024];
}
}
hashmap瞭解嗎?他的set和get的時間複雜度是多少?爲何是O(1),說下詳細過程,hashmap是線程安全的嗎?
Jvm瞭解嗎?jvm中哪些能夠做爲垃圾回收的gcroot?爲何呢?
何時能過來上班?而後就說等會hr面。
問了下基本狀況,何時能過來,爲何想換工做?在上家的績效和薪水狀況,指望工資是多少。
針對上面的技術我特地整理了一下,若是想學習Java工程化、高性能及分佈式、深刻淺出。性能調優、Spring,MyBatis,Netty源碼分析的朋友能夠查看一下:
資料獲取方式:關注公衆號:「程序員白楠楠」獲取上述資料