2019最新 BAT、TMD等公司技術面試題及其答案

視學演算法發表於2020-04-06

點選上方“視學演算法”,選擇“星標”公眾號

重磅乾貨,第一時間送達

640?wx_fmt=jpeg

轉載自公眾號:專知

【導讀】各大廠商的招聘季已經接近尾聲,各種各樣的技術面試題也浮出了水面。Github的0Vice大神聯合眾多貢獻者,總結了2019年的BAT(百度、阿里、騰訊),TMD(頭條、美團、滴滴)等眾多網際網路科技公司的面試題目,並附上答案,分享在Github的interview_internal_reference庫中,大家走過路過不要錯過。

庫名: 

interview_internal_reference

地址: 

https://github.com/0voice/interview_internal_reference

作者:

0voice

【目錄】

  • 阿里篇

  • 華為篇

  • 百度篇

  • 騰訊篇

  • 美團篇

  • 頭條篇

  • 滴滴篇

  • 京東篇

  • MySQL篇

  • Redis篇

  • MongoDB篇

  • Zookeeper篇

  • Nginx篇

  • 演算法篇

  • 記憶體篇

  • cpu篇

  • 磁碟篇

  • 網路通訊篇

  • 安全篇

  • 併發篇

【阿里篇】

1.1.1 如何實現一個高效的單向連結串列逆序輸出?
1.1.2 已知sqrt(2)約等於1.414,要求不用數學庫,求sqrt(2)精確到小數點後10位
1.1.3 給定一個二叉搜尋樹(BST),找到樹中第 K 小的節點
1.1.4 LRU快取機制
1.1.5 關於epoll和select的區別,以下哪些說法是正確的
1.1.6 從innodb的索引結構分析,為什麼索引的 key 長度不能太長
1.1.7 MySQL的資料如何恢復到任意時間點?
1.1.8 NFS 和 SMB 是最常見的兩種 NAS(Network Attached Storage)協議,當把一個檔案系統同時通過 NFS 和 SMB 協議共享給多個主機訪問時,以下哪些說法是錯誤的
1.1.9 輸入 ping IP 後敲回車,發包前會發生什麼?
1.2.0 請解釋下為什麼鹿晗釋出戀情的時候,微博系統會崩潰,如何解決?
1.2.1 現有一批郵件需要傳送給訂閱顧客,且有一個叢集(叢集的節點數不定,會動態擴容縮容)來負責具體的郵件傳送任務,如何讓系統儘快地完成傳送?
1.2.2 有一批氣象觀測站,現需要獲取這些站點的觀測資料,並儲存到 Hive 中。但是氣象局只提供了 api 查詢,每次只能查詢單個觀測點。那麼如果能夠方便快速地獲取到所有的觀測點的資料?
1.2.3 如何實現兩金額資料相加(最多小數點兩位)
1.2.4 關於平行計算的一些基礎開放問題
1.2.5 請計算XILINX公司VU9P晶片的算力相當於多少TOPS,給出計算過程與公式
1.2.6 一顆現代處理器,每秒大概可以執行多少條簡單的MOV指令,有哪些主要的影響因素
1.2.7 請分析 MaxCompute 產品與分散式技術的關係、當前大資料計算平臺類產品的市場現狀和發展趨勢
1.2.8 對大資料平臺中的後設資料管理是怎麼理解的,後設資料收集管理體系是怎麼樣的,會對大資料應用有什麼樣的影響
1.2.9 你理解常見如阿里,和友商大資料平臺的技術體系差異以及發展趨勢和技術瓶頸,在儲存和計算兩個方面進行概述
1.3.0 在雲端計算大資料處理場景中,每天執行著成千上萬的任務,每個任務都要進行 IO 讀寫。儲存系統為了更好的服務,經常會保證高優先順序的任務優先執行。當多個作業或使用者訪問儲存系統時,如何保證優先順序和公平性
1.3.1 最大頻率棧
1.3.2 給定一個連結串列,刪除連結串列的倒數第N個節點,並且返回連結串列的頭結點
1.3.3 如果讓你設計一個通用的、支援各種資料庫秒級備份和恢復的系統,你會如何設計
1.3.4 如果讓你來設計一個支援資料庫、NOSQL 和大資料之間資料實時流動的資料流及處理的系統,你會考慮哪些問題?如何設計?
1.3.5 給定一個整數陣列和一個整數,返回兩個陣列的索引,這兩個索引指向的數字的加和等於指定的整數。需要最優的演算法,分析演算法的空間和時間複雜度
1.3.6 假如給你一個新產品,你將從哪些方面來保障它的質量?
1.3.7 請評估一下程式的執行結果?

【華為篇】

2.1.0 static有什麼用途?(請至少說明兩種)
2.1.1 引用與指標有什麼區別?
2.1.2 描述實時系統的基本特性
2.1.3 全域性變數和區域性變數在記憶體中是否有區別?如果有,是什麼區別?
2.1.4 什麼是平衡二叉樹?
2.1.5 堆疊溢位一般是由什麼原因導致的?
2.1.6 什麼函式不能宣告為虛擬函式?
2.1.7 氣泡排序演算法的時間複雜度是什麼?
2.1.8 寫出float x 與“零值”比較的if語句
2.1.9 Internet採用哪種網路協議?該協議的主要層次結構?
2.2.0 Internet實體地址和IP地址轉換採用什麼協議?
2.2.1 IP地址的編碼分為哪倆部分?
2.2.2 使用者輸入M,N值,從1至N開始順序迴圈數數,每數到M輸出該數值,直至全部輸出。寫出C程式。
2.2.3 不能做switch()的引數型別是
2.2.4 int A[nSize],其中隱藏著若干0,其餘非0整數,寫一個函式int Func(int* A, int nSize),使A把0移至後面,非0整數移至陣列前面並保持有序,返回值為原資料中第一個元素為0的下標。
2.2.5 寫一個程式, 要求功能:求出用1,2,5這三個數不同個陣列合的和為100的組合個數
2.2.6 實現一個函式,把一個字串中的字元從小寫轉為大寫
2.2.7 隨機輸入一個數,判斷它是不是對稱數(迴文數)(如3,121,12321,45254)。不能用字串庫函式
2.2.8 求2~2000的所有素數.有足夠的記憶體,要求儘量快
2.2.9 A,B,C,D四個程式,A向buf裡面寫資料,B,C,D向buf裡面讀資料,當A寫完,且B,C,D都讀一次後,A才能再寫。用P,V操作實現。
2.3.0 將單向連結串列reverse,如ABCD變成DCBA,只能搜尋連結串列一次。
2.3.1 將二叉樹的兩個孩子換位置,即左變右,右變左。不能用遞規。
2.3.2 以下屬於物理層的裝置是?
2.3.3 在乙太網中,是根據()地址來區分不同的裝置的?
2.3.4 以下為傳輸層協議的是?
2.3.5 以下對MAC地址描述正確的是?
2.3.6 以下屬於資料鏈路層功能的是?
2.3.7 IEEE802.3u標準是指?
2.3.8 如果要將兩計算機通過雙絞線直接連線,正確的線序是?
2.3.9 在V.35和V.24規程中,控制訊號RTS表示?
2.4.0 路由器作為網路互連裝置,必須具備以下哪些特點?
2.4.1 路由器的作用有?
2.4.2 呼叫上一條歷史命令的快捷鍵是?
2.4.3 交換機工作在OSI七層的哪一層?
2.4.4 以下對CSMA/CD描述正確的是?
2.4.5 以下對STORE ANDFORWARD描述正確的是?
2.4.6 以下對交換機工作方式描述正確的是?
2.4.7 VLAN的主要作用有?
2.4.8 在交換機中使用者許可權分為幾個級別?
2.4.9 在路由器的配置過程中查詢以S開頭所有命令的方法是?
2.5.0 第一次配置路由器時可以使用的方法為?
2.5.1 在何種狀態下可以為路由器改名?
2.5.2 某公司申請到一個C類IP地址,但要連線6個的子公司,最大的一個子公司有 26臺計算機,每個子公司在一個網段中,則子網掩碼應設為?
2.5.3 與10.110.12.29mask 255.255.255.224屬於同一網段的主機IP地址是?
2.5.4 ARP協議的作用是?
2.5.5 當路由器接收的IP報文的TTL值等於1時,採取的策略是?
2.5.6 在NetWare 網路中,客戶需要訪問某個型別的伺服器時,首先要傳送一個 ()廣播報文來尋找伺服器?
2.5.7 IPX地址網路地址有( )個位元組?
2.5.8 對於幀中繼描述正確的是?
2.5.9 對於INVERSE ARP的描述正確的是?

【百度篇】

3.1.0 在函式內定義一個字元陣列,用gets函式輸入字串的時候,如果輸入越界,為什麼程式會崩潰?
3.1.1 C++中引用與指標的區別
3.1.2 C/C++程式的記憶體分割槽
3.1.3 快速排序的思想、時間複雜度、實現以及優化方法
3.1.4 IO模型——IO多路複用機制?
3.1.5 常用的Linux命令
3.1.6 C中變數的儲存型別有哪些?
3.1.7 動態規劃的本質
3.1.8 實踐中如何優化MySQL?
3.1.9 什麼情況下設定了索引但無法使用?
3.2.0 SQL語句的優化
3.2.1 資料庫索引的底層實現原理和優化
3.2.2 HTTP和HTTPS的主要區別?
3.2.3 如何設計一個高併發的系統?
3.2.4 兩條相交的單向連結串列,如何求他們的第一個公共節點?
3.2.5 求單向區域性迴圈連結串列的環入口?
3.2.6 IP地址如何在資料庫中儲存?
3.2.7 new/delete和malloc/free的底層實現?
3.2.8 overload、override、overwrite的介紹?
3.2.9 小端/大端機器?
3.3.0 守護程式
3.3.1 多執行緒的優缺點
3.3.2 長連線與短連線
3.3.3 二分圖應用於最佳匹配問題(遊客對房間的滿意度之和最大問題)
3.3.4 class與struct的區別?
3.3.5 虛擬函式和純虛擬函式
3.3.6 menset()函式
3.3.7 實現一個函式,對一個正整數n,算得到1需要的最少操作次數。操作規則為:如果n為偶數,將其除以2;如果n為奇數,可以加1或減1;一直處理下去。
3.3.8 找到滿足條件的陣列
3.3.9 一個大的含有50M個URL的記錄,一個小的含有500個URL的記錄,找出兩個記錄裡相同的URL
3.4.0 海量日誌資料,提取出某日訪問百度次數最多的那個IP
3.4.1 有10個檔案,每個檔案1G,每個檔案的每一行都存放的是使用者的query,每個檔案的query都可能重複。如何按照query的頻度排序?
3.4.2 螞蟻爬杆問題
3.4.3 當在瀏覽器中輸入一個url後回車,後臺發生了什麼?比如輸入url後,你看到了百度的首頁,那麼這一切是如何發生的呢?
3.4.4 判斷兩棵樹是否相等,請實現兩棵樹是否相等的比較,相等返回1,否則返回其他值,並說明演算法複雜度
3.4.5 三個警察和三個囚徒的過河問題
3.4.6 從300萬字串中找到最熱門的10條
3.4.7 如何找出字典中的兄弟單詞。給定一個單詞a,如果通過交換單詞中字母的順序可以得到另外的單詞b,那麼定義b是a的兄弟單詞。現在給定一個字典,使用者輸入一個單詞,如何根據字典找出這個單詞有多少個兄弟單詞?
3.4.8 找出陣列中出現次數超過一半的數,現在有一個陣列,已知一個數出現的次數超過了一半,請用O(n)的複雜度的演算法找出這個數。
3.4.9 找出被修改過的數字
3.5.0 設計DNS伺服器中cache的資料結構。要求設計一個DNS的Cache結構,要求能夠滿足每秒5000以上的查詢,滿足IP資料的快速插入,查詢的速度要快。(題目還給出了一系列的資料,比如:站點數總共為5000萬,IP地址有1000萬,等等)
3.5.1 找出給定字串對應的序號
3.5.2 找出第k大的數字所在的位置。寫一段程式,找出陣列中第k大小的數,輸出數所在的位置。例如{2,4,3,4,7}中,第一大的數是7,位置在4。第二大、第三大的數都是4,位置在1、3隨便輸出哪一個均可。
3.5.3 給40億個不重複的unsigned int的整數,沒排過序的,然後再給幾個數,如何快速判斷這幾個數是否在那40億個數當中?
3.5.4 在一個檔案中有10G個整數,亂序排列,要求找出中位數。記憶體限制為2G。
3.5.5 時分秒針在一天之類重合多少次?(24小時)
3.5.6 將多個集合合併成沒有交集的集合。
3.5.7 平面內有11個點,由它們連成48條不同的直線,由這些點可連成多少個三角形?

【騰訊篇】

Java基礎

4.1.0 JAVA中的幾種基本資料型別是什麼,各自佔用多少位元組。
4.1.1 String類能被繼承嗎,為什麼。
4.1.2 String,Stringbuffer,StringBuilder的區別。
4.1.3 ArrayList和LinkedList有什麼區別。
4.1.4 講講類的例項化順序,比如父類靜態資料,建構函式,欄位,子類靜態資料,建構函式,欄位,當new的時候,他們的執行順序。
4.1.5 用過哪些Map類,都有什麼區別,HashMap是執行緒安全的嗎,併發下使用的Map是什麼,他們內部原理分別是什麼,比如儲存方式,hashcode,擴容,預設容量等。
4.1.6 JAVA8的ConcurrentHashMap為什麼放棄了分段鎖,有什麼問題嗎,如果你來設計,你如何設計。
4.1.7 有沒有有順序的Map實現類,如果有,他們是怎麼保證有序的。
4.1.8 抽象類和介面的區別,類可以繼承多個類麼,介面可以繼承多個介面麼,類可以實現多個介面麼。
4.1.9 繼承和聚合的區別在哪。
4.2.0 IO模型有哪些,講講你理解的nio ,他和bio,aio的區別是啥,談談reactor模型。
4.2.1 反射的原理,反射建立類例項的三種方式是什麼。
4.2.2 反射中,Class.forName和ClassLoader區別 。
4.2.3 描述動態代理的幾種實現方式,分別說出相應的優缺點。
4.2.4 動態代理與cglib實現的區別。
4.2.5 為什麼CGlib方式可以對介面實現代理。
4.2.6 final的用途。
4.2.7 寫出三種單例模式實現 。
4.2.8 如何在父類中為子類自動完成所有的hashcode和equals實現?這麼做有何優劣。
4.2.9 請結合OO設計理念,談談訪問修飾符public、private、protected、default在應用設計中的作用。
4.3.0 深拷貝和淺拷貝區別。
4.3.1 陣列和連結串列資料結構描述,各自的時間複雜度。
4.3.2 error和exception的區別,CheckedException,RuntimeException的區別。
4.3.3 請列出5個執行時異常。
4.3.4 在自己的程式碼中,如果建立一個java.lang.String類,這個類是否可以被類載入器載入?為什麼。
4.3.5 說一說你對java.lang.Object物件中hashCode和equals方法的理解。在什麼場景下需要重新實現這兩個方法。
4.3.6 在jdk1.5中,引入了泛型,泛型的存在是用來解決什麼問題。
4.3.7 這樣的a.hashcode() 有什麼用,與a.equals(b)有什麼關係。
4.3.8 有沒有可能2個不相等的物件有相同的hashcode。
4.3.9 Java中的HashSet內部是如何工作的。
4.4.0 什麼是序列化,怎麼序列化,為什麼序列化,反序列化會遇到什麼問題,如何解決。
4.4.1 java8的新特性。

JVM

4.4.2 什麼情況下會發生棧記憶體溢位。
4.4.3 JVM的記憶體結構,Eden和Survivor比例。
4.4.4 JVM記憶體為什麼要分成新生代,老年代,持久代。新生代中為什麼要分為Eden和Survivor。
4.4.5 JVM中一次完整的GC流程是怎樣的,物件如何晉升到老年代,說說你知道的幾種主要的JVM引數。
4.4.6 你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms和G1,包括原理,流程,優缺點。
4.4.7 垃圾回收演算法的實現原理。
4.4.8 當出現了記憶體溢位,你怎麼排錯。
4.4.9 JVM記憶體模型的相關知識瞭解多少,比如重排序,記憶體屏障,happen-before,主記憶體,工作記憶體等。
4.5.0 簡單說說你瞭解的類載入器,可以打破雙親委派麼,怎麼打破。
4.5.1 講講JAVA的反射機制。
4.5.2 你們線上應用的JVM引數有哪些。
4.5.3 g1和cms區別,吞吐量優先和響應優先的垃圾收集器選擇。
4.5.4 怎麼打出執行緒棧資訊。

開源框架

4.5.5 簡單講講tomcat結構,以及其類載入器流程,執行緒模型等。
4.5.6 tomcat如何調優,涉及哪些引數 。
4.5.7 講講Spring載入流程。
4.5.8 Spring AOP的實現原理。
4.5.9 講講Spring事務的傳播屬性。
4.6.0 Spring如何管理事務的。
4.6.1 Spring怎麼配置事務(具體說出一些關鍵的xml 元素)。
4.6.2 說說你對Spring的理解,非單例注入的原理?它的生命週期?迴圈注入的原理,aop的實現原理,說說aop中的幾個術語,它們是怎麼相互工作的。
4.6.3 Springmvc 中DispatcherServlet初始化過程。
4.6.4 netty的執行緒模型,netty如何基於reactor模型上實現的。
4.6.5 為什麼選擇netty。
4.6.6 什麼是TCP粘包,拆包。解決方式是什麼。
4.6.7 netty的fashwheeltimer的用法,實現原理,是否出現過呼叫不夠準時,怎麼解決。
4.6.8 netty的心跳處理在弱網下怎麼辦。
4.6.9 netty的通訊協議是什麼樣的。
4.7.0 springmvc用到的註解,作用是什麼,原理。
4.7.1 springboot啟動機制。

作業系統

4.7.2 Linux系統下你關注過哪些核心引數,說說你知道的。
4.7.3 Linux下IO模型有幾種,各自的含義是什麼。
4.7.4 epoll和poll有什麼區別。
4.7.5 平時用到哪些Linux命令。
4.7.6 用一行命令檢視檔案的最後五行。
4.7.7 用一行命令輸出正在執行的java程式。
4.7.8 介紹下你理解的作業系統中執行緒切換過程。
4.7.9 程式和執行緒的區別。
4.8.0 top 命令之後有哪些內容,有什麼作用。
4.8.1 線上CPU爆高,請問你如何找到問題所在。


【美團篇】

5.1.0 java虛擬機器記憶體模型
5.1.1 記憶體溢位一般發生在哪個區?永久代會不會導致記憶體溢位?
5.1.2 動態載入類的框架了解哪些?
5.1.3 動態代理一般有哪幾種實現方式?動態代理的應用場景有哪些?
5.1.4 棧會不會溢位?棧溢位一般拋什麼異常?jvm在哪裡設定棧的大小?設定的引數是什麼?
5.1.5 用過哪些命令檢視jvm的狀態、堆疊資訊?
5.1.6 jvm的垃圾回收機制?
5.1.7 java類載入機制?如何實現自定義類載入器?findClass與loadClass的區別?
5.1.8 String、StringBuffer、StringBuilder的區別?對應的使用場景?
5.1.9 如何實現不可變的類?
5.2.0 淺複製和深複製?怎樣實現深複製?
5.2.1 HashMap、HashTable、ConcurrentHashMap的區別?
5.2.2 CAS是一種什麼樣的同步機制?
5.2.3 NIO的原理,包括哪幾個元件?
5.2.4 簡單介紹一下java的反射機制?反射在哪些地方有應用場景?
5.2.5 spring載入bean的流程?
5.2.6 java執行緒池?執行緒池建構函式的幾個引數含義?keepAliveTime解釋一下?
5.2.7 一個介面,要去呼叫另外5個介面,每一個介面都會返回資料給這個呼叫介面,呼叫介面要對資料進行合併並返回給上層。這樣一種場景可能用到併發包下的哪些類?你會怎麼去實現這樣的業務場景?
5.2.8 CountDownLatch和CyclicBarrier的區別?
5.2.9 執行緒加鎖有哪些方式?synchronized和lock的區別?
5.3.0 volatile關鍵字的作用?為什麼使用AtomicLong而不使用Long?AtomicLong的底層是怎麼實現的?
5.3.1 mysql的儲存引擎有哪幾種?
5.3.2 sql優化有哪些著手點?組合索引的最左字首原則的含義?
5.3.3 springmvc處理請求的流程?
5.3.4 spring的事務怎麼使用?事務回滾?自定義異常?
5.3.5 髒讀?幻讀?
5.3.6 tcp四次揮手的過程?TIME_WAIT為什麼至少設定兩倍的MSL時間?
5.3.7 get和post請求的區別?
5.3.8 cookie和session的請求?
5.3.9 瞭解哪些開源的中介軟體?快取?訊息?分散式框架?
5.4.0 用到過哪些設計模式?單例模式的實現?
5.4.1 資料庫的事務實現原理、操作過程、如何做到事物之間的獨立性等問題
5.4.2 資料庫的髒讀,幻讀,不可重複讀出現的原因原理,解決辦法
5.4.3 資料庫的隔離級別、MVCC
5.4.4 樂觀鎖、悲觀鎖、互斥鎖、讀寫鎖的原理實現與區別
5.4.5 執行緒的生命週期
5.4.6 一致性hash演算法原理與應用
5.4.7 CAP原則
5.4.8 CAS操作
5.4.9 分散式raft演算法


【頭條篇】

6.1.0 5個人去一個海島尋寶,最後一共找到了100枚金幣。他們約定了一個分配方案。
6.1.1 給你一個有序整數陣列,陣列中的數可以是正數、負數、零,請實現一個函式,這個函式返回一個整數:返回這個陣列所有數的平方值中有多少種不同的取值。
6.1.2 一個環有10個節點,編號0-9。從0點出發,走N步又能回到0點,共有多少種走法?
6.1.3 一個亂序陣列,求第K大的數。排序方式使用字典序。
6.1.4 一棵二叉樹,求最大通路長度。(即最大左右子樹高度之和)
6.1.5 程式和執行緒的區別,使用執行緒真的能節省時間?
6.1.6 go協程的排程方式,使用協程真的能節省時間?
6.1.7 水平觸發邊沿觸發的區別?在邊沿觸發下,一個socket有500的資料,已讀取200然後不再處理,是不是剩下的300就永遠無法讀取?
6.1.8 有函式如下,輸入1,返回什麼?
6.1.9 設計http協議,A端傳送 AAAA,至少讓B端知道AAAA已傳送完成。
6.2.0 流量總入口為api_gateway,api_gateway掛了會導致全部掛掛,用什麼機制增大可用性?
6.2.1 mysql為什麼要用b+樹,不用平衡二叉樹做索引結構?
6.2.2 建立資料庫索引應該怎麼考慮?
6.2.3 使用int 做primary key和使用string 有什麼優劣?
6.2.4 資料庫分表的方法?
6.2.5 表結構,訂單紀錄如下,寫一個語句,求賣的最好的 top 10 product_id。
6.2.6 微服務,A服務請求B服務B1介面,B1介面又請求A服務A2介面。會不會有問題?
6.2.7 不使用高階工具,只使用Linux自帶的工具,你會如何debug?
6.2.8 如何預估一個mysql語句的效能?
6.2.9 go函式中,返回值未命名,發生了panic,但是在函式內recover了。函式返回什麼值?
6.3.0 socket中,在tcp協議層面,資料分為10個報文發放。1-7次很順利,第8次丟失。這次通訊一定失敗嗎?如果第8次資料會重發,那在接收端是不是:先讀取到1-7次的資料,然後讀取到8-10次的資料?還是9-10次的資料會先到達?
6.3.1 free -h,buffers 和cached有什麼不同
6.3.2 後臺程式有什麼特點,如果要你設計一個程式是後臺程式,你會考慮什麼
6.3.3 殭屍程式是什麼,如果產生一個殭屍程式,如何查詢殭屍程式
6.3.4 孤兒程式是什麼
6.3.5 一個程式有20個執行緒,在某個執行緒中呼叫fork,新的程式會有20個執行緒嗎?
6.3.6 tcp/ip 流量控制和擁塞控制
6.3.7 301/302有什麼區別?應用上有什麼異同。
6.3.8 50X相關錯誤碼的內涵是什麼?
6.3.9 close wait和time wait是什麼?如何排查?有什麼意義?
6.4.0 http req和resp的中資料有哪些
6.4.1 什麼是連線的半開啟,半關閉狀態
6.4.2 假如一個業務依賴單點redis,此redis故障將導致業務不可用,如何改進
6.4.3 redis sharding有哪些做法
6.4.4 當大量資料要求用redis儲存,單機單點難以滿足需要,設計(換尋找)一個負載均衡的方案
6.4.5 當redis 採用hash做sharding,現在有8個節點,負載方案是 pos = hash(key) % 8,然後儲存在pos節點上。這樣做有什麼好處壞處?當8個節點要擴充到10個節點,應該怎麼辦?有什麼更方便擴充的方案嗎?(一致性hash, presharding)
6.4.6 如何保證redis和資料庫資料的一致性。比如使用者名稱既儲存在資料庫,又儲存在redis做快取。有如下操作 update_db(username); update_redis(username)。但是執行update_db後故障,update_redis沒有執行。有什麼簡單辦法解決這個問題。


【滴滴篇】

7.1.0 B+樹、B-樹的區別?
7.1.1 資料庫隔離級別,幻讀和不可重複讀的區別?
7.1.2 有hell, well, hello, world等字串組,現在問能否拼接成helloworld,程式碼實現。
7.1.3 快排演算法實現
7.1.4 執行緒安全的單例模式
7.1.5 25匹馬賽跑,有一個賽場,只有五個賽道,沒有計時器,只能通過目測來記錄快慢,求出第三3快的馬要多少場比賽?
7.1.6 kmp演算法next陣列的求解思路
7.1.7 陣列中有三個數字出現超過3/4,求這三個數字?
7.1.8 1到n+2個陣列中缺了兩個數,如何用O(n)時間,O(1)空間找到這兩個數字。
7.1.9 一條線段長為1,隨機選兩個點,將改線段分為三段,三段能成三角形的概率是多少?
7.2.0 有一個教授,他三個學生,腦袋背後分別各寫了一個數字,其中一個數字是另外兩個數字的和,經過幾輪後,有一個學生猜出了自己的數字請問是什麼原因?
7.2.1 B+樹做索引時,B+樹通常高度為多少層?要參考哪些條件?


【京東篇】

8.1.0 一般sql注入怎麼發現觸點的,從原始碼闡述sqlmap如何測試注入點的。
8.1.1 masscan掃描埠時靠什麼檢測,為什麼這麼快? 請詳述.
8.1.2 你寫過哪些小工具,你為你使用過的工具做過什麼修改.
8.1.3 如何提高採用python編寫的掃描速度,談談對GIL鎖的瞭解.
8.1.4 你覺得你發現的那個漏洞影響比較大.
8.1.5 常見的web漏洞有哪些.
8.1.6 有沒有玩過硬體安全,研究程度如何.
8.1.7 反爬蟲,如果是你如何進行反爬蟲,如何繞過反爬措施。使用無頭瀏覽器被檢測到了,如何繞過
8.1.8 nmap掃描如何進行掃描。發包與協議,握手和不握手,哪些協議握手,哪些不握手. 如何不直接接觸目標伺服器探測對方埠是否開放
8.1.9 有沒有自己編寫過yara掃描模組,如果要解決掃描{k1:v1, k2:v2, k3:v3} ,保證同時在k1中的v1裡出現特定值,k2中出現v2特定值,以及k3,v3。怎麼實現
8.2.0 xss什麼原理,如何自己實現一個beef類似的xss平臺. 既然這樣實現,面臨的跨域如何解決?
8.2.1 ip 頻率限制, ip信譽度模型?
8.2.2 SCTP協議是什麼?如何使用 SCTP 優化網路?

【MySQL篇】

9.1.0 主鍵 超鍵 候選鍵 外來鍵
9.1.1 資料庫事務的四個特性及含義
9.1.2 檢視的作用,檢視可以更改麼?
9.1.3 drop,delete與truncate的區別
9.1.4 索引的工作原理及其種類
9.1.5 連線的種類
9.1.6 資料庫正規化
9.1.7 資料庫優化的思路
9.1.8 儲存過程與觸發器的區別


【Redis篇】

10.1.0 使用Redis有哪些好處?
10.1.1 redis相比memcached有哪些優勢?
10.1.2 redis常見效能問題和解決方案
10.1.3 MySQL裡有2000w資料,redis中只存20w的資料,如何保證redis中的資料都是熱點資料
10.1.4 Memcache與Redis的區別都有哪些?
10.1.5 Redis 常見的效能問題都有哪些?如何解決?
10.1.6 redis 最適合的場景
10.1.7 Redis的同步機制瞭解麼?
10.1.8 是否使用過Redis叢集,叢集的原理是什麼?
10.1.9 redis叢集如何保證一致性?

【MongoDB篇】

11.1.0 什麼是MongoDB?
11.1.1 MongoDB是由哪種語言寫的?
11.1.2 MongoDB的優勢有哪些?
11.1.3 什麼是資料庫?
11.1.4 什麼是集合?
11.1.5 什麼是文件?
11.1.6 MongoDB和關係型資料庫術語對比圖
11.1.7 什麼是“mongod”?
11.1.8 “mongod”引數有什麼?
11.1.9 什麼是“mongo”?
11.2.0 MongoDB哪個命令可以切換資料庫?
11.2.1 什麼是非關係型資料庫?
11.2.2 非關係型資料庫有哪些型別?
11.2.3 為什麼用MOngoDB?
11.2.4 在哪些場景使用MongoDB?
11.2.5 MongoDB中的名稱空間是什麼意思?
11.2.6 哪些語言支援MongoDB?
11.2.7 在MongoDB中如何建立一個新的資料庫?
11.2.8 在MongoDB中如何檢視資料庫列表?
11.2.9 MongoDB中的分片是什麼意思?
11.3.0 如何檢視使用MongoDB的連線?
11.3.1 什麼是複製?
11.3.2 在MongoDB中如何在集合中插入一個文件?
11.3.3 在MongoDB中如何除去一個資料庫?
11.3.4 在MongoDB中如何建立一個集合?
11.3.5 在MongoDB中如何檢視一個已經建立的集合?
11.3.6 在MongoDB中如何刪除一個集合?
11.3.7 為什麼要在MongoDB中使用分析器?
11.3.8 MongoDB支援主鍵外來鍵關係嗎?
11.3.9 MongoDB支援哪些資料型別?
11.4.0 為什麼要在MongoDB中用"Code"資料型別?
11.4.1 為什麼要在MongoDB中用"Regular Expression"資料型別?
11.4.2 為什麼在MongoDB中使用"Object ID"資料型別?
11.4.3 如何在集合中插入一個文件?
11.4.4 “ObjectID”有哪些部分組成?
11.4.5 在MongoDb中什麼是索引?
11.4.6 如何新增索引?
11.4.7 MongoDB有哪些可替代產品?
11.4.8 如何查詢集合中的文件?
11.4.9 用什麼方法可以格式化輸出結果?
11.5.0 如何使用"AND"或"OR"條件迴圈查詢集合中的文件?
11.5.1 在MongoDB中如何更新資料?
11.5.2 如何刪除文件?
11.5.3 在MongoDB中如何排序?
11.5.4 什麼是聚合?
11.5.5 在MongoDB中什麼是副本集?
11.5.6 Mongodb儲存特性與內部原理?


【Zookeeper篇】

12.1.0 zookeeper是什麼?
12.1.1 zookeeper提供了什麼?
12.1.2 zookeeper檔案系統
12.1.3 zookeeper的四種型別的znode
12.1.4 zookeeper通知機制
12.1.5 zookeeper有哪些應用場景?
12.1.6 zk的命名服務
12.1.7 zk的配置管理服務
12.1.8 zk的叢集管理
12.1.9 zk的分散式鎖
12.2.0 zk佇列管理
12.2.1 zk資料複製
12.2.2 zk的工作原理
12.2.3 zk是如何保證事物的順序一致性
12.2.4 zk叢集下server工作狀態
12.2.5 zk是如何選舉Leader的?
12.2.6 zk同步流程
12.2.7 分散式通知和協調
12.2.8 zk的session機制


【Nginx篇】

13.1.0 請解釋一下什麼是Nginx?
13.1.1 請列舉Nginx的一些特性?
13.1.2 請列舉Nginx和Apache 之間的不同點?
13.1.3 請解釋Nginx如何處理HTTP請求。
13.1.4 在Nginx中,如何使用未定義的伺服器名稱來阻止處理請求?
13.1.5 使用“反向代理伺服器”的優點是什麼?
13.1.6 請列舉Nginx伺服器的最佳用途。
13.1.7 請解釋Nginx伺服器上的Master和Worker程式分別是什麼?
13.1.8 請解釋你如何通過不同於80的埠開啟Nginx?
13.1.9 請解釋是否有可能將Nginx的錯誤替換為502錯誤、503?
13.2.0 在Nginx中,解釋如何在URL中保留雙斜線?
13.2.1 請解釋ngx_http_upstream_module的作用是什麼?
13.2.2 請解釋什麼是C10K問題,後來是怎麼解決的?
13.2.3 請陳述stub_status和sub_filter指令的作用是什麼?
13.2.4 解釋Nginx是否支援將請求壓縮到上游?
13.2.5 解釋如何在Nginx中獲得當前的時間?
13.2.6 用Nginx伺服器解釋-s的目的是什麼?
13.2.7 解釋如何在Nginx伺服器上新增模組?
13.2.8 nginx中多個work程式是如何監聽同一個埠的?如何處理客戶連線的驚群問題?
13.2.9 nginx程式的熱更新是如何做的?

更多內容,請到該Github庫中檢視。


- END -
如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。微信搜尋「perfect_iscas」,關注後回覆「進群」或者掃描下方二維碼即可進入無廣告技術交流群。
掃描二維碼進群↓

640?wx_fmt=jpeg

640

640?wx_fmt=gif

在看 640?wx_fmt=jpeg

相關文章