黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 2019最新美團java面試題及答案

2019最新美團java面試題及答案

更新時間:2019-08-20 17:04:47 來源:動力節(jié)點 瀏覽3500次

 


美團網(wǎng)的發(fā)展速度是超乎想象的,這一在近幾年快速崛起的行業(yè),在技術(shù)方面的需求同樣發(fā)展是非常迅速的,隨著企業(yè)的運營規(guī)模在不斷的增加,對于技術(shù)人員的數(shù)量需求也在不斷的增長。

  

  在java方面的需求也是非常大的,下面我們就主要來看一下在美團java方面美團都是會問到那些問題吧。


  1、任務隊列(taskQueue):用于存放沒有處理的任務。提供一種緩沖機制。


  線程池技術(shù)正是關(guān)注如何縮短或調(diào)整T1,T3時間的技術(shù),從而提高服務器程序性能的。它把T1,T3分別安排在服務器程序的啟動和結(jié)束的時間段或者一些空閑的時間段,這樣在服務器程序處理客戶請求時,不會有T1,T3的開銷了。


  線程池不僅調(diào)整T1,T3產(chǎn)生的時間段,而且它還顯著減少了創(chuàng)建線程的數(shù)目,看一個例子:


  假設(shè)一個服務器一天要處理50000個請求,并且每個請求需要一個單獨的線程完成。在線程池中,線程數(shù)一般是固定的,所以產(chǎn)生線程總數(shù)不會超過線程池中線程的數(shù)目,而如果服務器不利用線程池來處理這些請求則線程總數(shù)為50000。一般線程池大小是遠小于50000。所以利用線程池的服務器程序不會為了創(chuàng)建50000而在處理請求時浪費時間,從而提高效率。



  2、常見線程池


(1)newSingleThreadExecutor


  單個線程的線程池,即線程池中每次只有一個線程工作,單線程串行執(zhí)行任務


(2)newFixedThreadExecutor(n)


  固定數(shù)量的線程池,沒提交一個任務就是一個線程,直到達到線程池的最大數(shù)量,然后后面進入等待隊列直到前面的任務完成才繼續(xù)執(zhí)行


(3)newCacheThreadExecutor(推薦使用)


  可緩存線程池,當線程池大小超過了處理任務所需的線程,那么就會回收部分空閑(一般是60秒無執(zhí)行)的線程,當有任務來時,又智能的添加新線程來執(zhí)行。


(4)newScheduleThreadExecutor


  大小無限制的線程池,支持定時和周期性的執(zhí)行線程



  3、Java 中能創(chuàng)建 volatile 數(shù)組嗎?


  能,Java 中可以創(chuàng)建 volatile 類型數(shù)組,不過只是一個指向數(shù)組的引用,而不是整個數(shù)組。我的意思是,如果改變引用指向的數(shù)組,將會受到 volatile 的保護,但是如果多個線程同時改變數(shù)組的元素,volatile 標示符就不能起到之前的保護作用了。



  4、volatile 能使得一個非原子操作變成原子操作嗎?


  一個典型的例子是在類中有一個 long 類型的成員變量。如果你知道該成員變量會被多個線程訪問,如計數(shù)器、價格等,你最好是將其設(shè)置為 volatile。為什么?因為 Java 中讀取 long 類型變量不是原子的,需要分成兩步,如果一個線程正在修改該 long 變量的值,另一個線程可能只能看到該值的一半(前 32 位)。但是對一個 volatile 型的 long 或 double 變量的讀寫是原子。



  5、volatile 修飾符的有過什么實踐?


  一種實踐是用 volatile 修飾 long 和 double 變量,使其能按原子類型來讀寫。double 和 long 都是64位寬,因此對這兩種類型的讀是分為兩部分的,第一次讀取第一個 32 位,然后再讀剩下的 32 位,這個過程不是原子的,但 Java 中 volatile 型的 long 或 double 變量的讀寫是原子的。volatile 修復符的另一個作用是提供內(nèi)存屏障(memory barrier),例如在分布式框架中的應用。簡單的說,就是當你寫一個 volatile 變量之前,Java 內(nèi)存模型會插入一個寫屏障(write barrier),讀一個 volatile 變量之前,會插入一個讀屏障(read barrier)。意思就是說,在你寫一個 volatile 域時,能保證任何線程都能看到你寫的值,同時,在寫之前,也能保證任何數(shù)值的更新對所有線程是可見的,因為內(nèi)存屏障會將其他所有寫的值更新到緩存。



  6、volatile 類型變量提供什么保證?


  volatile 變量提供順序和可見性保證,例如,JVM 或者 JIT為了獲得更好的性能會對語句重排序,但是 volatile 類型變量即使在沒有同步塊的情況下賦值也不會與其他語句重排序。 volatile 提供 happens-before 的保證,確保一個線程的修改能對其他線程是可見的。某些情況下,volatile 還能提供原子性,如讀 64 位數(shù)據(jù)類型,像 long 和 double 都不是原子的,但 volatile 類型的 double 和 long 就是原子的。



  7、闡述Session加載實體對象的過程。


  Session加載實體對象的步驟是:


  (1) Session在調(diào)用數(shù)據(jù)庫查詢功能之前,首先會在一級緩存中通過實體類型和主鍵進行查找,如果一級緩存查找命中且數(shù)據(jù)狀態(tài)合法,則直接返回;


  (2) 如果一級緩存沒有命中,接下來Session會在當前NonExists記錄(相當于一個查詢黑名單,如果出現(xiàn)重復的無效查詢可以迅速做出判斷,從而提升性能)中進行查找,如果NonExists中存在同樣的查詢條件,則返回null;


  (3) 如果一級緩存查詢失敗則查詢二級緩存,如果二級緩存命中則直接返回;


    (4) 如果之前的查詢都未命中,則發(fā)出SQL語句,如果查詢未發(fā)現(xiàn)對應記錄則將此次查詢添加到Session的NonExists中加以記錄,并返回null;


  (5) 根據(jù)映射配置和SQL語句得到ResultSet,并創(chuàng)建對應的實體對象;


  (6)將對象納入Session(一級緩存)的管理;


  (7)如果有對應的攔截器,則執(zhí)行攔截器的onLoad方法;


  (8) 如果開啟并設(shè)置了要使用二級緩存,則將數(shù)據(jù)對象納入二級緩存;


  (9) 返回數(shù)據(jù)對象。



  8、Query接口的list方法和iterate方法有什么區(qū)別?


  (1)list()方法無法利用一級緩存和二級緩存(對緩存只寫不讀),它只能在開啟查詢緩存的前提下使用查詢緩存;iterate()方法可以充分利用緩存,如果目標數(shù)據(jù)只讀或者讀取頻繁,使用iterate()方法可以減少性能開銷。


  (2) list()方法不會引起N+1查詢問題,而iterate()方法可能引起N+1查詢問題。



  9、Hibernate如何實現(xiàn)分頁查詢?


  通過Hibernate實現(xiàn)分頁查詢,開發(fā)人員只需要提供HQL語句(調(diào)用Session的createQuery()方法)或查詢條件(調(diào)用Session的createCriteria()方法)、設(shè)置查詢起始行數(shù)(調(diào)用Query或Criteria接口的setFirstResult()方法)和最大查詢行數(shù)(調(diào)用Query或Criteria接口的setMaxResults()方法),并調(diào)用Query或Criteria接口的list()方法,Hibernate會自動生成分頁查詢的SQL語句。



  10、鎖機制有什么用?簡述Hibernate的悲觀鎖和樂觀鎖機制。


  有些業(yè)務邏輯在執(zhí)行過程中要求對數(shù)據(jù)進行排他性的訪問,于是需要通過一些機制保證在此過程中數(shù)據(jù)被鎖住不會被外界修改,這就是所謂的鎖機制。


  Hibernate支持悲觀鎖和樂觀鎖兩種鎖機制。悲觀鎖,顧名思義悲觀的認為在數(shù)據(jù)處理過程中極有可能存在修改數(shù)據(jù)的并發(fā)事務(包括本系統(tǒng)的其他事務或來自外部系統(tǒng)的事務),于是將處理的數(shù)據(jù)設(shè)置為鎖定狀態(tài)。悲觀鎖必須依賴數(shù)據(jù)庫本身的鎖機制才能真正保證數(shù)據(jù)訪問的排他性,關(guān)于數(shù)據(jù)庫的鎖機制和事務隔離級別在《Java面試題大全(上)》中已經(jīng)討論過了。樂觀鎖,顧名思義,對并發(fā)事務持樂觀態(tài)度(認為對數(shù)據(jù)的并發(fā)操作不會經(jīng)常性的發(fā)生),通過更加寬松的鎖機制來解決由于悲觀鎖排他性的數(shù)據(jù)訪問對系統(tǒng)性能造成的嚴重影響。最常見的樂觀鎖是通過數(shù)據(jù)版本標識來實現(xiàn)的,讀取數(shù)據(jù)時獲得數(shù)據(jù)的版本號,更新數(shù)據(jù)時將此版本號加1,然后和數(shù)據(jù)庫表對應記錄的當前版本號進行比較,如果提交的數(shù)據(jù)版本號大于數(shù)據(jù)庫中此記錄的當前版本號則更新數(shù)據(jù),否則認為是過期數(shù)據(jù)無法更新。Hibernate中通過Session的get()和load()方法從數(shù)據(jù)庫中加載對象時可以通過參數(shù)指定使用悲觀鎖;而樂觀鎖可以通過給實體類加整型的版本字段再通過XML或@Version注解進行配置。


  提示:使用樂觀鎖會增加了一個版本字段,很明顯這需要額外的空間來存儲這個版本字段,浪費了空間,但是樂觀鎖會讓系統(tǒng)具有更好的并發(fā)性,這是對時間的節(jié)省。因此樂觀鎖也是典型的空間換時間的策略。



  11、闡述實體對象的三種狀態(tài)以及轉(zhuǎn)換關(guān)系。


  最新的Hibernate文檔中為Hibernate對象定義了四種狀態(tài)(原來是三種狀態(tài),面試的時候基本上問的也是三種狀態(tài)),分別是:瞬時態(tài)(new, or transient)、持久態(tài)(managed, or persistent)、游狀態(tài)(detached)和移除態(tài)(removed,以前Hibernate文檔中定義的三種狀態(tài)中沒有移除態(tài)),如下圖所示,就以前的Hibernate文檔中移除態(tài)被視為是瞬時態(tài)。


  瞬時態(tài):當new一個實體對象后,這個對象處于瞬時態(tài),即這個對象只是一個保存臨時數(shù)據(jù)的內(nèi)存區(qū)域,如果沒有變量引用這個對象,則會被JVM的垃圾回收機制回收。這個對象所保存的數(shù)據(jù)與數(shù)據(jù)庫沒有任何關(guān)系,除非通過Session的save()、saveOrUpdate()、persist()、merge()方法把瞬時態(tài)對象與數(shù)據(jù)庫關(guān)聯(lián),并把數(shù)據(jù)插入或者更新到數(shù)據(jù)庫,這個對象才轉(zhuǎn)換為持久態(tài)對象。


  持久態(tài):持久態(tài)對象的實例在數(shù)據(jù)庫中有對應的記錄,并擁有一個持久化標識(ID)。對持久態(tài)對象進行delete操作后,數(shù)據(jù)庫中對應的記錄將被刪除,那么持久態(tài)對象與數(shù)據(jù)庫記錄不再存在對應關(guān)系,持久態(tài)對象變成移除態(tài)(可以視為瞬時態(tài))。持久態(tài)對象被修改變更后,不會馬上同步到數(shù)據(jù)庫,直到數(shù)據(jù)庫事務提交。


  游離態(tài):當Session進行了close()、clear()、evict()或flush()后,實體對象從持久態(tài)變成游離態(tài),對象雖然擁有持久和與數(shù)據(jù)庫對應記錄一致的標識值,但是因為對象已經(jīng)從會話中清除掉,對象不在持久化管理之內(nèi),所以處于游離態(tài)(也叫脫管態(tài))。游離態(tài)的對象與臨時狀態(tài)對象是十分相似的,只是它還含有持久化標識。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 精品精品国产欧美在线观看 | 成人免费一级在线播放 | 日本黄色激情 | 久久青青国产 | 亚洲激情在线视频 | 一二三区乱码一区二区三区码 | 欧美日本韩国一区 | 精品国模一区二区三区 | 黑丝网站 | 久久最新免费视频 | 亚洲欧美日本综合一区二区三区 | 在线观看视频黄 | 色视频在线观看在线播放 | 操xxx| 亚洲精品高清中文字幕 | 日本欧美一区二区三区不卡视频 | 亚洲视频在线观看视频 | 成人欧美s视频在线观看 | 福利120秒 | 就草草在线观看视频 | 亚洲国产成人va在线观看网址 | 国产综合色香蕉精品五月婷 | 日日干狠狠干 | 日本国产视频 | 成人精品人成网站 | 亚洲 欧洲 日产 韩国在线 | 99热成人精品免费久久 | 一区二区三区高清视频在线观看 | 欧美一级专区免费大片 | 成人国产网站 | 国产精品456 | 涩涩片影院 | 亚洲综合在线成人一区 | 午夜视频网站在线观看 | 日韩高清免费观看 | www视频在线播放 | 国产亚洲欧美日本一二三本道 | 一 级 黄 中国色 片 | 美国十次狠狠色综合 | 第一福利官方导航大全 | 波多野结衣视频在线免费观看 |