深圳Java開發面試總匯


所有題目答案都不完整,這些針對個人所整理的

SpringBoot有哪些核心注解和配置以及和spring的區別?

https://www.cnblogs.com/lin02/p/11480535.html

https://www.cnblogs.com/lin02/p/11469541.html

springBoot中開發中配置文件和測試以及生產如何配置?

1.首先在resources目錄下創建完整的配置文件(包括測試、開發、生產環境下的相關配置文件)

2.然后創建一個application.yml文件,因為springboot項目啟動的時候會默認加載該配置文件,解析其中的內容

3.在application.yml中配置一下內容(Spring.profiles.active = dev[配置文件的后綴]),springboot在啟動時會自動解析你配置的文件application-dev.yml文件下的配置

Mybatis如何分頁?

  1. 使用數組分頁查詢出全部數據返回,然后再list中截取需要的部分
  2. Sql分頁mysql(limit分頁關鍵字)、oracle(rownum偽列)
  3. Pagehelper插件 首先得導入maven依賴

Mybatis 如何判斷為null?

使用動態if標簽<if test=”type != null and type !=”’”></if>      

Mybaits $#的區別?

#是預編譯處理 $是字符串替換

Mybatis在處理#會把#{}替換成,調用PreparedStatement的set方法來賦值

Mybatis在處理${} 會替換成變量值

#可以防止sql注入,提高安全性

事務的四大特性?

事務就是將諾干個相關操作綁定在一起作為一個邏輯工作單元的sql語句分組,如果任何一個語句操作失敗那么整個操作就會失敗,以后操作失敗就會回滾到操作前狀態,為了保證要么執行要么不執行,就可以使用事務。

事務具有一致性,原子性,隔離性和持久性。即ACID

是實現事務的關鍵,保證事務的完整性和並發性。

你對存儲過程的理解 ?

https://www.cnblogs.com/lin02/p/11583382.html

類似函數,封裝了某些特定功能的SQL語句集,經過編譯保存在數據庫中的一個特殊對象,存儲過程不能出現在SQL中。

String有哪些方法?

equals:字符串是否相同
indexOf:目標字符或字符串在源字符串中位置下標
lastIndexOf:目標字符或字符串在源字符串中最后一次出現的位置下標
valueOf:其他類型轉字符串
charAt:獲取指定下標位置的字符
isEmpty:字符串長度是否為0
format:格式化字符串
join:以某字符串,連接某字符串數組
length:字符串字符數
replace:字符串替換
replaceFirst:替換第一個出現的目標字符串
split:以某正則表達式分割字符串
substring:截取字符串
toLowerCase:字符串轉小寫
toUpperCase:字符串轉大寫
trim:去字符串首尾空格

接口和抽象類?

1、抽象類使用abstract修飾;接口使用Inteface修飾

2、抽象類中的抽象方法只有方法體,沒有具體實現;接口中只能是抽象方法

3、抽象類只能單繼承,多實現,接口可以多繼承其他接口,但不能實現接口,和不能繼承其他類

4、抽象類繼承自Object,接口不是。

5、抽象類中有構造器,接口中沒有構造器

6、抽象類可以有靜態的方法,接口不可以。

7、抽象類中可以有final的方法(非抽象方法),接口中不能有final的方法。

怎么解決同步?

  加上synchronized關鍵字

  也可以使用特殊域變量volatile關鍵字

Form表單多次提交怎么解決?

  1. js禁掉提交按鈕—當然如果客戶端把js給禁止掉了就無效了
  2. 使用驗證碼
  3. 使用令牌機制token+session(技術一個隨機數)

Js如何創建對象?

  1. 使用new關鍵字(工廠模式)

Js有哪些設計模式?

單例模式:保證一個類只有一個實例

適配器模式:解決兩個軟件實體間的不兼容問題

裝飾者模式:為對象動態加入行為,經過多重保裝,可以形成一條裝飾鏈

等等等好多

 什么是檢查性異常?

  1. 檢查性異常必須使用try catch或throws等關鍵字進行處理,否則編譯器會報錯
  2. 非檢查性異常一般代碼寫的不夠嚴謹而導致的問題,可以修改代碼解決
  3. 所有的檢查性異常都繼承自Exception
  4. 所有的非檢查性異常都是繼承自RuntimeException

什么是多態?

就是同一種事務的不同種表現形式。

例如重寫、重載、父類的聲明指向子類的對象。可變參數。

Redis有哪些類型?

String這是最簡單的類型,就是普通的set和get,做簡單的Key value緩存。

Hash 這個是類似於map的一種結構

List  是有序列表

Set  是無序集合,自動去重。

例如可以利用set的交集可以把兩個人的粉絲列表整一個交集,

看看兩人的共同好友是誰的一個功能。         

Sorted set是有序的set,也去重,自動根據分數排序。

Oracle中去重的方式有哪些?

distinct方法

group by分組

Union方法

equals和==的區別?

==如果用在基本數據類型上是同時比較內存地址和值,如果是引用類型==比較的是內存地址

equals方法是object類的方法,默認比較內存地址,如果重寫了安裝重寫的規則進行比較

 

Oraclemysql的區別?

他們都是關系型數據庫,也都是比較流行的數據庫。

  1. oracle是收費的,mysql是不收費的。
  2. 分頁查詢不同,mysql用limit關鍵字(select * from dual limit 開始位置,記錄個數),oracle用rownum偽列實現代碼比較繁瑣。
  3. 主鍵自增不同,mysql是員工自動增長的數據類型,插入數據時,不需要管理自己會自動增長。Oracle需要通過建立一個自動增長的序列號來完成自動增長。
  4. 安裝空間大小不同,mysql安裝完也就一百多兆子,而oracle有3G左右,且使用的時候oracle占特別大的內存空間。
  5. Sql的語法不同。

面向對象的理解?

抽象、繼承、封裝、多態性。

抽象抽象技術忽略一個主題中與當前目標無關的哪些方面,以便更充分的注意與當前目標有關的方面。抽象並不是打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。

繼承子類擁有父類一切非私有的方法。

封裝封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描述繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。

多態性同一種事務的不同種表現形式。

重寫與重載有什么區別?

重寫:發生在子類和父類之中,方法名相同、參數列表相同、返回值相同不能是final的方法、重寫的方法不能比父類方法更為嚴格的修飾符權限、重寫的方法所拋出的異常不能比父類更大

如果父類私有的方法,子類擁有相同的方法,子類不屬於重寫父類的方法,該方法屬於子類的新方法。

重載:發生在同一個類之中,方法名相同、參數列表不相同(個數、類型)、與返回值無關、與final無關、與修飾符無關、與異常無關。

Linux的基礎命令?

1.查看進程 Ps | -ef|grep進程號 2.Kill命令用於種植進程 Kill -9[id]
不止這些

Java的設計模式?

創建型模式(5種):工廠模式、抽象工廠模式、單例模式、建造者模式、原型模式。

結構性模式(7種):適配器模式、裝飾者模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

行為性模式(11種):測略模式、板塊方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

項目中用到了哪些模式?

比如spring中的控制反轉IOC和依賴注入DI

工廠設計模式:通過BeanFatory創建對象。

(singleton)單例設計模式:保證一類對象中只有一個實例。

代理設計模式:AOP就是基於動態代理的,而動態代理又基於Java反射機制。

觀察者模式:它表示的是一種對象之間的依賴關系,當一個對象發生改變的時候,這個對象所依賴的對象也會做出反應。

適配器模式:將一個接口轉換成客戶希望的另一個接口,適配器模式使接口不兼容的哪些類可以一起工作,其名未包裝器。

裝飾者模式:可以動態的給對象添加一些額外的屬性或行為。

o工廠設計模式 : Spring使用工廠模式通過 BeanFactory、ApplicationContext 創建 bean 對象。
o代理設計模式 : Spring AOP 功能的實現。
o單例設計模式 : Spring 中的 Bean 默認都是單例的。
o模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 結尾的對數據庫操作的類,它們就使用到了模板模式。
o包裝器設計模式 : 我們的項目需要連接多個數據庫,而且不同的客戶在每次訪問中根據需要會去訪問不同的數據庫。
         這種模式讓我們可以根據客戶的需求能夠動態切換不同的數據源。 o觀察者模式: Spring 事件驅動模型就是觀察者模式很經典的一個應用。 o適配器模式 :Spring AOP 的增強或通知(Advice)使用到了適配器模式、spring MVC 中也是用到了適配器模式適配Controller。

你是如何理解全棧式開發?

Arraylistlinklist的區別?

首先他們都是接口List的實現類,數據都是有序可重復的。

ArrayList采用的是數組形式保存對象的,訪問速度更快,而Linklist的插入和刪除更快

你對未來的職業規划?

大部分面試官司都會問你是否有職業規划,這個問題的背后是了解你的求職動機和對自己中長期職業發展的思考。在回答這個問題之前,要對自己有個清晰的認識,知道自己想往哪個方向發展以及未來有什么計划,要給面試官一種積極向上,好學上進,有追求,有規划的感覺,面試官喜歡有規划的求職者。

Java中有哪四大域?

Page、request、session、application

PageContext pageConext 存放的數據在當前頁面有效。開發時使用較少。(page域)

ServletRequestrequest 存放的數據在一次請求(轉發)內有效。使用非常多。

HttpSessionsession 存放的數據在一次會話中有效。使用的比較多。

如:存放用戶的登錄信息,購物車功能。

ServletContextapplication 存放的數據在整個應用范圍內都有效。因為范圍太大,應盡量少用。

Hibernate中有幾種狀態?

臨時狀態、持久化狀態、游離狀態、刪除狀態

Spring IOC注入有幾種方式?

set注入、構造器注入、靜態工廠注入、實例工廠注入

Springmvc的執行流程?

https://www.cnblogs.com/lin02/p/11469621.html

Hibernate的執行流程以及怎么使用?

https://www.cnblogs.com/lin02/p/11393719.html

 筆試題:小張承諾:如果天不下雨,我一定去聽音樂會。

https://wenku.baidu.com/view/b0a6ea305b8102d276a20029bd64783e09127d92.html

有1000瓶水,3個瓶子可以再換1瓶,一共可以喝多少瓶?

https://www.cnblogs.com/dreamkunk/p/6528630.html

string、stringbuffer、stringbuilder的區別?

首先說一下執行速度,在這方面運行速度快慢:String<StringBuffer<StringBuilder

String最慢的原因String為字符串常量,StringBuffer和StringBuilder均為字符串變量String是final的類

在線程安全上,StringBuffer是線程安全的,StringBuilder是線程不安全的

HashMap和Hashtable的區別?

Map用於存儲鍵值對,根據鍵得到值,因此不允許鍵重復,值可以重復。

HashMap是一個最常用的Map,它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度

HashMap不支持線程的同步,即任意時刻可以有多個線程同時寫HashMap,可能會導致數據的不一致。如果需要同步,可以使用Colletions.synchronizedMap(HashMap map)方法使HashMap具有同步的能力

HashtableHashMap類似,不同的是

不允許記錄的鍵或值為空,支持線程的同步,即任意時刻只有一個線程能寫Hashtable,然而,這也導致Hashtable寫入時比較慢

LinkedHashMap保存了記錄的插入順序,在使用迭代器遍歷時,先得到的記錄肯定是先插入的。遍歷速度會比hashmap,有hashmap的全部特性。

Treemap能夠把它保存的記錄根據鍵排序,默認是按升序,也可以指定排序的比較器。在使用迭代器遍歷時,得到的記錄是排過序的鍵和值不能為空

如何創建一個線程?線程的創建方式有哪些?ThreadLolocal有什么用?

繼承類Thread->重寫run方法->創建對象->啟動線程start()

  1. 繼承Thread類,並重寫它的run方法
  2. 實現Runnanle接口,並重寫它的run方法
  3. 使用線程池例如用Executor框架

ThreadLocal為每個使用該便量的線程提供獨立的變量副本,所以每一個線程都可以獨立地改變自己的副本,而不影響其他線程所對應的副本。

  1. 方便同一個線程使用某一對對象,避免不必要的參數傳遞
  2. 線程間數隔離
  3. 獲取數據庫連接、session、關聯id

Xml文檔有幾種形式?他們之間有何本質區別?

兩種形式dtd/schema

本質區別:schema本身是xml的,可以被xml解析器解析(這也是從DTD上發展schema的目的)

Statement和PreparedStatement的區別?如何做批量處理?

https://www.cnblogs.com/tongxuping/p/6880314.html

PreparedStatement接口繼承Statement接口

Statement可以包含不同的sql語句

PreparedStatement可以防止sql注入攻擊、采取預編譯機制,效率高、如果發送的sql語句主干部分相同,主干部分只需寫一次,每次發送的只是參數部分。

Websocket的理解?

WebSockethtml5出的東西(協議),並且是一個持久化的協議

協議:

UDP:不需要建立連接,不可靠,速度快,數據大小64kb

TCP:需要建立連接,形成傳輸數據的通道,三次握手,可靠,速度比不上UDP

Socket:是為網絡服務的一種機制

 


免責聲明!

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



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