一压汪、Java基礎(chǔ)
1.String類為什么是final的乙各。
https://www.cnblogs.com/ikuman/archive/2013/08/27/3284410.html
主要是為了“效率”?和?“安全性”?的緣故亥鬓。若?String允許被繼承,?由于它的高度被使用率,?可能會(huì)降低程序的性能鱼鼓,所以String被定義成final帮寻。
2.HashMap的源碼悍赢,實(shí)現(xiàn)原理援制,底層結(jié)構(gòu)戏挡。
http://blog.csdn.net/tuke_tuke/article/details/51588156
首先有一個(gè)每個(gè)元素都是鏈表(可能表述不準(zhǔn)確)的數(shù)組,當(dāng)添加一個(gè)元素(key-value)時(shí)晨仑,就首先計(jì)算元素key的hash值褐墅,以此確定插入數(shù)組中的位置拆檬,但是可能存在同一hash值的元素已經(jīng)被放在數(shù)組同一位置了,這時(shí)就添加到同一hash值的元素的后面妥凳,他們?cè)跀?shù)組的同一位置竟贯,但是形成了鏈表,同一各鏈表上的Hash值是相同的逝钥,所以說數(shù)組存放的是鏈表屑那。而當(dāng)鏈表長度太長時(shí),鏈表就轉(zhuǎn)換為紅黑樹艘款,這樣大大提高了查找的效率持际。
3.反射中,Class.forName和classloader的區(qū)別
java中class.forName()和classLoader都可用來對(duì)類進(jìn)行加載哗咆。
class.forName()前者除了將類的.class文件加載到j(luò)vm中之外蜘欲,還會(huì)對(duì)類進(jìn)行解釋,執(zhí)行類中的static塊晌柬。
而classLoader只干一件事情姥份,就是將.class文件加載到j(luò)vm中,不會(huì)執(zhí)行static中的內(nèi)容,只有在newInstance才會(huì)去執(zhí)行static塊空繁。
4.session和cookie的區(qū)別和聯(lián)系殿衰,session的生命周期,多個(gè)服務(wù)部署時(shí)session管理盛泡。
5.Java中的隊(duì)列都有哪些闷祥,有什么區(qū)別。
6.Java的內(nèi)存模型以及GC算法
7.Java7傲诵、Java8的新特性(baidu問的,好BT)
8.Java數(shù)組和鏈表兩種結(jié)構(gòu)的操作效率凯砍,在哪些情況下(從開頭開始,從結(jié)尾開始拴竹,從中間開始)悟衩,哪些操作(插入,查找栓拜,刪除)的效率高
9.Java內(nèi)存泄露的問題調(diào)查定位:jmap座泳,jstack的使用等等
如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java?stack和native?stack的信息幕与,從而可以輕松地知道java程序是如何崩潰和在程序何處發(fā)生問題挑势。另外,jstack工具還可以附屬到正在運(yùn)行的java程序中啦鸣,看到當(dāng)時(shí)運(yùn)行的java程序的java?stack和native?stack的信息,?如果現(xiàn)在運(yùn)行的java程序呈現(xiàn)hung的狀態(tài)潮饱,jstack是非常有用的。
10. string诫给、stringbuilder香拉、stringbuffer區(qū)別
11. hashtable和hashmap的區(qū)別
13 .異常的結(jié)構(gòu)啦扬,運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常,各舉個(gè)例子
http://blog.csdn.net/qq_27093465/article/details/52268531
14. String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他們之間用 == 比較的結(jié)果
15. String 類的常用方法
16. Java?的引用類型有哪幾種
17.?抽象類和接口的區(qū)別
18. java的基礎(chǔ)類型和字節(jié)大小。
19. Hashtable,HashMap,ConcurrentHashMap?底層實(shí)現(xiàn)原理與線程安全問題(建議熟悉?jdk?源碼证鸥,才能從容應(yīng)答)
20. 如果不讓你用Java?Jdk提供的工具僚楞,你自己實(shí)現(xiàn)一個(gè)Map勤晚,你怎么做枉层。說了好久,說了HashMap源代碼赐写,如果我做鸟蜡,就會(huì)借鑒HashMap的原理,說了一通HashMap實(shí)現(xiàn)
21. Hash沖突怎么辦挺邀?哪些解決散列沖突的方法揉忘?
1.開放定址法(線性探測再散列,二次探測再散列端铛,偽隨機(jī)探測再散列)
2.再哈希法
3.鏈地址法(Java hashmap就是這么做的)
22. HashMap沖突很厲害泣矛,最差性能,你會(huì)怎么解決?從O(n)提升到log(n)咯禾蚕,用二叉排序樹的思路說了一通
二叉樹--http://www.jb51.net/article/77278.htm
二您朽、Java IO
1. 講講IO里面的常見類,字節(jié)流换淆、字符流哗总、接口、實(shí)現(xiàn)類倍试、方法阻塞讯屈。
輸入流就是從外部文件輸入到內(nèi)存,輸出流主要是從內(nèi)存輸出到文件县习。我們用Eclipse開發(fā)小程序在控制臺(tái)輸入數(shù)據(jù)就屬于輸入流涮母,即從控制臺(tái)輸入到內(nèi)存。
IO里面常見的類躁愿,第一印象就只知道IO流中有很多類叛本,IO流主要分為字符流和字節(jié)流。字符流中有抽象類InputStream和OutputStream攘已,它們的子類FileInputStream炮赦,F(xiàn)ileOutputStream,BufferedOutputStream等。字符流BufferedReader和Writer等样勃。都實(shí)現(xiàn)了Closeable, Flushable, Appendable這些接口吠勘。程序中的輸入輸出都是以流的形式保存的性芬,流中保存的實(shí)際上全都是字節(jié)文件。
Java中的阻塞式方法是指在程序調(diào)用改方法時(shí)剧防,必須等待輸入數(shù)據(jù)可用或者檢測到輸入結(jié)束或者拋出異常植锉,否則程序會(huì)一直停留在該語句上,不會(huì)執(zhí)行下面的語句峭拘。比如read()和readLine()方法俊庇。
2. 講講NIO。--http://www.importnew.com/22623.html
3. String?編碼UTF-8?和GBK的區(qū)別?
答:UTF-8是國際通用的編碼鸡挠,通用性比較好辉饱,GBK是國家編碼,支持中文拣展,但是相比UTF-8的通用性差彭沼,不過UTF-8占用的數(shù)據(jù)庫比較大,所以相對(duì)反應(yīng)速度要慢备埃。
4. 什么時(shí)候使用字節(jié)流姓惑、什么時(shí)候使用字符流?
字符流處理的單元為2個(gè)字節(jié)的Unicode字符,操作字符按脚、字符數(shù)組或字符串于毙,
字節(jié)流處理單元為1個(gè)字節(jié),操作字節(jié)和字節(jié)數(shù)組辅搬。
所以字符流是由Java虛擬機(jī)將字節(jié)轉(zhuǎn)化為2個(gè)字節(jié)的Unicode字符為單位的字符而成的唯沮,
所以它對(duì)多國語言支持性比較好!
如果是音頻文件伞辛、圖片烂翰、歌曲,就用字節(jié)流好點(diǎn)蚤氏,
如果是關(guān)系到中文(文本)的甘耿,用字符流好點(diǎn)
5.?遞歸讀取文件夾下的文件,代碼怎么實(shí)現(xiàn)
三竿滨、Java Web
1. session和cookie的區(qū)別和聯(lián)系佳恬,session的生命周期,多個(gè)服務(wù)部署時(shí)session管理于游。--http://blog.csdn.net/u012635819/article/details/50678602
2. servlet的一些相關(guān)問題--http://blog.csdn.net/chdjj/article/details/18882973
3. webservice相關(guān)問題
任何問題都需要從它的根源說起毁葱,所以簡單說一下WebService的工作原理》“客戶端調(diào)用一個(gè)WebService的方法倾剿,首先需要將方法名和需要傳遞的參數(shù)包裝成XML(也就是SOAP包),通常是通過HTTP傳遞到服務(wù)器端,然后服務(wù)器端解析這段XML前痘,得到被調(diào)用方法名稱和傳遞來的參數(shù)凛捏,進(jìn)而調(diào)用WebService實(shí)例的相應(yīng)方法。方法執(zhí)行完成之后芹缔,將返回的結(jié)果再包裝成XML(SOAP響應(yīng))發(fā)送到客戶端坯癣,客戶端解析這段XML,進(jìn)而得到返回結(jié)果最欠。這里關(guān)鍵的地方在于中間加入了對(duì)象和XML相互轉(zhuǎn)換的過程示罗。
4. jdbc連接,forname方式的步驟芝硬,怎么聲明使用一個(gè)事務(wù)蚜点。舉例并具體代碼
1) 原子性(atomicity):事務(wù)是數(shù)據(jù)庫的邏輯工作單位,而且是必須是原子工作單位吵取,對(duì)于其數(shù)據(jù)修改禽额,要么全部執(zhí)行,要么全部不執(zhí)行皮官。
2) 一致性(consistency):事務(wù)在完成時(shí),必須是所有的數(shù)據(jù)都保持一致狀態(tài)实辑。在相關(guān)數(shù)據(jù)庫中捺氢,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性剪撬。
3) 隔離性(isolation):一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)所影響摄乒。
4) 持久性(durability):一個(gè)事務(wù)一旦提交,事物的操作便永久性的保存在DB中残黑。即使此時(shí)再執(zhí)行回滾操作也不能撤消所做的更改馍佑。
5. 無框架下配置web.xml的主要配置內(nèi)容
6. jsp和servlet的區(qū)別
所以JSP在本質(zhì)上就是Servlet,但是兩者的創(chuàng)建方式不一樣。Servlet都是由JAVA程序代碼構(gòu)成梨水,用于流程控制和事務(wù)處理拭荤,通過Servlet來生成動(dòng)態(tài)網(wǎng)頁很不直觀。而JSP由HTML代碼和JSP標(biāo)簽構(gòu)成疫诽,可以方便地編寫動(dòng)態(tài)網(wǎng)頁.
另外總結(jié)一下舅世,JSP與Servlet主要有兩方面的不同:編譯:JSP修改后可以立即看到結(jié)果,不需要編譯奇徒;而Servelt缺需要編譯雏亚。轉(zhuǎn)換:JSP是動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù),是運(yùn)行在服務(wù)器端的腳本語言摩钙,而Servlet是web服務(wù)器端編程技術(shù)罢低。所以JSP運(yùn)行時(shí)就是轉(zhuǎn)換為Servlet,也就是java程序來執(zhí)行
1胖笛、抽象類與接口的區(qū)別网持。
--第一點(diǎn).?接口是抽象類的變體宜肉,接口中所有的方法都是抽象的。而抽象類是聲明方法的存在而不去實(shí)現(xiàn)它的類翎碑。
第二點(diǎn).?接口可以多繼承谬返,抽象類不行
第三點(diǎn).?接口定義方法,不能實(shí)現(xiàn)日杈,而抽象類可以實(shí)現(xiàn)部分方法遣铝。
第四點(diǎn).?接口中基本數(shù)據(jù)類型為static 而抽類象不是的。
2莉擒、final關(guān)鍵字的使用和區(qū)別酿炸。
對(duì)于基本類型,final使數(shù)值恒定不變涨冀;而對(duì)用對(duì)象引用填硕,final使引用恒定不變。?
final修飾的基本類型鹿鳖,一旦被初始化后扁眯,不能再被賦值。?
當(dāng)用final修飾一個(gè)類時(shí)翅帜,表明這個(gè)類不能被繼承姻檀。也就是說,如果一個(gè)類你永遠(yuǎn)不會(huì)讓他被繼承涝滴,就可以用final進(jìn)行修飾绣版。?
異常分類和處理機(jī)制。--http://blog.csdn.net/hguisu/article/details/6155636
JDK版本區(qū)別歼疮。--http://blog.csdn.net/shareus/article/details/50736159
StringBuilder內(nèi)部實(shí)現(xiàn)機(jī)制杂抽。
反射機(jī)制的使用。
反射機(jī)制的優(yōu)缺點(diǎn):
?優(yōu)點(diǎn):
? ? 運(yùn)行期類型的判斷韩脏,動(dòng)態(tài)類加載缩麸,動(dòng)態(tài)代理使用反射。
?缺點(diǎn):
? ? 性能是一個(gè)問題骤素,反射相當(dāng)于一系列解釋操作匙睹,通知jvm要做的事情,性能比直接的java代碼要慢很多济竹。
匿名內(nèi)部類的使用痕檬。--https://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html
匿名內(nèi)部類也就是沒有名字的內(nèi)部類
正因?yàn)闆]有名字,所以匿名內(nèi)部類只能使用一次送浊,它通常用來簡化代碼編寫
但使用匿名內(nèi)部類還有個(gè)前提條件:必須繼承一個(gè)父類或?qū)崿F(xiàn)一個(gè)接口
緩存的使用場景
Memcache與Redis的比較
如何實(shí)現(xiàn)Redis的分片
二梦谜、框架
1.struts1和struts2的區(qū)別
2.struts2和springMVC的區(qū)別
1、Struts2是類級(jí)別的攔截, 一個(gè)類對(duì)應(yīng)一個(gè)request上下文唁桩,SpringMVC是方法級(jí)別的攔截闭树,一個(gè)方法對(duì)應(yīng)一個(gè)request上下文,而方法同時(shí)又跟一個(gè)url對(duì)應(yīng),所以說從架構(gòu)本身上SpringMVC就容易實(shí)現(xiàn)restful url,而struts2的架構(gòu)實(shí)現(xiàn)起來要費(fèi)勁荒澡,因?yàn)镾truts2中Action的一個(gè)方法可以對(duì)應(yīng)一個(gè)url报辱,而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標(biāo)識(shí)其所屬方法了单山。
2碍现、由上邊原因,SpringMVC的方法之間基本上獨(dú)立的米奸,獨(dú)享request response數(shù)據(jù)昼接,請(qǐng)求數(shù)據(jù)通過參數(shù)獲取,處理結(jié)果通過ModelMap交回給框架悴晰,方法之間不共享變量慢睡,而Struts2搞的就比較亂,雖然方法之間也是獨(dú)立的铡溪,但其所有Action變量是共享的漂辐,這不會(huì)影響程序運(yùn)行,卻給我們編碼 讀程序時(shí)帶來麻煩佃却,每次來了請(qǐng)求就創(chuàng)建一個(gè)Action者吁,一個(gè)Action對(duì)象對(duì)應(yīng)一個(gè)request上下文。
3饲帅、由于Struts2需要針對(duì)每個(gè)request進(jìn)行封裝,把request瘤泪,session等servlet生命周期的變量封裝成一個(gè)一個(gè)Map灶泵,供給每個(gè)Action使用,并保證線程安全对途,所以在原則上赦邻,是比較耗費(fèi)內(nèi)存的。
4实檀、?攔截器實(shí)現(xiàn)機(jī)制上惶洲,Struts2有以自己的interceptor機(jī)制,SpringMVC用的是獨(dú)立的AOP方式膳犹,這樣導(dǎo)致Struts2的配置文件量還是比SpringMVC大恬吕。
5、SpringMVC的入口是servlet须床,而Struts2是filter(這里要指出铐料,filter和servlet是不同的。以前認(rèn)為filter是servlet的一種特殊),這就導(dǎo)致了二者的機(jī)制不同钠惩,這里就牽涉到servlet和filter的區(qū)別了柒凉。
6、SpringMVC集成了Ajax篓跛,使用非常方便膝捞,只需一個(gè)注解@ResponseBody就可以實(shí)現(xiàn),然后直接返回響應(yīng)文本即可愧沟,而Struts2攔截器集成了Ajax蔬咬,在Action中處理時(shí)一般必須安裝插件或者自己寫代碼集成進(jìn)去,使用起來也相對(duì)不方便央渣。
7计盒、SpringMVC驗(yàn)證支持JSR303,處理起來相對(duì)更加靈活方便芽丹,而Struts2驗(yàn)證比較繁瑣北启,感覺太煩亂。
8拔第、Spring MVC和Spring是無縫的咕村。從這個(gè)項(xiàng)目的管理和安全上也比Struts2高(當(dāng)然Struts2也可以通過不同的目錄結(jié)構(gòu)和相關(guān)配置做到SpringMVC一樣的效果,但是需要xml配置的地方不少)蚊俺。
9懈涛、?設(shè)計(jì)思想上,Struts2更加符合OOP的編程思想泳猬, SpringMVC就比較謹(jǐn)慎批钠,在servlet上擴(kuò)展。
10得封、SpringMVC開發(fā)效率和性能高于Struts2埋心。
11、SpringMVC可以認(rèn)為已經(jīng)100%零配置忙上。
1. hibernate和ibatis的區(qū)別
2. 講講mybatis的連接池拷呆。
3. spring框架中需要引用哪些jar包,以及這些jar包的用途
4. springMVC的原理
5. springMVC注解的意思
6. spring中beanFactory和ApplicationContext的聯(lián)系和區(qū)別
7. spring注入的幾種方式(循環(huán)注入)
8. spring如何實(shí)現(xiàn)事物管理的
9. springIOC
10. spring AOP的原理
11. hibernate中的1級(jí)和2級(jí)緩存的使用方式以及區(qū)別原理(Lazy-Load的理解)
12. Hibernate的原理體系架構(gòu)疫粥,五大核心接口茬斧,Hibernate對(duì)象的三種狀態(tài)轉(zhuǎn)換,事務(wù)管理梗逮。
3.spring框架中需要引用哪些jar包项秉,以及這些jar包的用途
4.srpingMVC的原理
5.springMVC注解的意思
6.spring中beanFactory和ApplicationContext的聯(lián)系和區(qū)別
7.spring注入的幾種方式
8.spring如何實(shí)現(xiàn)事物管理的
9.springIOC和AOP的原理
https://www.cnblogs.com/gaopeng527/p/5290997.html
10.hibernate中的1級(jí)和2級(jí)緩存的使用方式以及區(qū)別原理
11.spring中循環(huán)注入的方式
12.Spring事務(wù)的管理
13.Hibernate與MyBatis的比較
14.Hibernate延遲加載的機(jī)制
四、JVM
1. Java的內(nèi)存模型以及GC算法
2. jvm性能調(diào)優(yōu)都做了什么
3. 介紹JVM中7個(gè)區(qū)域库糠,然后把每個(gè)區(qū)域可能造成內(nèi)存的溢出的情況說明
4. 介紹GC 和GC Root不正常引用伙狐。
5. 自己從classload?加載方式涮毫,加載機(jī)制說開去,從程序運(yùn)行時(shí)數(shù)據(jù)區(qū)贷屎,講到內(nèi)存分配罢防,講到String常量池,講到JVM垃圾回收機(jī)制唉侄,算法咒吐,hotspot。反正就是各種擴(kuò)展
6. jvm?如何分配直接內(nèi)存属划,?new?對(duì)象如何不分配在堆而是棧上恬叹,常量池解析
7.?數(shù)組多大放在?JVM?老年代(不只是設(shè)置?PretenureSizeThreshold?,問通常多大同眯,沒做過一問便知)
8.?老年代中數(shù)組的訪問方式
9. GC?算法绽昼,永久代對(duì)象如何?GC?,?GC?有環(huán)怎么處理
10.?誰會(huì)被?GC?须蜗,什么時(shí)候?GC
11.?如果想不被?GC?怎么辦
12.?如果想在?GC?中生存?1?次怎么辦
GC算法有哪些
垃圾回收器有哪些
如何調(diào)優(yōu)JVM--http://pengjiaheng.iteye.com/blog/552456
三硅确、多線程
1.Java創(chuàng)建線程之后,直接調(diào)用start()方法和run()的區(qū)別
2.常用的線程池模式以及不同線程池的使用場景
3.newFixedThreadPool此種線程池如果線程數(shù)達(dá)到最大值后會(huì)怎么辦明肮,底層原理菱农。
4.多線程之間通信的同步問題,synchronized鎖的是對(duì)象柿估,衍伸出和synchronized相關(guān)很多的具體問題循未,例如同一個(gè)類不同方法都有synchronized鎖,一個(gè)對(duì)象是否可以同時(shí)訪問秫舌〉难或者一個(gè)類的static構(gòu)造方法加上synchronized之后的鎖的影響。
5.了解可重入鎖的含義足陨,以及ReentrantLock 和synchronized的區(qū)別
6.同步的數(shù)據(jù)結(jié)構(gòu)羔味,例如concurrentHashMap的源碼理解以及內(nèi)部實(shí)現(xiàn)原理,為什么他是同步的且效率高
7.atomicinteger和volatile等線程安全操作的關(guān)鍵字的理解和使用
8.線程間通信钠右,wait和notify
9.定時(shí)線程的使用
10.場景:在一個(gè)主線程中,要求有大量(很多很多)子線程執(zhí)行完之后忘蟹,主線程才執(zhí)行完成飒房。多種方式,考慮效率媚值。
如何避免Quartz重復(fù)啟動(dòng)任務(wù)
線程池滿了如何處理額外的請(qǐng)求
同一個(gè)對(duì)象的連個(gè)同步方法能否被兩個(gè)線程同時(shí)調(diào)用
11. 進(jìn)程和線程的區(qū)別
12. 什么叫線程安全狠毯?舉例說明
13. 線程的幾種狀態(tài)
14. 并發(fā)、同步的接口或方法
15. HashMap?是否線程安全褥芒,為何不安全嚼松。?ConcurrentHashMap嫡良,線程安全,為何安全献酗。底層實(shí)現(xiàn)是怎么樣的寝受。
16. J.U.C下的常見類的使用。?ThreadPool的深入考察罕偎;?BlockingQueue的使用很澄。(take,poll的區(qū)別颜及,put甩苛,offer的區(qū)別);原子類的實(shí)現(xiàn)俏站。
17. 簡單介紹下多線程的情況讯蒲,從建立一個(gè)線程開始。然后怎么控制同步過程肄扎,多線程常用的方法和結(jié)構(gòu)
18. volatile的理解
19. 實(shí)現(xiàn)多線程有幾種方式墨林,多線程同步怎么做,說說幾個(gè)線程里常用的方法
四反浓、網(wǎng)絡(luò)通信
1. http是無狀態(tài)通信萌丈,http的請(qǐng)求方式有哪些,可以自己定義新的請(qǐng)求方式么雷则。
2. socket通信辆雾,以及長連接,分包月劈,連接異常斷開的處理度迂。
3. socket通信模型的使用,AIO和NIO猜揪。
4. socket框架netty的使用惭墓,以及NIO的實(shí)現(xiàn)原理,為什么是異步非阻塞而姐。
5. 同步和異步腊凶,阻塞和非阻塞。
6. OSI七層模型拴念,包括TCP,IP的一些基本知識(shí)
7. http中钧萍,get?post的區(qū)別
8. 說說http,tcp,udp之間關(guān)系和區(qū)別。
9. 說說瀏覽器訪問www.taobao.com政鼠,經(jīng)歷了怎樣的過程风瘦。
10. HTTP協(xié)議、? HTTPS協(xié)議公般,SSL協(xié)議及完整交互過程万搔;
11. tcp的擁塞胡桨,快回傳,ip的報(bào)文丟棄
12. https處理的一個(gè)過程瞬雹,對(duì)稱加密和非對(duì)稱加密
13. head各個(gè)特點(diǎn)和區(qū)別
14. 說說瀏覽器訪問www.taobao.com昧谊,經(jīng)歷了怎樣的過程。
Get和Post的區(qū)別
get 請(qǐng)求參數(shù)在url里面挖炬,請(qǐng)求數(shù)據(jù)大小限制為2k揽浙,數(shù)據(jù)暴露,安全性低
五意敛、Linux
1.常用的linux下的命令
2.大的log文件中馅巷,統(tǒng)計(jì)異常出現(xiàn)的次數(shù)、排序草姻,或者指定輸出多少行多少列的內(nèi)容钓猬。(主要考察awk)
3.linux下的調(diào)查問題思路:內(nèi)存、CPU撩独、句柄數(shù)敞曹、過濾、查找综膀、模擬POST和GET請(qǐng)求等等場景
4.shell腳本中#澳迫!的作用
六、數(shù)據(jù)庫MySql
1. MySql的存儲(chǔ)引擎的不同
2. 單個(gè)索引剧劝、聯(lián)合索引橄登、主鍵索引
3. Mysql怎么分表,以及分表后如果想按條件分頁查詢?cè)趺崔k(如果不是按分表字段來查詢的話讥此,幾乎效率低下拢锹,無解)
4. 分表之后想讓一個(gè)id多個(gè)表是自增的,效率實(shí)現(xiàn)
5. MySql的主從實(shí)時(shí)備份同步的配置萄喳,以及原理(從庫讀主庫的binlog)卒稳,讀寫分離
6. 寫SQL語句。他巨。充坑。
7. 索引的數(shù)據(jù)結(jié)構(gòu),B+樹
8. 事務(wù)的四個(gè)特性染突,以及各自的特點(diǎn)(原子匪傍、隔離)等等,項(xiàng)目怎么解決這些問題
9. 數(shù)據(jù)庫的鎖:行鎖觉痛,表鎖;樂觀鎖茵休,悲觀鎖
10. 數(shù)據(jù)庫事務(wù)的幾種粒度薪棒;
11.?關(guān)系型和非關(guān)系型數(shù)據(jù)庫區(qū)別
七手蝎、設(shè)計(jì)模式(寫代碼)
1. 單例模式:飽漢、餓漢俐芯。以及餓漢中的延遲加載,雙重檢查
2. 工廠模式棵介、裝飾者模式、觀察者模式吧史。
3.?工廠方法模式的優(yōu)點(diǎn)(低耦合邮辽、高內(nèi)聚,開放封閉原則)
八贸营、算法
1. 使用隨機(jī)算法產(chǎn)生一個(gè)數(shù)吨述,要求把1-1000W之間這些數(shù)全部生成。(考察高效率钞脂,解決產(chǎn)生沖突的問題)
2. 兩個(gè)有序數(shù)組的合并排序
3. 一個(gè)數(shù)組的倒序
4. 計(jì)算一個(gè)正整數(shù)的正平方根
5. 說白了就是常見的那些查找、排序算法以及各自的時(shí)間復(fù)雜度
6. 二叉樹的遍歷算法
7. DFS,BFS算法
9. 比較重要的數(shù)據(jù)結(jié)構(gòu),如鏈表望几,隊(duì)列蛀缝,棧的基本理解及大致實(shí)現(xiàn)。
10.?排序算法與時(shí)空復(fù)雜度(快排為什么不穩(wěn)定阎毅,為什么你的項(xiàng)目還在用)
11. 逆波蘭計(jì)算器
12. Hoffman?編碼
13.?查找樹與紅黑樹
九焚刚、緩存
1.為什么用緩存,用過哪些緩存扇调,redis和memcache的區(qū)別
2.redis的數(shù)據(jù)結(jié)構(gòu)
3.redis的持久化方式矿咕,以及項(xiàng)目中用的哪種,為什么
4.redis集群的理解肃拜,怎么動(dòng)態(tài)增加或者刪除一個(gè)節(jié)點(diǎn)痴腌,而保證數(shù)據(jù)不丟失。(一致性哈希問題)
緩存的使用場景
Memcache與Redis的比較
如何實(shí)現(xiàn)Redis的分片
十一燃领、并發(fā)與性能調(diào)優(yōu)
1. 有個(gè)每秒鐘5k個(gè)請(qǐng)求士聪,查詢手機(jī)號(hào)所屬地的筆試題(記得不完整,沒列出)猛蔽,如何設(shè)計(jì)算法?請(qǐng)求再多剥悟,比如5w,如何設(shè)計(jì)整個(gè)系統(tǒng)?
2. 高并發(fā)情況下曼库,我們系統(tǒng)是如何支撐大量的請(qǐng)求的
3. 集群如何同步會(huì)話狀態(tài)
4.?負(fù)載均衡的原理
5 .如果有一個(gè)特別大的訪問量区岗,到數(shù)據(jù)庫上,怎么做優(yōu)化(DB設(shè)計(jì)毁枯,DBIO慈缔,SQL優(yōu)化,Java優(yōu)化)
6. 如果出現(xiàn)大面積并發(fā)种玛,在不增加服務(wù)器的基礎(chǔ)上藐鹤,如何解決服務(wù)器響應(yīng)不及時(shí)問題“瓤檐。
7. 假如你的項(xiàng)目出現(xiàn)性能瓶頸了,你覺得可能會(huì)是哪些方面娱节,怎么解決問題挠蛉。
8. 如何查找?造成?性能瓶頸出現(xiàn)的位置,是哪個(gè)位置照成性能瓶頸肄满。
9.?你的項(xiàng)目中使用過緩存機(jī)制嗎谴古?有沒用用戶非本地緩存
面試經(jīng)驗(yàn)--http://blog.163.com/hcl_zjblog/blog/static/214281242201712455443247/
---------------------本文來自 zengxiaozengxiao 的CSDN 博客 ,全文地址請(qǐng)點(diǎn)擊:https://blog.csdn.net/zengxiaozengxiao/article/details/79381038?utm_source=copy