免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Java開發(fā)工程師2020最新面試題-適用于2-3年工作經(jīng)驗(yàn)(不斷更新中...)

1、自我介紹
  略
2、springboot和ssm有什么區(qū)別?
  springboot和ssm不沖突,springboot只是簡化了配置,實(shí)際開發(fā)沒什么區(qū)別,
  傳統(tǒng)的SSM框架項(xiàng)目會有大量的配置文件,需要手動的去整合三個(gè)框架,
  也就是springmvc,spring,mybatis,并且需要注意各種配置和兼容,后期的維護(hù)難度也很大.
3、springboot有哪些注解?
  @Service: 注解在類上,表示這是一個(gè)業(yè)務(wù)層bean
  @Controller:注解在類上,表示這是一個(gè)控制層bean
  @Repository: 注解在類上,表示這是一個(gè)數(shù)據(jù)訪問層bean
  @Component: 注解在類上,表示通用bean ,value不寫默認(rèn)就是類名首字母小寫
  @Autowired:自動注入
  @Resource: 按名稱裝配
  @ConfigurationProperties(prefix = "user1")//設(shè)置配置文件的前綴
  @PropertySource("classpath:detifalManager.properties")//設(shè)置自定義文件的路徑
  @Value("${test.name}")取自定義配置文件的值
  區(qū)別:
  @Resource默認(rèn)按照名稱方式進(jìn)行bean匹配
  @Autowired默認(rèn)按照類型方式進(jìn)行bean匹配
  @Resource(importjavax.annotation.Resource;)是J2EE的注解
  @Autowired(importorg.springframework.beans.factory.annotation.Autowired;)是Spring的注解
4、redis的數(shù)據(jù)類型?
  string(字符串)
  hash(哈希)
  list(列表)
  set(集合)
  zset(有序集合)
5、反射機(jī)制是怎么樣的?
  反射機(jī)制是Java語言中一個(gè)非常重要的特性,它允許程序在運(yùn)行時(shí)進(jìn)行自我檢查,同時(shí)也允許其對內(nèi)部成員進(jìn)行操作。
  由于反射機(jī)制能夠?qū)崿F(xiàn)在運(yùn)行時(shí)對類進(jìn)行裝載,因此能夠增加程序的靈活性,但是不恰當(dāng)?shù)厥褂梅瓷錂C(jī)制,
  也會嚴(yán)重影響系統(tǒng)的性能。具體而言,
  反射機(jī)制的主要功能主要有:
 ?、俚玫揭粋€(gè)對象所屬的類
  ②獲取一個(gè)類的所有成員變量和方法
 ?、墼谶\(yùn)行時(shí)創(chuàng)建對象,調(diào)用對象的方法。
6、RPC是基于什么協(xié)議通訊的?
  RPC遠(yuǎn)程服務(wù)調(diào)用
  RPC可以基于TCP協(xié)議也可以基于HTTP協(xié)議,RPC的主要目的只是獲取由遠(yuǎn)程機(jī)器上的程序所執(zhí)行的結(jié)果。
7、悲觀鎖和樂觀鎖的區(qū)別?
  悲觀鎖
    每次拿數(shù)據(jù)都以為別人會修改,所以每次拿數(shù)據(jù)時(shí)都會上鎖。
  實(shí)現(xiàn):開啟事務(wù),啟用鎖機(jī)制

  樂觀鎖
    每次拿數(shù)據(jù)時(shí)候都認(rèn)為別人不會修改,所以不會上鎖,但是在更新數(shù)據(jù)時(shí)候會判斷在此期間是否有人更新過。
  實(shí)現(xiàn):1.使用版本號2.使用時(shí)間戳
8、nginx的啟動與停止?
  啟動:
    ./nginx
  停止:
    查詢nginx主進(jìn)程號
    ps -ef | grep nginx
    從容停止 kill -QUIT 主進(jìn)程號
    快速停止 kill -TERM 主進(jìn)程號
    強(qiáng)制停止 kill -9 nginx
9、說說你對大數(shù)據(jù)的理解?
    大數(shù)據(jù)技術(shù)主要圍繞“數(shù)據(jù)價(jià)值化”這個(gè)核心來展開,涉及到數(shù)據(jù)采集、數(shù)據(jù)整理、數(shù)據(jù)存儲、數(shù)據(jù)安全、
  數(shù)據(jù)分析、數(shù)據(jù)呈現(xiàn)和數(shù)據(jù)應(yīng)用等技術(shù)。
10、應(yīng)用服務(wù)器有哪些?
  tomcat,jboss,WebLogic
11、事務(wù)的四大特征?
  原子性(Atomicity):表示事務(wù)內(nèi)不可分割,要么都成功,要么都失敗
  一致性(Consistency):要么都成功,要么都失敗.失敗了,要對前面的操作進(jìn)行回滾
  隔離性(Isolation):一個(gè)事務(wù)開啟了,不能受其它事務(wù)的影響
  持久性(Durability):持續(xù)性,表示事務(wù)開始了,就不能終止.事務(wù)提交后,將數(shù)據(jù)序列化到數(shù)據(jù)庫
12、redis三大策略?
  持久化策略(內(nèi)存到磁盤上):RDB(全部選中的數(shù)據(jù)進(jìn)行全量備份)、AOF日志記錄修改指令(增量備份針對上一次選中的數(shù)據(jù))兩種方案

  內(nèi)存淘汰策略:noeviction--默認(rèn)策略,不刪除數(shù)據(jù)    allkeys-lru--所有key中,刪除最近最少使用的數(shù)據(jù)  volatile-lru--設(shè)置過期時(shí)間的所有key中,
  選取最近最少使用的數(shù)據(jù)刪除  volatile-random--在所有key中,隨機(jī)刪除設(shè)置過期時(shí)間key的數(shù)據(jù)   volatile-ttl--設(shè)置過期時(shí)間key中,刪除存活時(shí)間最短的數(shù)據(jù)

  過期(定期)策略:定期刪除(過期key放入獨(dú)立字典中,定期刪除字典數(shù)據(jù))、定期刪除策略(定期刪除)、惰性刪除(過期了,刪除,不返回任何數(shù)據(jù))
13、SOA、微服務(wù)、Spring Cloud、Spring Boot的區(qū)別?
  SOA:面向服務(wù)體系架構(gòu)(Service-Oriented Architecture),基于分布式思想,側(cè)重點(diǎn)在于提取核心服務(wù),減少代碼冗余,增加業(yè)務(wù)代碼復(fù)用,解決信息孤島等一些問題。

  微服務(wù):基于SOA架構(gòu)的更細(xì)粒度的服務(wù)思想,側(cè)重點(diǎn)在于服務(wù)解耦。

  Spring Cloud:是Spring提供的一套微服務(wù)標(biāo)準(zhǔn),Spring Cloud生態(tài)能夠幫助開發(fā)者快速構(gòu)建分布式應(yīng)用,
    同時(shí)提供了分布式應(yīng)用常見的一些問題解決方案,包括spring自主開發(fā)的及第三方解決方案。

  Spring Boot:是spring提供的,能夠幫助開發(fā)者快速構(gòu)建獨(dú)立的,基于Spring的應(yīng)用程序?;诩s定大于配置的思想,自動配置,
    應(yīng)用程序只需要很少的Spring配置即可。提供應(yīng)用程序監(jiān)控和外部化配置功能。
14、RabbitMQ工作模式?
  在 RabbitMQ 官網(wǎng)上提供了 6 種工作模式:簡單模式、工作隊(duì)列模式、發(fā)布/訂閱模式、路由模式、主題模式 和 RPC 模式。
15、Lucene與solr區(qū)別?
  Lucene:單獨(dú)使用Lucene實(shí)現(xiàn)站內(nèi)搜索需要開發(fā)的工作量較大,主要表現(xiàn)在:索引維護(hù)、索引性能優(yōu)化、搜索性能優(yōu)化等,因此不建議采用。
  Solr:基于Solr實(shí)現(xiàn)站內(nèi)搜索擴(kuò)展性較好并且可以減少程序員的工作量,因?yàn)镾olr提供了較為完備的搜索引擎解決方案,因此在門戶、論壇等系統(tǒng)中常用此方案。
16、怎么理解MySQL存儲過程?
  mysql執(zhí)行語句是先編譯后執(zhí)行的,這樣如果查詢的并發(fā)大的時(shí)候會浪費(fèi)很多資源和時(shí)間。造成mysql進(jìn)程占用資源過多,癥狀就是慢。
  存儲過程可以把一些特別的語句封裝成一個(gè)方法,再編譯好成一個(gè)可執(zhí)行的方法對外只要接收參數(shù)就可以,這樣就不用再編譯。執(zhí)行速度更快,主要用來性能提升
17、存儲過程有哪些特點(diǎn)?
  能完成較復(fù)雜的判斷和運(yùn)算
  可編程行強(qiáng),靈活
  SQL編程的代碼可重復(fù)使用
  執(zhí)行速度相對快一些
  減少網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸,節(jié)省開銷
18、Nginx負(fù)載均衡的作用?
  分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,和它的英文名稱很匹配。就是我們需要一個(gè)調(diào)度者,保證所有后端服務(wù)器都將性能充分發(fā)揮,從而保持服務(wù)器集群的整體性能最優(yōu),這就是負(fù)載均衡。
19、如何解決高并發(fā)問題?
  解決高并發(fā)可以從四個(gè)方向:前端、服務(wù)器、數(shù)據(jù)庫、硬件提升
  前端:實(shí)現(xiàn)負(fù)載均衡,配置前置代理服務(wù)器,如NGINX,Apache等
  后臺:增加網(wǎng)絡(luò)帶寬,DNS域名解析分發(fā)多臺服務(wù)器;
  數(shù)據(jù)庫:對數(shù)據(jù)的查詢進(jìn)行優(yōu)化,實(shí)現(xiàn)讀寫分離。
  硬件提升:搭建服務(wù)器集群,數(shù)據(jù)庫集群,實(shí)現(xiàn)讀寫分離等等
20、如何理解消息隊(duì)列?為什么使用消息隊(duì)列?
  消息隊(duì)列是為了解決生產(chǎn)和消費(fèi)的速度不一致導(dǎo)致的問題,有以下好處:

  減少請求響應(yīng)時(shí)間。比如注冊功能需要調(diào)用第三方接口來發(fā)短信,如果等待第三方響應(yīng)可能會需要很多時(shí)間
  服務(wù)之間解耦。主服務(wù)只關(guān)心核心的流程,其他不重要的、耗費(fèi)時(shí)間流程是否如何處理完成不需要知道,只通知即可
  流量削鋒。對于不需要實(shí)時(shí)處理的請求來說,當(dāng)并發(fā)量特別大的時(shí)候,可以先在消息隊(duì)列中作緩存,然后陸續(xù)發(fā)送給對應(yīng)的服務(wù)去處理
21、tomcat三種運(yùn)行模式?
  bio nio apr
22、MySQL五個(gè)聚合函數(shù)和兩個(gè)排序關(guān)鍵字?
  聚合函數(shù):count、sum、avg、max、min
  排序關(guān)鍵字:升序asc 降序desc
23、數(shù)組與List集合之間的相互轉(zhuǎn)換
  數(shù)組轉(zhuǎn)換為list集合:
    String[] arr = new String[5];
    arr[0]="a";
    arr[1]="b";
    arr[2]="c";
    arr[3]="d";
    arr[4]="e";
    List<String> list = new ArrayList<>();
    List<String> list1 = Arrays.asList(arr);
  list集合轉(zhuǎn)換為數(shù)組Array:
    List<Integer> ls = new ArrayList<>();
    ls.add(1);
    ls.add(2);
    ls.add(3);
    ls.add(4);
    ls.add(5);
    Object[] objects = ls.toArray();
24、Redis為什么是單線程?
    redis 核心就是 如果我的數(shù)據(jù)全都在內(nèi)存里,我單線程的去操作 就是效率最高的,為什么呢,因?yàn)槎嗑€程的本質(zhì)就是 CPU 模擬出來多個(gè)線程的情況,這種模擬出來的情況就有一個(gè)代價(jià),
  就是上下文的切換,對于一個(gè)內(nèi)存的系統(tǒng)來說,它沒有上下文的切換就是效率最高的。
  redis用單個(gè)CPU 綁定一塊內(nèi)存的數(shù)據(jù),然后針對這塊內(nèi)存的數(shù)據(jù)進(jìn)行多次讀寫的時(shí)候,都是在一個(gè)CPU上完成的,所以它是單線程處理這個(gè)事。

25、日志的好處?

  便于開發(fā)錯(cuò)誤跟蹤
  對于用戶問題能根據(jù)日志跟蹤
26、log4j的隔離級別
  一共分為五個(gè)級別:DEBUG、INFO、WARN、ERROR和FATAL。這五個(gè)級別是有順序的,DEBUG < INFO < WARN < ERROR < FATAL,明白這一點(diǎn)很重要,
  這里L(fēng)og4j有一個(gè)規(guī)則:假設(shè)設(shè)置了級別為P,如果發(fā)生了一個(gè)級別Q比P高,則可以啟動,否則屏蔽掉。
27、什么是跨域?
  跨域是指一個(gè)域下的文檔或腳本試圖去請求另一個(gè)域下的資源,這里跨域是廣義的。
28、怎么解決跨域?
  response 添加 headerresp.setHeader("Access-Control-Allow-Origin", "*");
  JSONP 方式
  HttpClient 請求轉(zhuǎn)發(fā)
  nginx 轉(zhuǎn)發(fā)
29、String,StringBuffer與StringBuilder的區(qū)別?
  String 字符串常量適用于少量的字符串操作
  StringBuffer 字符串變量(線程安全)適用于多線程下字符緩沖區(qū)進(jìn)行大量操作
  StringBuilder 字符串變量(非線程安全)適用于單線程下字符緩沖區(qū)進(jìn)行大量操作
  StringBuilder > StringBuffer > String
30、Spring常用的三種注入方式
  Spring通過DI(依賴注入)實(shí)現(xiàn)IOC(控制反轉(zhuǎn)),常用的注入方式主要有三種:構(gòu)造方法注入,setter注入,基于注解的注入。
31、接口和抽象類的區(qū)別?
  實(shí)現(xiàn):抽象類的子類使用excends來繼承,接口必須使用implements來實(shí)現(xiàn)接口
  構(gòu)造函數(shù):抽象類可以有構(gòu)造函數(shù),接口不能有
  實(shí)現(xiàn)數(shù)量:類可以實(shí)現(xiàn)多個(gè)接口,但是只能繼承一個(gè)實(shí)現(xiàn)類
  訪問修飾符:接口中可以默認(rèn)使用public修飾,抽象類中的方法可以是任意訪問修飾符
32、說說你對jvm的理解?
  Java程序不考慮內(nèi)存管理,是因?yàn)榘褍?nèi)存的管理交給了jvm,jvm有一套完整的存儲和垃圾回收機(jī)制
    類的加載指的是將類的.class文件中的二進(jìn)制數(shù)據(jù)讀入到內(nèi)存中,將其放在運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法區(qū)中,然后在堆區(qū)創(chuàng)建java.lang.Class對象,
  用來封裝類在方法區(qū)中的數(shù)據(jù)結(jié)構(gòu)。
  Java虛擬機(jī)與程序的生閩南歌周期
   ?。?)程序正常執(zhí)行完,進(jìn)程結(jié)束
   ?。?)System.exit()方法來終止程序執(zhí)行,傳入?yún)?shù)為0,代表正常退出
   ?。?)程序出現(xiàn)異?;蛘咤e(cuò)誤導(dǎo)致虛擬機(jī)進(jìn)程退出
    (4)操作系統(tǒng)出現(xiàn)錯(cuò)誤導(dǎo)致虛擬機(jī)進(jìn)程退出
33、怎么遍歷一個(gè)map
    通過map.keyset遍歷keyhevalue:
    for(Integer in : map.keySet()){
      String str = map.get(in);
      System.out.println(in+" ”+str);
    }
    通過map.value()遍歷所有的value,但不能遍歷key
    for(String v :map.values()){
      System.out.println("value=" + v );
    }
34、Jquery 的選擇器有幾種?
  基本選擇器 過濾選擇器 表單選擇器 層級選擇器
35、什么是值傳遞和引用傳遞?
  值傳遞:指的是把值復(fù)制的傳過去一份 特點(diǎn):傳遞的是值的拷貝,也就是傳遞后互不相關(guān)
  引用傳遞:指的是方法調(diào)用時(shí),傳遞的參數(shù)是按引用進(jìn)行傳遞,其傳遞的是引用地址,也就是變量所對應(yīng)的內(nèi)存空間的地址
36、攔截器和過濾器的區(qū)別?
 ?。?)攔截器是基于Java的反射機(jī)制,過濾器是基于函數(shù)的回調(diào)
  (2)過濾器依賴于servlet容器,攔截器不依賴servlet容器
 ?。?)攔截器只對action請求起作用,過濾器可以對所有請求起作用
 ?。?)攔截器可以訪問action上下文、值棧里的對象,過濾器不能
 ?。?)在action生命周期中,攔截器可以多次被調(diào)用,而過濾器只能在容器初始化時(shí)調(diào)用一次
37、數(shù)組和集合的區(qū)別?
  數(shù)組:長度不可以改變,只能裝同種數(shù)據(jù)類型
  集合:集合長度可改變,可裝任意數(shù)據(jù)類型
38、spring注解@Autowrite和@Resource
  Autowired:按類型裝配
  Resource:按名字裝配
39、resultmap和resulttype的區(qū)別?
  resulttype:當(dāng)使用resulttype做sql語句返回結(jié)果時(shí),對于SQL語句查出的字段在相應(yīng)的polo中必須和它的相同字段類型對應(yīng),而resulttype的內(nèi)容就是pojo在本項(xiàng)目中的位置
  resultmap:當(dāng)使用resultmap做sql返回結(jié)果時(shí),通常需在mapper.xml中定義resultmap進(jìn)行pojo和相應(yīng)字段的對應(yīng)
40、hashmap和hashtable的區(qū)別?
 ?。?)hashmap線程不安全,hashtable線程安全
 ?。?)hashmap允許有null的鍵和值,hashtable不允許有null的鍵和值
 ?。?)hashmap效率高一點(diǎn),hashtable效率稍低
 ?。?)hashmap方法不是Synchronize的要提供外同步,hashtable方法是Synchronize的
  (5)hashmap有containsvalue和containsKey方法,hashtable有contains方法方法
  (6)Hashmap 是Java1.2 引進(jìn)的Map interface 的一個(gè)實(shí)現(xiàn),Hashtable 繼承于Dictionary 類
 ?。?)Hashmap是Hashtable的輕量級實(shí)現(xiàn),Hashtable 比Hashmap 要舊
41、多線程創(chuàng)建的方式?
  繼承 Thread 類
  實(shí)現(xiàn) Runable 接口
  實(shí)現(xiàn) Callable 接口和 Future 接口
42、線程中wait和sleep的區(qū)別?
  對時(shí)間的指定:
 ?。?)sleep方法必須設(shè)置指定時(shí)間
  (2)wait方法有重載形式,可以指定時(shí)間,也可以不指定時(shí)間
  對于執(zhí)行器和鎖的操作:
 ?。?)sleep():釋放執(zhí)行權(quán),不釋放鎖,因?yàn)榭隙苄?,肯定可以恢?fù)到臨時(shí)阻塞狀態(tài)
 ?。?)wait():釋放執(zhí)行權(quán),釋放鎖,因?yàn)閣ait不釋放鎖,如果沒有時(shí)間指定,那么其它線程都進(jìn)行不了同步中,無法將其喚醒
43、mybatis一級緩存和二級緩存?

  一級緩存
  一級緩存的作用域是一個(gè)sqlsession內(nèi);二級緩存作用域是針對mapper進(jìn)行緩存.
    一級緩存時(shí)執(zhí)行commit,close,增刪改等操作,就會清空當(dāng)前的一級緩存;當(dāng)對SqlSession執(zhí)行更新操作(update、delete、insert)后并執(zhí)行commit時(shí),
  不僅清空其自身的一級緩存(執(zhí)行更新操作的效果),也清空二級緩存(執(zhí)行commit()的效果)

  二級緩存

  開啟了二級緩存后,還需要將要緩存的pojo實(shí)現(xiàn)Serializable接口,為了將緩存數(shù)據(jù)取出執(zhí)行反序列化操作,
  因?yàn)槎壘彺鏀?shù)據(jù)存儲介質(zhì)多種多樣,不一定只存在內(nèi)存中,有可能存在硬盤中
44、集合的體系
  單列集合
    collection
      list集合:有序 可重復(fù)(有下標(biāo))
        ArrayList(底層是數(shù)組 查詢快 增刪改慢)
        linkedList(底層是鏈表式 查詢慢 增刪改快)
      Set集合:無序 不可重復(fù)
        HashSet:底層重寫了hashcode()和equals() 所以不能重復(fù)
  雙列集合
    map:以鍵值對的形式存在 鍵是唯一的不可重復(fù),鍵可以為null
      HashMap
45、怎么進(jìn)行SQL優(yōu)化?
 ?、賹Σ樵冞M(jìn)行優(yōu)化,應(yīng)盡量避免全表掃描
 ?、趹?yīng)盡量避免在 where 子句中對字段進(jìn)行 null 值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描
 ?、蹜?yīng)盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進(jìn)行全表掃描
  ④應(yīng)盡量避免在 where 子句中使用 or 來連接條件,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描
  ⑤盡量避免大事務(wù)操作,提高系統(tǒng)并發(fā)能力
  ⑥盡量避免向客戶端返回大數(shù)據(jù)量,若數(shù)據(jù)量過大,應(yīng)該考慮相應(yīng)需求是否合理
 ?、呷绻褂玫搅伺R時(shí)表,在存儲過程的最后務(wù)必將所有的臨時(shí)表顯式刪除
  ⑧避免頻繁創(chuàng)建和刪除臨時(shí)表,以減少系統(tǒng)表資源的消耗。
 ?、岜M量使用數(shù)字型字段,若只含數(shù)值信息的字段盡量不要設(shè)計(jì)為字符型,這會降低查詢和連接的性能,并會增加存儲開銷。
 ?、庠谑褂盟饕侄巫鳛闂l件時(shí),如果該索引是復(fù)合索引,那么必須使用到該索引中的第一個(gè)字段作為條件時(shí)才能保證系統(tǒng)使用該索引,
   否則該索引將不會被使用,并且應(yīng)盡可能的讓字段順序與索引順序相一致
46、throw與throws區(qū)別?
  throw是語句拋出一個(gè)異常。
  throws是方法可能拋出異常的聲明
  throw語句用在方法體內(nèi)(表示拋出異常,由方法體內(nèi)的語句處理)
  throws語句用在方法聲明后面(表示再拋出異常,由該方法的調(diào)用者來處理)。
47、IO流的四大基類
  Reader writer inputStream outputStream
48、序列化與反序列化的區(qū)別?
  序列化:把應(yīng)用層的對象轉(zhuǎn)換成一段連續(xù)的二進(jìn)制串
  反序列化:把二進(jìn)制串轉(zhuǎn)換成應(yīng)用層的對象
49、mybatis中#{}與${}的區(qū)別?

  #{}相當(dāng)于占位符,建議使用,安全。
  ${}sql拼接,不建議使用,容易發(fā)生sql注入,不安全

50、你是怎么理解閉包的?
  閉包能夠?qū)⒁粋€(gè)方法作為一個(gè)變量去存儲,這個(gè)方法有能力去訪問所在類的自由變量。

51、springboot啟動的時(shí)候怎么排除加載某些bean?

  @ComponentScan注解用來掃描加排除,不加ComponentScan注解,springboot是默認(rèn)掃描springboot啟動類所在的包及其子包,

  我們現(xiàn)在自己掃描,然后使用@ComponentScan注解的excludeFilters屬性用來排除不想掃描的bean。

52、springboot aop的動態(tài)代理?
  JDK動態(tài)代理。如果是有接口聲明的類進(jìn)行AOP,spring調(diào)用的是java.lang.reflection.Proxy類來做處理
  CGLib動態(tài)代理。適合沒有接口聲明的類。
53、索引的類型?
  普通索引:僅加速查詢
  唯一索引:加速查詢 + 列值唯一(可以有null)
  主鍵索引:加速查詢 + 列值唯一(不可以有null)+ 表中只有一個(gè)
  組合索引:多列值組成一個(gè)索引,專門用于組合搜索,其效率大于索引合并
  全文索引:對文本的內(nèi)容進(jìn)行分詞,進(jìn)行搜索
  ps.索引合并,使用多個(gè)單列索引組合搜索
  覆蓋索引,select的數(shù)據(jù)列只用從索引中就能夠取得,不必讀取數(shù)據(jù)行,換句話說查詢列要被所建的索引覆蓋
54、springmvc工作流程
  (1) 用戶向服務(wù)端發(fā)送一次請求,這個(gè)請求會先到前端控制器DispatcherServlet(也叫中央控制器)。
  (2)DispatcherServlet接收到請求后會調(diào)用HandlerMapping處理器映射器。由此得知,該請求該由哪個(gè)Controller來處理(并未調(diào)用Controller,只是得知)
  (3)DispatcherServlet調(diào)用HandlerAdapter處理器適配器,告訴處理器適配器應(yīng)該要去執(zhí)行哪個(gè)Controller
  (4)HandlerAdapter處理器適配器去執(zhí)行Controller并得到ModelAndView(數(shù)據(jù)和視圖),并層層返回給DispatcherServlet
  (5)DispatcherServlet將ModelAndView交給ViewReslover視圖解析器解析,然后返回真正的視圖。
  (6)DispatcherServlet將模型數(shù)據(jù)填充到視圖中
  (7)DispatcherServlet將結(jié)果響應(yīng)給用戶

  DispatcherServlet:前端控制器,也稱為中央控制器,它是整個(gè)請求響應(yīng)的控制中心,組件的調(diào)用由它統(tǒng)一調(diào)度。
  HandlerMapping:處理器映射器,它根據(jù)用戶訪問的 URL 映射到對應(yīng)的后端處理器 Handler。也就是說它知道處理用戶請求的后端處理器,但是它并不執(zhí)行后端處理器,而是將處理器告訴給中央處理器。
  HandlerAdapter:處理器適配器,它調(diào)用后端處理器中的方法,返回邏輯視圖 ModelAndView 對象。
  ViewResolver:視圖解析器,將 ModelAndView 邏輯視圖解析為具體的視圖(如 JSP)。
  Handler:后端處理器,對用戶具體請求進(jìn)行處理,也就是我們編寫的 Controller 類。
55、多線程的五種狀態(tài)?
  被創(chuàng)建
  運(yùn)行
  凍結(jié)
  臨時(shí)阻塞
  消亡
56、Java回收機(jī)制(GC)判斷一個(gè)對象是否應(yīng)該被回收?
  引用計(jì)數(shù)法;(無法解決對象循環(huán)引用的問題,導(dǎo)致對象無法被回收)
  可達(dá)性分析;
57、如何決定使用 HashMap 還是 TreeMap?
  對于在Map中插入、刪除和定位元素這類操作,HashMap是最好的選擇。然而,假如你需要對一個(gè)有序的key集合進(jìn)行遍歷,TreeMap是更好的選擇。
  基于你的collection的大小,也許向HashMap中添加元素會更快,將map換為TreeMap進(jìn)行有序key的遍歷。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【面試題】2018年最全Java面試通關(guān)秘籍匯總集!
Java集合總結(jié)(Collection)
順豐面試,第二個(gè)問題把我勸退了!
收藏了800道Java后端經(jīng)典面試題,分享給大家,希望你找到自己理想的Offer呀~
SpringBoot性能優(yōu)化大全,賊好使!
百億級數(shù)據(jù)10萬字段屬性的秒級檢索解決方案以及實(shí)現(xiàn)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服