基礎(chǔ)
1卦停、equals和==(equals和==的區(qū)別)
equals:是Object的一個(gè)方法族扰,實(shí)現(xiàn)對(duì)象的比較大猛;復(fù)寫(xiě)equals()方法,達(dá)到比較對(duì)象內(nèi)容是否相同的目的
==:用于比較是否同一個(gè)引用和比較基本數(shù)據(jù)類型是否相等
2薪缆、多態(tài)(多態(tài)的理解)
把不同的子類對(duì)象都當(dāng)作父類來(lái)看,可以屏蔽不同子類對(duì)象之間的差異伞广,寫(xiě)出通用的代碼拣帽,做出通用的編程,以適應(yīng)需求的不斷變化赔癌。
多態(tài)是面向?qū)ο蟮闹匾匦缘猓?jiǎn)單點(diǎn)說(shuō):“一個(gè)接口,多種實(shí)現(xiàn)”灾票。
一峡谊、集合
1、集合包括哪些API(集合有哪些)
集合包括Collection接口和Map接口兩大類刊苍。
Collection是單列數(shù)據(jù)既们,定義了存取一組對(duì)象的方法的集合;Map是雙列數(shù)據(jù)正什,存儲(chǔ)的是鍵值對(duì)啥纸。
Collection的子接口包含了List和Set,List是元素有序婴氮、可重復(fù)的集合斯棒,Set是元素?zé)o序盾致、不可重復(fù)的集合。
二荣暮、線程
1庭惜、線程的創(chuàng)建4種方式(創(chuàng)建線程有幾種方式)
- 繼承Thread,實(shí)現(xiàn)run()
- 實(shí)現(xiàn)runnable穗酥,實(shí)現(xiàn)run()
- 實(shí)現(xiàn)callable护赊,實(shí)現(xiàn)call()
- 線程池
2、線程生命周期(線程的生命周期有幾種)
- 創(chuàng)建
- 就緒
- 運(yùn)行
- 阻塞
- 死亡
3砾跃、yield()
線程從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)骏啰,釋放執(zhí)行權(quán),本線程可能再次搶到執(zhí)行權(quán)進(jìn)入運(yùn)行狀態(tài)抽高。
4判耕、wait() ( wait() 和 sleep() 的區(qū)別 )
線程通信的一組api,是Object的方法翘骂,使線程進(jìn)入阻塞狀態(tài)祈秕,并釋放同步監(jiān)視器。調(diào)用notify()或notifyAll
5雏胃、sleep()
是線程類(Thread)的靜態(tài)方法请毛;
調(diào)用此方法讓當(dāng)前線程暫停執(zhí)行指定的時(shí)間;
將執(zhí)行機(jī)會(huì)(CPU)讓給其他線程瞭亮,但是對(duì)象的鎖依然保持方仿,因此休眠時(shí)間結(jié)束后會(huì)自動(dòng)恢復(fù)(線程回到就緒狀態(tài))
三、mysql
1统翩、mysql數(shù)據(jù)引擎( 了解的數(shù)據(jù)庫(kù)引擎 )
2仙蚜、索引、聚簇索引厂汗、覆蓋索引(三者的理解)
- 索引:一種數(shù)據(jù)結(jié)構(gòu)委粉,能夠幫助我們快速的檢索數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
- 聚簇索引:將數(shù)據(jù)存儲(chǔ)與索引放到了一塊娶桦,找到索引也就找到了數(shù)據(jù)贾节。
- 非聚簇索引:將數(shù)據(jù)存儲(chǔ)于索引分開(kāi)結(jié)構(gòu),索引結(jié)構(gòu)的葉子節(jié)點(diǎn)指向了數(shù)據(jù)的對(duì)應(yīng)行
3衷畦、隔離級(jí)別(什么是贓讀栗涂、不可重復(fù)讀、幻讀)
數(shù)據(jù)庫(kù)事務(wù)問(wèn)題:贓讀祈争、不可重復(fù)讀斤程、幻讀
- 贓讀:讀取未提交的數(shù)據(jù)
- 不可重復(fù)讀:同事務(wù)前后多次讀取,發(fā)現(xiàn)數(shù)據(jù)內(nèi)容不一致(事務(wù)開(kāi)啟對(duì)行未加鎖菩混,可以被修改)
- 幻讀:同事務(wù)前后多次讀取忿墅,發(fā)現(xiàn)數(shù)據(jù)總量不一致(事務(wù)開(kāi)啟對(duì)表未加鎖扁藕,可以被修改)
隔離級(jí)別 | 贓讀 | 不可重復(fù)讀 | 幻讀 |
---|---|---|---|
讀未提交 | √ | √ | √ |
讀提交 | × | √ | √ |
可重復(fù)讀 | × | × | √ |
可串行 | × | × | × |
Spring
1、spring是什么
Spring是一個(gè)輕量級(jí)的IoC和AOP容器框架疚脐。
spring模塊
模塊名 | 作用 |
---|---|
Spring Core | 核心類庫(kù)纹磺,提供IOC服務(wù) |
Spring Context | 提供框架式的Bean訪問(wèn)方式,以及企業(yè)級(jí)功能(JNDI亮曹、定時(shí)任務(wù)等) |
Spring AOP | AOP服務(wù) |
Spring DAO | 對(duì)JDBC的抽象,簡(jiǎn)化了數(shù)據(jù)訪問(wèn)異常的處理 |
Spring ORM | 對(duì)現(xiàn)有的ORM框架的支持 |
Spring Web | 提供了基本的面向Web的綜合特性秘症,例如多方文件上傳 |
Spring MVC | 提供面向Web應(yīng)用的Model-View-Controller實(shí)現(xiàn) |
2照卦、spring配置方式3種
- 基于XML的配置
- 基于注解的配置
- 基于Java的配置
3、spring的優(yōu)點(diǎn)
- spring屬于低侵入式設(shè)計(jì)乡摹,代碼的污染極低役耕;
- spring的DI機(jī)制將對(duì)象之間的依賴關(guān)系交由框架處理,減低組件的耦合性聪廉;
- Spring提供了AOP技術(shù)瞬痘,支持將一些通用任務(wù),如安全板熊、事務(wù)框全、日志、權(quán)限等進(jìn)行集中式管理干签,從而提供更好的復(fù)用津辩。
- spring對(duì)于主流的應(yīng)用框架提供了集成支持。
4容劳、IoC的理解(SpringIoc依賴什么實(shí)現(xiàn))
- IOC就是控制反轉(zhuǎn)喘沿,對(duì)象創(chuàng)建的權(quán)力和時(shí)機(jī)、實(shí)例的依賴關(guān)系由spring容器控制竭贩,有利于松散耦合蚜印,也利于功能的復(fù)用。
- 使用java的反射機(jī)制留量,根據(jù)配置文件在運(yùn)行時(shí)動(dòng)態(tài)的去創(chuàng)建對(duì)象以及管理對(duì)象窄赋,并調(diào)用對(duì)象的方法
- 3種注入方式:①構(gòu)造器注入、②setter方法注入楼熄、③注解注入
5寝凌、AOP理解 (AOP的原理)
用于將業(yè)務(wù)無(wú)關(guān),但卻對(duì)多個(gè)對(duì)象產(chǎn)生影響的公共行為和邏輯孝赫,抽取并封裝為一個(gè)可重用的模塊较木,這個(gè)模塊被命名為“切面”(Aspect)
AOP實(shí)現(xiàn)的關(guān)鍵在于 代理模式
AOP代理主要分為靜態(tài)代理(AspectJ-編譯增強(qiáng))和 動(dòng)態(tài)代理(Spring AOP)
動(dòng)態(tài)代理:JDK動(dòng)態(tài)代理(實(shí)現(xiàn)共同接口)和CGLIB動(dòng)態(tài)代理(繼承類改寫(xiě))
springmvc
1、springmvc的流程(springmvc的流程)
請(qǐng)求 => DispatcherServlet =>
請(qǐng)求HandlerMapping獲取handler=> DispatcherServlet =>
HandlerAdapter執(zhí)行Handler方法獲得ModelAndView => DispatcherServlet =>
ViewResolver解析返回視圖view => DispatcherServlet =>
View視圖渲染返回 => DispatcherServlet
=> 響應(yīng)
nginx
1青柄、nginx是什么(nginx的了解)
Nginx---Ngine X伐债,是一款免費(fèi)的预侯、自由的、開(kāi)源的峰锁、高性能HTTP服務(wù)器和反向代理服務(wù)器萎馅;也是一個(gè)IMAP、POP3虹蒋、SMTP代理服務(wù)器糜芳;Nginx以其高性能、穩(wěn)定性魄衅、豐富的功能峭竣、簡(jiǎn)單的配置和低資源消耗而聞名。
也就是說(shuō)Nginx本身就可以托管網(wǎng)站(類似于Tomcat一樣)晃虫,進(jìn)行Http服務(wù)處理皆撩,也可以作為反向代理服務(wù)器 、負(fù)載均衡器和HTTP緩存哲银。
Nginx 解決了服務(wù)器的C10K(就是在一秒之內(nèi)連接客戶端的數(shù)目為10k即1萬(wàn))問(wèn)題扛吞。它的設(shè)計(jì)不像傳統(tǒng)的服務(wù)器那樣使用線程處理請(qǐng)求,而是一個(gè)更加高級(jí)的機(jī)制—事件驅(qū)動(dòng)機(jī)制荆责,是一種異步事件驅(qū)動(dòng)結(jié)構(gòu)滥比。
redis
1、數(shù)據(jù)類型(5種)(reids的數(shù)據(jù)類型有幾種)
String做院、hash守呜、list、set山憨、sorted set
(一)String
這個(gè)其實(shí)沒(méi)啥好說(shuō)的查乒,最常規(guī)的set/get操作,value可以是String也可以是數(shù)字郁竟。一般做一些復(fù)雜的計(jì)數(shù)功能的緩存玛迄。
(二)hash
這里value存放的是結(jié)構(gòu)化的對(duì)象,比較方便的就是操作其中的某個(gè)字段棚亩。博主在做單點(diǎn)登錄的時(shí)候蓖议,就是用這種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)用戶信息,以cookieId作為key讥蟆,設(shè)置30分鐘為緩存過(guò)期時(shí)間勒虾,能很好的模擬出類似session的效果。
(三)list
使用List的數(shù)據(jù)結(jié)構(gòu)瘸彤,可以做簡(jiǎn)單的消息隊(duì)列的功能修然。另外還有一個(gè)就是,可以利用lrange命令,做基于redis的分頁(yè)功能愕宋,性能極佳玻靡,用戶體驗(yàn)好。本人還用一個(gè)場(chǎng)景中贝,很合適—取行情信息囤捻。就也是個(gè)生產(chǎn)者和消費(fèi)者的場(chǎng)景。LIST可以很好的完成排隊(duì)邻寿,先進(jìn)先出的原則蝎土。
(四)set
因?yàn)閟et堆放的是一堆不重復(fù)值的集合。所以可以做全局去重的功能绣否。為什么不用JVM自帶的Set進(jìn)行去重誊涯?因?yàn)槲覀兊南到y(tǒng)一般都是集群部署,使用JVM自帶的Set枝秤,比較麻煩,難道為了一個(gè)做一個(gè)全局去重慷嗜,再起一個(gè)公共服務(wù)淀弹,太麻煩了。
另外庆械,就是利用交集薇溃、并集、差集等操作缭乘,可以計(jì)算共同喜好沐序,全部的喜好,自己獨(dú)有的喜好等功能堕绩。
(五)sorted set
sorted set多了一個(gè)權(quán)重參數(shù)score,集合中的元素能夠按score進(jìn)行排列策幼。可以做排行榜應(yīng)用奴紧,取TOP N操作特姐。