面試題2

1. int 與Integer區(qū)別

  1. 無論如何痰催,Integer與new Integer不會(huì)相等奴璃。不會(huì)經(jīng)歷拆箱過程,i3的引用指向堆曲梗,而i4指向?qū)iT存放他的內(nèi)存(常量池),他們的內(nèi)存地址不一樣妓忍,所以為false
  2. 兩個(gè)都是非new出來的Integer虏两,如果數(shù)在-128到127之間,則是true,否則為false
    java在編譯Integer i2 = 128的時(shí)候,被翻譯成-> Integer i2 = Integer.valueOf(128);而valueOf()函數(shù)會(huì)對(duì)-128到127之間的數(shù)進(jìn)行緩存
  3. 兩個(gè)都是new出來的,都為false
  4. int和integer(無論new否)比世剖,都為true定罢,因?yàn)闀?huì)把Integer自動(dòng)拆箱為int再去比
    轉(zhuǎn)載:https://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html
    int占用內(nèi)存比integer要小,integer是對(duì)象類型旁瘫,需要儲(chǔ)存對(duì)象元數(shù)

JVM JRE JDK JIT之間的區(qū)別

2.java虛擬機(jī)(JVM)
使用java編程語言的主要優(yōu)勢(shì)就是平臺(tái)的獨(dú)立性祖凫。你曾經(jīng)想知道過java怎么實(shí)現(xiàn)平臺(tái)的獨(dú)立性嗎?對(duì)酬凳,就是虛擬機(jī)惠况,它抽象化了硬件設(shè)備,開發(fā)者和他們的程序的得以操作系統(tǒng)宁仔。虛擬機(jī)的職責(zé)就是處理和操作系統(tǒng)的交流稠屠。java不同的接口規(guī)范對(duì)任何平臺(tái)都有良好的支持,因?yàn)閖vm很好的實(shí)現(xiàn)了每個(gè)平臺(tái)的規(guī)范翎苫。jvm可以理解偽代碼字節(jié)碼权埠,在用戶和操作系統(tǒng)之間建立了一層樞紐。

java運(yùn)行時(shí)環(huán)境(JRE)
java運(yùn)行時(shí)環(huán)境是JVM的一個(gè)超集煎谍。JVM對(duì)于一個(gè)平臺(tái)或者操作系統(tǒng)是明確的攘蔽,而JRE確實(shí)一個(gè)一般的概念,他代表了完整的運(yùn)行時(shí)環(huán)境呐粘。我們?cè)趈re文件夾中看到的所有的jar文件和可執(zhí)行文件都會(huì)變成運(yùn)行時(shí)的一部分满俗。事實(shí)上转捕,運(yùn)行時(shí)JRE變成了JVM。所以對(duì)于一般情況時(shí)候使用JRE漫雷,對(duì)于明確的操作系統(tǒng)來說使用JVM。當(dāng)你下載了JRE的時(shí)候鳍咱,也就自動(dòng)下載了JVM降盹。

java開發(fā)工具箱(JDK)
java開發(fā)工具箱指的是編寫一個(gè)java應(yīng)用所需要的所有jar文件和可執(zhí)行文件。事實(shí)上谤辜,JRE是JKD的一部分蓄坏。如果你下載了JDK,你會(huì)看到一個(gè)名叫JRE的文件夾在里面。JDK中要被牢記的jar文件就是tools.jar,它包含了用于執(zhí)行java文檔的類還有用于類簽名的jar包丑念。

即時(shí)編譯器(JIT)
即時(shí)編譯器是種特殊的編譯器涡戳,它通過有效的把字節(jié)碼變成機(jī)器碼來提高JVM的效率。JIT這種功效很特殊脯倚,因?yàn)樗褭z測到的相似的字節(jié)碼編譯成單一運(yùn)行的機(jī)器碼渔彰,從而節(jié)省了CPU的使用。這和其他的字節(jié)碼編譯器不同推正,因?yàn)樗沁\(yùn)行時(shí)(第一類執(zhí)行的編譯恍涂?)the firs of its kind to perform the compilation(從字節(jié)碼到機(jī)器碼)而不是在程序運(yùn)行之前。正是因?yàn)檫@些植榕,動(dòng)態(tài)編譯這個(gè)詞匯才和JIT有那么緊密的關(guān)系再沧。
轉(zhuǎn)載:https://blog.csdn.net/orangleliu/article/details/38309407

3.抽象類和接口區(qū)別

  1. 抽象類中可以包含非抽象的普通方法,而接口中所有的方法必須是抽象的尊残,不能有非抽象的普通方法炒瘸。
  2. 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類寝衫。
  3. 抽象類里可以有構(gòu)造方法顷扩,而接口內(nèi)不能有構(gòu)造方法。
  4. 抽象類中的抽象方法的訪問類型可以是public 慰毅,protected和默認(rèn)類型屎即,但接口中的抽象方法只能是public類型的,并且默認(rèn)即為public abstract類型事富。
  5. 抽象類中可以包含靜態(tài)方法技俐,接口內(nèi)不能包含靜態(tài)方法。
  6. 抽象類和接口中都可以包含靜態(tài)成員變量统台,抽象類中的靜態(tài)成員變量的訪問類型可以任意雕擂,但接口中定義的變量只能是public static final類型,并且默認(rèn)為public static final類型贱勃。
  7. 抽象類中可以有普通成員變量井赌,而接口中不能有普通成員變量谤逼。

4.用SQL查找表中多余的重復(fù)記錄,重復(fù)記錄根據(jù)單個(gè)字段(ID)來判斷

_20180506110351.png

4.對(duì)線程的理解

1).線程是進(jìn)程的子集仇穗,一個(gè)進(jìn)程可有多個(gè)線程
2).是cup執(zhí)行的基本單位流部,擁有代理的寄存器和棧
3).同一進(jìn)程下,線程共享地址和內(nèi)存空間
4).線程的狀態(tài):新建纹坐,就緒(等待cup使用權(quán))枝冀,運(yùn)行,堵塞(暫時(shí)放棄cup使用權(quán)耘子,等待資源)

5.SpringMVC執(zhí)行流程

  1. 客戶端發(fā)起請(qǐng)求到DispatcherServlet(前端控制器)
  2. 前端控制器請(qǐng)求HandlerMapping(處理器映射器)查找 Handle根據(jù)xml配置果漾、注解進(jìn)行查找
  3. HandlerMapping(處理器映射器)向DispatcherServlet(前端控器)返回Handler
  4. DispatcherServlet(前端控制器)調(diào)用HandlerAdapter(處理器適配器)去執(zhí)行Handler
  5. HandlerAdapter(處理器適配器)去執(zhí)行Handler
  6. Handler執(zhí)行完成給HandlerAdapter(處理器適配器)返回ModelAndView
  7. HandlerAdapter(處理器適配器)向前端控制器返ModelAndView
  8. 前端控制器請(qǐng)求ResolverView(視圖解析器)去進(jìn)行視圖解析根據(jù)邏輯視圖名解析成真正的視圖(jsp)
  9. ResolverView(視圖解析器)向DispatcherServlet(前端控制器)返回View
  10. DispatcherServlet(前端控制器)進(jìn)行視圖渲染
    視圖渲染將模型數(shù)據(jù)(在ModelAndView對(duì)象中)填充到request域
    最后DispatcherServlet(前端控制器)向用戶響應(yīng)(response)結(jié)果

6.struts2執(zhí)行流程

  1. 用戶發(fā)送請(qǐng)求;
  2. 這個(gè)請(qǐng)求經(jīng)過一系列的過濾器(Filter)(這些過濾器中有一個(gè)叫做ActionContextCleanUp的可選過濾器谷誓,這個(gè)過濾器對(duì)于Struts2和其他框架的集成很有幫助绒障,例如:SiteMesh Plugin)
  3. 接著FilterDispatcher被調(diào)用,F(xiàn)ilterDispatcher詢問ActionMapper來決定這個(gè)請(qǐng)求是否需要調(diào)用某個(gè)Action 捍歪;
  4. 如果需要處理户辱,ActionMapper會(huì)通知FilterDispatcher,需要處理這個(gè)請(qǐng)求糙臼,F(xiàn)ilterDispatcher會(huì)停止過濾器鏈以后的部分焕妙,(這也就是為什么,F(xiàn)ilterDispatcher應(yīng)該出現(xiàn)在過濾器鏈的最后的原因)弓摘。FilterDispatcher把請(qǐng)求的處理交給ActionProxy 焚鹊;
  5. ActionProxy通過Configuration Manager詢問框架的配置文件struts.xml,找到需要調(diào)用的Action類 韧献。(在服務(wù)器啟動(dòng)的時(shí)候末患,ConfigurationManager就會(huì)把struts.xml中的所有信息讀到內(nèi)存里,并緩存锤窑,當(dāng)ActionProxy帶著URL向他詢問要運(yùn)行哪個(gè)Action的時(shí)候璧针,就可以直接匹配、查找并回答了)
  6. ActionProxy創(chuàng)建一個(gè)ActionInvocation的實(shí)例渊啰。
  7. ActionInvocation實(shí)例使用命名模式來調(diào)用探橱,在調(diào)用Action的過程前后,涉及到一系列相關(guān)攔截器(Intercepter)的調(diào)用绘证。
  8. 一旦Action執(zhí)行完畢隧膏,ActionInvocation負(fù)責(zé)根據(jù)struts.xml中的配置找到對(duì)應(yīng)的返回結(jié)果。返回結(jié)果通常是(但不總是嚷那,也可 能是另外的一個(gè)Action鏈)一個(gè)需要被表示的JSP或者FreeMarker的模版胞枕。在表示的過程中可以使用Struts2 框架中繼承的標(biāo)簽。
  9. 最后魏宽,ActionInvocation對(duì)象倒序執(zhí)行攔截器腐泻。
    10.ActionInvocation對(duì)象執(zhí)行完畢后决乎,響應(yīng)用戶。

7.如何解決高并發(fā)

  1. 盡量使用緩存技術(shù)來做派桩。用戶緩存构诚、頁面緩存等一切緩存,使用特定的機(jī)制進(jìn)行刷新铆惑。利用消耗內(nèi)存空間來換取用戶的效率范嘱。同時(shí)減少數(shù)據(jù)庫的訪問次數(shù)。
  2. 把數(shù)據(jù)庫的查詢語句進(jìn)行優(yōu)化鸭津,一般復(fù)雜的SQL語句就不要使用ORM框架自帶的做法來寫彤侍,采用自己來寫SQL肠缨,例如hibernate的hql中的復(fù)雜語句逆趋,就會(huì)很耗時(shí)
  3. 優(yōu)化數(shù)據(jù)庫表的結(jié)構(gòu),在關(guān)鍵字晒奕、主鍵闻书、訪問率極高的字段中加入索引。但盡量只是在數(shù)字類型上面加脑慧。因?yàn)槭褂? 字段 is null的時(shí)候魄眉,索引的效果會(huì)失效
  4. 報(bào)表統(tǒng)計(jì)的模塊,盡量采用定時(shí)任務(wù)執(zhí)行闷袒,如果非得要實(shí)時(shí)進(jìn)行刷新坑律,那么可以采用緩存來做數(shù)據(jù)。
  5. 可以使用靜態(tài)頁面的地方囊骤,使用靜態(tài)頁面晃择,減少頁面解析時(shí)間,同時(shí)由于頁面中有許多圖片的這種也物,可以考慮一下把圖片做成一個(gè)服務(wù)器宫屠,這樣可以減少業(yè)務(wù)服務(wù)器的壓力。
  6. 使用集群的方式來解決滑蚯,單臺(tái)服務(wù)器性能的問題浪蹂。
  7. 把項(xiàng)目,拆分成為多個(gè)應(yīng)用小型服務(wù)器形式告材,來進(jìn)行分布式部署坤次。采用數(shù)據(jù)同步機(jī)制(可以使用數(shù)據(jù)庫同步形式來做)達(dá)到數(shù)據(jù)一致性。
  8. 使用負(fù)載均衡模式斥赋,來讓每一個(gè)服務(wù)器資源進(jìn)行合理的利用浙踢。
  9. 緩存機(jī)制中,可以使用redis來做內(nèi)存數(shù)據(jù)庫緩存起來灿渴。也可以使用鏡像分擔(dān)洛波,這樣可以讓兩臺(tái)服務(wù)器進(jìn)行訪問胰舆,提高服務(wù)器的訪問量

8.數(shù)據(jù)庫優(yōu)化

  1. 避免在WHERE子句中使用in,not in蹬挤,or 或者h(yuǎn)aving缚窿。
    可以使用 exist 和not exist代替 in和not in。
    可以使用表鏈接代替 exist焰扳。
    Having可以用where代替倦零,如果無法代替可以分兩步處理。
    例子
    SELECT * FROM ORDERS WHERE CUSTOMER_NAME NOT IN
    (SELECT CUSTOMER_NAME FROM CUSTOMER)
    優(yōu)化:
    SELECT * FROM ORDERS WHERE CUSTOMER_NAME not exist
    (SELECT CUSTOMER_NAME FROM CUSTOMER)
  1. 不要在建立的索引的數(shù)據(jù)列上進(jìn)行下列操作:

(1)避免對(duì)索引字段進(jìn)行計(jì)算操作
(2)避免在索引字段上使用not吨悍,<>扫茅,!=
(3)避免在索引列上使用IS NULL和IS NOT NULL
(4)避免在索引列上出現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換
(5)避免在索引字段上使用函數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市育瓜,隨后出現(xiàn)的幾起案子葫隙,更是在濱河造成了極大的恐慌,老刑警劉巖躏仇,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恋脚,死亡現(xiàn)場離奇詭異,居然都是意外死亡焰手,警方通過查閱死者的電腦和手機(jī)糟描,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來书妻,“玉大人船响,你說我怎么就攤上這事《懵模” “怎么了见间?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長崇呵。 經(jīng)常有香客問我缤剧,道長,這世上最難降的妖魔是什么域慷? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任荒辕,我火速辦了婚禮,結(jié)果婚禮上犹褒,老公的妹妹穿的比我還像新娘抵窒。我一直安慰自己,他們只是感情好叠骑,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布李皇。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掉房。 梳的紋絲不亂的頭發(fā)上茧跋,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音卓囚,去河邊找鬼瘾杭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哪亿,可吹牛的內(nèi)容都是我干的粥烁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蝇棉,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼讨阻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起篡殷,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤钝吮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后贴唇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搀绣,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡飞袋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年戳气,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巧鸭。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓶您,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纲仍,到底是詐尸還是另有隱情呀袱,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布郑叠,位于F島的核電站夜赵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏乡革。R本人自食惡果不足惜寇僧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沸版。 院中可真熱鬧嘁傀,春花似錦、人聲如沸视粮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕾殴。三九已至笑撞,卻和暖如春岛啸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茴肥。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國打工值戳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人炉爆。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓堕虹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芬首。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赴捞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)郁稍,斷路器赦政,智...
    卡卡羅2017閱讀 134,695評(píng)論 18 139
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,720評(píng)論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法耀怜,內(nèi)部類的語法恢着,繼承相關(guān)的語法,異常的語法财破,線程的語...
    子非魚_t_閱讀 31,660評(píng)論 18 399
  • 整理自:Java面試題全集(上)https://blog.csdn.net/jackfrued/article/d...
    在水之天閱讀 3,110評(píng)論 1 24
  • 飛掰派,離開喧囂的城市,去最美的地方左痢,去追最美的太陽靡羡,這是我最美的時(shí)光。 你不必俊性,不必在為什么事情掙扎略步,放開自己也沒什...
    唐小清呀閱讀 183評(píng)論 0 1