2020年馬上就要告一段落了,馬上又準(zhǔn)備迎接新一輪的“金三銀四”了,你是否還在尋找沒有“996”的公司,或者你在面試上面摘了跟頭?準(zhǔn)備了體體面面的自我介紹,敗在了技術(shù)深度上;又或者技術(shù)知識背得完完全全,卻輸在了面試技巧,文末有資料領(lǐng)取方式!
115個Java面試題: 什么是Java虛擬機?為什么Java被稱作是無關(guān)的編程語言? JDK和JRE的區(qū)別是什么? static關(guān)鍵字是什么意思?Java中是否可以覆蓋(override)一個private或者是strtic的方法 是否可以在strtic環(huán)境中訪問strtic變量? Java支持的數(shù)據(jù)類型有哪些?什么是自動拆裝箱? Java中的方法覆蓋(Overriding)和方法重載(Overriding)是什么意思? Java中,什么是構(gòu)造函數(shù)重載?什么是復(fù)制構(gòu)造函數(shù) Java支持多繼承么? 接口和抽象類的區(qū)別是什么? 什么是值傳遞和引用傳遞 進程和線程的區(qū)別是什么? 創(chuàng)建線程有幾種不同的方式?你喜歡那一種?為什么? 概況的解釋下線程的幾種可用狀態(tài) 同步方法和同步代碼塊的區(qū)別是什么? 在監(jiān)視器(Monitor)內(nèi)部,是如何做線程同步的?程序應(yīng)該做那種級別的同步? 什么是死鎖(deadlock)? 如何確保N個線程可以訪問N個資源同時又不導(dǎo)致死鎖? Java集合類框架的基本接口有哪些? 為什么集合類沒有實現(xiàn)Cloneable和Serializable接口? 什么是迭代器(Iterator)? Iterator和LististIterator的區(qū)別是什么? 快速失?。╢ail-fast)和安全失敗(fail-safe)的區(qū)別是什么? Java中的HashMap的工作原理是什么? hashCode()和equals()方法的重要性體現(xiàn)在什么地方? HashMap和Hashtable有什么區(qū)別?.數(shù)組(Array)和列表(ArrayList)有什么區(qū)別?什么時候應(yīng)該使用Array而不是ArrayList? ArrayList和LinkedList有什么區(qū)別? Comparable和Comparatoromparator接口是干什么的?列出他們的區(qū)別 什么是Java優(yōu)先級隊列(PriorityQueue)? 你了解大O符號(big-O notation)么?你能給出不同數(shù)據(jù)結(jié)構(gòu)的例子么? 如何權(quán)衡是使用無序的數(shù)組還是有序的數(shù)組? Java集合類框架的最佳實踐有哪些? Enumeration接口和Iterator接口的區(qū)別有哪些? HashSet和TreeSet有什么區(qū)別? Java中辣椒回收有什么目的?什么時候進行垃圾回收 System.ge()和Runtime.gc()會做什么事情? finalize()方法什么時候被條用?析構(gòu)函數(shù)(finalization)的目的是什么? 如果對象的引用被置為null,垃圾收集器是否會立即釋放對象占用的內(nèi)存 Java堆的結(jié)構(gòu)是什么樣子的?什么是堆中的永久代(Perm Gen space)? 串行(serial)收集器和吞吐量(throughput)收集器的區(qū)別是什么? 在Java中,對象什么時候可以被垃圾回收? JVM的永久代中會發(fā)生垃圾回收么?
Java中的兩種異常類型是什么?他們有什么區(qū)別? Java中Exception和Error有什么區(qū)別? throw和thro ws有什么區(qū)別?異常處理的時候,finally代碼塊的重要性是什么? 異常處理完成以后,Exception對象會發(fā)生什么變化? finally代碼塊和finalize()方法有什么區(qū)別? 什么是(Applet)? 解釋一下Applet的生命周期 當(dāng)Applet被載入的時候會發(fā)生什么? Applet和普通的Java應(yīng)用程序有什么區(qū)別? Java Applet有哪些限制條件? 什么是不受信任的Applet? 從網(wǎng)絡(luò)上加載的Applet從本地文件系統(tǒng)加載的Applet有什么區(qū)別 Applet類加載器是什么?它會做哪些工作? Applet安全管理器是什么?它會做哪些工作? 彈出式選擇菜單(Choice)和列表(List)有什么區(qū)別 什么是布局管理器? 滾動條(Scrollbar)和滾動面板(JScrollPane)有什么區(qū)別? 哪些Swing的方法是線程安全的? 說出三種主持重繪(painting)的組件 什么是裁剪(clipping)? MenuItem和CheckboxMenuItem的區(qū)別是什么? 邊緣布局(BorderLayout)里面的元素是如何布局的? 網(wǎng)格包布局(GridBagLayout)里面的元素是如何布局的 Window和Frame有什么區(qū)別? 裁剪(clipping)和重繪(repainting)有什么關(guān)系? 事件監(jiān)聽器接口(event-listener interface)和事件適配器(event-adapter)有什么關(guān)系 GUI組件如何處理它自己的事件? Java的布局管理器比傳統(tǒng)的窗口系統(tǒng)有哪些優(yōu)勢? Java的Swing組件使用了那種設(shè)計模式? 什么是JDBC? 解釋下驅(qū)動(Driver)在JDBC中的角色 Class.forName()方法有什么作用? PreparedStatement比Statement有什么優(yōu)勢? 什么時候用CallableStatement?用來準(zhǔn)備CallableStatement的方法是什么? 數(shù)據(jù)庫連接池是什么意思? 什么是RMI? RMI體系結(jié)構(gòu)的基本原則是什么? RMI體系結(jié)構(gòu)分哪幾層? RMI中的遠程接口(Remote Interface)扮演了什么樣的角色? java.rmi.Naming類扮演了什么樣的角色? RMI的綁定(Binding)是什么意思? Naming類的bind()和rebind()方法有什么區(qū)別? 讓RMI程序能正確運行有哪些步驟? RMI在stub扮演了什么樣的角色? 什么是分布式垃圾回收(DGC)?它是如何工作的? RMI中使用RMI安全管理器(RMISecurityManager)的目的是什么? 解釋下Marshalling和demarsahalling 解釋下Serialization和Deserialization 什么是Servlet? 說一下Servlet的體系結(jié)構(gòu) Applet和Servlet有什么區(qū)別? GenericServlet和HttpServlet有什么區(qū)別? 解釋下Servlet的生命周期 doGet()方法和doPost()方法有什么區(qū)別? 什么是Web應(yīng)用程序? 什么是服務(wù)端包含(Server Side Include)? 什么是Servlet鏈(Servlet Chaining)? 如何做到是哪一個客戶端的機器正在請求你的Servlet? HTTP響應(yīng)的結(jié)構(gòu)是怎么樣的? 什么是cookie?session和cookie有什么區(qū)別? 瀏覽器和Servlet通信使用的是什么協(xié)議? 什么是HTTP隧道? sendRedirect()和forwand()方法有什么區(qū)別 什么是URL編碼和URL解碼 什么是JSP頁面 JSP請求是如何被處理的 JSP有什么優(yōu)點 什么是JSP指令(Directive)?JSP中有哪些不同類型的指令 什么是JSP動作(JSP action) 什么是Scriptlets 聲明(Decalaration)在哪里? 什么是表達式(Expression) 隱含對象是什么意思?有哪些隱含對象
開源框架面試題 BeanFactory 和 ApplicationContext 有什么區(qū)別 Spring Bean 的生命周期 Spring IOC 如何實現(xiàn) 說說 Spring AOP Spring AOP 實現(xiàn)原理 動態(tài)代理(cglib 與 JDK) Spring 事務(wù)實現(xiàn)方式 Spring 事務(wù)底層原理 Spring 事務(wù)底層原理 Spring MVC 運行流程 Spring MVC 啟動流程 Spring 的單例實現(xiàn)原理 Spring 框架中用到了哪些設(shè)計模式 為什么選擇 Netty 說說業(yè)務(wù)中,Netty 的使用場景 原生的 NIO 在 JDK 1.7 版本存在 epoll bug 什么是 TCP 粘包/拆包 TCP 粘包/拆包的解決辦法 Netty 線程模型 說說 Netty 的零拷貝 Netty 內(nèi)部執(zhí)行流程
設(shè)計模式 請列舉出在 JDK 中幾個常用的設(shè)計模式? 什么是設(shè)計模式?你是否在你的代碼里面使用過任何設(shè)計模式? Java 中什么叫單例設(shè)計模式?請用 Java 寫出線程安全的單例模式 在 Java 中,什么叫觀察者設(shè)計模式(observer design pattern)? 使用工廠模式最主要的好處是什么?在哪里使用? 舉一個用 Java 實現(xiàn)的裝飾模式(decorator design pattern)?它是作用于對象層次還是層次? 在 Java 中,為什么不允許從靜態(tài)方法中訪問非靜態(tài)變量? 設(shè)計一個 ATM 機,請說出你的設(shè)計思路? 在 Java 中,什么時候用重載,什么時候用重寫? 舉例說明什么情況下會更傾向于使用抽象類而不是接口 spring 25題常見面試問題 什么是 Spring 框架?Spring 框架有哪些主要模塊? 使用 Spring 框架能帶來哪些好處? 什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入? 請解釋下 Spring 框架中的 IoC? BeanFactory 和 ApplicationContext 有什么區(qū)別? Spring 有幾種配置方式? 如何用基于 XML 配置的方式配置 Spring? 如何用基于 Java 配置的方式配置 Spring? 怎樣用注解的方式配置 Spring? 請解釋 Spring Bean 的生命周期? Spring Bean 的作用域之間有什么區(qū)別? 什么是 Spring inner beans? Spring 框架中的單例 Beans 是線程安全的么? 請舉例說明如何在 Spring 中注入一個 Java Collection? 如何向 Spring Bean 中注入一個 Java.util.Properties? 請解釋 Spring Bean 的自動裝配? 請解釋自動裝配模式的區(qū)別? 如何開啟基于注解的自動裝配? 請舉例解釋@Required 注解? 請舉例解釋@Autowired 注解? 請舉例說明@Qualifier 注解? 構(gòu)造方法注入和設(shè)值注入有什么區(qū)別? Spring 框架中有哪些不同類型的事件? FileSystemResource 和 ClassPathResource 有何區(qū)別? Spring 框架中都用到了哪些設(shè)計模式?
springboot 22題常見面試問題 什么是 Spring Boot Spring Boot 有哪些優(yōu)點 Spring Boot 的優(yōu)點有 Spring Boot 的優(yōu)點有 如何重新加載 Spring Boot 上的更改,而無需重新啟動服務(wù)器 Spring Boot 中的監(jiān)視器是什么 如何在 Spring Boot 中禁用 Actuator 端點安全性 如何在自定義端口上運行 Spring Boot 應(yīng)用程序 什么是 YAML 如何實現(xiàn) Spring Boot 應(yīng)用程序的安全性 如何實現(xiàn) Spring Boot 應(yīng)用程序的安全性 如何使用 Spring Boot 實現(xiàn)分頁和排序 什么是 Swagger?你用 Spring Boot 實現(xiàn)了它嗎 什么是 Spring Profiles 什么是 Spring Batch 什么是 FreeMarker 模板 什么是 FreeMarker 模板 什么是 FreeMarker 模板 什么是 CSRF 攻擊 什么是 CSRF 攻擊 什么是 AOP 什么是 Apache Kafka
Redis 什么是 Redis?簡述它的優(yōu)缺點 什么是 Redis?簡述它的優(yōu)缺點 redis 可以持久化其數(shù)據(jù) redis 可以持久化其數(shù)據(jù) Redis 主要消耗什么物理資源 Redis 有哪幾種數(shù)據(jù)淘汰策略 Redis 官方為什么不提供 Windows 版本 一個字符串類型的值能存儲最大容量是多少 為什么 Redis 需要把所有數(shù)據(jù)放到內(nèi)存中 Redis 集群方案應(yīng)該怎么做?都有哪些方案 Redis 集群方案什么情況下會導(dǎo)致整個集群不可用 MySQL 里有 2000w 數(shù)據(jù),redis 中只存 20w 的數(shù)據(jù),如何保證 redis 中的數(shù)據(jù)都是熱點數(shù)據(jù) Redis 有哪些適合的場景 Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個 Redis 和 Redisson 有什么關(guān)系 Jedis 與 Redisson 對比有什么優(yōu)缺點 說說 Redis 哈希槽的概念 Redis 集群的主從復(fù)制模型是怎樣的 Redis 集群會有寫操作丟失嗎?為什么 Redis 集群之間是如何復(fù)制的 Redis 集群最大節(jié)點個數(shù)是多少 Redis 集群如何選擇數(shù)據(jù)庫 Redis 中的管道有什么用 怎么理解 Redis 事務(wù) Redis 事務(wù)相關(guān)的命令有哪幾個 Redis key 的過期時間和永久有效分別怎么設(shè)置 Redis 如何做內(nèi)存優(yōu)化 Redis 回收進程如何工作的 加鎖機制 鎖互斥機制 watch dog 自動延期機制 可重入加鎖機制 釋放鎖機制 上述 Redis 分布式鎖的缺點 使用過 Redis 分布式鎖么,它是怎么實現(xiàn)的 使用過 Redis 做異步隊列么,你是怎么用的?有什么缺點 什么是緩存穿透?如何避免?什么是緩存雪崩?何如避免
并發(fā)編程28題 Synchronized 用過嗎,其原理是什么? 你剛才提到獲取對象的鎖,這個“鎖”到底是什么?如何確定對象的鎖? 什么是可重入性,為什么說 Synchronized 是可重入鎖? JVM 對 Java 的原生鎖做了哪些優(yōu)化?48 為什么說 Synchronized 是非公平鎖?49 什么是鎖消除和鎖粗化?49 為什么說 Synchronized 是一個悲觀鎖?樂觀鎖的實現(xiàn)原理又是什么?什么是 CAS,它有什么特性? 樂觀鎖一定就是好的嗎? 跟 Synchronized 相比,可重入鎖 ReentrantLock 其實現(xiàn)原理有什么不同? 那么請談?wù)?AQS 框架是怎么回事兒? 請盡可能詳盡地對比下 Synchronized 和 ReentrantLock 的異同。 ReentrantLock 是如何實現(xiàn)可重入性的? 除了 ReetrantLock,你還接觸過 JUC 中的哪些并發(fā)工具? 請談?wù)?ReadWriteLock 和 StampedLock。 如何讓 Java 的線程彼此同步?你了解過哪些同步器?請分別介紹下。 CyclicBarrier 和 CountDownLatch 看起來很相似,請對比下呢? Java 線程池相關(guān)問題 Java 中的線程池是如何實現(xiàn)的? 創(chuàng)建線程池的幾個核心構(gòu)造參數(shù)? 線程池中的線程是怎么創(chuàng)建的?是一開始就隨著線程池的啟動創(chuàng)建好的嗎? 既然提到可以通過配置不同參數(shù)創(chuàng)建出不同的線程池,那么 Java 中默認(rèn)實現(xiàn)好的線程池又有哪些呢?請比較它們的異同 如何在 Java 線程池中提交線程? 什么是 Java 的內(nèi)存模型,Java 中各個線程是怎么彼此看到對方的變量的? 請談?wù)?volatile 有什么特點,為什么它能保證變量對所有線程的可見性? 既然 volatile 能夠保證線程間的變量可見性,是不是就意味著基于 volatile 變量的運算就是并發(fā)安全的? 請對比下 volatile 對比 Synchronized 的異同。 請談?wù)?ThreadLocal 是怎么解決并發(fā)安全的? 很多人都說要慎用 ThreadLocal,談?wù)勀愕睦斫猓褂?ThreadLocal 需要注意些什么?
MySQL 性能優(yōu)化的 21 個最佳實踐 為查詢緩存優(yōu)化你的查詢 EXPLAIN 你的 SELECT 查詢 當(dāng)只要一行數(shù)據(jù)時使用 LIMIT 1 為搜索字段建索引 在 Join 表的時候使用相當(dāng)類型的例,并將其索引 千萬不要 ORDER BY RAND() 避免 SELECT * 永遠為每張表設(shè)置一個 ID 使用 ENUM 而不是 VARCHAR 從 PROCEDURE ANALYSE() 取得建議 盡可能的使用 NOT NULL Prepared Statements 無緩沖的查詢 把 IP 地址存成 UNSIGNED INT 固定長度的表會更快 垂直分割 拆分大的 DELETE 或 INSERT 語句 越小的列會越快 選擇正確的存儲引擎 選擇正確的存儲引擎 小心“永久鏈接”
ZooKeeper面試題目 ZooKeeper 是什么? ZooKeeper 提供了什么? Zookeeper 文件系統(tǒng) 四種類型的 znode Zookeeper 通知機制 Zookeeper 做了什么? zk 的命名服務(wù)(文件系統(tǒng)) zk 的配置管理(文件系統(tǒng)、通知機制) Zookeeper 集群管理(文件系統(tǒng)、通知機制) Zookeeper 分布式鎖(文件系統(tǒng)、通知機制) 獲取分布式鎖的流程 Zookeeper 隊列管理(文件系統(tǒng)、通知機制) Zookeeper 數(shù)據(jù)復(fù)制 Zookeeper 工作原理 zookeeper 是如何保證事務(wù)的順序一致性的? Zookeeper 下 Server 工作狀態(tài) zookeeper 是如何選取主 leader 的? Zookeeper 同步流程 分布式通知和協(xié)調(diào) 機器中為什么會有 leader? zk 節(jié)點宕機如何處理? zookeeper 負(fù)載均衡和 nginx 負(fù)載均衡區(qū)別 zookeeper watch 機制
Tomcat 面試題 Tomcat 的缺省端口是多少,怎么修改? tomcat 有哪幾種 Connector 運行模式(優(yōu)化)? Tomcat 有幾種部署方式? tomcat 容器是如何創(chuàng)建 servlet 類實例?用到了什么原理 tomcat 如何優(yōu)化? 內(nèi)存調(diào)優(yōu) 垃圾回收策略調(diào)優(yōu) 共享 session 處理 專業(yè)點的分析工具有 添加 JMS 遠程監(jiān)控 關(guān)于 Tomcat 的 session 數(shù)目 監(jiān)視 Tomcat 的內(nèi)存使用情況 打印類的加載情況及對象的回收情況 Tomcat 一個請求的完整過程 Tomcat 工作模式?
最后 由于這套面試題涉及的范圍很泛,很廣,很雜,大家不可能一天兩天就看完和學(xué)完,即使你已經(jīng)學(xué)過了有關(guān)的技術(shù),那么至少也需要一個月的時間才能消化和掌握,所以,大家應(yīng)該早作準(zhǔn)備,從拿到這套面試題之日起,就要堅持在每天閑暇之余學(xué)習(xí)其中幾道題目,日積月累,等到出去面試時,一切都水到渠成,面試時就自然會游刃有余了。
答題時,先答是什么,再答有什么作用和要注意什么(這部分最重要,展現(xiàn)自己的心得) 答案的段落分別,層次分明,條理清晰都非常重要,從這些表面的東西也可以看出一個人的習(xí)慣、辦事風(fēng)格、條理等。
要講你做出答案的思路過程,或者說你記住答案的思想都寫下來。把答題想著是辯論賽。答題就是給別人講道理、擺事實。答題不局限于什么格式和形式,就是要將自己的學(xué)識展現(xiàn)出來!
別因為人家題目本來就模棱兩可,你就心里膽怯和沒底氣了,不敢回答了。你要大膽地指出對方題目很模糊和你的觀點,不要把面試官想得有多高,其實他和你就是差不多的,你想想,如果他把你招進去了,你們以后就是同事了,可不是差不多的嗎?
關(guān)于就業(yè)薪水,如果你是應(yīng)屆生,那不能要高工資,好比大餅的故事,沒有文憑還想拿高工資,就去中關(guān)村缺什么補什么吧!少數(shù)人基礎(chǔ)確實很好,在校期間確實又做過一些項目,那仍然是可以要到相對高的工資的。
|