1. 程式人生 > >2018年總結下某知名網際網路公司面試題

2018年總結下某知名網際網路公司面試題

這幾天去某知名網際網路面試,總結下幾次的面試題,做一次備忘錄。面完之後,都讓我懷疑人生了。

(1)多個執行緒順序執行,如果有一個執行緒執行超時了,那麼如何保證超時執行緒不影響其他執行緒執行?

答:使用Thread.join(超時時長)

(2)mysql的sql如何優化? 如何使用mysql的執行計劃?

答:sql優化有很多優化方式,

     在資料庫和sql方面看:避免select *;sql使用變數; 使用索引;sql寫法優化(like、exists、超長in、not in等)

     在程式碼層面看:採用預處理方式;避免迴圈查詢;使用批量插入和更新;如果資料量很大,可以使用原生JDBC方式查詢

     mysql 的執行計劃,使用EXPAIN,SQL好壞關鍵在於type,

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

    具體可參考:https://blog.csdn.net/q936889811/article/details/72576182

(3)併發集合有哪些?

(4)mysql什麼情況下會死鎖?

(5)transition關鍵字是什麼,ArrayList如何序列化的?

(6)java提供了哪些執行緒池,ExecutorService的幾個引數是什麼意思?第二個引數和第三個引數有什麼關係?

(7)平時會用到哪些事務隔離級別?

(8)HashMap資料結構是如何的, equal和hash是什麼作用?hash相同,那麼equal是否相同? equal相同,那麼hash是否相同?

(9)JVM預設gc是哪個?  CMS怎麼工作的? 為什麼會出現STW(STOP THE WORLD)?什麼時候會觸發CMS?什麼情況下會觸發full GC?如果1G記憶體,那是否可以使用CMS?

(10)Java8的HashMap為什麼要用紅黑樹? 紅黑樹的時間複雜度是多少?

(11)Java7的ConcurrentHashMap的資料結構是怎麼樣的?Java8的ConcurrentHashMap的資料結構又是怎麼樣的,為什麼要用重量鎖synchronized,而不用併發鎖?

(11)分表分庫上進行分頁查詢,SQL如何更優化?

(12)linux下,如何定位java的cpu佔用率高的程式碼?

(13)熟悉哪些linux的命令, 如何查找出java的記憶體佔用率高的程式碼?

(14)如果java有一個方法效率很慢, 請問如何排查?請說出來平時工作上遇到哪些類似情況,如何解決的?

(15)jvm有哪些常用命令?各有什麼作用?

(16)描述下Dubbo的工作原理?如果Dubbo提供者、消費者配置都正常無誤,但是會出現Dubbo消費者啟動時會無法訂閱到服務,請問什麼情況下出現?

(17)SpringMVC的核心類有哪些? 一個請求引數如何傳遞到方法中的引數中?如果請求引數a, 那麼對應方法中的引數有兩個,一個是物件(物件有a屬性),另一個是字串a, 請問這引數a如何傳遞的?

(18)代理模式和包裝模式有什麼區別? 靜態代理和包裝模式從程式碼上是否很相似,那麼什麼會要區分這2個模式?

(19)為什麼要用負載均衡,負載均衡有哪些?

(20)HashMap是否執行緒安全,為什麼?

(21)Spring的Bean是否單例? 那麼如何保證多執行緒安全?

(22)mybatis的${}和#{}有什麼區別?