棒谷科技Java面試


初面

1、JVM的垃圾回收器有哪些?

Serial、Parallel、CMS、G1

2、MyBatis 中 # 和 $ 的區別?

# 預編譯后生成占位符,$ 類似於字符串拼接;# 比較安全,$ 容易造成 SQL 注入

3、什么是 SQL 注入?(我給忘了)

sql注入是一種將sql代碼添加到輸入參數中,傳遞到sql服務器解析並執行的一種攻擊手法

4、知道內存溢出嗎?

OOM 的話,有棧內存溢出,舉個例子像遞歸忘記寫遞歸出口,就容易造成棧內存溢出;堆內存溢出的話主要是堆內存空間不足,比如對象太多垃圾回收器處理不過來,而且都是強引用

5、生產上 OOM 怎么排查?(有一點印象但還是不會)

(1)通過top命令找出CPU占比最高的進程;
(2)jps -l 找到后台 Java 程序;
(3)定位到具體線程或代碼 ps -mp 進程 -o THREAD, tid, time
(4)將該線程id轉成16進制
(5)jstack 進程id | grep tid -A60找到具體代碼

6、JVM常用參數有哪些?

-Xmx:最大堆內存空間;-Xms:初始化堆內存

7、生產上有千個接口,但客戶說太卡了,怎么排查哪個接口有問題?

不太懂......但感覺是用 Spring AOP 切入各個接口

8、JVM 堆內存是怎么樣的?

堆內存主要有新生代和老年代,其中新生代分為 Eden、S0區、S1區。新生代中主要發生 Minor GC,老年代主要是 Full GC

9、你有什么想問的?

如果有幸加入貴司需要做什么?需要學什么技術?我的面試情況來看您覺得我還有什么欠缺的?

 

二面:

先是問我大學學了什么課程,然后面試官列舉了幾個:計算機原理?計算機網絡?數據庫?數據結構與算法?操作系統?我都說有,他說那來聊聊。

1、平時都有啥興趣愛好?

內心OS:這就是想看看我有沒有學技術吧,但是不能直接說。

回答:我平時喜歡健身看書,有看一些文學類的書也有技術類的書。

2、都看什么技術書?

內心OS:其實我啥都沒看過,我得挑個比較會的

回答:《深入理解Java虛擬機》

3、為什么看這書?

想要提高自己的技術,覺得不能只是當一個只會CRUD的程序員,而且這屬於Java 的底層技術,作為一個即將從事Java的人來說必須要學。

4、那說說JVM的內存結構

線程共享的有 堆、方法區;線程私有的有 棧、本地方法棧、程序計數器。

5、什么叫線程共享?

線程共有的話是每個線程都能訪問,比如堆中的對象還有方法區中的常量池;而像棧那樣的,每個線程都獨有一份棧空間,存放各自的局部變量表和操作數棧等,這就是線程私有。

6、垃圾回收算法知道哪些?

復制算法,主要發生在新生代,在需要回收的時候,將S0區的存活對象復制到S1區,清除可回收對象;

標記清除算法:標記存活對象,清除可回收對象,可能造成內存碎片;

標記整理算法:和前面類似,標記存貨對象,清除可回收對象,整理存活對象,不會造成內存碎片,但多了整理的過程,效率比前面的差一點;

分代收集算法:按照不同的代,使用不同的算法;一般來說,新生代使用復制算法;老年代使用標記清除火標記整理。

7、你怎么理解計算機網絡的模型的?

我比較熟的是傳輸層,所以這個問題回答的斷斷續續,面試官實在受不了了,直接打斷我。

8、TCP和UDP的區別?UDP怎么傳輸的?TCP怎么保證可靠傳輸的?WebSocket的特點?

參考:https://mp.weixin.qq.com/s/7RfH74cGEjNKJxeRs2eSkw

9、數據庫臟讀和幻讀的區別?

臟讀:讀取了已經修改但未提交的數據;幻讀:讀取到了新增列

10、BIO 和 NIO ?是那個層面的實現?

BIO 阻塞 IO;NIO 非阻塞 IO。IO是操作系統層面實現的,在進行IO操作時不是直接操作物理硬件,而是通過緩沖區的復制進行的,一般來說是用戶緩沖區和內核緩沖區之間復制。BIO 像 read 操作需要等數據准備好才會接着往下執行;NIO 則是通過輪詢,若沒有准備好則去處理別的事,偶爾查看,如果備好了就往下執行。

11、來說說數據結構吧,說一下線性結構有哪些?

數組,棧、隊列等。

12、數組和鏈表區別?

數組是順序結構,即在物理層面,數據之間存儲是相鄰的;鏈表是鏈式存儲結構,它會存儲下一個數據所在地址;在查詢上數組支持隨即查找,效率更高,插入和刪除操作需要移動空間,效率相對較低;而鏈表則相反。

13、你從計算機原理的角度說一下為什么數組查找更快?(不會)

CPU和內存的讀取速度差異使得Cache出現,Cache會把一片連續的內存空間讀入, 因為數組結構是連續的內存地址,而鏈表的節點是分散在堆空間里面的,所以數組全部或者部分元素被連續存在Cache,而鏈表則需要去內存查找,速度較慢。

14、算法思想?(沒搞懂,說不會)

枚舉、貪心、動態規划、遞歸、分治等

15、了解 Java 並發包嗎?講一下都知道什么?

ConcurrentHashMap,分1.7和1.8給面試官講了一下;說完准備說原子類的時候被打斷了問下一個

16、Java Web有什么組件?(不會)

Servlet,Filter,Listener

17、MVC是什么?為什么這么設計?

M:model,分裝數據相關;V:view,視圖層;C:controller,控制層,一般處理邏輯,作為連接 M 和 C 的“橋梁”。這么設計使得相關模塊分層,增加了程序的可拓展性和維護性。

18、有什么想問的?

和一面問的差不多......多了一個問題:下面還有面試嗎?面試官說接下來不是技術面了。

 

如果覺得對你有幫助,可以關注公眾號:Max的日常操作,或掃碼關注

                          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM