一、論述題(5 題)
- 設計模式:說出你知道的模式並介紹(如單例、工廠、觀察者、策略、代理等),重點闡述應用場景與 UML 結構。
- final 關鍵字:修飾類(不可繼承)、方法(不可覆寫)、變數(引用不可變/基本類型值不可變),配合代碼示例說明。
- JSP 九大內置對象:request、response、session、application、out、pageContext、config、page、exception。
- Linux 常用命令:文件操作(ls/cp/mv/rm)、權限(chmod/chown)、進程(ps/kill/top)、網絡(netstat/ss/ip)、磁碟(df/du)、日誌(tail/grep)、打包(tar/gzip)。
- 表結構設計 + SQL:
- 場景:小學 6 年級 × 5 班,統計全校學生各科成績降序、總分排名。
- 表:
student(id, name, grade, class)、score(student_id, subject, score)。
- SQL:
SELECT s.*, SUM(sc.score) total FROM student s JOIN score sc ON s.id=sc.student_id GROUP BY s.id ORDER BY s.grade DESC, total DESC(按年級高→低、總分高→低)。
二、算法題(3 題,40 分鐘)
1. 連續遞增子數組分組
輸入:a[] = {12,13,14,2,4,5,7,9,3,6}
輸出:m[][] = {{12,13,14}, {2,4,5,7,9}, {3,6}}
思路:單次遍歷,維護當前遞增片段,遇非遞增則存入結果列表並重置。
2. 兩個有序數組合併
輸入:a[]、b[] 均升序
輸出:合併後升序數組
思路:雙指針歸併,O(m+n) 時間,O(m+n) 空間(或原地合併)。
3. 單層循環生成螺旋矩陣(難點)
n = 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
思路:維護上下左右四邊界,方向向量 (0,1),(1,0),(0,-1),(-1,0) 循環,單層 for i=1..n*n 填充,撞牆換向並收縮邊界。
面試準備建議
- Java 基礎(集合、併發、JVM、類加載)必須過關。
- 設計模式結合業務場景講,不要背定義。
- SQL 熟練掌握連接、分組、窗口函數。
- 算法多練 LeetCode Easy/Medium,注重邊界條件與單層循環技巧。
- Linux 實操常用命令,會查日誌、看端口、分析 CPU/內存。