Java高級程序員——面試綜合練習五

Java基礎 

  • 面向對象的特徵:繼承、封裝和多態
  • final, finally, finalize 的區別
  • Exception、Error、運行時異常與一般異常有何異同
  • 請寫出5種常見到的runtime exception
  • int 和 Integer 有什麼區別,Integer的值緩存範圍
  • 包裝類,裝箱和拆箱
  • String、StringBuilder、StringBuffer
  • 重載和重寫的區別
  • 抽象類和接口有什麼區別
  • 說說反射的用途及實現
  • 說說自定義註解的場景及實現
  • HTTP請求的GET與POST方式的區別
  • Session與Cookie區別
  • 列出自己常用的JDK包
  • MVC設計思想
  • equals與==的區別
  • hashCode和equals方法的區別與聯繫
  • 什麼是Java序列化和反序列化,如何實現Java序列化?或者請解釋Serializable 接口的作用
  • Object類中常見的方法,爲什麼wait  notify會放在Object裏邊?
  • Java的平臺無關性如何體現出來的
  • JDK和JRE的區別
  • Java 8有哪些新特性

 

Java常見集合

  • List 和 Set 區別
  • Set和hashCode以及equals方法的聯繫
  • List 和 Map 區別
  • Arraylist 與 LinkedList 區別
  • ArrayList 與 Vector 區別
  • HashMap 和 Hashtable 的區別
  • HashSet 和 HashMap 區別
  • HashMap 和 ConcurrentHashMap 的區別
  • HashMap 的工作原理及代碼實現,什麼時候用到紅黑樹
  • 多線程情況下HashMap死循環的問題
  • HashMap出現Hash DOS攻擊的問題
  • ConcurrentHashMap 的工作原理及代碼實現,如何統計所有的元素個數
  • 手寫簡單的HashMap
  • 看過那些Java集合類的源碼

 

進程和線程

  • 線程和進程的概念、並行和併發的概念
  • 創建線程的方式及實現
  • 進程間通信的方式
  • 說說 CountDownLatch、CyclicBarrier 原理和區別
  • 說說 Semaphore 原理
  • 說說 Exchanger 原理
  • ThreadLocal 原理分析,ThreadLocal爲什麼會出現OOM,出現的深層次原理
  • 講講線程池的實現原理
  • 線程池的幾種實現方式
  • 線程的生命週期,狀態是如何轉移的
  • 可參考:《Java多線程編程核心技術

 

鎖機制

  • 說說線程安全問題,什麼是線程安全,如何保證線程安全
  • 重入鎖的概念,重入鎖爲什麼可以防止死鎖
  • 產生死鎖的四個條件(互斥、請求與保持、不剝奪、循環等待)
  • 如何檢查死鎖(通過jConsole檢查死鎖)
  • volatile 實現原理(禁止指令重排、刷新內存)
  • synchronized 實現原理(對象監視器)
  • synchronized 與 lock 的區別
  • AQS同步隊列
  • CAS無鎖的概念、樂觀鎖和悲觀鎖
  • 常見的原子操作類
  • 什麼是ABA問題,出現ABA問題JDK是如何解決的
  • 樂觀鎖的業務場景及實現方式
  • Java 8並法包下常見的併發類
  • 偏向鎖、輕量級鎖、重量級鎖、自旋鎖的概念
  • 可參考:《Java多線程編程核心技術

 

網絡/IO基礎

  • BIO、NIO、AIO的概念
  • 什麼是長連接和短連接
  • Http1.0和2.0相比有什麼區別,可參考《Http 2.0
  • Https的基本概念
  • 三次握手和四次揮手、爲什麼揮手需要四次
  • 從遊覽器中輸入URL到頁面加載的發生了什麼?可參考《從輸入URL到頁面加載發生了什麼

 

 

Java相關

  • Arraylist與LinkedList默認空間是多少;
  • Arraylist與LinkedList區別與各自的優勢List 和 Map 區別;
  • 談談HashMap,哈希表解決hash衝突的方法;
  • 爲什麼要重寫hashcode()和equals()以及他們之間的區別與關係;
  • Object的hashcode()是怎麼計算的?
  • 若hashcode方法永遠返回1或者一個常量會產生什麼結果?
  • Java Collections和Arrays的sort方法默認的排序方法是什麼;
  • 引用計數法與GC Root可達性分析法區別;
  • 淺拷貝和深拷貝的區別;
  • String s="abc"和String s=new String("abc")區別;
  • HashSet方法裏面的hashcode存在哪,如果重寫equals不重寫hashcode會怎麼樣?
  • 反射的作用與實現原理;
  • Java中的回調機制;
  • 模板方法模式;
  • 開閉原則說一下;
  • 發佈/訂閱使用場景;
  • KMP算法(一種改進的字符串匹配算法);
  • JMM裏邊的原子性、可見性、有序性是如何體現出來的,JMM中內存屏障是什麼意思,

 

多線程

  • AtomicInteger底層實現原理;
  • synchronized與ReentraLock哪個是公平鎖;
  • CAS機制會出現什麼問題;
  • 用過併發包下邊的哪些類;
  • 一個線程連着調用start兩次會出現什麼情況?
  • wait方法能不能被重寫,wait能不能被中斷;
  • 線程池的實現?四種線程池?重要參數及原理?任務拒接策略有哪幾種?
  • 線程狀態以及API怎麼操作會發生這種轉換;
  • 常用的避免死鎖方法;

 

網絡相關

  • 數據鏈路層是做什麼的?
  • 數據鏈路層的流量控制?
  • 網絡模型的分層、IP和Mac地址在那個層、TCP和HTTP分別在那個層;
  • TCP滑動窗口;
  • TCP爲什麼可靠;
  • TCP的同傳,拆包與組裝包是什麼意思;
  • Https和Http有什麼區別;
  • Http 爲什麼是無狀態的;
  • TCP三次握手,爲什麼不是三次,爲什麼不是四次;
  • TCP的擁塞控制、流量控制詳細說明?
  • Http1.0和Http2.0的區別;
  • 兩個不同ip地址的計算機之間如何通信;
  • 地址解析協議ARP;
  • OSI七層模型分別對應着五層模型的哪一部分;
  • TCP三次握手數據丟失了怎麼辦?那如果後面又找到了呢?

 

JAVASE

1、Arrays.sort實現原理和Collections.sort實現原理

答:Collections.sort方法底層會調用Arrays.sort方法,底層實現都是TimeSort實現的。TimSort算法就是找到已經排好序數據的子序列,然後對剩餘部分排序,然後合併起來.

2、foreach和while的區別(編譯之後) 線程池的種類,區別和使用場景

3、分析線程池的實現原理和線程的調度過程

4、線程池如何調優

5、線程池的最大線程數目根據什麼確定

6、動態代理的幾種方式

7、HashMap的併發問題

8、瞭解LinkedHashMap的應用嗎

9、反射的原理,反射創建類實例的三種方式是什麼?

10、cloneable接口實現原理,淺拷貝or深拷貝

11、Java NIO使用

12、hashtable和hashmap的區別及實現原理,hashmap會問到數組索引,hash碰撞怎麼解決

13、arraylist和linkedlist區別及實現原理

14、反射中,Class.forName和ClassLoader區別

15、String,Stringbuffer,StringBuilder的區別?

16、有沒有可能2個不相等的對象有相同的hashcode

17、簡述NIO的最佳實踐,比如netty,mina

18、TreeMap的實現原理

 

JUC/併發相關

1、ThreadLocal用過麼,原理是什麼,用的時候要注意什麼

2、Synchronized和Lock的區別

3、synchronized 的原理,什麼是自旋鎖,偏向鎖,輕量級鎖,什麼叫可重入鎖,什麼叫公平鎖和非公平鎖

4、concurrenthashmap具體實現及其原理,jdk8下的改版

5、用過哪些原子類,他們的參數以及原理是什麼

6、cas是什麼,他會產生什麼問題(ABA問題的解決,如加入修改次數、版本號)

7、如果讓你實現一個併發安全的鏈表,你會怎麼做

8、簡述ConcurrentLinkedQueue和LinkedBlockingQueue的用處和不同之處

9、簡述AQS的實現原理

10、countdowlatch和cyclicbarrier的用法,以及相互之間的差別?

11、concurrent包中使用過哪些類?分別說說使用在什麼場景?爲什麼要使用?

12、LockSupport工具

13、Condition接口及其實現原理

14、Fork/Join框架的理解

15、jdk8的parallelStream的理解

16、分段鎖的原理,鎖力度減小的思考

17、常見Java面試題大綜合,非常值得一看,面試必備!!!

 

網絡相關

1、http1.0和http1.1有什麼區別

2、TCP/IP協議

3、TCP三次握手和四次揮手的流程,爲什麼斷開連接要4次,如果握手只有兩次,會出現什麼

4、TIME_WAIT和CLOSE_WAIT的區別

5、說說你知道的幾種HTTP響應碼

6、當你用瀏覽器打開一個鏈接的時候,計算機做了哪些工作步驟

7、TCP/IP如何保證可靠性,數據包有哪些數據組成

8、長連接與短連接

9、Http請求get和post的區別以及數據包格式

10、簡述tcp建立連接3次握手,和斷開連接4次握手的過程;關閉連接時,出現TIMEWAIT過多是由什麼原因引起,是出現在主動斷開方還是被動斷開方。

 

三、JVM

  • Minor GC與Full GC分別在什麼時候發生?什麼時候觸發Full GC;
  • GC收集器有哪些?CMS收集器與G1收集器的特點。
  • Java在什麼時候會出現內存泄漏;
  • Java中的大對象如何進行存儲;
  • rt.jar被什麼類加載器加載,什麼時間加載;
  • 自己寫的類被什麼加載,什麼時間加載;
  • 自己寫的兩個不同的類是被同一個類加載器加載的嗎?爲什麼?
  • 爲什麼新生代內存需要有兩個Survivor區?
  • 幾種常用的內存調試工具:jmap、jstack、jconsole;
  • 類加載的五個過程:加載、驗證、準備、解析、初始化;
  • G1停頓嗎,CMS回收步驟,CMS爲什麼會停頓,停頓時間;
  • 棧主要存的數據是什麼,堆呢?
  • 堆分爲哪幾塊,比如說新生代老生代,那麼新生代又分爲什麼?
  • 軟引用和弱引用的使用場景(軟引用可以實現緩存,弱引用可以用來在回調函數中防止內存泄露);
  • JVM運行時內存區域劃分
  • 內存溢出OOM和堆棧溢出SOE的示例及原因、如何排查與解決
  • 如何判斷對象是否可以回收或存活
  • 常見的GC回收算法及其含義
  • 常見的JVM性能監控和故障處理工具類:jps、jstat、jmap、jinfo、jconsole等
  • JVM如何設置參數
  • JVM性能調優
  • 類加載器、雙親委派模型、一個類的生命週期、類是如何加載到JVM中的
  • 類加載的過程:加載、驗證、準備、解析、初始化
  • 強引用、軟引用、弱引用、虛引用
  • Java內存模型JMM

 

1、類的實例化順序,比如父類靜態數據,構造函數,字段,子類靜態數據,構造函數,字段,他們的執行順序

2、JVM內存分代

3、Java 8的內存分代改進

4、JVM垃圾回收機制,何時觸發MinorGC等操作

5、jvm中一次完整的GC流程(從ygc到fgc)是怎樣的,重點講講對象如何晉升到老年代,幾種主要的jvm參數等

6、你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms,g1

7、新生代和老生代的內存回收策略

8、Eden和Survivor的比例分配等

9、深入分析了Classloader,雙親委派機制

10、JVM的編譯優化

11、對Java內存模型的理解,以及其在併發中的應用

12、指令重排序,內存柵欄等

13、OOM錯誤,stackoverflow錯誤,permgen space錯誤

14、JVM常用參數

15、tomcat結構,類加載器流程

16、volatile的語義,它修飾的變量一定線程安全嗎

17、g1和cms區別,吞吐量優先和響應優先的垃圾收集器選擇

18、說一說你對環境變量classpath的理解?如果一個類不在classpath下,爲什麼會拋出ClassNotFoundException異常,如果在不改變這個類路徑的前期下,怎樣才能正確加載這個類?

19、說一下強引用、軟引用、弱引用、虛引用以及他們之間和gc的關係

20、常見Java面試題大綜合,非常值得一看,面試必備!!!

 

 

設計模式

  • 常見的設計模式
  • 設計模式的的六大原則及其含義
  • 常見的單例模式以及各種實現方式的優缺點,哪一種最好,手寫常見的單利模式
  • 設計模式在實際場景中的應用
  • Spring中用到了哪些設計模式
  • MyBatis中用到了哪些設計模式
  • 你項目中有使用哪些設計模式
  • 說說常用開源框架中設計模式使用分析
  • 動態代理很重要!!!

 

數據結構

  • 樹(二叉查找樹、平衡二叉樹、紅黑樹、B樹、B+樹)
  • 深度有限算法、廣度優先算法
  • 克魯斯卡爾算法、普林母算法、迪克拉斯算法
  • 什麼是一致性Hash及其原理、Hash環問題
  • 常見的排序算法和查找算法:快排、折半查找、堆排序等

 

數據庫

  • MySQL 索引使用的注意事項
  • DDL、DML、DCL分別指什麼
  • explain命令
  • left join,right join,inner join
  • 數據庫事物ACID(原子性、一致性、隔離性、持久性)
  • 事物的隔離級別(讀未提交、讀以提交、可重複讀、可序列化讀)
  • 髒讀、幻讀、不可重複讀
  • 數據庫的幾大範式
  • 數據庫常見的命令
  • 說說分庫與分表設計
  • 分庫與分錶帶來的分佈式困境與應對之策(如何解決分佈式下的分庫分表,全局表?)
  • 說說 SQL 優化之道
  • MySQL遇到的死鎖問題、如何排查與解決
  • 存儲引擎的 InnoDB與MyISAM區別,優缺點,使用場景
  • 索引類別(B+樹索引、全文索引、哈希索引)、索引的原理
  • 什麼是自適應哈希索引(AHI)
  • 爲什麼要用 B+tree作爲MySQL索引的數據結構
  • 聚集索引與非聚集索引的區別
  • 遇到過索引失效的情況沒,什麼時候可能會出現,如何解決
  • limit 20000 加載很慢怎麼解決
  • 如何選擇合適的分佈式主鍵方案
  • 選擇合適的數據存儲方案
  • 常見的幾種分佈式ID的設計方案
  • 常見的數據庫優化方案,在你的項目中數據庫如何進行優化的

 

Redis

 

消息隊列

  • 消息隊列的使用場景
  • 消息的重發補償解決思路
  • 消息的冪等性解決思路
  • 消息的堆積解決思路
  • 自己如何實現消息隊列
  • 如何保證消息的有序性

 

 

數據庫

  • 數據庫索引,什麼是全文索引,全文索引中的倒排索引是什麼原理;
  • 數據庫最佳左前綴原則是什麼?
  • 數據庫的三大範式;
  • 悲觀鎖和樂觀鎖的原理和應用場景;
  • 左連接、右連接、內連接、外連接、交叉連接、笛卡兒積等;
  • 一般情況下數據庫宕機瞭如何進行恢復(什麼是Write Ahead Log機制,什麼是Double Write機制,什麼是Check Point);
  • 什麼是redo日誌、什麼是undo日誌;
  • 數據庫中的隔離性是怎樣實現的;原子性、一致性、持久性又是如何實現的;
  • 什麼是組合索引,組合索引什麼時候會失效;
  • 關係型數據庫和非關係型數據庫區別;
  • 數據庫死鎖如何解決;
  • MySQL併發情況下怎麼解決(通過事務、隔離級別、鎖);
  • MySQL中的MVCC機制是什麼意思,根據具體場景,MVCC是否有問題;
  • MySQL數據庫的隔離級別,以及如何解決幻讀;
  • 8、MySQL InnoDB存儲的文件結構
  • 9、索引樹是如何維護的?
  • 10、數據庫自增主鍵可能的問題
  • 11、MySQL的幾種優化
  • 12、mysql索引爲什麼使用B+樹
  • 13、數據庫鎖表的相關處理
  • 14、索引失效場景
  • 15、高併發下如何做到安全的修改同一行數據,樂觀鎖和悲觀鎖是什麼,INNODB的行級鎖有哪2種,解釋其含義
  • 16、數據庫會死鎖嗎,舉一個死鎖的例子,mysql怎麼解決死鎖

 

緩存服務器

  • Redis中zSet跳躍表問題;
  • Redis的set的應用場合?
  • Redis高級特性瞭解嗎?
  • Redis的pipeline有什麼用處?
  • Redis集羣宕機如何處理,怎麼樣進行數據的遷移;
  • Redis的集羣方案;
  • Redis原子操作怎麼用比較好;
  • Redis過期策略是怎麼實現的呢?

 

 

Redis&緩存相關

1、Redis的併發競爭問題如何解決了解Redis事務的CAS操作嗎

2、緩存機器增刪如何對系統影響最小,一致性哈希的實現

3、Redis持久化的幾種方式,優缺點是什麼,怎麼實現的

4、Redis的緩存失效策略

5、緩存穿透的解決辦法

6、redis集羣,高可用,原理

7、mySQL裏有2000w數據,redis中只存20w的數據,如何保證redis中的數據都是熱點數據

8、用Redis和任意語言實現一段惡意登錄保護的代碼,限制1小時內每用戶Id最多隻能登錄5次

9、redis的數據淘汰策略

 

SSM/Servlet

  • Servlet的生命週期
  • 轉發與重定向的區別
  • BeanFactory 和 ApplicationContext 有什麼區別
  • Spring Bean 的生命週期
  • Spring IOC 如何實現
  • Spring中Bean的作用域,默認的是哪一個
  • 說說 Spring AOP、Spring AOP 實現原理
  • 動態代理(CGLib 與 JDK)、優缺點、性能對比、如何選擇
  • Spring 事務實現方式、事務的傳播機制、默認的事務類別
  • Spring 事務底層原理
  • Spring事務失效(事務嵌套),JDK動態代理給Spring事務埋下的坑,可參考《JDK動態代理給Spring事務埋下的坑!
  • 如何自定義註解實現功能
  • Spring MVC 運行流程
  • Spring MVC 啓動流程
  • Spring 的單例實現原理
  • Spring 框架中用到了哪些設計模式
  • Spring 其他產品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等)
  • 有沒有用到Spring Boot,Spring Boot的認識、原理
  • MyBatis的原理
  • 可參考《爲什麼會有Spring
  • 可參考《爲什麼會有Spring AOP

 

Netty

  • 爲什麼選擇 Netty
  • 說說業務中,Netty 的使用場景
  • 原生的 NIO 在 JDK 1.7 版本存在 epoll bug
  • 什麼是TCP 粘包/拆包
  • TCP粘包/拆包的解決辦法
  • Netty 線程模型
  • 說說 Netty 的零拷貝
  • Netty 內部執行流程
  • Netty 重連實現

 

Tomcat

 

Nginx

  • 請解釋什麼是C10K問題或者知道什麼是C10K問題嗎?
  • Nginx簡介,可參考《Nginx簡介
  • 正向代理和反向代理.
  • Nginx幾種常見的負載均衡策略
  • Nginx服務器上的Master和Worker進程分別是什麼
  • 使用“反向代理服務器”的優點是什麼?

 

分佈式其他

  • 談談業務中使用分佈式的場景
  • Session 分佈式方案
  • Session 分佈式處理
  • 分佈式鎖的應用場景、分佈式鎖的產生原因、基本概念
  • 分佈是鎖的常見解決方案
  • 分佈式事務的常見解決方案
  • 集羣與負載均衡的算法與實現
  • 說說分庫與分表設計,可參考《數據庫分庫分表策略的具體實現方案
  • 分庫與分錶帶來的分佈式困境與應對之策

 

Dubbo

  • 什麼是Dubbo,可參考《Dubbo入門
  • 什麼是RPC、如何實現RPC、RPC 的實現原理,可參考《基於HTTP的RPC實現
  • Dubbo中的SPI是什麼概念
  • Dubbo的基本原理、執行流程

 

微服務

  • 前後端分離是如何做的?
  • 微服務哪些框架
  • Spring Could的常見組件有哪些?可參考《Spring Cloud概述
  • 領域驅動有了解嗎?什麼是領域驅動模型?充血模型、貧血模型
  • JWT有了解嗎,什麼是JWT,可參考《前後端分離利器之JWT
  • 你怎麼理解 RESTful
  • 說說如何設計一個良好的 API
  • 如何理解 RESTful API 的冪等性
  • 如何保證接口的冪等性
  • 說說 CAP 定理、BASE 理論
  • 怎麼考慮數據一致性問題
  • 說說最終一致性的實現方案
  • 微服務的優缺點,可參考《微服務批判
  • 微服務與 SOA 的區別
  • 如何拆分服務、水平分割、垂直分割
  • 如何應對微服務的鏈式調用異常
  • 如何快速追蹤與定位問題
  • 如何保證微服務的安全、認證

 

安全問題

  • 如何防範常見的Web攻擊、如何方式SQL注入
  • 服務端通信安全攻防
  • HTTPS原理剖析、降級攻擊、HTTP與HTTPS的對比

 

性能優化

  • 性能指標有哪些
  • 如何發現性能瓶頸
  • 性能調優的常見手段
  • 說說你在項目中如何進行性能調優

 

SSM相關

  • Spring中@Autowired和@Resource註解的區別?
  • Spring聲明一個 bean 如何對其進行個性化定製;
  • MyBatis有什麼優勢;
  • MyBatis如何做事務管理;

 

 

分佈式相關

  • 消息隊列使用的場景介紹和作用(應用耦合、異步消息、流量削鋒等);
  • 如何解決消息隊列丟失消息和重複消費問題;
  • Kafka使用過嗎,什麼是冪等性?怎麼保證一致性,持久化怎麼做,分區partition的理解,LEO是什麼意思,如何保證多個partition之間數據一致性的(ISR機制),爲什麼Kafka可以這麼快(基於磁盤的順序讀寫);
  • 異步隊列怎麼實現;
  • 你項目的併發是多少?怎麼解決高併發問題?單機情況下Tomcat的併發大概是多少,MySQL的併發大致是多少?
  • 什麼是C10K問題;
  • 高併發情況下怎麼辦;
  • 分佈式理論,什麼是CAP理論,什麼是Base理論,什麼是Paxos理論;
  • 分佈式協議的選舉算法;
  • 說一下你對微服務的理解,與SOA的區別;
  • Dubbo的基本原理,RPC,支持哪些通信方式,服務的調用過程;
  • Dubbo如果有一個服務掛掉了怎麼辦;
  • 分佈式事務,操作兩個表不在一個庫,如何保證一致性。
  • 分佈式系統中,每臺機器如何產生一個唯一的隨機值;
  • 系統的量級、pv、uv等;
  • 什麼是Hash一致性算法?分佈式緩存的一致性,服務器如何擴容(哈希環);
  • 正向代理、反向代理;
  • 什麼是客戶端負載均衡策略、什麼是服務器端負載均衡策略;
  • 如何優化Tomcat,常見的優化方式有哪些;
  • Nginx的Master和Worker,Nginx是如何處理請求的;

 

系統設計相關

  • 如何防止表單重複提交(Token令牌環等方式);
  • 有一個url白名單,需要使用正則表達式進行過濾,但是url量級很大,大概億級,那麼如何優化正則表達式?如何優化億級的url匹配呢?
  • 常見的Nginx負載均衡策略;已有兩臺Nginx服務器了,倘若這時候再增加一臺服務器,採用什麼負載均衡算法比較好?
  • 掃描二維碼登錄的過程解析;
  • 如何設計一個生成唯一UUID的算法?
  • 實現一個負載均衡的算法,服務器資源分配爲70%、20%、10%;
  • 有三個線程T1 T2 T3,如何保證他們按順序執行;
  • 三個線程循環輸出ABCABCABC....

 

安全相關

什麼是XSS攻擊,XSS攻擊的一般表現形式有哪些?如何防止XSS攻擊;

從分佈式一致性談到CAP理論、BASE理論!

爲什麼新生代內存需要有兩個Survivor區?

 

 

Spring

1、Spring AOP與IOC的實現原理

2、Spring的beanFactory和factoryBean的區別

3、爲什麼CGlib方式可以對接口實現代理?

4、RMI與代理模式

5、Spring的事務隔離級別,實現原理

6、對Spring的理解,非單例注入的原理?它的生命週期?循環注入的原理,aop的實現原理,說說aop中的幾個術語,它們是怎麼相互工作的?

7、Mybatis的底層實現原理

8、MVC框架原理,他們都是怎麼做url路由的

9、spring boot特性,優勢,適用場景等

10、quartz和timer對比

11、spring的controller是單例還是多例,怎麼保證併發的安全

 

五、分佈式相關

1、Dubbo的底層實現原理和機制

2、描述一個服務從發佈到被消費的詳細過程

3、分佈式系統怎麼做服務治理

4、接口的冪等性的概念

5、消息中間件如何解決消息丟失問題

6、Dubbo的服務請求失敗怎麼處理

7、重連機制會不會造成錯誤

8、對分佈式事務的理解

9、如何實現負載均衡,有哪些算法可以實現?

10、Zookeeper的用途,選舉的原理是什麼?

11、數據的垂直拆分水平拆分。

12、zookeeper原理和適用場景

13、zookeeper watch機制

14、redis/zk節點宕機如何處理

15、分佈式集羣下如何做到唯一序列號

16、如何做一個分佈式鎖

17、用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連接是線程安全的嗎

18、MQ系統的數據如何保證不丟失

19、列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問題。

20、算法&數據結構&設計模式

21、海量url去重類問題(布隆過濾器)

22、數組和鏈表數據結構描述,各自的時間複雜度

23、二叉樹遍歷

24、快速排序

六、BTree相關的操作

1、在工作中遇到過哪些設計模式,是如何應用的

2、hash算法的有哪幾種,優缺點,使用場景

3、什麼是一致性hash

4、paxos算法

5、在裝飾器模式和代理模式之間,你如何抉擇,請結合自身實際情況聊聊

6、代碼重構的步驟和原因,如果理解重構到模式?

 

 

九、其他

1、maven解決依賴衝突,快照版和發行版的區別

2、Linux下IO模型有幾種,各自的含義是什麼

3、實際場景問題,海量登錄日誌如何排序和處理SQL操作,主要是索引和聚合函數的應用

4、實際場景問題解決,典型的TOP K問題

5、線上bug處理流程

6、如何從線上日誌發現問題

7、linux利用哪些命令,查找哪裏出了問題(例如io密集任務,cpu過度)

8、場景問題,有一個第三方接口,有很多個線程去調用獲取數據,現在規定每秒鐘最多有10個線程同時調用它,如何做到。

9、用三個線程按順序循環打印abc三個字母,比如abcabcabc。

10、常見的緩存策略有哪些,你們項目中用到了什麼緩存系統,如何設計的

11、設計一個秒殺系統,30分鐘沒付款就自動關閉交易(併發會很高)

12、請列出你所瞭解的性能測試工具

13、後臺系統怎麼防止請求重複提交?

14、有多個相同的接口,我想客戶端同時請求,然後只需要在第一個請求返回結果的時候返回給客戶端

 

 

操作系統

  • Linux靜態鏈接和動態鏈接;
  • 什麼是IO多路複用模型(select、poll、epoll);
  • Linux中的grep管道用處?Linux的常用命令?
  • 操作系統中虛擬地址、邏輯地址、線性地址、物理地址的概念及區別;
  • 內存的頁面置換算法;
  • 內存的頁面置換算法;
  • 進程調度算法,操作系統是如何調度進程的;
  • 父子進程、孤兒進程、僵死進程等概念;
  • fork進程時的操作;
  • kill用法,某個進程殺不掉的原因(僵死進程;進入內核態,忽略kill信號);
  • 系統管理命令(如查看內存使用、網絡情況);
  • find命令、awk使用;
  • Linux下排查某個死循環的線程;

 

設計能力

 

業務工程

  • 說說你的開發流程、如何進行自動化部署的
  • 你和團隊是如何溝通的
  • 你如何進行代碼評審
  • 說說你對技術與業務的理解
  • 說說你在項目中遇到感覺最難Bug,是如何解決的
  • 介紹一下工作中的一個你認爲最有價值的項目,以及在這個過程中的角色、解決的問題、你覺得你們項目還有哪些不足的地方

 

軟實力

  • 說說你的優缺點、亮點
  • 說說你最近在看什麼書、什麼博客、在研究什麼新技術、再看那些開源項目的源代碼
  • 說說你覺得最有意義的技術書籍
  • 工作之餘做什麼事情、平時是如何學習的,怎樣提升自己的能力
  • 說說個人發展方向方面的思考
  • 說說你認爲的服務端開發工程師應該具備哪些能力
  • 說說你認爲的架構師是什麼樣的,架構師主要做什麼
  • 如何看待加班的問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章