最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Javaweb面試題178問

2023-02-16 11:42 作者:鹿是不是鹿  | 我要投稿

1:html

靜態(tài)網(wǎng)頁技術(shù),骨架,常用標(biāo)簽body,title,head,vedio,a,div,table,form,,input等

2:css

靜態(tài)網(wǎng)頁技術(shù),,渲染,html中可通過link標(biāo)簽引入css,也可直接在head中用style標(biāo)簽直接書寫css代碼

3:css選擇器

標(biāo)簽名,類,id,后代,屬性選擇器

4:css常用屬性

背景,邊框,文本,字體等

5:css元素類型

塊級元素,行內(nèi)元素,行內(nèi)塊元素

6:js

靜態(tài)網(wǎng)頁技術(shù),負(fù)責(zé)動畫效果,安全跨平臺是js特點,html中可以通過script直接書寫js代碼,也可以通過script引入外部js文件

7:js數(shù)據(jù)類型

數(shù)值,字符串,布爾,復(fù)雜數(shù)據(jù)類型主要指對象,函數(shù),數(shù)組等

js使用var指向任意數(shù)據(jù)類型且數(shù)組長度和類型可變,運算符和分支循環(huán)語句和java基本相似,js數(shù)組也是用var聲明

8:js函數(shù)

function 函數(shù)名([參數(shù)列表]){}

或者var 變量名 =function([參數(shù)列表]){函數(shù)體}

9:js dom操作

document.getElementById();,createElementById獲取,創(chuàng)建元素等

10:js 增刪改元素

document.createElement(),創(chuàng)建js對象,parent.appendChild添加子元素,parent.removeChild刪除子元素,element.innerHtml獲取設(shè)置當(dāng)前元素的html內(nèi)容

11:jquery

j在html中使用就必須要引入此js函數(shù)庫文件,可以像css選擇器一樣獲取html元素,jquery提供了相應(yīng)的函數(shù),text函數(shù),remove函數(shù)等

12:文檔事件就緒函數(shù)

主要原因元素還沒加載到就被執(zhí)行,解決方式將script標(biāo)簽移到body內(nèi)部,第二個解決方式就是獲取元素的代碼放在文檔事件就緒函數(shù)中,$(function(){});,此簡化寫法是jquery提供的,其他寫法不建議

13:jquery選擇器

基本選擇器,類,id,多元素等,層級選擇器,基本過濾選擇器

14:jquery元素

append,remove,replaceWith,添加,刪除,替換元素

15 jquery常用函數(shù)

each,text,show,val,prop設(shè)置獲取元素屬性值,css函數(shù)等

16:js,jquery之間相互轉(zhuǎn)換

通過$(js對象)轉(zhuǎn)jquery,或jquery對象[下標(biāo)]轉(zhuǎn)js

17:tomcat

web服務(wù)器,管理和發(fā)布web應(yīng)用,主要目錄lib,conf配置文件,webapps管理web資源,logs日志文件,web-inf受保護(hù)資源目錄,需跳轉(zhuǎn)訪問

18;打war包

打包后可以直接修改名稱或者web應(yīng)用在pom文件指定好打包方式

19:Http協(xié)議

基本原則一次請求,一次響應(yīng),請求包含 請求行,若干請求頭,空白行,實體,響應(yīng)包含狀態(tài)行,若干響應(yīng)頭,空白行 響應(yīng)實體

20:請求方式什么時候get提交,什么時候post提交

只有使用表單form,并且metnod明確指定post時才為post,其他都為get

21:get,post提交區(qū)別

get采用拼接方式,不利于隱私數(shù)據(jù)保護(hù),且數(shù)據(jù)量有限,post數(shù)據(jù)量更大,適合傳輸較為隱私的數(shù)據(jù)

23:servlet

動態(tài)web技術(shù),必須要依托web服務(wù)器才能運行,作用是對請求進(jìn)行處理,需要創(chuàng)建servlet接口或者繼承子類例如httpservlet,并實現(xiàn)其中方法,然后在web.xml配置servlet對外訪問路徑,servlet實現(xiàn)方法一般doget,dopost兩種,且處理代碼相同時可以在doget中調(diào)用dopost,分兩者分別別對應(yīng)get或者post請求需要

24:request和reponse

分別為http請求和響應(yīng)信息的對象,瀏覽器發(fā)請求訪問服務(wù)器中的某個servelt時服務(wù)器會調(diào)用servlet中的service方法來處理請求,調(diào)用方法之前會創(chuàng)建request和response對象,服務(wù)器每次處理請求都誰創(chuàng)建request和reponse對象,請求處理完,響應(yīng)結(jié)束時,再銷毀

25:轉(zhuǎn)發(fā),重定向

轉(zhuǎn)發(fā)時一次請求一次響應(yīng),轉(zhuǎn)發(fā)前后地址不改變,且必須是在同一web應(yīng)用,重定向,兩次轉(zhuǎn)發(fā),兩次響應(yīng),重定向前后地址發(fā)生改變,且可以來自不同web應(yīng)用

26:MySQL

常見的關(guān)系型數(shù)據(jù)庫,底層以二維表形式保存數(shù)據(jù)的庫統(tǒng)稱關(guān)系型數(shù)據(jù)庫,此外常見的oracle,sql server,數(shù)據(jù)庫就是管理和存儲數(shù)據(jù)的倉庫,業(yè)務(wù)開發(fā)中基本都是圍繞select,update,insert,delete等操作

27:mysql常見函數(shù)

min,max,sum,count,now,year,month等

28:mysql數(shù)據(jù)類型

常用 int bigint,double,char,varchar,date,time,datetime,timestamp等

29:mysql常見的字段約束

主鍵約束,唯一不為空,非空約束,可重復(fù)不為空,唯一約束,唯一但可為空,外鍵約束,維護(hù)兩張表之間關(guān)系

30:表關(guān)系

一對一(雙向一對一,商品,價格表),一對多(可以看成單向一對多,部門,員工表),多對多(可以看成雙向一對多,角色,權(quán)限表),外鍵分別設(shè)在從表,多的一方,和新建第三方關(guān)系表,區(qū)分記住外鍵不唯一即可

31:where,having區(qū)別

where用于分組之前,對記錄篩選過濾,having用于分組之后,對記錄進(jìn)行篩選過濾

32:數(shù)據(jù)庫備份,恢復(fù)

mysqldump,source

33:添加外鍵

foreign key

34:級聯(lián)更新,級聯(lián)刪除

on update cascade

on delete cascade

35:jdbc

數(shù)據(jù)庫連接技術(shù),和mybatis一樣但更加底層,方便我們在開發(fā)中,通過Java程序訪問數(shù)據(jù)庫,但相比mybatis,需手動導(dǎo)入mysql jar包,需要手寫注冊驅(qū)動,獲取連接,傳輸器,發(fā)送sql并返回和處理結(jié)果,釋放資源等步驟,比較核心的statemment傳輸器對象和resultSet結(jié)果集對象,且在實際開發(fā)中statemment父對象的preparedstatement子對象,使用的更多且更加安全,可以有效防止sql注入攻擊,原理是先同服務(wù)器確定sql骨架,再發(fā)參數(shù),這樣即使有其他子體,也只會被當(dāng)文本處理,不會被修改

36:數(shù)據(jù)庫連接池

可以復(fù)用,用借完還的這么一個池子,不用每次創(chuàng)建和被關(guān)閉連接,常見的數(shù)據(jù)庫連接池c3p0,druid,且所有的連接池都要實現(xiàn)DataSource數(shù)據(jù)源接口,例如c3p0連接池的使用,導(dǎo)jar包,創(chuàng)建連接池對象,創(chuàng)建c3p0.properfies配置文件,配置連接數(shù)據(jù)庫的基本信息,然后從連接池獲取連接對象,用完還回連接池

37:jsp

和servlet都是動態(tài)web技術(shù),可以看成一個能寫java代碼的html,可以解決servlet不適合向瀏覽器輸出完整html頁面的問題,且也解決了html無法展示動態(tài)數(shù)據(jù)的問題,

38:jsp指令

page指令,聲明jsp的基本屬性信息,taglib指令,用于引入jstl標(biāo)簽庫或其他標(biāo)簽庫

39:jsp標(biāo)簽庫

el表達(dá)式${將內(nèi)容輸出到當(dāng)前為止}

jstl標(biāo)簽庫,和el配合使用可以大大簡化jsp中的大部分java代碼,避免混亂

jstl中常用標(biāo)簽 c:set,c:if,c:foreach,添加屬性,判斷,遍歷等

40:maven

安裝,配置私服,整合開發(fā)工具,企業(yè)級java項目開發(fā)及依賴管理,添加依賴自動下載,整體更加方便快捷,maven必須要有jdk環(huán)境

41:maven三種倉庫關(guān)系,本地,遠(yuǎn)程,中央倉庫,是依次尋找下載的關(guān)系

42:cookie,session

一種會話機制,從瀏覽器訪問服務(wù)器開始到結(jié)束的一整個過程

cookie是客戶端技術(shù),將會話產(chǎn)生的數(shù)據(jù)存在客戶端,cookie基于請求,響應(yīng)兩個頭工作,通過響應(yīng)頭將cookie從服務(wù)端發(fā)送給瀏覽器,瀏覽器保存,以后瀏覽器每次訪問服務(wù)器,都會通過請求頭將cookie信息再帶回服務(wù)器,服務(wù)器獲取,從而實現(xiàn)某些功能,例如登錄

session是將會話產(chǎn)生數(shù)據(jù)存在服務(wù)器端,服務(wù)端技術(shù),是一個域?qū)ο?也保存了一個map集合,望session里面存數(shù)據(jù),就是將數(shù)據(jù)保存到session的map集合,setAttribute可以將數(shù)據(jù)存到session中,getAttribute可以從session中取出來

43:cookie,session區(qū)別

一個將數(shù)據(jù)存在客戶端,一個存在服務(wù)端,cookie適合存儲長期保存但安全性不高數(shù)據(jù),記住用戶名,30天內(nèi)自動登錄等,session則相反,保存登錄狀態(tài),保存校驗碼等

44:mysql數(shù)據(jù)庫事務(wù)

事務(wù)就是要不全部成功,要不全部失敗

45:事務(wù)四大特性

原子,一致,隔離,持久

46:事務(wù)并發(fā)讀問題,及解決

臟讀,讀到了另一事物未提交更新數(shù)據(jù),幻讀,同一張表兩次查詢結(jié)果不一致,幻讀,對統(tǒng)一記錄的兩次讀取結(jié)果不一致,

避免這三種問題,提高事務(wù)隔離級別來解決,但是級別越高會造成性能越差,默認(rèn)隔離級別是repeatable read 可防止臟讀,不可重復(fù)度,serializable,不會有任何并發(fā)問題,但是性能最差,一般不推薦

47:mybatis

開源的持久層框架,對jdbc做了進(jìn)一步封裝,不用再花精力去處理注冊驅(qū)動,創(chuàng)建statement,手動設(shè)置參數(shù)等jdbc的繁雜過程代碼,解決了jdbc要將結(jié)果集封裝成對象的麻煩,直接通過映射,封裝,獲取相應(yīng)的數(shù)據(jù),核心配置文件mybatis-config.xml,且可以使用xml,和全注解兩種開發(fā)模式,前者更方便維護(hù),后者更具開發(fā)效率

48:${}占位符,#{}占位符區(qū)別,后者用的更多,對sql語句中的參數(shù)值進(jìn)行占位,前者是對sql片段(字符串)進(jìn)行占位,采用直接拼接的方式,且會不進(jìn)行轉(zhuǎn)義處理,可能會發(fā)生sql注入攻擊,前者則不會,且會進(jìn)行轉(zhuǎn)義處理

49:動態(tài)SQL標(biāo)簽

if,where,foreach等

50:mybatis中sql語句中的特殊符號

< &lt; ?>&gt;等

51:spring

spring核心 ioc aop,也就是管理軟件中的對象,優(yōu)勢是簡化開發(fā),方便解耦,aop編程和聲明式事務(wù)的支持,方便集成各種優(yōu)秀框架等,源碼也是學(xué)習(xí)的范例

srring的架構(gòu),持久層,表現(xiàn)層,aop,核心容器ioc(主要bean工廠組件)等

52:耦合,解耦

對象之間依賴關(guān)系越高耦合越高,維護(hù)成本也越高,反之越低,低耦合開發(fā)是主要考慮的,解耦就是降低對象之間的依賴關(guān)系

53:Ioc

控制反轉(zhuǎn)就是把創(chuàng)建對象的權(quán)利交給框架,例如通過mapper注解,將封裝的mybatis數(shù)據(jù)交給spring管理,并創(chuàng)建映射對象,以供調(diào)用,這種創(chuàng)建對象的方式,降低了耦合性

54:創(chuàng)建對象的幾種方式

new,instalences,ioc

55:bean對象的單例和多例

可以通過scope屬性或注解指定其作用域,常用sinleton單實例和prototype多實例,單實例全局唯一,多實例每次調(diào)用都要創(chuàng)建一個新的對象,使用單例或者多例看實際應(yīng)用中該狀態(tài)是否會改變,會則多例

56:SpringDI依賴注入

set方法注入,構(gòu)造方法注入

57:springmvc框架

之前我們用servlet開發(fā),每個請求都要創(chuàng)建一個servlet類過多時會導(dǎo)致問題,且web.xml的配置量太多.不利于開發(fā),在接收數(shù)據(jù)時也一路按照字符串接收,需要進(jìn)行大量的復(fù)雜處理,且必須要在服務(wù)器中運行,具有依賴性,不利于單元測試而springmvc是spring的一個模塊,且無需整合,作為一個基于mvc的web框架,可以代替之前的servlet整合開發(fā),但是底層依舊是通過servlet實現(xiàn)的

58:springmvc執(zhí)行原理

用戶發(fā)請求到前端控制器-收到后調(diào)用處理器映射器-調(diào)用controller-service-dao-數(shù)據(jù)庫,-處理器適配器將controlle結(jié)果給前端控制器-前端控制器返給視圖解析器,解析后再進(jìn)行渲染,由前端控制器將填充了數(shù)據(jù)的網(wǎng)頁響應(yīng)給用戶

59:html中英文空格

&nbsp,&emsp

60:頁面狀態(tài)碼

200請求處理成功,302標(biāo)識請求的位置不對,404資源找不到,304/307,表示通知瀏覽器使用緩存,500服務(wù)端程序出錯

61:http協(xié)議

規(guī)定了瀏覽器和服務(wù)器之間的通信規(guī)則,原理是一次請求,一次響應(yīng),服務(wù)器只能被動的等待請求,根據(jù)請求做出響應(yīng)

62:servlet生命周期

1,初始化調(diào)用init方法,收到請求后調(diào)用service方法,來處理請求3:請求結(jié)束后,調(diào)用destory銷毀

63:請求參數(shù)

瀏覽器發(fā)送給服務(wù)器的數(shù)據(jù),不區(qū)分請求方式

64:junit單元測試框架

不用創(chuàng)建main及類實例就能執(zhí)行一個方法,常用注解@Test,before,after

65:sql注入攻擊

用戶提交表單數(shù)據(jù)時可能攜帶一些sql關(guān)鍵字或者特殊字符,導(dǎo)致sql語義被改變,從而執(zhí)行一些意外的操作,不輸入賬號密碼也能登陸等

66:解決sql注入攻擊方式

1;對用戶提交的參數(shù)進(jìn)行校驗,例如使用正則

2:使用jdbc的preparedstatement

67properties和xml文件區(qū)別

都是配置文件,properties只能存放kv形式無法配置有結(jié)構(gòu)的數(shù)據(jù),而xml可以存放有結(jié)構(gòu)的數(shù)據(jù),但是配置信息多,編寫也更加復(fù)雜,不如properties整潔,需要通過java程序讀取時,也更加方便

68:依賴范圍

指定你這個jar包在那個范圍才有效,運行時還是什么時候

69:依賴傳遞

1繼承2項目后,1就可以使用2的依賴

70:pojo

用于封裝數(shù)據(jù)的簡單java對象

71:為什么使用mybatis

對jdbc實現(xiàn)封裝,自帶連接池,且修改sql只要修改mapper配置文件,類不需要重新編譯,,對查詢sql執(zhí)行后返回的resultset對象,mybatis會幫我們處理,轉(zhuǎn)成java對象

72:mvc設(shè)計模式

model,view,controller,數(shù)據(jù)處理,視圖,控制器

73:控制反轉(zhuǎn)

就是把創(chuàng)建對象的權(quán)力交給框架,指將對象的創(chuàng)建,初始化,存儲,管理都交給了spring容器

74:ioc容器

spring把每一個需要管理的對象稱為bean,管理bean的容器稱為ioc容器

75:什么是spring的依賴注入

就是創(chuàng)建對象的同時或之后如何給對象的屬性賦值

,兩種方式set方法注入,構(gòu)造方法注入,接口注入

76:bean對象的生命周期

都會經(jīng)歷出生,或者,死亡,總結(jié)等過程,區(qū)別是單實例隨著bean對象的銷毀而銷毀,多實例則在長時間無引用時,由垃圾回收機制回收

77:mybatis執(zhí)行流程

通過核心配置文件生成sqlsession工廠對象,再基于該對象生成sqlsession對象,通過該實例獲取mapper對象并運行mapper映射的sql語句,完成數(shù)據(jù)庫的crud操作和事務(wù)提交,然后關(guān)閉sqlsession

78:spring中的模式

工廠,單例,代理,bean的創(chuàng)建和作用域就是工廠和單例,aop實現(xiàn)通過代理

79:內(nèi)存溢出,泄露

運行內(nèi)存大于實際內(nèi)存,泄露就是內(nèi)存被不良占用導(dǎo)致的低效或崩潰等情況

80:nginx

http和反向代理web服務(wù)器,內(nèi)存小,并發(fā)強,tomcat并發(fā)能力在150-200左右而nginx并發(fā)在3-5萬每秒,所以nginx主要做反向代理和負(fù)載均衡服務(wù)器使用

81:反向代理

反向代理就是介于客戶端與服務(wù)器端,代理客戶端的請求并決定發(fā)送到那臺服務(wù)器,有負(fù)載均衡的道理在里面,同時也保護(hù)了真實的服務(wù)器信息

82:跨域

跨域就是訪問頁面和實際頁面,協(xié)議,域名,端口有不一致的地方,跨域請求,返回值瀏覽器不予解析

83:http協(xié)議

基于tcp/ip的瀏覽器與服務(wù)器之間通信的規(guī),一次請求一次響應(yīng)

84:request生命周期

請求開始時創(chuàng)建,請求完畢時銷毀

85:ServletContext生命周期

每一個web應(yīng)用創(chuàng)建后都會產(chǎn)生一個servletcontext對象,該對象隨著應(yīng)用的移除或者服務(wù)器關(guān)閉而銷毀

86:jsp,servlet關(guān)系

jsp本質(zhì)可以說是servlet,因為jsp會被java編譯成一個servlet片段,輸出執(zhí)行,jsp適合輸出界面,servlet適合控制邏輯,某種角度jsp就是可以寫java代碼的html,解決html不能輸出動態(tài)數(shù)據(jù),servlet不適合輸出完整頁面的問題

87:jsp九大隱式對象

request,response,session,application,page,out,exception,config等

88:mysql優(yōu)化

盡量使用字段不要*,將大的sql分成幾個小的sql執(zhí)行,每隔一一段時間,alert優(yōu)化表,小表join大表的連接原則,多用explain和profile分析語句,盡量避免使用order by,不用%開頭等

89:filter作用

filter過濾器起到過濾作用,filter對象創(chuàng)建前會調(diào)用init方法來完成初始化,銷毀之前會調(diào)用destory方法 執(zhí)行善后工作,核心doFilter,對訪問的請求和響應(yīng)進(jìn)行攔截 ,過濾器攔截到對資源的訪問時,服務(wù)器會自動調(diào)用該方法執(zhí)行過濾代碼,我們只要在這個方法中設(shè)計過濾器的邏輯代碼即可

90:filter生命周期

web應(yīng)用加載后,會立即創(chuàng)建出對應(yīng)的所有過濾器對象,調(diào)用init初始化,這些過濾器對象駐留在內(nèi)存中為后續(xù)攔截進(jìn)行服務(wù),每當(dāng)攔截到資源時,都會導(dǎo)致dofilter方法的執(zhí)行,,最終直到服務(wù)器關(guān)閉或web應(yīng)用移除出容器,隨著web的銷毀,郭璐琪對象銷毀,銷毀之前調(diào)用destory方法

91:數(shù)據(jù)庫連接池

其實就是一個緩沖池,需要時用,用完還回去,而不是銷毀,提高了復(fù)用性和整體效率

92:http和https區(qū)別

http安全性沒有https高,數(shù)據(jù)傳輸不進(jìn)行加密,不利于隱私數(shù)據(jù)的傳輸,https是ssl+html的協(xié)議構(gòu)建,可進(jìn)行加密傳輸,身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比https更加安全

93:servlet的單例問題

通俗說servelt就是供其他程序調(diào)用的類,不能獨立運行,,servlet只會創(chuàng)建一個servlet實例對象,第一次訪問時就會被加載到內(nèi)存中,此后該實例對各個請求服務(wù),每次情況會調(diào)用一次service方法,直到關(guān)閉瀏覽器之后servlet終止,servlet是單例的,所以存在線程安全問題

94:""和null區(qū)別

區(qū)別是內(nèi)存中有沒有字符串對象,""底層存在這個字符串對象的引用 ,長度0, 且 我們在表單填"",接受的字符串是"",但是存入數(shù)據(jù)庫,查出來的就是nul

95:servlet多線程同步問題

多個用戶訪問servlet時,會訪問唯一的servlet實例中的成員變量,如果對成員變量進(jìn)行寫入操作,就會導(dǎo)致servlet的多線程問題,既數(shù)據(jù)不一致,解決的方式一個是使用局部變量,局部變量在每個線程中都有各自的實例,第二個就是使用同步代碼塊synchronized{}

96:request.getparmenter,request.getattribute區(qū)別

getparmenter獲取的string類型,getattribute獲取的object類型,且可以發(fā)送,接收對象,而getparmenter只能接收字符串

97:jsp中動靜include區(qū)別

靜態(tài)相當(dāng)于復(fù)制,動態(tài)能夠自動檢查北韓文件,進(jìn)行及時的更新等

98:el表達(dá)式的功能及為什么使用

從四大域取數(shù)據(jù)顯示,取出請求參數(shù)顯示,主要還是獲取數(shù)據(jù)數(shù)據(jù)比較簡單

98:如何防止表單重復(fù)提交

使用session技術(shù)

99:什么是web容器

給處于其中的應(yīng)用程序組件像jsp,servlet提供一個環(huán)境,組件直接和容器中的變量交互,不必關(guān)注其他系統(tǒng)問題

100:j2ee常用設(shè)計模式

java中一共23中設(shè)計模式,例如factory,builder建造模式,facade門面模式,proxy代理模式,iterator迭代子模式,strategy策略模式

101:web.xml作用

部署控制符,java只要是容器就會存在部署控制符,可以控制整個web組件的狀態(tài),也可以配置整個窗口的狀態(tài)

102:SQL優(yōu)化,索引范式

三范式,第一范式每列保持原子行,第二范式,每列都和和主鍵相關(guān),第三范式,每列都和主鍵直接相關(guān),索引,避免在索引字段上進(jìn)行計算,或使用not,<>,! =,以及避免使用is null或not null,避免在索引上出現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換,使用函數(shù),建立索引的列出現(xiàn)空值等

103:ajax原理

相當(dāng)于在用戶和服務(wù)器端之間加了一個中間層,使用戶操作和服務(wù)器響應(yīng)異化,并且像一些簡單的數(shù)據(jù)驗證和數(shù)據(jù)處理都交給ajax引擎自己操作,只有確定需要讀取新數(shù)據(jù)時再由ajax引擎代為向服務(wù)器提交請求

104:xml和html的區(qū)別

xml是用戶數(shù)據(jù)格式化,html用于編輯靜態(tài)網(wǎng)頁,且html語法寬松,有大量各類標(biāo)簽

105:js ==和===區(qū)別

==代表相同 ===代表嚴(yán)格相同,前者比較,如果不同,會進(jìn)行一次類型轉(zhuǎn)換,而后者不同則直接false

106:sql優(yōu)化

查詢時盡量不要使用*,sql語句用大寫,盡量使用關(guān)聯(lián)查詢,left join inner join等 or的查詢盡量使用 union/union all代替

107:Tomcat配置,部署優(yōu)化

內(nèi)存優(yōu)化,Tomcat依賴于jvm,可以配置jvm的內(nèi)存配置,最大連接數(shù)配置通常搭配nginx提升tomcat的并發(fā)能力

108:cs,bs區(qū)別

cs要求操作系統(tǒng)相同,且用戶相對固定,適合高度機密的信息系統(tǒng),且對電腦配置要求高,且每一個客戶端都要升級程序,可以采用自動升級,bs則客戶端不需要安裝和維護(hù),電腦配置要求也不高,對于操作系統(tǒng)沒有限制,只要有操作系統(tǒng)和瀏覽器即可,,最大的有點就是可以在任何地方操作,不需要安裝專門的軟件

109:request,response,sesson,application區(qū)別

客戶端向服務(wù)端發(fā)送求,以及響應(yīng)請求,session,servlet中通過getsession創(chuàng)建,關(guān)閉瀏覽器session消失,application由服務(wù)器創(chuàng)建和銷毀

110:request和session取值區(qū)別,以及出現(xiàn)亂碼的解決

request可以通過getattribute方法取值,也可以通過getparamter,session需要通過request.getsession.getattribute才能取值,request針對的是一次會話,response是整個會話,頁面可以通過pageEncoding設(shè)置編碼

111:spring在ssm中起什么作用

ioc/di依賴注入,把dao依賴注入到service層,service轉(zhuǎn)給控制層,此外就是面向切面編程,bean工廠等

112:spring主要使用了什么模式

工廠模式,單例模式,代理模式

113:starts2 和springmvc區(qū)別

starts2入口是filter過濾器,springmvc是servlet,也就是前端控制器,前者只能基于類開發(fā),只能設(shè)置多例,后者基于方法開發(fā),可單也可多例

114:mybatis的好處?

把sql語句從java中獨立出來,封裝了底層的jdbc,api的調(diào)用,并且能夠?qū)⒔Y(jié)果集自動轉(zhuǎn)換為javabean的對象,簡化了java數(shù)據(jù)庫編程的重復(fù)工作,自己編寫sql語句,更加的靈活

115:servlet層級結(jié)構(gòu)

http請求常見的有四種,get讀取,post保存,put修改,delete刪除

開發(fā)者自定義的servlet類推薦繼承httpservlet,重寫doget和dopost

116:jsp

主要負(fù)責(zé)與用戶交互,解決html動態(tài)數(shù)據(jù)和servlet不適合輸出一個完整html頁面的問題,三件套+java的混合文件,本質(zhì)jsp引擎會將他翻譯成一個servlet文件,然后web容器調(diào)用servlet完成響應(yīng),這也是為什么說jsp本質(zhì)就是一個servlet的原因

117:request的常用方法

get/set attribute getparameter

118:http請求狀態(tài)碼

200成功,404資源找不到,400請求類型不匹配,500 java程序拋出異常

119:reponse常用方法

sendredirect 重定向,頁面之間的跳轉(zhuǎn)

120:filter

攔截傳入的請求和傳出的響應(yīng),或者以某種方式處理正在客戶端和服務(wù)端之間交換的數(shù)據(jù)流,使用時只要實現(xiàn)該接口即可

121:ajax

通俗說就是一種交互方式,異步加載,局部刷新,典型的就是我們在瀏覽商城時往下拉一點加載一點,就是用的ajax

這樣用戶體驗更好

122:dbutils

將結(jié)果集到j(luò)ava對象映射的工具類,完成數(shù)據(jù)的封裝

123:jdbc

提供了面向應(yīng)用和數(shù)據(jù)庫的api供開發(fā)人員和數(shù)據(jù)庫廠商調(diào)用,常用api,connection,statement,drivermanger等,整個調(diào)用過程加載驅(qū)動,只需要加載一次,隨后connection獲取連接,statement發(fā)送執(zhí)行sql,獲取返回結(jié)果,執(zhí)行結(jié)果,釋放資源

124:線程thread,runnable,callable區(qū)別

thread實現(xiàn)run,但是是單繼承,runnable也是run但避免了單繼承的局限性,runnable的run無返回值,callable重寫了call,有返回值且支持泛型

125:線程start和run區(qū)別

run不開啟線程,只是對象調(diào)方法,start開啟線程,并讓jvm調(diào)用run在開啟的線程中執(zhí)行

126:線程相關(guān)的基本方法

wait(會釋放鎖),sleep(不會釋放鎖),notifty等

127:線程池的關(guān)閉

可以通過shutdown和shutdownnow兩個方法

128:垃圾收集機制gc

從兩方面來說,一方面發(fā)現(xiàn)垃圾,像計數(shù)算法和根搜索算法,另一方面是清除垃圾,清除算法,整理算法等

129:jvm調(diào)優(yōu)

xmx設(shè)置最大可用內(nèi)存,xms設(shè)置可用內(nèi)存等

130:tcp三次握手

第一次客戶端發(fā)送syn數(shù)據(jù)包到服務(wù)端,第二次服務(wù)端收到后,會應(yīng)答一個報文,客戶端確認(rèn)收到報文,應(yīng)答一個報文,雙方都確認(rèn)對方的接受及發(fā)送能力正常

131:索引

主要作用提高查詢效率和數(shù)據(jù)庫性能,包括普通索引,主鍵索引等,索引是在mysql的存儲引擎innerdb和mylsam層實現(xiàn)的,常見b+樹索引,hash索引

132:數(shù)據(jù)庫鎖

悲觀,樂觀,死鎖等

133:索引優(yōu)化

盡量不使用!= <>等符號,同時對使用or 可以用union 或union all代替

134:SQL語句調(diào)優(yōu)

多表連接的字段上可以建立索引,提高效率,優(yōu)化insert 批量插入語句等,盡量避免子查詢,轉(zhuǎn)而join連接查詢等

135:mybatis創(chuàng)建步驟

創(chuàng)建sqlsession工廠,并通過工廠創(chuàng)建sqlsession對象,并執(zhí)行數(shù)據(jù)庫操作,調(diào)用commit提交事務(wù),close關(guān)閉會話等

136:resultType和resultmap區(qū)別

字段和屬性名完全一致用resulttype,不一致用resultmap

137:mybatis緩存機制

一級緩存sqlsession級別,二級緩存mapper級別

138:ioc的理解

之前通過new的方式或者instrance的方式創(chuàng)建對象,而現(xiàn)在可以通過ioc,把創(chuàng)建對象的工作交給框架.,對象創(chuàng)建控制權(quán)的轉(zhuǎn)移,ioc注入方式set,構(gòu)造,注解注入等,,ioc一共就是兩層,第一層控制反轉(zhuǎn),第二層di注入,比如我們想在service調(diào)用另一個service,直接把它交給spring管理,然后直接調(diào)用即可

139:aop

面向切面編程可以看成對面向?qū)ο蟮臄U(kuò)展,比如應(yīng)用的擴(kuò)展或維護(hù),會對多個對象產(chǎn)生影響的公共關(guān)系或邏輯,就像多個人拉一個橫幅,抽取和封裝一個aspect可重用模塊,,且aop使用的jdk和cglib動態(tài)代理,jdk只提供接口代理,不提供代理類,而如果代理類沒有實現(xiàn)invonctionHandler接口,默認(rèn)采用cglib代理,但是某個類如果某個類被標(biāo)記為final,無法使用cglib,常用的切面場景,自定義事務(wù),異常切面等

140:spring生命周期

創(chuàng)建bean,ioc注入,然后根據(jù)相應(yīng)的實現(xiàn)接口調(diào)用相關(guān)的類方法,bean不再需要的時候,會先調(diào)用destory來清理最后再銷毀

141:spring支持bean的作用域有幾種

singletion,prototype,request,session等

142:beanfactory和applicationcontext區(qū)別

beanfactory是spring最頂層接口,applicationcontio是它的子接口

143:spring框架中都用了那些設(shè)計模式

單例,代理,工廠模式

144:spring 事務(wù)的實現(xiàn)原理和方式

spring事務(wù)本質(zhì)就是數(shù)據(jù)庫對事物的支持,實現(xiàn)方式主要編程式利用commit,rollback等事務(wù)管理方法,,聲明式利用注解transactiona,aop配置等

145:spring的通知類型

前置,后置,異常,最終

146:spring常用注解

component,service,controller,autowrite,bean,coamponentscan,transaction,requestbody,configurtion等

147:springmvc

基于mvc設(shè)計模式的web框架,可以認(rèn)為是對servlet的優(yōu)化,底層的本質(zhì)實現(xiàn)還是servlet,,簡化了配置和我們servlet啟動時手寫的那六步,且servlet必須要依托服務(wù)器進(jìn)行運行,每次都要重新創(chuàng)建對象,過多時會影響整體性能,而mvc則把訪問改為了一個個方法,效率更高

148:springmvc的常用組件

前端控制器,處理器映射器,處理器適配器,處理器,視圖解析器,試圖等

149:springmvc的執(zhí)行流程

用戶發(fā)送請求到前端控制器,前端控制器收到去找處理器映射器,然后返回給前端控制器,前端控制器拿到再找處理器適配器,處理器適配器再找處理器,然后返回給前端控制器再調(diào)用視圖解析器,然后再視圖渲染

150:springmvc常用注解

requestmapping,requestbody,reponsebody等

151:springmvc異常處理方式

可以定義一個全局異常處理類,加controlleradvice注解,里面比如定義一個io異常或service異常等,出現(xiàn)此類問題拋出到這里,并給出提示信息

152:dobbo

分布式服務(wù)框架,使用分層方式來架構(gòu),模型要不是服務(wù)方提供服務(wù),要不消費方提供消費等

153:zookper

小文件存儲系統(tǒng),表現(xiàn)為一個小文件的目錄樹結(jié)構(gòu),技能存儲數(shù)據(jù),也能像目錄一樣有節(jié)點,每個節(jié)點存最多1m數(shù)據(jù)

,節(jié)點類型2大類,永久,臨時,經(jīng)常用在統(tǒng)一命名服務(wù),統(tǒng)一配置管理等

154:springboot

就是spring的腳手架,最大優(yōu)點就是使用各類注解非常方便,而且簡化了大量配置,主要就是集中在業(yè)務(wù)邏輯這塊,

155:springmvc常用注解

springbootappliction,springconfigration,mapperscan,service,controlleradvice等

156:soa

面向服務(wù)的服務(wù)治理架構(gòu),服務(wù)較多時,為了優(yōu)化小服務(wù)的資源,需要增加一個調(diào)度中心實時管理集群容量,最初的服務(wù)治理基石是dubbo,與微服務(wù)相比,容錯小,而且服務(wù)關(guān)系復(fù)雜

157:微服務(wù)

微服務(wù)就是在分布式上進(jìn)一步進(jìn)行了細(xì)化拆分,每一個服務(wù)都對應(yīng)唯一的業(yè)務(wù),單依職責(zé)且互不干擾,自治,也是一系列框架的集合,集成springboot,提供了很多優(yōu)秀的服務(wù),統(tǒng)一配置中心,網(wǎng)關(guān),負(fù)載均衡等,優(yōu)點基于spring,穩(wěn)定,且支持springboot,提高了開發(fā)效率,,主要用來開發(fā)微服務(wù)

158:springcloud核心組件

eureka注冊中心,ribbon負(fù)載均衡,zuul網(wǎng)關(guān)等

159:springboot和springcloud的區(qū)別

boot是為了解決spring配置多的問題,cloud是為了解決微服務(wù)之間協(xié)調(diào)和配置問題,boot不需要依賴cloud開發(fā),而cloud需要boot的支持

160:cloud和dobbo區(qū)別

一個阿帕奇的,一個阿里的,cloud性能更高,dobbo沒有網(wǎng)關(guān)功能

161:eurka和zookper區(qū)別

eurka集群各節(jié)點平等,zookper集群節(jié)點有主從之分,euraka是主動拉取服務(wù),zk服務(wù)是監(jiān)聽機制,一個注冊用在cloud中,另一個用在dubbo中

162:redis

可以用作數(shù)據(jù)庫,緩存,中間件,優(yōu)點就是非阻塞io,且支持事務(wù),持久化,且性能出色,增加緩存可以減輕用戶端和服務(wù)端的讀操作壓力,使用redis的主要原因就是高性能和高并發(fā)

163:redis數(shù)據(jù)結(jié)構(gòu)

strng,hash,list,set

164:redis缺點

雙寫一致性問題,寫個刪除緩存的接口即可,緩存雪崩問題,使用互斥鎖解決,緩存擊穿問題也可以使用互斥鎖可以解決,并發(fā)競爭問題可以使用分布式鎖解決

目前分布式鎖有三種實現(xiàn)方式,基于redis,基于數(shù)據(jù)庫,基于zookrper

165:redis集群

主從復(fù)制,主機與從機數(shù)據(jù)同步

哨兵機制就是連長掛了下面遞補為連長,哨兵機制也是基于主從復(fù)制的

166:mq

消息中間件常見的rubbitmq,rockemq,kalka

bubbitmq大量消息積壓的時候,性能會急劇下降,rocketmq可以做到毫秒級響應(yīng),每秒能處理幾十萬條數(shù)據(jù),kafka面向日志功能比較豐富,性能最高

167:mongDB

文檔類型的非關(guān)系型數(shù)據(jù)庫,底層格式就是json格式,大于集合,文檔,字段這么一個關(guān)系且和mysql表現(xiàn)形式雖然不同,但內(nèi)容基本相同有三個數(shù)據(jù)庫admin,cinfig,local(這個數(shù)據(jù)庫永遠(yuǎn)不會被復(fù)制),常用于網(wǎng)站數(shù)據(jù),緩存

168:mongDB的數(shù)據(jù)類型

null,false/true,數(shù)值,日期,正則表達(dá)式等

169:反向代理服務(wù)器

作用就是反向代理和負(fù)載均衡,減輕服務(wù)壓力

170:正向代理就是直接獲取服務(wù)內(nèi)容

171:jwt

對應(yīng)用戶的身份進(jìn)行校驗的標(biāo)記,如果token泄露就是用https加密

172:spring security

和shrio類似是對用戶身份的認(rèn)證和授權(quán)

173:常用的線程安全的類

synchronized,reentryloke,readwriterloke等

174:常用的線程安全的集合

vector,collections.synchronizedlist,hashtable,stack

175:srpingioc的創(chuàng)建過程

簡化來說就兩步,創(chuàng)建bean,然后di依賴注入

176:aop的實現(xiàn)原理和應(yīng)用場景

aop就是面向?qū)ο蟮囊粋€擴(kuò)展,多個對象的公共關(guān)系和邏輯,實現(xiàn)aop就是jdk代理和cglib代理,當(dāng)代理類沒有實現(xiàn)invcationhandler接口,默認(rèn)使用cglib代理,當(dāng)類被final修飾,不能使用cglib代理

應(yīng)用場景 異常,bebug調(diào)試,事務(wù),緩存,日志等都可以

177:beanfactory和factorybean的區(qū)別

beanfactory是spring的最頂級接口,是一個工廠,而factorybean是一個 bean 所有的bean都由bean工廠來管理

178:string底層的實現(xiàn)原理

jdk8底層維護(hù)的是char數(shù)組,9維護(hù)的是byte數(shù)組

字符串引用變量會存儲會棧中,棧保持先進(jìn)后出的原則,然后內(nèi)容存儲在隊中,建立索引,棧每次根據(jù)索引到堆中取值

Javaweb面試題178問的評論 (共 條)

分享到微博請遵守國家法律
惠来县| 濉溪县| 安新县| 张家港市| 桃园市| 武穴市| 襄垣县| 木兰县| 峨眉山市| 郓城县| 疏附县| 正镶白旗| 资兴市| 广南县| 财经| 财经| 朝阳区| 孟津县| 灵武市| 赤城县| 邹平县| 永善县| 沾益县| 改则县| 宁南县| 康马县| 津市市| 桐柏县| 惠安县| 平定县| 博湖县| 宁陕县| 河源市| 大丰市| 海兴县| 阿克苏市| 内江市| 定南县| 临邑县| 新晃| 五常市|