首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

航旅事業群面試題庫:JVM、JS、Hibernate、數據庫、設計模式、Linux 運維全景覽

     編輯:Java 綜合教學

航旅事業群面試題庫全景覽

整理自某大廠航旅業務群高級工程師面試大綱,覆蓋 JVM 調優、JS 跨域、Hibernate 緩存與鎖、數據庫索引與分庫分表、設計模式手寫、Linux 運維排查六大模塊,適合中高級 Java 開發面試複盤。

一、JVM 專題

  1. GC 觀測手段:jstat -gcutil、jvisualvm、arthas dashboard、GC 日誌 -Xlog:gc* 分析。
  2. JVM 參數調優實戰:堆內存 -Xms -Xmx -Xmn、元空間 -XX:MetaspaceSize、GC 選擇 -XX:+UseG1GC、OOM 存活 -XX:+HeapDumpOnOutOfMemoryError。
  3. Profile 方法:采樣式 async-profiler、插桿式 JProfiler/YourKit、生產環境 arthas trace/watch。
  4. 案例:升級後磁盤頻繁讀寫:排查思路 → iostat -x 定位進程 → lsof -p 看打開文件 → jstack 關聯線程 → 檢查是否開啟大量 FileOutputStream、日志級別過低、堆外內存洩漏、GC 頻繁導致 Swap。

二、JavaScript 專題

  1. 跨域原因:瀏覽器同源策略(協議/域名/端口任一不同即跨域),安全限制。
  2. 解決方案:CORS(後端 Access-Control-Allow-Origin)、Nginx 反向代理、JSONP(僅 GET)、WebSocket、postMessage、document.domain(同主域)。
  3. prototype 原型鏈:每個函數有 prototype,實例 __proto__ 指向構造函數 prototype,查找屬性沿鏈向上。設計初衷:共享方法節省內存、實現繼承。應用:Array.prototype.myMap = ... 擴展數組方法。

三、Hibernate 專題

  1. 數據裝載模式:立即加載、延遲加載(lazy=true 代理/字節碼增強)、急切加載(fetch=join)、批量加載(@BatchSize)。
  2. 多表關聯映射:@OneToOne、@OneToMany/@ManyToOne、@ManyToMany、mappedBy 維護端、@JoinTable 中間表。
  3. 樂觀鎖 vs 悲觀鎖:樂觀 @Version 字段 + CAS 更新失敗重試;悲觀 SELECT ... FOR UPDATE 數據庫行鎖,高併發下性能差。
  4. 一級/二級緩存:一級(Session 級,事務級,不可關閉);二級(SessionFactory 級,需開啟 hibernate.cache.use_second_level_cache + 緩存提供商 Ehcache/Redis)。list() 直接發 SQL、不走二級緩存;iterate() 先查 ID 再走緩存載入對象,適合二級緩存命中率高場景。

四、數據庫專題

  1. 索引原理:B+ 樹結構,聚簇索引(主鍵)葉子節點存全行,二級索引葉子存主鍵值(回表)。
  2. 聯合索引最左前綴:INDEX(a,b,c) 支持 a、a,b、a,b,c,不支持 b、c、b,c。
  3. 索引越多越好?**否**。寫入需維護所有索引(插入/更新/刪除 B+樹分裂合併),佔用磁盤空間,優化器選擇成本增加。原則:高選擇性列、WHERE/JOIN/ORDER BY 涉及列、避免冗余索引。
  4. 存儲引擎:InnoDB(事務、行鎖、MVCC、外鍵、聚簇索引)、MyISAM(表鎖、全文索引、無事務)、Memory(哈希索引、數據內存)、RocksDB(LSM 樹、寫入極快)。
  5. 分庫分表策略:垂直拆庫(業務解耦)、垂直拆表(冷熱分離)、水平分庫分表(Range/Hash/一致性哈希/雪花算法分片鍵)、中間件 ShardingSphere/MyCat。

五、設計模式專題

  1. 創建型:單例(雙檢鎖/靜態內部類/枚舉)、工廠方法、抽象工廠、建造者、原型。
  2. 結構型:代理(靜態/JDK動態/CGLIB)、適配器、裝飾器、外觀、組合、享元。
  3. 行為型:模板方法、策略、觀察者、責任鏈、命令、狀態、訪問者。
  4. 手寫單例(線程安全、延遲加載、防反射/序列化破壞):
    public enum Singleton { INSTANCE; } // 枚舉單例:天然線程安全、防序列化重建、防反射攻擊

六、Linux 運維排查實戰命令庫

場景命令組合解析
統計代碼行數/文件數find . -name "*.java" | wc -lfind 遞歸查找,wc 統計行數
搜索包含關鍵字的文件find . -name "*.java" | xargs grep "LogFactory.getLog" | grep -v staticxargs 轉換標準輸入為參數,grep -v 反向過濾
端口佔用進程定位netstat -anp | grep 9100 → ps -ef | grep PIDnetstat 顯示連接/監聽,-p 顯示 PID
查看本機/出口 IPifconfig / curl ip.sbifconfig 网卡信息,curl 獲取公網出口 IP
跨機器文件傳輸scp local.txt user@host:/remote/path基於 SSH 加密傳輸
日誌分析:Top 10 URLawk '{print $8}' access.log | awk -F'?' '{print $1}' | sort | uniq -c | sort -nr | head -10awk 切分列,uniq -c 計數,sort -nr 倒序
平均響應時間grep 'api' access.log | awk '{sum+=$12} END {print sum/NR}'NR 當前行號,END 結塊計算平均值
抓包分析tcpdump -i eth0 -A -s0 'port 9200' -w dump.pcap-A 顯示 ASCII,-s0 抓全包,-w 寫文件供 Wireshark 分析
JVM 監控工具jps -l、jstat -gcutil PID 1000、jmap -histo:live PID、arthas阿里開源 Arthas 為生產首選
XML 格式化輸出xmllint --format test.xmllibxml2 工具,閱讀大 XML 必備
正式環境拉取日誌./cmd/gm.sh 'cat logs/app.log' > app.loggm.sh 並行執行多機命令
多行異常合併sed '/Exception/{N;s/\n/,/}' error.log > merged.logN 讀下一行,s 替換換行符
異常碼統計grep 'ERR_CODE' merged.log | awk -F'=' '{print $2}' | uniq -cawk 切分字段,uniq -c 去重計數

七、面試加分項建議

  • 每個技術點準備「原理 → 實戰問題 → 解決方案 → 避坑經驗」四段式回答。
  • JVM 調優帶具體案例(如:某服務 Full GC 從 30min 降到 4h,參數調整前後對比圖)。
  • 設計模式結合源碼分析(如:Spring 中 Proxy/Template/Observer 具體應用)。
  • Linux 故障排查講出「現象 → 定位命令 → 根因 → 修復 → 預防措施」完整鏈路。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved