2020阿里面试题整理(含答案)
關(guān)于epoll和select的區(qū)別,哪些說法是正確的?
【A】epoll和select都是I/O多路復(fù)用的技術(shù),都可以實現(xiàn)同時監(jiān)聽多個I/O事件的狀態(tài)。
【B】epoll相比select效率更高,主要是基于其操作系統(tǒng)支持的I/O事件通知機制,而select是基于輪詢機制。
【C】epoll支持水平觸發(fā)和邊沿觸發(fā)兩種模式。
【D】select能并行支持I/O比較小,且無法修改。
答案:ABC
從innodb的索引結(jié)構(gòu)分析,為什么索引的key長度不能太長?
key 太長會導(dǎo)致一個頁當中能夠存放的 key 的數(shù)目變少,間接導(dǎo)致索引樹的頁數(shù)目變多,索引層次增加,從而影響整體查詢變更的效率。
MySQL的數(shù)據(jù)如何恢復(fù)到任意時間點?
恢復(fù)到任意時間點以定時的做全量備份,以及備份增量的 binlog 日志為前提。恢復(fù)到任意時間點首先將全量備份恢復(fù)之后,再此基礎(chǔ)上回放增加的 binlog 直至指定的時間點。
輸入 ping IP 后敲回車,發(fā)包前會發(fā)生什么?
首先根據(jù)目標IP和路由表決定走哪個網(wǎng)卡,再根據(jù)網(wǎng)卡的子網(wǎng)掩碼地址判斷目的IP是否在子網(wǎng)內(nèi)。如果不在則會通過ARP緩存查詢IP的網(wǎng)卡地址,不存在的話會通過廣播詢問目的IP的mac地址,得到后就開始發(fā)包了,同時mac地址也會被ARP緩存起來。
請解釋下為什么鹿晗發(fā)布戀情的時候,微博系統(tǒng)會崩潰,如何解決?
《 參考思路 》
A. 獲取微博通過 pull 方式還是 push 方式
B. 發(fā)布微博的頻率要遠小于閱讀微博
C. 流量明星的發(fā)微博,和普通博主要區(qū)分對待,比如在 sharding
的時候,也要考慮這個因素
現(xiàn)有一批郵件需要發(fā)送給訂閱顧客,且有一個集群(集群的節(jié)點數(shù)不定,會動態(tài)擴容縮容)來負責(zé)具體的郵件發(fā)送任務(wù),如何讓系統(tǒng)盡快地完成發(fā)送?請詳述技術(shù)方案!
A. 借助消息中間件,通過發(fā)布者訂閱者模式來進行任務(wù)分配
B. master-slave 部署,由 master 來分配任務(wù)
C. 不借助任何中間件,且所有節(jié)點均等。通過數(shù)據(jù)庫的 updatereturning,從而實現(xiàn)節(jié)點之間任務(wù)的互斥
有一批氣象觀測站,現(xiàn)需要獲取這些站點的觀測數(shù)據(jù),并存儲到 Hive 中。但是氣象局只提供了 api 查詢,每次只能查詢單個觀測點。那么如果能夠方便快速地獲取到所有的觀測點的數(shù)據(jù)?
A. 通過 shell 或 python 等調(diào)用 api,結(jié)果先暫存本地,最后將本地文件上傳到 Hive 中。
B. 通過 datax 的 httpReader 和 hdfsWriter 插件,從而獲取所需的數(shù)據(jù)。
C. 比較理想的回答,是在計算引擎的 UDF 中調(diào)用查詢 api,執(zhí)行UDF 的查詢結(jié)果存儲到對應(yīng)的表中。一方面,不需要同步任務(wù)的導(dǎo)出導(dǎo)入;另一方面,計算引擎的分布式框架天生提供了分布式、容錯、并發(fā)等特性。
給定一個鏈表,刪除鏈表的倒數(shù)第 N 個節(jié)點,并且返回鏈表的頭結(jié)點。
給定一個鏈表: 1->2->3->4->5, 和 n = 2.
當刪除了倒數(shù)第二個節(jié)點后,鏈表變?yōu)?1->2->3->5.
說明:
給定的 n 保證是有效的。
要求:
只允許對鏈表進行一次遍歷。
參考答案
我們可以使用兩個指針而不是一個指針。第一個指針從列表的開頭向前移動 n+1n+1 步,而第二個指針將從列表的開頭出發(fā)。現(xiàn)在,這兩個指針被 nn 個結(jié)點分開。我們通過同時移動兩個指針向前來保持這個恒定的間隔,直到第一個指針到達最后一個結(jié)點。此時第二個指針將指向從最后一個結(jié)點數(shù)起的第 nn 個結(jié)點。我們重新鏈接第二個指針所引用的結(jié)點的 next 指針指向該結(jié)點的下下個結(jié)點。
代碼示例 :
復(fù)雜度分析:
時間復(fù)雜度:O(L),該算法對含有 L 個結(jié)點的列表進行了一次
遍歷。因此時間復(fù)雜度為 O(L)。
空間復(fù)雜度:O(1),我們只用了常量級的額外空間。
假如給你一個新產(chǎn)品,你將從哪些方面來保障它的質(zhì)量?
可以從代碼開發(fā)、測試保障、線上質(zhì)量三個方面來保障。在代碼開發(fā)階段,有單元測試、代碼Review、靜態(tài)代碼掃描等;測試保障階段,有功能測試、性能測試、高可用測試、穩(wěn)定性測試、兼容性測試等;在線上質(zhì)量方面,有灰度發(fā)布、緊急回滾、故障演練、線上監(jiān)控和巡檢等。
請評估一下程序的執(zhí)行結(jié)果?
public class SynchronousQueueQuiz {public static void main(String[] args) throws Exception {BlockingQueue<Integer> queue = newSynchronousQueue<>();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阿里面试题整理(含答案)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM 调优实战--jvisualvm远
- 下一篇: 计算机网络的OSI七层模型