1. 程式人生 > >2017 廈門初級Java開發工程師面試題集錦

2017 廈門初級Java開發工程師面試題集錦

Java基礎

基本資料型別有哪些 包裝類有哪些

基本資料型別

包裝類

大小

範圍

預設值

byte

Byte

8

-128 ~ 127

0

boolean

Boolean

1

True/false

False

short

Short

16

-32768 ~ 32基礎768

0

char

Character

16

‘\u0000 - u\ffff ‘

‘\u0000 ’

int

Integer

32

0

long

Long

64

0

float

Float

32

0.0f

double

Double

64

0.0d

包裝類均位於java.lang包, 對於包裝類說,這些類的用途主要包含兩種:

        a、作為和基本資料型別對應的類型別存在,方便涉及到物件的操作。

        b、包含每種基本資料型別的相關屬性如最大值、最小值等,以及相關的操作方法。

1.string和int之間的轉換

    string轉換成int  

       Integer.valueOf(str)返回的是Integer物件,

       Integer.paseInt(str)返回的是int

    int轉換成string:         String.valueOf(12)

2.char轉換成string:       String str=String.valueOf('2')

String , StringBuffer和StringBuilder的區別?

       String類表示內容不可改變的字串。而StringBuffer和StringBuilder類表示內容可以被修改的字串。

       StringBuilder是執行緒不安全的,執行效率高,如果要在類裡面定義成員變數,並且這個類的例項物件會在多執行緒環境下使用,那麼最好用StringBuffer;

字串的常用方法

1.       獲取長度*.length();

2.       比較字串

(1) equals()   //判斷內容是否相同

(2)compareTo()   //判斷字串的大小關係

(3)compareToIgnoreCase(String int)     //在比較時忽略字母大小寫

(4)==     //判斷內容與地址是否相同

(5)equalsIgnoreCase()       //忽略大小寫的情況下判斷內容是否相同

3.       查詢字串中某個位置的字元

public char charAt(int index);   //返回指定位置上的字元,索引index範圍從0開始

4.       查詢指定字串在字串中第一次或最後一詞出現的位置

查詢指定位置的字串第一次出現的位置的方法:

(1)indexOf(String str);//從字串開始檢索str,並返回第一次出現的位置,未出現返回-1 

(2indexOf(String str,int fromIndex);//從字串的fromIndex個字元開始檢索str 

       查詢最後一次出現的位置有兩種方法

(1)public int lastIndexOf(String str); 

(2)public int lastIndexOf(String str,int fromIndex); 

       如果不關心字串的確切位置則可使用: public boolean contains(CharSequence s);

5.       檢查字串的起始字元和結束字元

開始的字串兩種方法

(1)public boolean starWith(String prefix,int toffset);//如果引數prefix表示的字串序列是該物件從索引toffset處開始的子字串,則返回true 

(2)public boolean starWith(String prefix); 

結束的字串方法

(3)public boolean endsWith(String suffix);

6.       擷取子串

(1)public String subString(int beginIndex); 

(2)public String subString(int beginIndex,int endIndex);//返回的字串是從beginIndex開始到endIndex-1的串

例:要返回後4位可以這樣寫

Syetem.out.println(*.subString()(*.length()-4));

7.       字串的替換兩種方法

(1)public String replace(char oldChar,char newChar); 

(2)public String replace(CharSequence target,CharSequence replacement);//把原來的etarget子序列替換為replacement序列,返回新串

(3)public String replaceAll(String regex,String replacement);//用正則表示式實現對字串的匹配

8.       字串的大小寫替轉換

(1)public String toLowerCase(Locale locale); //大轉小

(2)public String toLowerCase(); 

(3)public String toupperCase(Locale locale);       //小轉大

(4)public String toUpperCase()

9.       去除字串中空格

首尾空格       *.trim();

去掉所有空格,包括首尾、中間      str.replace("", "");
              例:Stringstr = " hell o "; 
              String str2 =str.replaceAll(" ", ""); 

10.    字串轉換

將字串轉換成字元陣列  public char[] toCharArray(); 

將字串轉換成字串陣列public String[] split(String regex);//regex 是給定的匹配

將其它資料型別轉化為字串

(1)public static String valueOf(boolean b); 

(2)public static String valueOf(char c); 

(3)public static String valueOf(int i); 

(4)public static String valueOf(long i); 

(5)public static String valueOf(float f); 

(6)public static String valueOf(double d); 

(7)public static String valueOf(char[] data); 

(8)public static String valueOf(Object obj); 

陣列氣泡排序

n個數字來比較,兩層迴圈來巢狀, 外層迴圈N-1,內層迴圈N-1-i,兩兩相比小靠前

List,Map,set的區別是什麼?

List:

(1)可以允許重複的物件

(2)可以插入null元素

(3)是一個有序的容器,保持了每個元素的插入順序,輸出順序就是插入的順序

(4)常用的實現類有,ArrayList,LinkedList和Vector。

ArrayList隨機訪問速度快

LinkedList插入和刪除的速度比較快

Set:

(1)不允許重複的物件

(2)無序的容器,你無法保證每個元素的儲存順序,TreeSet通過Comparator或Comparable維護了一個排序的順序。

(3)只允許一個null元素

(4)set介面最流行的幾個實現類是:HashSet,LinkedHashSet以及TreeSet。最流行的是基於HashMap的實現HashSet;還實現了SortedSet介面

因此TreeSet是一個根據其compare()和compareTo()的定義進行排序的有序容器。

Map:

(1)Map的每條資料都持有兩個物件,也就是一個鍵一個值,Map可能會持有相同的值物件但鍵物件必須為唯一的。

(2)Map不是collection的子介面或者實現類,Map是一個介面。

(3)TreeMap也是通過Comparator或者Comparable維護了一個排序順序。

(4)Map裡可以擁有隨意個null值,但是最多隻能有一個null鍵。

(5)Map介面最流行的幾個實現類HashMap,LinkedHashMap,HashTable

C/S B/S 優缺點

C/S是Client/Server(客戶端/伺服器)的縮寫。客戶端需要安裝專用的客戶端軟體。

優點:   C/S架構的介面和操作可以很豐富。

安全效能可以很容易保證,實現多層認證也不難。

由於只有一層互動,因此響應速度較快。

缺點:   適用面窄,通常用於區域網中。

使用者群固定。由於程式需要安裝才可使用,因此不適合面向一些不可知的使用者。

維護成本高,發生一次升級,則所有客戶端的程式都需要改變。

B/S是Brower/Server(瀏覽器/伺服器)的縮寫,客戶機上只要安裝一個瀏覽器(Browser)

優點:   客戶端無需安裝,有Web瀏覽器即可。
              BS架構可以直接放在廣域網上,通過一定的許可權控制實現多客戶訪問的目的,互動性較強。
              BS架構無需升級多個客戶端,升級伺服器即可。

缺點:   在跨瀏覽器上,BS架構不盡如人意。
                     表現要達到CS程式的程度需要花費不少精力。
                     在速度和安全性上需要花費巨大的設計成本,這是BS架構的最大問題。

反射是什麼?(注意,不是對映)

反射是一種計算機處理方式。有程式可以訪問、檢測和修改它本身狀態或行為的這種能力。能提供封裝程式集、型別的物件。(程式集包含模組,而模組包含型別,型別又包含成員。)開放性和原因連線是反射系統的兩大基本要素。

優點:

1、反射提高了程式的靈活性和擴充套件性。

2、降低耦合性,提高自適應能力。

3、它允許程式建立和控制任何類的物件,無需提前硬編碼目標類。

缺點:

1、效能問題:使用反射基本上是一種解釋操作,用於欄位和方法接入時要遠慢於直接程式碼。因此反射機制主要應用在對靈活性和拓展性要求很高的系統框架上,普通程式不建議使用。

2、使用反射會模糊程式內部邏輯;程式設計師希望在原始碼中看到程式的邏輯,反射卻繞過了原始碼的技術,因而會帶來維護的問題,反射程式碼比相應的直接程式碼更復雜。

前端

get跟post的區別

get是從伺服器上獲取資料,安全性非常低,get傳輸資料小;

post是向伺服器傳送資料,post安全性較高。,post可以傳輸資料量大.

forward和redirect的區別

(1)重位址列來說

forward是伺服器請求資源,伺服器直接訪問目標地址的URL,吧那個url的響應內容讀取出來,然後把這些內容再發給瀏覽器,瀏覽器根本不知道伺服器傳送的內容從哪裡來,所以他的位址列還是原來的地址。

redirect是服務端根據邏輯,傳送的一個狀態碼,告訴瀏覽器重新去請求那個地址,所以位址列顯示的是最新的URL.

(2)從資料共享來說

forwad:轉發頁面和轉發到頁面可以共享request裡面的資料

redirect:不能共享資料

(3)重運用的地方來說

forward:一般用於使用者登入的時候,根據角色轉發到響應的模組

redirect:一般用於使用者登出登入,返回主頁面和跳轉到其他的網站等。

(4)從效率來說

forward:高

redirect:低

JSP九大內建物件

1:Request物件: 客戶端的請求被分裝在request物件中,通過他才瞭解使用者的需求,然後做出響應。

2:response物件:包含了響應客戶請求的有關資訊,但是在JSP中很少用到它。

3:session物件:指的是客戶端和服務端的一次回話,從客戶連到伺服器的一個文字Application開始,直到客戶端與伺服器斷開連線為止。

4:out物件:out物件是JSPWriter類的例項,是向客戶端輸出內容常用的物件。

5:page物件:就是指當前jsp頁面本身,有點象類中的this指標。

6:application物件:實現了使用者間資料共享,可存放全域性變數,它開始於伺服器的啟動,直到伺服器的關閉,在此期間,此物件將一直存在。

7:exception物件:是一個例外物件,當一個頁面在執行時過程中發生了例外,就產生這個物件。

8:pageContext物件:提供了對jsp頁面內所在的物件及名字空間的訪問,也就是說他可以訪問到本頁所在的session,

也可以取本頁所在的application的某一屬性的值,他相當於頁面中所有功能的集大成者。

9:config物件:是在一個Servlet初始化,JSp引擎向他傳遞資訊用的,

此資訊包括Servlet初始化所要用到了引數以及伺服器的有關資訊(通過傳遞一個ServletContext物件)。

使用jquery如何獲取複選框的值

$("document").ready(function(){

$("#btn1").click(function(){

$("[name='checkbox']").attr("checked",'true');//全選

$("[name='checkbox']").removeAttr("checked");//取消全選

$("[name='checkbox']:even").attr("checked",'true');//選中所有奇數

$("[name='checkbox']").each(function(){//反選

var str="";  //輸出選中的值

$("[name='checkbox'][checked]").each(function(){

str+=$(this).val()+"/r/n";

alert(str);

});

});

});

})

如何獲取Select下拉框的值和文字用JS或者jquery寫出來

<select id="test" name="">   
              <option value="1">text1</option>   
             <option value="2">text2</option>   
       </select>

一:javascript原生的方法

1:拿到select物件:var  myselect=document.getElementById("test");

2:拿到選中項的索引:varindex=myselect.selectedIndex ;

3:拿到選中項options的value: myselect.options[index].value;

4:拿到選中項options的text: myselect.options[index].text;

二:jquery方法(前提是已經載入了jquery庫)

1:var options=$("#testoption:selected");  //獲取選中的項

2:alert(options.val());   //拿到選中項的值

3:alert(options.text());  //拿到選中項的文字

Jquery有哪些選擇器

一、基本選擇器
1. id選擇器(指定id元素)
       將id="one"的元素背景色設定為黑色。(id選擇器返單個元素)
       $(document).ready(function () {
              $('#one').css('background', '#000');
       });
2. class選擇器(遍歷css類元素)
       將class="cube"的元素背景色設為黑色
       $(document).ready(function () {
              $('.cube').css('background', '#000');
       });
3. element選擇器(遍歷html元素)
       將p元素的文字大小設定為12px
       $(document).ready(function () {
              $('p').css('font-size', '12px');
       });
4. * 選擇器(遍歷所有元素)
       $(document).ready(function () {
               // 遍歷form下的所有元素,將字型顏色設定為紅色
              $('form *').css('color', '#FF0000');
       });
5. 並列選擇器
       $(document).ready(function () {
              // 將p元素和div元素的margin設為0
              $('p, div').css('margin', '0');
       });
二、 層次選擇器
       1. parent > child(直系子元素)
              $(document).ready(function () {
              // 選取div下的第一代span元素,將字型顏色設為紅色
              $('div > span').css('color', '#FF0000');
       });
2. prev + next(下一個兄弟元素,等同於next()方法)
       $(document).ready(function () {
              // 選取class為item的下一個div兄弟元素
              $('.item + div').css('color', '#FF0000');
              // 等價程式碼
              //$('.item').next('div').css('color', '#FF0000');
       });
3. prev ~ siblings(prev元素的所有兄弟元素,等同於nextAll()方法)
       $(document).ready(function () {
              // 選取class為inside之後的所有div兄弟元素
              $('.inside ~ div').css('color', '#FF0000');
              // 等價程式碼
              //$('.inside').nextAll('div').css('color', '#FF0000');
       });
三、 過濾選擇器
1. 基本過濾選擇器
       ——1.1 :first和:last(取第一個元素或最後一個元素)
       $(document).ready(function () {
              $('span:first').css('color', '#FF0000');
              $('span:last').css('color', '#FF0000');
       });
       ——1.2 :not(取非元素)
       $(document).ready(function () {
              $('div:not(.wrap)').css('color', '#FF0000');
       });
       ——1.3 :even和:odd(取偶數索引或奇數索引元素,索引從0開始,even表示偶數,odd表示奇數)
       $(document).ready(function () {
              $('tr:even').css('background', '#EEE'); // 偶數行顏色
              $('tr:odd').css('background', '#DADADA'); // 奇數行顏色
       });
       ——1.4 :eq(x) (取指定索引的元素)
       $(document).ready(function () {
              $('tr:eq(2)').css('background', '#FF0000');
       });
       ——1.5 :gt(x)和:lt(x)(取大於x索引或小於x索引的元素)
       $(document).ready(function () {
              $('ul li:gt(2)').css('color', '#FF0000');
              $('ul li:lt(2)').css('color', '#0000FF');
       });
       ——1.6 :header(取H1~H6標題元素)
       $(document).ready(function () {
              $(':header').css('background', '#EFEFEF');
       });
2. 內容過濾選擇器
       ——2.1 :contains(text)(取包含text文字的元素)
       $(document).ready(function () {
              // dd元素中包含"jQuery"文字的會變色
              $('dd:contains("jQuery")').css('color', '#FF0000');
       });
       ——2.2 :empty(取不包含子元素或文字為空的元素)
       $(document).ready(function () {
              $('dd:empty').html('沒有內容');
       });
       ——2.3 :has(selector)(取選擇器匹配的元素)
       $(document).ready(function () {
              // 為包含span元素的div新增邊框
              $('div:has(span)').css('border', '1px solid #000');
       });
       ——2.4 :parent(取包含子元素或文字的元素)
       $(document).ready(function () {
              $('ol li:parent').css('border', '1px solid #000');
       });
3. 可見性過濾選擇器
       ——3.1 :hidden(取不可見的元素)
    <script type="text/javascript">
        $(document).ready(function() {
            $('div:hidden').show(500);
            alert($('input:hidden').val());
        });
    </script>
       ——3.2 :visible(取可見的元素)
       <script type="text/javascript">
              $(document).ready(function() {
                     $('div:visible').css('background', '#EEADBB');
              });
       </script>
4. 屬性過濾選擇器
       ——4.1 [attribute](取擁有attribute屬性的元素)
       下面的程式碼,最後一個a標籤沒有title屬性,所以它仍然會帶下劃線
       <script type="text/javascript">
              $(document).ready(function() {
              $('a[title]').css('text-decoration', 'none');
              });
       </script>       
       ——4.2 [attribute = value]和[attribute != value](取attribute屬性值等於value或不等於value的元素)分別為class="item"和class!=item的a標籤指定文字顏色

Ajax預設是非同步還是同步

Jquery中的ajax在預設不寫async情況下,請求為非同步請求,如果專案中在做一項操作之前要進行ajax的驗證,無論同步或者非同步,都必須在驗證通過後,方才進行其他操作,專案前端做驗證,後端也做相應的驗證;前端做驗證是為了減少伺服器壓力和增加使用者體驗,後端做驗證才是為了安全.

Ajax如何把非同步改成同步

在全域性設定Ajax屬性  $.ajaxSetup({ async: false });  再用post,get就是同步的了

Ajax必須用到的引數有哪些

必要引數:      url: url,
                         success:function(data) { //對data值進行判斷   }

Ajax有哪些引數

1.url:  要求為String型別的引數,(預設為當前頁地址)傳送請求的地址。

2.type: 要求為String型別的引數,請求方式(post或get)預設為get。注意其他http請求方法,例如put和delete也可以使用,但僅部分瀏覽器支援。

3.timeout: 要求為Number型別的引數,設定請求超時時間(毫秒)。此設定將覆蓋$.ajaxSetup()方法的全域性設定。

4.async: 要求為Boolean型別的引數,預設設定為true,所有請求均為非同步請求。如果需要傳送同步請求,請將此選項設定為false。注意,同步請求將鎖住瀏覽器,使用者其他操作必須等待請求完成才可以執行。

5.dataType: 要求為String型別的引數,預期伺服器返回的資料型別。如果不指定,JQuery將自動根據http包mime資訊返回responseXML或responseText,並作為回撥函式引數傳遞。可用的型別如下:
         xml:返回XML文件,可用JQuery處理。
         html:返回純文字HTML資訊;包含的script標籤會在插入DOM時執行。
         script:返回純文字JavaScript程式碼。不會自動快取結果。除非設定了cache引數。注意在遠端請求時(不在同一個域下),所有post請求都將轉為get請求。
         json:返回JSON資料。
         jsonp:JSONP格式。使用SONP形式呼叫函式時,例如myurl?callback=?,JQuery將自動替換後一個“?”為正確的函式名,以執行回撥函式。
         text:返回純文字字串。

6.success:要求為Function型別的引數,請求成功後呼叫的回撥函式,有兩個引數。
              (1)由伺服器返回,並根據dataType引數進行處理後的資料。
              (2)描述狀態的字串。
                    function(data,textStatus){
                          //data可能是xmlDoc、jsonObj、html、text等等
                          this;  //呼叫本次ajax請求時傳遞的options引數
                    }

7.error: 要求為Function型別的引數,請求失敗時被呼叫的函式。該函式有3個引數,即XMLHttpRequest物件、錯誤資訊、捕獲的錯誤物件(可選)。ajax事件函式如下:
              function(XMLHttpRequest, textStatus,errorThrown){
                    //通常情況下textStatus和errorThrown只有其中一個包含資訊
                     this;   //呼叫本次ajax請求時傳遞的options引數
             }

c:forEach varStatus屬性有哪些方法:

current當前這次迭代的(集合中的)項

index當前這次迭代從 0 開始的迭代索引

count當前這次迭代從 1 開始的迭代計數

first用來表明當前這輪迭代是否為第一次迭代的標誌

last用來表明當前這輪迭代是否為最後一次迭代的標誌

begin屬性值

end屬性值

step屬性值

c:forEach如何判斷是最後一次迴圈

資料庫

SQL分頁語句

適用於 SQLServer

SELECT TOP 頁大小 * FROM table1 WHERE id NOT IN(

SELECT TOP 頁大小*(頁數-1)id FROM table1 ORDER BY id )
ORDER BY id

適用於MySql

select * from table limit (頁碼-1)*頁面大小, 頁面大小

適用於oracle(根據ROWID來分)

select * from t_xiaoxiwhere rowid in(

select rid from (

select rownum rn,rid from(

select rowid rid,cid from  t_xiaoxi  order by cid desc)

where rownum<10000)

where rn>9980)

order by cid desc

Sql中什麼時候使用in

Where之後條件有多個值時使用

MySQL左連線語句,左連線與右連線的區別

左外連線:

select a.a, a.b, b.c, b.d, b.f from a LEFT(OUT )JOIN b ON a.a = b.c

left join是以左表為準的.換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜尋條件的記錄.

右外連線:

SELECT * FROM A RIGHT JOIN B ONA.aID = B.bID

Right join是以右表(B)為基礎的,A表不足的地方用NULL填充.

資料庫如何優化

1.      分散資料檔案,可以提高讀寫效率:建立多個數據檔案,把索引放到獨立的檔案中等。

2.      及時轉儲歷史資料,提高寫效能。

3.      優化程式的SQL語句

事務/多執行緒

事務是什麼

事務是指訪問並可能更新資料庫中各種資料項的一個程式執行單元。

事務的註解:@Transactional;當標於類前時, 標示類中所有方法都進行事物處理,當類中某些方法不需要事物時在方法上新增@Transactional(propagation=Propagation.NOT_SUPPORTED)容器不為這個方法開啟事務.

什麼時候用到事務

當Jdbc程式向資料庫獲得一個Connection物件時,預設情況下這個Connection物件會自動向資料庫提交在它上面傳送的SQL語句。若想關閉這種預設提交方式,讓多條SQL語句是在同一時間共同執行的時,我們就應該為這多條語句定義一個事務。

建立多執行緒的方式有幾種

1.      通過繼承Thread類建立執行緒:

(1)    首先定義一個類去繼承Thread父類,重寫父類中的run()方法。在run()方法中加入具體的任務程式碼或處理邏輯。

(2)    直接建立一個ThreadTest類的物件,也可以利用多型性,變數宣告為父類的型別。呼叫start方法,執行緒啟動,隱含的呼叫run()方法。

2.      通過實現Runnable介面

(1)    建立執行緒定義一個類實現Runnable介面,重寫介面中的run()方法。在run()方法中加入具體的任務程式碼或處理邏輯。

(2)    建立Runnable介面實現類的物件。建立一個ThreadTest類的物件,需要封裝前面Runnable介面實現類的物件。(介面可以實現多繼承)呼叫Thread物件的start()方法,啟動執行緒

用什麼方法讓執行緒停止?執行緒停止後用什麼方法開始繼續執行

答:Wait(等待執行)、sleep(延時效果)、interrupt(終止執行緒)、喚醒wait用notify定時器待做;

虛擬機器

什麼是JVM?JVM的工作原理?

JVM:Java虛擬機器,jvm是一種用於計算裝置的規範,它是一個虛構出來的計算機,是

通過在實際的計算機上模擬模擬各種計算機功能來實現的。

虛擬機器可以單獨的執行,可以一臺電腦都是開多個程式。

Java平臺的無關性,就是使用Java虛擬機器是實現這一特點的關鍵。

JVM的工作原理:

(1)java原始碼 

(2)Java編譯器

(3)Java位元組碼(.clas檔案)

(4)位元組碼本地或網路

(5)類裝載器位元組碼的驗證(Java的類庫)

(6)(Java虛擬機器)Java直譯器,即編譯器,執行期系統。

(7)作業系統。

(8)硬體

jdk和jre的區別

JDK開發工具包

JRE執行時的類庫

JVM(Java虛擬機器)

JDK包含JRE包含JVM

後臺框架

spring框架配置檔案中有哪些東西

1:配置資料來源 (driverClassName, url , username , password)
2:配置bean(sessionFactoryBean)
3:配置事務(transactionManager)

Spring和springmvc的區別 

Spring是一個輕量級的控制反轉(IoC)和麵向切面(AOP)的容器框架;

Spring mvc是一個MVC開源框架,屬於spring,spring需要有spring的架包作為支撐才能跑起來.

Aop和ioc的工作原理

aop是面向切面程式設計,語言、框架的發展都是一步步的分離、解耦的過程,來降低程式之間的依賴性和耦合性,使其達到標準、易維護、易理解、易複用等目的。java中一般會說這樣的一句話:“一個方法只做一件事情”。這樣易複用、易理解、易維護。但是現在很多方法無法做到只做一件事情,我們的方法除了包含業務邏輯程式碼外還需要加例如日誌、事務等相關操作的程式碼或程式碼引用。這樣我們一個方法就不是做一件事情,而是做了業務邏輯、日誌、事務三件事情。於是我們想辦法把日誌、事務定義成一個切面,這樣可以在程式碼需要日誌和事務的時候切入程式。來達到一個方法只做一件事情的目的。

mvc是什麼

MVC(模型Model-檢視View-控制器Controller)是一種設計模式,當用戶發出請求的時候,控制器根據請求來選擇要處理的業務邏輯和要選擇的資料,再返回去把結果輸出到檢視層,這裡可能是進行重定向或轉發等.

模型:模型是應用程式的主題部分,模型表示業務資料或者業務邏輯

檢視:檢視是應用程式中使用者介面相關部分,是使用者看到並互動的介面

控制器:控制器工作就是根據使用者輸入,控制器使用者介面資料顯示和更新model物件狀態。

Springmvc的註解有哪些,請講幾個常用的出來

1)[email protected] 負責註冊一個bean 到spring 上下文中,bean 的ID 預設為類名,名稱開頭字母小寫,你也可以自己指定

2). @RequestMapping用來定義訪問的URL,你可以為整個類定義一個@RequestMapping,或者為每個方法指定一個。 把@RequestMapping放在類級別上,這可令它與方法級別上的@RequestMapping註解協同工作,取得縮小選擇範圍的效果。@RequestMapping用於整個類不是必須的,如果沒有配置,所有的方法的訪問路徑配置將是完全獨立的,沒有任何關聯。

3)[email protected]用於方法中的引數,表示方法引數繫結到地址URL的模板

4)[email protected] 應用於方法引數,引數可以在頁面直接獲取,相當於request.setAttribute(,) ,應用於方法,將任何一個擁有返回值的方法標註上 @ModelAttribute,使其返回值將會進入到模型物件的屬性列表中. 應用於方法引數時@ModelAttribute("xx"),須關聯到Object的資料型別,基本資料型別 如:int,String不起作用 
       5)[email protected] 直接放在方法上,表示返回型別將會直接作為HTTP響應位元組
流輸出(不被放置在Model,也不被攔截為檢視頁面名稱)。可以用於ajax。

6)[email protected]是一個可選引數,例如:@RequestParam("id") 註解,所以它將和URL所帶引數 id進行繫結 ;

攔截器裡面的三個方法名稱叫什麼

SpringMVC的攔截器提供了HandlerInterceptorAdapter抽象類,對應提供了三個preHandle,postHandle,afterCompletion方法。

struts框架執行流程

1.使用者的發出請求,(比如http:localhost:8080/Struts2/helloworld/helloworldAction.action)請求會被Tomcat接收到,Tomcat伺服器來選擇處理這個請求的Web應用,那就是由helloworld這個web工程來處理這個請求。

2.Web容器會去讀取helloworld這個工程的web.xml,在web.xml中進行匹配,由struts2這個過濾器來進行處理(也就是StrutsPrepareAndExecuteFilter),根據Filter的配置,找到FilterDispatcher(Struts2的排程中心)

3.然後會獲取FilterDispatcher例項,然後回撥doFilter方法,進行真正的處理( FilterDispatcher是任何一個Struts2應用都需要配置的,通常情況下,web.xml檔案中還有其他過濾器時,FilterDispatcher是放在濾器鏈的最後;如果在FilterDispatcher前出現瞭如SiteMesh這種特殊的過濾器,還必須在SiteMesh前引用Struts2的ActionContextCleanUp過濾器)這時FilterDispatcher會將請求轉發給ActionMapper.

4.如果需要Struts2處理,ActionMapper會通知FilterDispatcher,需要處理這個請求,FilterDispatcher會停止過濾器鏈以後的部分,(這也就是為什麼,FilterDispatcher應該出現在過濾器鏈的最後的原因)。然後建立一個ActionProxy例項,這個物件作為Action與xwork之間的中間層,會代理Action的執行過程。

5.ActionProxy物件在被創建出來的時候,並不知道要執行哪個Action,它手裡只有從FilterDispatcher中拿到的請求的URL。而真正知道要執行哪個Action的是ConfigurationManager。因為只有它才能讀取我們的strtus.xml

6.ActionProxy知道自己該幹什麼事之後(執行哪個Action、相關的攔截器以及所有可能使用的result資訊),然後馬上建立ActionInvocation物件了,ActionInvocation物件描述了Action執行的整個過程。

7.在execute方法之前,好像URL請求中的引數已經賦值到了Action的屬性上,然後執行Action的execute方法,然後根據execute方法返回的結果(Result),去struts.xml中匹配選擇下一個頁面,根據結果(Result)找到頁面後,在頁面上(有很多Struts2提供的模板),可以通過Struts2自帶的標籤庫來訪問需要的資料,並生成最終頁面.

Mybatis中sql語句的#跟$的區別

使用#{}意味著使用的預編譯的語句,可以防止sql注入,在組成sql語句的時候把引數預設為字串;

使用${}時的sql不會當做字串處理,是什麼就是什麼;

mybitis insert語句如何返回主鍵

在使用MyBatis做持久層時,insert語句預設是不返回記錄的主鍵值,而是返回插入的記錄條數;如果業務層需要得到記錄的主鍵時,可以通過配置的方式來完成這個功能

Hibernate

答:是一個開源的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,它將Pojo與資料庫表建立對映關係,是一個全自動的ORM框架,

hibernate可以自動生成sql語句,自動執行,使得Java程式設計師可以隨心所欲的使用物件程式設計思維來操縱資料庫。

專案經驗

許可權功能如何實現

根據使用者角色取出該角色所有許可權,並對使用者進行許可權分配;

1. 新增使用者時,是要根據使用者角色進行分配許可權的 一定記得批量新增;

2. 修改使用者角色也要記得重新分配使用者許可權;

3. 最後要優化的就是根據使用者查詢許可權,查詢角色許可權,使用者許可權,返回到前端,前端進行處理;首先根據 角色ID查詢出許可權,然後子查詢使用者是否有該許可權,有返回1 沒有返回 0;

報表如何實現

finereport報表軟體的匯入報表過程:
讀取某一路徑下的模板cpt檔案,並將其轉為WorkBook物件,有兩種讀取報表的方法:
1.1 絕對路徑讀取模板
       // 讀取模板
       File cptfile = newFile("C:\\FineReport6.5\\WebReport\WEB-INF\\reportlets\\gettingstarted.cpt");
       TemplateImporter tplimp = newTemplateImporter();
       WorkBook workbook =tplimp.generateTemplate(cptfile);
1.2 讀取報表執行環境下的模板
       //定義報表執行環境,讀取環境下的報表
       String envPath = "C:\\FineReport6.5\\WebReport \\WEB-INF";
       FRContext.setCurrentEnv(newLocalEnv(envPath));
       TemplateWorkBook workbook =FRContext.getCurrentEnv().readTemplate("gettingstarted.cpt");

相關推薦

2017 廈門初級Java開發工程師試題集錦

Java基礎 基本資料型別有哪些 包裝類有哪些 基本資料型別 包裝類 大小 範圍 預設值 byte Byte 8 -128 ~ 127 0 boolean Boolean 1 True/false False s

Java開發工程師試題1

時間2019-1-2 地點上海 package service; import java.text.SimpleDateFormat; import java.util.Date; public class test1 { public static void main(String[]

試題】Python高級開發工程師試題

http ges log com .com blog mage 回復 image 線上面試題,有空整理答案,歡迎大家回復答案 【面試題】Python高級開發工程師面試題

螞蟻金服初級Java電話面試 試題

ringbuf str eem 螞蟻 ren 電話 什麽 死鎖 hashmap 1.String, StringBuffer, StringBuilder 的區別,為什麽String 不可改變,StringBuilder可以改變? 2.HashMap 是不是有序的,有哪些有

大型互聯網公司Java開發崗位試題歸類!

項目 block 高並發 回收機制 開源 泄露 ash pst 文件 ?一、Java基礎 1. String類為什麽是final的。 2. HashMap的源碼,實現原理,底層結構。 3. 說說你知道的幾個Java集合類:list、set、queue、map實現類咯。。。

Java開發崗位試題整理

線程數 本地 簡單 線程間通信 syn 低耦合 刪除 不同方法 ola 一、Java基礎 String類為什麽是final的 HashMap的源碼,實現原理,底層結構。 說說你知道的幾個Java集合類:list、set、queue、map實現類。 描述一下A

Java 開發必備試題詳解(技術+人事)

作為一名程式猿,無論新手還是老司機,面試求職始終是你需要直面的一件事情。首先梳理自己的知識體系,針對性準備,會有事半功倍的效果。我們往往會把重點放在技術上,而忽略了人事部分,實際上人事面試也會影響到最終的結果,把每一個環節做好,最終的結果自然不會差。 本 Chat 就為大家提供了一份詳盡的 Jav

360服務端開發工程師試題:TCP的三次握手

TCP是面向連線的協議。運輸連線是用來傳送TCP報文的。TCP運輸連線的建立與釋放是每一次面向連線的通訊中必不可少的過程。因此,運輸連線就有三個階段,即連線建立、資料傳送、連線釋放。 在TCP連線建立過程中要解決以下幾個問題: (1)要使每一方能夠確知對方的存在。 (2

大資料開發工程師試題以及答案整理(一)

kafka的message包括哪些資訊 一個Kafka的Message由一個固定長度的header和一個變長的訊息體body組成 header部分由一個位元組的magic(檔案格式)和四個位元組的CRC32(用於判斷body訊息體是否正常)構成。當magic的值為1的時候,會

大資料開發工程師====試題(五)

2)HashMap和HashTable,ArrayList和Vector,ArrayList和LinkedList的區別 1 HashMap不是執行緒安全的 hashmap是一個介面 是map介面的子介面,是將鍵對映到值的物件,其中鍵和值都是物件,並且不能包含重複鍵,但可以

大公司網易遊戲遊戲開發工程師試題之做題問題

作者:雲夢澤 時間:2013.10.21 出處:宣告: 題目:一次考試,有25人蔘加,有ABC三題,每人至少會做一題,在不會做A的人中,會做B的人是會做C的人的兩倍,在會做A的人中,只會做A的人比其他的少一人,不會做A的人和只會做A的人數相等,問只會做B的有幾人? 個人覺

後臺開發工程師試題

1、理論基礎知識 · JAVA基礎 · 通用問題 · 開放式問題 · 併發問題 [↑]Java基礎知識: 三家公司都問了java集合類的相關概念,各種集合結構之間內在區別: ArrayList,Vector,LinkList區別 HashMap

大資料開發工程師試題(附答案)

之前採訪畢業生的時候,有小夥伴提出意見,想看小編分享一些面試的乾貨,於是小編不負眾望,今天給大家帶來了一篇大神級面經,希望可以幫助即將畢業或正在找工作的小夥伴兒們,祝你們早日找到心儀的工作! 在這裡我還是要推薦下我自己建的大資料學習交流qq裙:458345782, 裙 

Java開發崗位試題歸類彙總六:多執行緒

1、Java建立執行緒之後,直接呼叫start()方法和run()的區別 答:start()用來啟動一個執行緒,這時此執行緒處於就緒(可執行)狀態,並沒有執行,一旦得到cpu時間片,就開始執行run()方法,這裡run()稱為執行緒體,它包含了要執行的這個執行緒的內容,Ru

web前端開發工程師試題大全

最近看到web群裡的人,特別關心面試web前端開發工程師時,面試官都會問那些問題,今天我整理了一份,web前端開發工程師崗位面試題的大全,大家可看看,做為參考。 一、HTML 常見題目 01、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義? 02、H

web前端開發工程師-試題彙總

最近更新時間:2017年1月5日15:19:53    已經參加工作(或實習)的同學都知道,在進入每一家公司之前,都需要經歷入職前的洗禮——面試。面試對於每一位技術人員來說都是一次挑戰,因為面試的難度深

java 高階工程師試題

1、自我介紹 2、介紹你最熟悉的一個專案 3、講下這個 XSS 攻擊 4、HashMap 的結構?HashMap 、 HashTable 和 ConcurrentHashMap 的區別? 5、HashMa

Java高階工程師試題總結及參考答案

一、面試題基礎總結 1、 JVM結構原理、GC工作機制詳解 答:具體參照:JVM結構、GC工作機制詳解     ,說到GC,記住兩點:1、GC是負責回收所有無任何引用物件的記憶體空間。 注意:垃圾回收回收的是無任何引用的物件佔據的記憶體空間而不是物件本身,2、GC回收機制

java高階工程師試題總結

、面試題基礎總結 1、 JVM結構原理、GC工作機制詳解 答:具體參照:JVM結構、GC工作機制詳解     ,說到GC,記住兩點:1、GC是負責回收所有無任何引用物件的記憶體空間。 注意:垃圾回收回收的是無任何引用的物件佔據的記憶體空間而不是物件本身,2、GC回收機制的

.Net開發工程師試題

1、寫程式說明abstract class和interface的作用。 2、將1-100隨機插入長度為100的整形陣列,並保證資料不重複和連續。 3、用Linq和Lambda獲取2個數組中的相同部分,並將這些值存入一個新的陣列。 4、獲取陣列中相加和為20的所有值,比如輸入