大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 最常見的208道Java最新面試題及答案(三)

最常見的208道Java最新面試題及答案(三)

更新時間:2019-10-15 13:41:58 來源:動力節點 瀏覽3283次


  七、Java最新面試題及答案:Java 異常模塊


  74、throw 和 throws 的區別?


  throw:是真實拋出一個異常。


  throws:是聲明可能會拋出一個異常。


  75、final、finally、finalize 有什么區別?


  final:是修飾符,如果修飾類,此類不能被繼承;如果修飾方法和變量,則表示此方法和此變量不能在被改變,只能使用。


  finally:是 try{} catch{} finally{} 最后一部分,表示不論發生任何情況都會執行,finally 部分可以省略,但如果 finally 部分存在,則一定會執行 finally 里面的代碼。


  finalize:是Object的protected方法,子類可以覆蓋該方法以實現資源清理工作,GC在回收對象之前調用該方法。


  76、try-catch-finally 中哪個部分可以省略?


  try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同時省略,也就是說有 try 的時候,必須后面跟一個 catch 或者 finally。


  77、try-catch-finally 中,如果 catch 中 return 了,finally 還會執行嗎?


  finally 一定會執行,即使是 catch 中 return 了,catch 中的 return 會等 finally 中的代碼執行完之后,才會執行。


  78、常見的異常類有哪些?


  NullPointerException 空指針異常


  ClassNotFoundException 指定類不存在


  NumberFormatException 字符串轉換為數字異常


  IndexOutOfBoundsException 數組下標越界異常


  ClassCastException 數據類型轉換異常


  FileNotFoundException 文件未找到異常


  NoSuchMethodException 方法不存在異常


  IOException IO 異常


  SocketException Socket 異常



  八、 Java最新面試題及答案:網絡模塊


  79、http 響應碼 301 和 302 代表的是什么?有什么區別?


  301:永久重定向;302:暫時重定向。


  它們的區別是,301 對搜索引擎優化(SEO)更加有利;302 有被提示為網絡攔截的風險。


  80、forward 和 redirect 的區別?


  forward 是轉發 和 redirect 是重定向:


  地址欄 url 顯示:foward url 不會發生改變,redirect url 會發生改變;


  數據共享:forward 可以共享 request 里的數據,redirect 不能共享;


  效率:forward 比 redirect 效率高。


  81、簡述 tcp 和 udp的區別?


  tcp 和 udp 是 OSI 模型中的運輸層中的協議。tcp 提供可靠的通信傳輸,而 udp 則常被用于讓廣播和細節控制交給應用的通信傳輸。


  兩者的區別大致如下:


  tcp 面向連接,udp 面向非連接即發送數據前不需要建立鏈接;


  tcp 提供可靠的服務(數據傳輸),udp 無法保證;


  tcp 面向字節流,udp 面向報文;


  tcp 數據傳輸慢,udp 數據傳輸快;


  82、tcp 為什么要三次握手,兩次不行嗎?為什么?


  我們假設A和B是通信的雙方。我理解的握手實際上就是通信,發一次信息就是進行一次握手。


  第一次握手:A給B打電話說,你可以聽到我說話嗎?


  第二次握手:B收到了A的信息,然后對A說:我可以聽得到你說話啊,你能聽得到我說話嗎?


  第三次握手:A收到了B的信息,然后說可以的,我要給你發信息啦!


  在三次握手之后,A和B都能確定這么一件事:我說的話,你能聽到;你說的話,我也能聽到。這樣,就可以開始正常通信了。


  注意:HTTP是基于TCP協議的,所以每次都是客戶端發送請求,服務器應答,但是TCP還可以給其他應用層提供服務,即可能A、B在建立鏈接之后,誰都可能先開始通信。


  如果采用兩次握手,那么只要服務器發出確認數據包就會建立連接,但由于客戶端此時并未響應服務器端的請求,那此時服務器端就會一直在等待客戶端,這樣服務器端就白白浪費了一定的資源。若采用三次握手,服務器端沒有收到來自客戶端的再此確認,則就會知道客戶端并沒有要求建立請求,就不會浪費服務器的資源。


  83、說一下 tcp 粘包是怎么產生的?


  tcp 粘包可能發生在發送端或者接收端,分別來看兩端各種產生粘包的原因:


  發送端粘包:發送端需要等緩沖區滿才發送出去,造成粘包;


  接收方粘包:接收方不及時接收緩沖區的包,造成多個包接收。


  84、OSI 的七層模型都有哪些?


  物理層:利用傳輸介質為數據鏈路層提供物理連接,實現比特流的透明傳輸。


  數據鏈路層:負責建立和管理節點間的鏈路。


  網絡層:通過路由選擇算法,為報文或分組通過通信子網選擇最適當的路徑。


  傳輸層:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸。


  會話層:向兩個實體的表示層提供建立和使用連接的方法。


  表示層:處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密等。


  應用層:直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。


  85、get 和 post 請求有哪些區別?


  get 請求會被瀏覽器主動緩存,而 post 不會。


  get 傳遞參數有大小限制,而 post 沒有。


  post 參數傳輸更安全,get 的參數會明文限制在 url 上,post 不會。


  86、如何實現跨域?


  實現跨域有以下幾種方案:


  服務器端運行跨域 設置 CORS 等于 *;


  在單個接口使用注解 @CrossOrigin 運行跨域;


  使用 jsonp 跨域;


  87、說一下 JSONP 實現原理?


  jsonp:JSON with Padding,它是利用script標簽的 src 連接可以訪問不同源的特性,加載遠程返回的“JS 函數”來執行的。



  九、 Java最新面試題及答案:設計模式模塊


  88、說一下你熟悉的設計模式?


  單例模式:保證被創建一次,節省系統開銷。


  工廠模式(簡單工廠、抽象工廠):解耦代碼。


  觀察者模式:定義了對象之間的一對多的依賴,這樣一來,當一個對象改變時,它的所有的依賴者都會收到通知并自動更新。


  外觀模式:提供一個統一的接口,用來訪問子系統中的一群接口,外觀定義了一個高層的接口,讓子系統更容易使用。


  模版方法模式:定義了一個算法的骨架,而將一些步驟延遲到子類中,模版方法使得子類可以在不改變算法結構的情況下,重新定義算法的步驟。


  狀態模式:允許對象在內部狀態改變時改變它的行為,對象看起來好像修改了它的類。


  89、簡單工廠和抽象工廠有什么區別?


  簡單工廠:用來生產同一等級結構中的任意產品,對于增加新的產品,無能為力。


  工廠方法:用來生產同一等級結構中的固定產品,支持增加任意產品。


  抽象工廠:用來生產不同產品族的全部產品,對于增加新的產品,無能為力;支持增加產品族。



  十、Java最新面試題及答案:Spring/Spring MVC模塊


  90、為什么要使用 spring?


  spring 提供 ioc 技術,容器會幫你管理依賴的對象,從而不需要自己創建和管理依賴對象了,更輕松的實現了程序的解耦。


  spring 提供了事務支持,使得事務操作變的更加方便。


  spring 提供了面向切片編程,這樣可以更方便的處理某一類的問題。


  更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。


  91、解釋一下什么是 aop?


  aop 是面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。


  簡單來說就是統一處理某一“切面”(類)的問題的編程思想,比如統一處理日志、異常等。


  92、解釋一下什么是 ioc?


  ioc:Inversionof Control(中文:控制反轉)是 spring 的核心,對于 spring 框架來說,就是由 spring 來負責控制對象的生命周期和對象間的關系。


  簡單來說,控制指的是當前對象對內部成員的控制權;控制反轉指的是,這種控制權不由當前對象管理了,由其他(類,第三方容器)來管理。


  93、spring 有哪些主要模塊?


  spring core:框架的最基礎部分,提供 ioc 和依賴注入特性。


  spring context:構建于 core 封裝包基礎上的 context 封裝包,提供了一種框架式的對象訪問方法。


  spring dao:Data Access Object 提供了JDBC的抽象層。


  spring aop:提供了面向切面的編程實現,讓你可以自定義攔截器、切點等。


  spring Web:提供了針對 Web 開發的集成特性,例如文件上傳,利用 servlet listeners 進行 ioc 容器初始化和針對 Web 的 ApplicationContext。


  spring Web mvc:spring 中的 mvc 封裝包提供了 Web 應用的 Model-View-Controller(MVC)的實現。


  94、spring 常用的注入方式有哪些?


  setter 屬性注入


  構造方法注入


  注解方式注入


  95、spring 中的 bean 是線程安全的嗎?


  spring 中的 bean 默認是單例模式,spring 框架并沒有對單例 bean 進行多線程的封裝處理。


  實際上大部分時候 spring bean 無狀態的(比如 dao 類),所有某種程度上來說 bean 也是安全的,但如果 bean 有狀態的話(比如 view model 對象),那就要開發者自己去保證線程安全了,最簡單的就是改變 bean 的作用域,把“singleton”變更為“prototype”,這樣請求 bean 相當于 new Bean()了,所以就可以保證線程安全了。


  有狀態就是有數據存儲功能。


  無狀態就是不會保存數據。


  96、spring 支持幾種 bean 的作用域?


  spring 支持 5 種作用域,如下:


  singleton:spring ioc 容器中只存在一個 bean 實例,bean 以單例模式存在,是系統默認值;


  prototype:每次從容器調用 bean 時都會創建一個新的示例,既每次 getBean()相當于執行 new Bean()操作;


  request:每次 http 請求都會創建一個 bean;


  session:同一個 http session 共享一個 bean 實例;


  global-session:用于 portlet 容器,因為每個 portlet 有單獨的 session,globalsession 提供一個全局性的 http session。


  注意:使用 prototype 作用域需要慎重的思考,因為頻繁創建和銷毀 bean 會帶來很大的性能開銷。


  97、spring 自動裝配 bean 有哪些方式?


  no:默認值,表示沒有自動裝配,應使用顯式 bean 引用進行裝配。


  byName:它根據 bean 的名稱注入對象依賴項。


  byType:它根據類型注入對象依賴項。


  構造函數:通過構造函數來注入依賴項,需要設置大量的參數。


  autodetect:容器首先通過構造函數使用 autowire 裝配,如果不能,則通過 byType 自動裝配。


  98、spring 事務實現方式有哪些?


  聲明式事務:聲明式事務也有兩種實現方式,基于 xml 配置文件的方式和注解方式(在類上添加 @Transaction 注解)。


  編碼方式:提供編碼的形式管理和維護事務。


  99、說一下 spring 的事務隔離?


  spring 有五大隔離級別,默認值為 ISOLATION_DEFAULT(使用數據庫的設置),其他四個隔離級別和數據庫的隔離級別一致:


  ISOLATION_DEFAULT:用底層數據庫的設置隔離級別,數據庫設置的是什么我就用什么;


  ISOLATIONREADUNCOMMITTED:未提交讀,最低隔離級別、事務未提交前,就可被其他事務讀取(會出現幻讀、臟讀、不可重復讀);


  ISOLATIONREADCOMMITTED:提交讀,一個事務提交后才能被其他事務讀取到(會造成幻讀、不可重復讀),SQL server 的默認級別;


  ISOLATIONREPEATABLEREAD:可重復讀,保證多次讀取同一個數據時,其值都和事務開始時候的內容是一致,禁止讀取到別的事務未提交的數據(會造成幻讀),MySQL 的默認級別;


  ISOLATION_SERIALIZABLE:序列化,代價最高最可靠的隔離級別,該隔離級別能防止臟讀、不可重復讀、幻讀。


  臟讀 :表示一個事務能夠讀取另一個事務中還未提交的數據。比如,某個事務嘗試插入記錄 A,此時該事務還未提交,然后另一個事務嘗試讀取到了記錄 A。


  不可重復讀 :是指在一個事務內,多次讀同一數據。


  幻讀 :指同一個事務內多次查詢返回的結果集不一樣。比如同一個事務 A 第一次查詢時候有 n 條記錄,但是第二次同等條件下查詢卻有 n+1 條記錄,這就好像產生了幻覺。發生幻讀的原因也是另外一個事務新增或者刪除或者修改了第一個事務結果集里面的數據,同一個記錄的數據內容被修改了,所有數據行的記錄就變多或者變少了。


  100、說一下 spring mvc 運行流程?


  spring mvc 先將請求發送給 DispatcherServlet。


  DispatcherServlet 查詢一個或多個 HandlerMapping,找到處理請求的 Controller。


  DispatcherServlet 再把請求提交到對應的 Controller。


  Controller 進行業務邏輯處理后,會返回一個ModelAndView。


  Dispathcher 查詢一個或多個 ViewResolver 視圖解析器,找到 ModelAndView 對象指定的視圖對象。


  視圖對象負責渲染返回給客戶端。


  101、spring mvc 有哪些組件?


  前置控制器 DispatcherServlet。


  映射控制器 HandlerMapping。


  處理器 Controller。


  模型和視圖 ModelAndView。


  視圖解析器 ViewResolver。


  102、@RequestMapping 的作用是什么?


  將 http 請求映射到相應的類/方法上。


  103、@Autowired 的作用是什么?


  @Autowired 它可以對類成員變量、方法及構造函數進行標注,完成自動裝配的工作,通過@Autowired 的使用來消除 set/get 方法。



  十一、Java最新面試題及答案: Spring Boot/Spring Cloud模塊


  104、什么是 spring boot?


  spring boot 是為 spring 服務的,是用來簡化新 spring 應用的初始搭建以及開發過程的。


  105、為什么要用 spring boot?


  配置簡單


  獨立運行


  自動裝配


  無代碼生成和 xml 配置


  提供應用監控


  易上手


  提升開發效率


  106、spring boot 核心配置文件是什么?


  spring boot 核心的兩個配置文件:


  bootstrap (. yml 或者 . properties):boostrap 由父 ApplicationContext 加載的,比 applicaton 優先加載,且 boostrap 里面的屬性不能被覆蓋;


  application (. yml 或者 . properties):用于 spring boot 項目的自動化配置。


  107、spring boot 配置文件有哪幾種類型?它們有什么區別?


  配置文件有 . properties 格式和 . yml 格式,它們主要的區別是書法風格不同。


  properties 配置如下:


  spring. RabbitMQ. port=5672


  yml 配置如下:


  spring:


  RabbitMQ:


  port: 5672


  yml 格式不支持 @PropertySource 注解導入。


  108、spring boot 有哪些方式可以實現熱部署?


  使用 devtools 啟動熱部署,添加 devtools 庫,在配置文件中把 spring. devtools. restart. enabled 設置為 true;


  使用 Intellij Idea 編輯器,勾上自動編譯或手動重新編譯。


  109、jpa 和 hibernate 有什么區別?


  jpa 全稱 Java Persistence API,是 Java 持久化接口規范,hibernate 屬于 jpa 的具體實現。


  110、什么是 spring cloud?


  spring cloud 是一系列框架的有序集合。它利用 spring boot 的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用 spring boot 的開發風格做到一鍵啟動和部署。


  111、spring cloud 斷路器的作用是什么?


  在分布式架構中,斷路器模式的作用也是類似的,當某個服務單元發生故障(類似用電器發生短路)之后,通過斷路器的故障監控(類似熔斷保險絲),向調用方返回一個錯誤響應,而不是長時間的等待。這樣就不會使得線程因調用故障服務被長時間占用不釋放,避免了故障在分布式系統中的蔓延。


  112、spring cloud 的核心組件有哪些?


  Eureka:服務注冊于發現。


  Feign:基于動態代理機制,根據注解和選擇的機器,拼接請求 url 地址,發起請求。


  Ribbon:實現負載均衡,從一個服務的多臺機器中選擇一臺。


  Hystrix:提供線程池,不同的服務走不同的線程池,實現了不同服務調用的隔離,避免了服務雪崩的問題。


  Zuul:網關管理,由 Zuul 網關轉發請求給對應的服務。



  十二、Java最新面試題及答案: Hibernate模塊


  113、為什么要使用 hibernate?


  hibernate 是對 jdbc 的封裝,大大簡化了數據訪問層的繁瑣的重復性代碼。


  hibernate 是一個優秀的 ORM 實現,很多程度上簡化了 DAO 層的編碼功能。


  可以很方便的進行數據庫的移植工作。


  提供了緩存機制,是程序執行更改的高效。


  114、什么是 ORM 框架?


  ORM(Object Relation Mapping)對象關系映射,是把數據庫中的關系數據映射成為程序中的對象。


  使用 ORM 的優點:提高了開發效率降低了開發成本、開發更簡單更對象化、可移植更強。


  115、hibernate 中如何在控制臺查看打印的 SQL 語句?


  在 Config 里面把 hibernate. show_SQL 設置為 true 就可以。但不建議開啟,開啟之后會降低程序的運行效率。


  116、hibernate 有幾種查詢方式?


  三種:hql、原生 SQL、條件查詢 Criteria。


  117、hibernate 實體類可以被定義為 final 嗎?


  實體類可以定義為 final 類,但這樣的話就不能使用 hibernate 代理模式下的延遲關聯提供性能了,所以不建議定義實體類為 final。


  118、在 hibernate 中使用 Integer 和 int 做映射有什么區別?


  Integer 類型為對象,它的值允許為 null,而 int 屬于基礎數據類型,值不能為 null。


  119、hibernate 是如何工作的?


  讀取并解析配置文件。


  讀取并解析映射文件,創建 SessionFactory。


  打開 Session。


  創建事務。


  進行持久化操作。


  提交事務。


  關閉 Session。


  關閉 SessionFactory。


  120、get()和 load()的區別?


  數據查詢時,沒有 OID 指定的對象,get() 返回 null;load() 返回一個代理對象。


  load()支持延遲加載;get() 不支持延遲加載。


  121、說一下 hibernate 的緩存機制?


  hibernate 常用的緩存有一級緩存和二級緩存:


  一級緩存:也叫 Session 緩存,只在 Session 作用范圍內有效,不需要用戶干涉,由 hibernate 自身維護,可以通過:evict(object)清除 object 的緩存;clear()清除一級緩存中的所有緩存;flush()刷出緩存;


  二級緩存:應用級別的緩存,在所有 Session 中都有效,支持配置第三方的緩存,如:EhCache。


  122、hibernate 對象有哪些狀態?


  臨時/瞬時狀態:直接 new 出來的對象,該對象還沒被持久化(沒保存在數據庫中),不受 Session 管理。


  持久化狀態:當調用 Session 的 save/saveOrupdate/get/load/list 等方法的時候,對象就是持久化狀態。


  游離狀態:Session 關閉之后對象就是游離狀態。


  123、在 hibernate 中 getCurrentSession 和 openSession 的區別是什么?


  getCurrentSession 會綁定當前線程,而 openSession 則不會。


  getCurrentSession 事務是 Spring 控制的,并且不需要手動關閉,而 openSession 需要我們自己手動開啟和提交事務。


  124、hibernate 實體類必須要有無參構造函數嗎?為什么?


  hibernate 中每個實體類必須提供一個無參構造函數,因為 hibernate 框架要使用 reflection api,通過調用 ClassnewInstance() 來創建實體類的實例,如果沒有無參的構造函數就會拋出異常。


由于“最常見的208道Java最新面試題及答案”內容太多,本文已滿,請看下文鏈接:


1~30道Java最新面試題及答案請看鏈接:http://www.dabaquan.cn/javazixun/2143.html


31~73道Java最新面試題及答案請看鏈接:http://www.dabaquan.cn/javazixun/2145.html


125~170道Java最新面試題及答案請看鏈接:http://www.dabaquan.cn/javazixun/2148.html


171~208道Java最新面試題及答案請看鏈接:http://www.dabaquan.cn/javazixun/2149.html


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲高清免费在线观看 | 99精品在线看 | 欧美性猛交xx乱大交 | 九九热在线精品视频 | 欧美kkk4444在线观看 | 日日摸夜夜添夜夜添影院视频 | 四虎精品在线视频 | 9热这里只有真品 | 国产成人综合亚洲动漫在线 | 色婷婷在线视频 | 久热re国产手机在线观看 | 国产精品人伦久久 | 九九精品视频在线播放 | 国产二区精品视频 | 我想看一级毛片 | 亚洲免费一区二区 | 欧美久久精品一级c片片 | 亚洲欧洲国产精品久久 | 国产精片 | 欧美午夜寂寞影院安卓列表 | 亚洲天堂区 | 亚洲综合国产精品 | 国产香蕉免费精品视频 | 七七七久久久久人综合 | 91精品国产91久久久久青草 | 亚洲一区二区三区四区 | 老司机深夜影院入口aaaa | 婷婷五 在线播放 | 久久国产亚洲精品麻豆 | 91九色视频在线观看 | 四虎网站在线 | 九九免费精品视频在这里 | 国产精品99久久99久久久看片 | 免费网站日本永久免费观看 | 国产在线自在拍91精品黑人 | 国产精品高清一区二区三区 | 精品视频在线免费观看 | 青娱乐国产在线视频 | 日日夜夜天天人人 | 国产婷婷一区二区三区 | 国产成人亚综合91精品首页 |