![2020年阿里精選面試題及答案_第1頁](http://file4.renrendoc.com/view/b2ebfb6cb5cfe6f86928fa641ecb1068/b2ebfb6cb5cfe6f86928fa641ecb10681.gif)
![2020年阿里精選面試題及答案_第2頁](http://file4.renrendoc.com/view/b2ebfb6cb5cfe6f86928fa641ecb1068/b2ebfb6cb5cfe6f86928fa641ecb10682.gif)
![2020年阿里精選面試題及答案_第3頁](http://file4.renrendoc.com/view/b2ebfb6cb5cfe6f86928fa641ecb1068/b2ebfb6cb5cfe6f86928fa641ecb10683.gif)
![2020年阿里精選面試題及答案_第4頁](http://file4.renrendoc.com/view/b2ebfb6cb5cfe6f86928fa641ecb1068/b2ebfb6cb5cfe6f86928fa641ecb10684.gif)
![2020年阿里精選面試題及答案_第5頁](http://file4.renrendoc.com/view/b2ebfb6cb5cfe6f86928fa641ecb1068/b2ebfb6cb5cfe6f86928fa641ecb10685.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2020年阿里精選面試題及答案1. 使用mysql索引都有哪些原則?索引什么數(shù)據(jù)結(jié)構(gòu)?B+tree和B tree什么區(qū)別?1、對于查詢頻率高的字段創(chuàng)建索引:2、對排序、分組、聯(lián)合查詢頻率高的字段創(chuàng)建索引;3、索引的數(shù)目不宜太多原因:a、每創(chuàng)建一個(gè)索引都會占用相應(yīng)的物理控件:b、過多的索引會導(dǎo)致insert, update、delete語句的執(zhí)行效率降低:4、若在實(shí)際中,需要將多個(gè)列設(shè)置索引時(shí),可以采用多列索引如:某個(gè)表(假設(shè)及名為Student),存在多個(gè)字段(StudentNo, StudentName, Sex, Address, Phone, BirthDate),其中需要 71 Stu
2、dentNo, StudentXame 字段進(jìn)行查詢,對 Sex字段進(jìn)行分組,對BirthDate字段建行排序,此時(shí)可以創(chuàng)建多列索引index index_najne (StudentNo, StudentXame, 5ex, BirthDate) ;#index_najne 為索引名在上面的語句中只創(chuàng)建了 個(gè)索引,但是對4個(gè)字段都賦予了豪引的功能。創(chuàng)建多列 索引,需要遵循BTree類型,即第一列使用時(shí),才啟用索引。在上面的創(chuàng)建語句中,只有mysql語句在使用到Student、。字段時(shí),索引才會被啟用。如:select * from Student wheie StudentNo = 1000
3、; #使用到了 StudentNo 字段, 索引被啟用。以使用explain檢測索引是否被啟用如:explain select * from Student where StudentNo = 1000;5、選擇唯一性索引唯性索引的值是唯的,可以更快速的通過該索引來確定某條記錄。例如,學(xué)生衣中 學(xué)號是具有唯性的字段。為該字段建立唯性索引可以很快的確定某個(gè)學(xué)生的信息。如果 使用姓名的話,可能存在同名現(xiàn)象,從而降低查詢速度。6、盡量使用數(shù)據(jù)量少的索引如果索引的值很長,那么查詢的速度會受到影響。例如,對個(gè)CHAR (100)類型的字 段進(jìn)行全文檢索需要的時(shí)間肯定要比對CHAR (10)類型的字段需要
4、的時(shí)間要多。7、盡量使用前綴來索引如果索引字段的值很長,最好使用催的前綴來索引。例如,TEXT和BL0G類型的字段, 進(jìn)行全文檢索會很浪費(fèi)時(shí)間。如果只檢索字段的前面的若干個(gè)字符,這樣可以提高檢索速度。 8、刪除不再使用或者很少使用的索引.表中的數(shù)據(jù)被大量更新或者數(shù)據(jù)的使用方式被改變后原有的些索引可能不再需要。 數(shù)據(jù)庫管理員應(yīng)當(dāng)定期找出這些索引,將它們刪除從而減少索引對更新操作的影響B(tài)+tree 樹索引,B tree,散列Mysql有哪些存儲引擎?請?jiān)敿?xì)列舉其區(qū)別?InnoDB:事務(wù)型存儲引擎,并且有較高的并發(fā)讀取頻率MEMORY:存儲引挈,存放在內(nèi)存 中.數(shù)據(jù)量小,速度快Merge:ARCHI
5、VE:歸檔,有很好的壓縮機(jī)制設(shè)計(jì)高并發(fā)系統(tǒng)數(shù)據(jù)庫層面該如何設(shè)計(jì)?數(shù)據(jù)庫鎖有哪些類型?如何實(shí)現(xiàn)?.分庫分表:同樣量的數(shù)據(jù)平均存儲在不同數(shù)據(jù)庫相同表(或不同衣)中,減輕單式壓 力,如果還是很大,就可以每個(gè)庫在分多張表,根據(jù)hash取值或者其他邏輯判斷將數(shù)據(jù) 存儲在哪張表中.讀寫分離:數(shù)據(jù)庫原本就有主從數(shù)據(jù)庫之分,查詢在從服務(wù)器,增刪改在主服務(wù)器,.歸檔和操作表區(qū)分:建張歸檔衣,將歷史數(shù)據(jù)放入,需要操作的我數(shù)據(jù)單獨(dú)存儲.索引啊之類的創(chuàng)建,對于數(shù)據(jù)量很大,百萬級別以上的單/3如果增刪改操作不頻繁 的話,可以創(chuàng)建bitMap索引,速度要快得多.共享鎖:要等第個(gè)人操作完.釋放鎖,才能操作.更新鎖:解決死鎖
6、,別人可以讀,但不能操作.排他鎖:讀寫都被禁用.意向鎖(xlock):對表中部分?jǐn)?shù)據(jù)加鎖,查詢時(shí),可以跳過.計(jì)劃鎖:操作時(shí),別的表連接不了這張表,數(shù)據(jù)庫事務(wù)有哪些?原子性:所有操作要么全部成功,要么全部失敗一致性:例如轉(zhuǎn)賬,個(gè)事務(wù)執(zhí)行前和執(zhí)行后必須致隔離性:防止臟讀,重復(fù)讀問題 持久性:永久性提交數(shù)據(jù)必Oracle常用函數(shù)有哪些?Concat:字符串拼接,或者| KConcat:字符串拼接,或者| | Instr:指定字符串位置Length:長度Trim:去空格Lower:小寫Upper:大寫Nvl:判斷空Replace:替換Substr:截取Floor:向下取整To_nmber:To_cha
7、r:To.date:Decode:判斷函數(shù)等等6.Sql中哪些情況可能不會走索引?查詢謂詞沒有使用索引的主要邊界,換句話說就是select *,可能會導(dǎo)致不走索引單鍵值的b樹索引列上存在null值,導(dǎo)致COUNTS)不能走索引。索引列存在空值索引列上有函數(shù)運(yùn)算,導(dǎo)致不走索引隱式類型轉(zhuǎn)換導(dǎo)致不走索引。表的數(shù)據(jù)庫小或者需要選擇大部分?jǐn)?shù)據(jù),不走索引!=或者0 (不等于),可能導(dǎo)致不走索引表字段的屬性導(dǎo)致不走索引,字符型的索引列會導(dǎo)致優(yōu)化器認(rèn)為需要掃描索引大部分?jǐn)?shù)據(jù)且聚簇因子很大,最終導(dǎo)致棄用索引掃描而改用全農(nóng)掃描方式,使用like, in等,可能導(dǎo)致不走素引講講分布式唯一 ID?確定ID存儲用64位
8、,1個(gè)64位二進(jìn)制6是這樣的000000001100 0101,切割64位,某段二進(jìn)制表示成1個(gè)約束條件,前41位為耋秒時(shí)間,后緊接9位為IP, IP之 后為自增的二進(jìn)制,記錄當(dāng)前面位數(shù)相同情況下是第幾個(gè)id,如現(xiàn)在有10臺機(jī)器,這個(gè)id 生成游生成id極限是同臺機(jī)器Ims內(nèi)生成2的14次方個(gè)IDo分布式唯 TD =時(shí)間戳 41位,int類型服務(wù)器編號 10,序列自增sequence o每個(gè)時(shí)間 戳內(nèi)只能生成固定數(shù)量如(1。萬)個(gè)自地號,達(dá)到最大值則同步等待下個(gè)時(shí)間戳,白墻從。 開始。將,空秒數(shù)放在最高位,保證生成的ID是趨勢逢增的,每個(gè)業(yè)務(wù)統(tǒng)、每個(gè)機(jī)房、每個(gè) 機(jī)器生成的ID都是不同的。如39
9、bit毫秒數(shù)|4bit業(yè)務(wù)線12bit機(jī)房I預(yù)留17bit序列號。 高位職2016年1月1耳1到現(xiàn)在的耋秒數(shù),系統(tǒng)運(yùn)行1曾,至少需要10年x365天x24小 時(shí)X3600愁X1000邕秒=320 xl0.9,差不多39bit給秒 數(shù),每秒單機(jī)高峰并發(fā)小于10。, 差不多7bit給每忘秒的自增號,5年內(nèi)機(jī)房小于100臺機(jī)器,預(yù)留2bit給機(jī)房,每個(gè)機(jī)房 小二100臺機(jī)器,預(yù)留7bit給每個(gè)機(jī)房,業(yè)務(wù)線小于10個(gè),預(yù)留4bit給業(yè)務(wù)線標(biāo)識。64bit分布式ID (42bit斑秒+5bit機(jī)器ID+12位自增)等生成分布式工D的方式:A, 2個(gè)自增表,步長相互隔開B,時(shí)間的堂秒或者納秒C, UUID
10、 D, 64位約束條件(如上)NIO和IO的區(qū)別?第點(diǎn),町o少r 1次從內(nèi)核空間到用戶空間的拷貝。Byt eBuff er. allocat eDir ect ()分配的內(nèi)芍使用的是本機(jī)內(nèi)存而不是Java堆上的內(nèi) 存,和網(wǎng)絡(luò)或者磁盤交互都在操作系統(tǒng)的內(nèi)核空間中發(fā)生oallocateDirectO的區(qū)別在于這 塊內(nèi)存不由java堆管理,但仍然在同用戶進(jìn)程內(nèi)。第二點(diǎn),町0以塊處理數(shù)據(jù),10以流處理數(shù)據(jù)第三點(diǎn),非阻塞,阿。1個(gè)線程可以管理多個(gè)輸入輸出通道Redis內(nèi)存數(shù)據(jù)上升到一定大小會執(zhí)行數(shù)據(jù)淘汰策略,Redis提供了哪6種數(shù)據(jù)淘汰策略?LRU:從已設(shè)置過期時(shí)間的數(shù)據(jù)集合中挑選最近最少使用的數(shù)據(jù)淘
11、汰random:從已設(shè)置過期時(shí)間的數(shù)據(jù)中挑選任意數(shù)據(jù)淘汰ttl:從已設(shè)置過期時(shí)間的數(shù)據(jù)集合中挑選將要過期的數(shù)據(jù)淘汰。notenvision:禁止昵逐數(shù)據(jù)如mysql中有2千萬數(shù)據(jù),redis只存儲20萬的熱門數(shù)據(jù)。LRU或者TTL都滿足熱點(diǎn)數(shù)據(jù)讀 取較多,不太可能超時(shí)特點(diǎn)。redis特點(diǎn):速度塊,0 (1),豐富的數(shù)據(jù)類型,支持事物原性,可用于存,比memecache 速度塊,可以持久化數(shù)據(jù)。常見問題和解決:Master最好不做持久億如RDB快照和A0F日志文件;如果數(shù)據(jù)比較重 要,某分slave開啟A0F備份數(shù)據(jù),漩各為每秒1次,為了主從復(fù)制速度及稔定,MS主從 在同一局域網(wǎng)內(nèi);主從復(fù)制不要
12、用圖狀結(jié)構(gòu),用單向鏈表更為穩(wěn)定M-S-S-S-So.。: redis 過期采用懶漢+定期,懶漢即get/set時(shí)候檢查key是否過期,過期則刪除key,定期遍歷 每個(gè)DB,檢查制定個(gè)數(shù)個(gè)key;結(jié)合服務(wù)器性能調(diào)節(jié)并發(fā)情況。過期淘汰,數(shù)據(jù)寫入redis會附帶1個(gè)有效時(shí)間,這個(gè)有效時(shí)間內(nèi)該數(shù)據(jù)被認(rèn)為是正確的 并不關(guān)心真實(shí)情況,例如對支付等業(yè)務(wù)采用版本號實(shí)現(xiàn),redis中每份數(shù)據(jù)都維持1個(gè)版 本號,DB中也維持1份,只有當(dāng)redis的與DB中的版本致時(shí),才會認(rèn)為redis為有效 的,不過仍然每次都要訪問DB,只需要查詢version版本字段即可。請描述 MyISM 和 InnoDB?YylSV采用表
13、級鎖,對Myism表讀不會阻塞讀,會阻塞同表寫,對Myism寫則會阻塞讀和寫, 即個(gè)線程獲得1個(gè)表的寫鎖后,只有持有鎖的線程可以對表更新操作,其他線程的讀和寫 都會等待。InnoDB,采用行級鎖,支持事務(wù),例如只對a列加索引,如果update.where a=l and b=2 其實(shí)也會鎖整個(gè)表,select使用共享鎖,update insert delete采用排它鎖,commit會把 鎖職消,當(dāng)然select by id for update也可以制定排它鎖c請描述實(shí)時(shí)隊(duì)列?實(shí)時(shí)隊(duì)列采用雙隊(duì)列模式,生產(chǎn)者將行為記錄寫入Queuel, worker服務(wù)從Queuel消贄 新 鮮數(shù)據(jù),如果異常
14、則寫入Queue 2 (主要保存異常數(shù)據(jù)),RetryWorker會監(jiān)聽Queue 2,消 費(fèi)異常數(shù)據(jù),如果還未處理成功按照定的策略等待或者將異常數(shù)據(jù)再寫入Queue2,如果數(shù) 據(jù)發(fā)生積壓可以調(diào)整worker的消費(fèi)游標(biāo),從最新數(shù)據(jù)重新開始消費(fèi),保證/最新data得到 處理,中間未處理的段則可以啟動backupworker指定起止游標(biāo)在消費(fèi)完指定區(qū)間的數(shù)據(jù) 后,backupWorker會自動停止。DB降級開關(guān)后,可直接寫入redis (stoim),同時(shí)將數(shù)據(jù)寫入份到Retry隊(duì)列,在開啟DB 降級開關(guān)后消費(fèi)Retry隊(duì)列中的數(shù)據(jù),從而把數(shù)據(jù)寫入到mysql中,達(dá)到最終致性。MYSQL 切分為分
15、片為2的、次方,例如原來分為兩個(gè)庫dO和dl均放在sO服務(wù)器上,sO同時(shí)有備 機(jī)si,擴(kuò)容只要幾步驟:確保sO到si服務(wù)器同步順利,沒有明顯延遲:sO暫時(shí)關(guān)閉讀寫權(quán) 限;確保si已經(jīng)完全同步到sO更新;si開放讀寫權(quán)限;dl的dns由sO切換到si; sO開 放讀寫權(quán)限。DB的特性和隔離級別?4大特性:原子性,致性,分離性,持久性隔離級別:讀提交:寫事務(wù)禁止讀讀未提交:寫事務(wù)允許讀可重復(fù)讀:寫事務(wù)禁止讀事務(wù),讀禁止與序列化:全部禁止詳細(xì)說明:讀提交1個(gè)事務(wù)開始寫則全音噤止其他事務(wù)訪問該行。讀未提交1個(gè)事務(wù)開始 寫則不允許其他事務(wù)同時(shí)寫,但可以讀。可重復(fù)讀讀事務(wù)會禁止寫事務(wù),寫事物則禁止其 他任
16、何事務(wù)。序列化性能最低,全部禁止,串行執(zhí)行。MYSQL默認(rèn)的是可重復(fù)讀。ICMP是什么協(xié)議,處于哪一層?Internet控制報(bào)文協(xié)議,處于網(wǎng)絡(luò)層(IP層)講一下NIO和網(wǎng)絡(luò)傳輸.NIO Reactor反應(yīng)器模式,例如汽車是乘客訪問的實(shí)體reactor,乘客上車后到售票員處 Acceptor登記,之后乘客便可休息睡覺了,到達(dá)乘客目的地后,售票員Aceptor將其喚即可。 持久TCP長鏈接每個(gè)client和曙匕如工之間有存在一個(gè)持久連接,當(dāng)CCU (用戶并發(fā)數(shù)量)上 升,阻塞server無法為每個(gè)連接運(yùn)行1個(gè)線程,自己開發(fā)1個(gè)二進(jìn)制協(xié)議,將message壓縮至 3-6倍,傳輸雙向且消息頻率高,假設(shè)
17、gver鏈接了 2000個(gè)client,每個(gè)client平均每分鐘傳 輸1T0個(gè)message, 1個(gè)messaged的大小為幾百字節(jié)/幾千字節(jié),而server也要向client廣播 其他玩家的當(dāng)前信息,需要高速處理消息的能力。Buffer,網(wǎng)絡(luò)字節(jié)存放傳輸?shù)牡胤?,從channel 中讀與,從buff er作為中間存儲格式,channel是 網(wǎng)絡(luò)連接與buffer間數(shù)據(jù)通道,像之前的 socket 的 stream。內(nèi)存泄漏未對作廢數(shù)據(jù)內(nèi)存單元置為null,盡早釋放無用對象的引用,使用臨時(shí)變量時(shí),讓引用變量 在推出活動域后自動設(shè)置為null,暗示垃圾收集器收集;程序避免用String拼接,用 StringBuffer,因?yàn)槊總€(gè)String會占用內(nèi)存一塊區(qū)域;盡量少用靜態(tài)變量(全局不會回收): 不要集中創(chuàng)建對象尤其大對象,可以使用流操作;盡量使用對象池,不再循環(huán)中創(chuàng)建對象, 優(yōu)化配置;創(chuàng)建對象到單例getlnstance中,對象無法回收被單例引用:服務(wù)器session時(shí) 間設(shè)置過長也會引起內(nèi)存泄漏。請描述平衡二叉樹.平衡二叉樹,左右高度之差不超過1, Add/加lete可能造
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版九年級數(shù)學(xué)上冊21.2.4《因式分解法》聽評課記錄
- 人教版歷史八年級上冊(2017年新編)《第6課戊戌變法》(聽課評課記錄)
- 蘇科版數(shù)學(xué)八年級上冊聽評課記錄《4-3實(shí)數(shù)(1)》
- 新版華東師大版八年級數(shù)學(xué)下冊《18.1平行四邊形的性質(zhì)2》聽評課記錄
- 蘇科版數(shù)學(xué)七年級下冊聽評課記錄12.2證明1
- 人教版部編歷史七年級上冊《第12課 漢武帝鞏固大一統(tǒng)王朝》聽課評課記錄2
- 2022版新課標(biāo)七年級上冊道德與法治第五課交友的智慧第二課時(shí)網(wǎng)上交友新時(shí)空聽課評課記錄
- 創(chuàng)業(yè)糕點(diǎn)店創(chuàng)業(yè)計(jì)劃書
- 專利技術(shù)許可證合同范本
- 廠房出租安全生產(chǎn)管理協(xié)議書范本
- 分享二手房中介公司的薪酬獎勵(lì)制度
- 安徽省2022年中考道德與法治真題試卷(含答案)
- GB 4793-2024測量、控制和實(shí)驗(yàn)室用電氣設(shè)備安全技術(shù)規(guī)范
- 項(xiàng)目人員管理方案
- 重大火災(zāi)隱患判定方法
- 挖掘機(jī)售后保養(yǎng)及維修服務(wù)協(xié)議(2024版)
- 2024年電工(高級技師)考前必刷必練題庫500題(含真題、必會題)
- 2024年全國各地中考語文試題匯編:名著閱讀
- 公司組織架構(gòu)與管理體系制度
- 2024-2030年中國涂碳箔行業(yè)現(xiàn)狀調(diào)查與投資策略分析研究報(bào)告
- 2024-2030年中國派對用品行業(yè)供需規(guī)模調(diào)研及發(fā)展趨勢預(yù)測研究報(bào)告
評論
0/150
提交評論