2020年最新阿里面試題整理附答案

關(guān)于epoll和select的區(qū)別,哪些說(shuō)法是正確的?
【A】epoll和select都是I/O多路復(fù)用的技術(shù),都可以實(shí)現(xiàn)同時(shí)監(jiān)聽(tīng)多個(gè)I/O事件的狀態(tài)。
【B】epoll相比select效率更高,主要是基于其操作系統(tǒng)支持的I/O事件通知機(jī)制,而select是基于輪詢機(jī)制。
【C】epoll支持水平觸發(fā)和邊沿觸發(fā)兩種模式。
【D】select能并行支持I/O比較小,且無(wú)法修改。
答案:ABC
從innodb的索引結(jié)構(gòu)分析,為什么索引的key長(zhǎng)度不能太長(zhǎng)? key 太長(zhǎng)會(huì)導(dǎo)致一個(gè)頁(yè)當(dāng)中能夠存放的 key 的數(shù)目變少,間接導(dǎo)致索引樹(shù)的頁(yè)數(shù)目變多,索引層次增加,從而影響整體查詢變更的效率。
MySQL的數(shù)據(jù)如何恢復(fù)到任意時(shí)間點(diǎn)?
恢復(fù)到任意時(shí)間點(diǎn)以定時(shí)的做全量備份,以及備份增量的 binlog 日志為前提?;謴?fù)到任意時(shí)間點(diǎn)首先將全量備份恢復(fù)之后,再此基礎(chǔ)上回放增加的 binlog 直至指定的時(shí)間點(diǎn)。
輸入 ping IP 后敲回車,發(fā)包前會(huì)發(fā)生什么?
首先根據(jù)目標(biāo)IP和路由表決定走哪個(gè)網(wǎng)卡,再根據(jù)網(wǎng)卡的子網(wǎng)掩碼地址判斷目的IP是否在子網(wǎng)內(nèi)。如果不在則會(huì)通過(guò)ARP緩存查詢IP的網(wǎng)卡地址,不存在的話會(huì)通過(guò)廣播詢問(wèn)目的IP的mac地址,得到后就開(kāi)始發(fā)包了,同時(shí)mac地址也會(huì)被ARP緩存起來(lái)。
請(qǐng)解釋下為什么鹿晗發(fā)布戀情的時(shí)候,微博系統(tǒng)會(huì)崩潰,如何解決?
《 參考思路 》 A. 獲取微博通過(guò) pull 方式還是 push 方式 B. 發(fā)布微博的頻率要遠(yuǎn)小于閱讀微博 C. 流量明星的發(fā)微博,和普通博主要區(qū)分對(duì)待,比如在 sharding 的時(shí)候,也要考慮這個(gè)因素
現(xiàn)有一批郵件需要發(fā)送給訂閱顧客,且有一個(gè)集群(集群的節(jié)點(diǎn)數(shù)不定,會(huì)動(dòng)態(tài)擴(kuò)容縮容)來(lái)負(fù)責(zé)具體的郵件發(fā)送任務(wù),如何讓系統(tǒng)盡快地完成發(fā)送?請(qǐng)?jiān)斒黾夹g(shù)方案! A. 借助消息中間件,通過(guò)發(fā)布者訂閱者模式來(lái)進(jìn)行任務(wù)分配 B. master-slave 部署,由 master 來(lái)分配任務(wù) C. 不借助任何中間件,且所有節(jié)點(diǎn)均等。通過(guò)數(shù)據(jù)庫(kù)的 updatereturning,從而實(shí)現(xiàn)節(jié)點(diǎn)之間任務(wù)的互斥
有一批氣象觀測(cè)站,現(xiàn)需要獲取這些站點(diǎn)的觀測(cè)數(shù)據(jù),并存儲(chǔ)到 Hive 中。但是氣象局只提供了 api 查詢,每次只能查詢單個(gè)觀測(cè)點(diǎn)。那么如果能夠方便快速地獲取到所有的觀測(cè)點(diǎn)的數(shù)據(jù)? A. 通過(guò) shell 或 python 等調(diào)用 api,結(jié)果先暫存本地,最后將本地文件上傳到 Hive 中。 B. 通過(guò) datax 的 httpReader 和 hdfsWriter 插件,從而獲取所需的數(shù)據(jù)。 C. 比較理想的回答,是在計(jì)算引擎的 UDF 中調(diào)用查詢 api,執(zhí)行UDF 的查詢結(jié)果存儲(chǔ)到對(duì)應(yīng)的表中。一方面,不需要同步任務(wù)的導(dǎo)出導(dǎo)入;另一方面,計(jì)算引擎的分布式框架天生提供了分布式、容錯(cuò)、并發(fā)等特性。
給定一個(gè)鏈表,刪除鏈表的倒數(shù)第 N 個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。給定一個(gè)鏈表: 1->2->3->4->5, 和 n = 2. 當(dāng)刪除了倒數(shù)第二個(gè)節(jié)點(diǎn)后,鏈表變?yōu)?1->2->3->5. 說(shuō)明:給定的 n 保證是有效的。要求:只允許對(duì)鏈表進(jìn)行一次遍歷。
參考答案
我們可以使用兩個(gè)指針而不是一個(gè)指針。第一個(gè)指針從列表的開(kāi)頭向前移動(dòng) n+1n+1 步,而第二個(gè)指針將從列表的開(kāi)頭出發(fā)?,F(xiàn)在,這兩個(gè)指針被 nn 個(gè)結(jié)點(diǎn)分開(kāi)。我們通過(guò)同時(shí)移動(dòng)兩個(gè)指針向前來(lái)保持這個(gè)恒定的間隔,直到第一個(gè)指針到達(dá)最后一個(gè)結(jié)點(diǎn)。此時(shí)第二個(gè)指針將指向從最后一個(gè)結(jié)點(diǎn)數(shù)起的第 nn 個(gè)結(jié)點(diǎn)。我們重新鏈接第二個(gè)指針?biāo)玫慕Y(jié)點(diǎn)的 next 指針指向該結(jié)點(diǎn)的下下個(gè)結(jié)點(diǎn)。
代碼示例 :
public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy = new ListNode(0); dummy.next = head; ListNode first = dummy; ListNode second = dummy; // Advances first pointer so that the gap between first and second is n nodes apart for (int i = 1; i <= n + 1; i++) { first = first.next; } // Move first to the end, maintaining the gap while (first != null) { first = first.next; second = second.next; } second.next = second.next.next; return dummy.next; }
復(fù)雜度分析:
時(shí)間復(fù)雜度:O(L),該算法對(duì)含有 L 個(gè)結(jié)點(diǎn)的列表進(jìn)行了一次遍歷。因此時(shí)間復(fù)雜度為 O(L)??臻g復(fù)雜度:O(1),我們只用了常量級(jí)的額外空間。
假如給你一個(gè)新產(chǎn)品,你將從哪些方面來(lái)保障它的質(zhì)量?可以從代碼開(kāi)發(fā)、測(cè)試保障、線上質(zhì)量三個(gè)方面來(lái)保障。在代碼開(kāi)發(fā)階段,有單元測(cè)試、代碼Review、靜態(tài)代碼掃描等;測(cè)試保障階段,有功能測(cè)試、性能測(cè)試、高可用測(cè)試、穩(wěn)定性測(cè)試、兼容性測(cè)試等;在線上質(zhì)量方面,有灰度發(fā)布、緊急回滾、故障演練、線上監(jiān)控和巡檢等。
請(qǐng)?jiān)u估一下程序的執(zhí)行結(jié)果?
public class SynchronousQueueQuiz { public static void main(String[] args) throws Exception { BlockingQueue<Integer> queue = new SynchronousQueue<>(); System. out .print(queue.offer(1) + " "); System. out .print(queue.offer(2) + " "); System. out .print(queue.offer(3) + " "); System. out .print(queue.take() + " "); System. out .println(queue.size()); } } A. true true true 1 3 B. true true true (阻塞) C. false false false null 0 D. false false false (阻塞)
參考答案 D
總結(jié)
以上所述是小編給大家介紹的2020年最新阿里面試題整理附答案,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
- 這篇文章主要介紹了2020最新版MyBatis高頻面試題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-02-25
- 這篇文章主要介紹了JVM面試題小結(jié)(2020最新版),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-02-21
- 這篇文章主要介紹了2020Java面試題最新(五鎖機(jī)制篇),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-02-12
- 這篇文章主要介紹了2020年12道高頻JavaScript手寫面試題及答案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編2020-01-06
- 這篇文章主要介紹了2020年JVM高頻率面試題整理,真是小編下了血本給大家整理出來(lái)的,值得大家收藏,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-09