面試題彙總

1:一級緩存和二級緩存是什麼?各自的應用場景是什麼?hibernate與mybatis區別?

         一級緩存是默認開啓的,當創建session的時候,爲session分配一塊內存空間,用於存放session查詢的數據,這塊內存就成爲session;

         二級緩存是sessionfactory級別的,便於session對象之間空享數據二級緩存用於經常用到的,很少修改的數據和對象,哪些類是經常用到的很少修改的就使用二級緩存;

        對象數據頻繁共享,數據變化頻率低;

2:享元模式和單例模式的區別是什麼?

      享元模式是對象級別的,可以有多個對象實例,多個變量引用同一個對象實例;

      單例模式是類級別的,一個類只能有一個對象實例;

3:事務管理是在哪一層織入的?(業務層)

4:String常用方法?

1)  string.indexOf(str);找不到返回-1;

String str = "  fan cheng kai  ";
str.length();
str.trim();
str.toUpperCase();
str.toLowerCase();
str.equals("fan");
str.endsWith("kai");
str.valueOf(100);
str.replace("a", "z");
str.substring(3, 8);

5:控制器是單例還是多例的?單例

6:list與數組的區別?

1):數據是大小固定的,而list的大小可以變化;

2):數組可以存儲基本類型數據和引用類型數據(基本類型/引用類型),而list只能存儲引用類型變量;

3):數組只能存儲類型一樣的數據,而list不做要求;

4):list按放入的順序來給數據排序,而數據按照下標排序;

7:list和set如何排序?實現comparable接口或者在collections.sort(list,new comparator())里加入比較器

set沒有排序的方法,可以Set set = new TreeSet(),TreeSet存儲的時候已經是排好序的

8:list中有哪些線程安全集合?vector

9:多態有多少種?如何實現?

      1)繼承;

      2)重寫;

      3)父類引用指向子類對象 

10:數組是如何實現擴容的?

        聲明一個容量大的數組,將原來的數組放入其中,再給元素從新排序

11:list的初始容量的設置?

12:mybatis如何防止sql注入?

13:說說spring容器的有點?

       spring面向接口編程

1):IOC,對象的創建,對象之間的依賴關係交給容器來設置,降低了對象之間的耦合度;

2):AOP面向切面編程,將通用代碼與業務代碼分離,便於開發人員專注於業務的開發和維護;

14:aop的優點和應用?(遇到2次了)      

比如在對每個表結構或者數據對象進行save update (CRUD操作)操作時 需要生成創建者 創建時間 修改者 修改時間 ,如果自己手寫,工作量比較大,這時就需要aop

性能監測,訪問控制,事務管理、緩存、對象池管理以及日誌記錄

將通用代碼與業務代碼分離,便於業務開發及維護

15:容器中爲何設置單例?共享數據

16:一個系統有的能登入?有的登不上?有的登入之後速度很慢?分析原因?

17:exits與in,not exits,not in的區別?

       還有not exits用法要看看

1):外表大 內表小用in,外表小內表達用exits;

2):exits外表用loop 循環 ,每次循環再對內表查詢;

3):in對主查詢使用索引,exits對內表使用索引,not in 不使用索引,not  exits 主子查詢都使用索引;

18:oracle如何實現行轉列?

select sname,  
       wmsys.wm_concat(score) over(partition by sname order by sub) subs  
       from student

select sname, max(subs) subs  
          from (select sname,  
                       wmsys.wm_concat(score) over(partition by sname order by sub) subs  
                  from student) tabs  
         group by sname

select sname,  
       subs,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 5, 'i') 語文,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 2, 'i') 數學,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 4, 'i') 英語,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 3, 'i') 物理,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 1, 'i') 化學  
  from (select sname, max(subs) subs  
          from (select sname,  
                       wmsys.wm_concat(score) over(partition by sname order by sub) subs  
                  from student) tabs  
         group by sname) tab  

19:spring mvc流程?

       1)瀏覽器發出請求,交給前端控制器DispatchServlet處理      

       2)前段控制器通過requestmapping找到對應的控制器組件處理請求

       3)控制器處理請求,返回一個modelAndView對象,封裝了數據和視圖名稱

       4)交給視圖解析器viewResolver根據視圖名稱找到對應的jsp,生成響應界面

20:spring的作用域?

       singleton

       prototype

       session

       request

       global session

21:解釋下spring事務?

       對多表進行crud操作時,要麼都成功,要麼都不成功所執行的一系列動作稱爲事物

       聲明式事務     

22:單例模式從哪幾個方面考慮?

23:說說prototype?

        爲js對象增加屬性和方法

24:轉發與重定向區別?

        轉發是重新發送一次請求,地址欄會發生改變,不會共享數據;重定向是同一個web應用中的一個組件把未完成的任務交給另一個組件,地址欄不變,可以空享數據

25:數據庫約束有幾種?

       unique 

       not null

       primary key

       foreign key

       check

26:sql刪除重複語句?

create sequence s_test start with 1 increment by 1;     

select * from test_info where id in(select min(id) id from test_info t group by t.name) ;

27:java與json之間的轉換?    

     * java對象與json對象互相轉換 
        /** 
         * 創建java對象 
         */  
        Student student = new Student();  
        student.setId(1);  
        student.setName("jag");  
        student.setSex("man");  
        student.setAge(25);  
        student.setHobby(new String[]{"籃球","上網","跑步","遊戲"});  
        /** 
         * java對象轉換成json對象,並獲取json對象屬性 
         */  
        JSONObject jsonStu = JSONObject.fromObject(student);  
        System.out.println(jsonStu.toString());  
        System.out.println(jsonStu.getJSONArray("hobby"));  
        /** 
         * json對象轉換成java對象,並獲取java對象屬性 
         */  
        Student stu = (Student) JSONObject.toBean(jsonStu, Student.class);  
        System.out.println(stu.getName());  
        /** 
         * 創建json對象 
         */  
        JSONObject jsonObj = new JSONObject();  
        jsonObj.put("id",1);  
        jsonObj.put("name","張勇");  
        jsonObj.put("sex","男");  
        jsonObj.put("age",24);  
        //jsonObj.put("hobby",new String[]{"上網","遊戲","跑步","音樂"});  
        //System.out.println(jsonObj.toString());  
        /** 
         * json對象轉換成java對象 
         */  
        Student stud = (Student) JSONObject.toBean(jsonObj,Student.class);  
        System.out.println(stud.getName());         

28:oracle pass fail?

select id,
       name,
       (case
         when to_number(score) >= 60 then
          'pass'
         else
          'fail'
       end) as 等級
  from test_info

select id, name, decode(sign(score - 60), -1, 'fail', 'pass')
  from test_info

29:jsp與servlet區別?

      jsp前端展示,包含html,java代碼,客戶端腳本,servlet 主要運行於服務器端,接受請求,發送響應

30:內部類有幾種?

     靜態內部類 非靜態內部類 局部內部類 匿名內部類

31:servlet的生命週期?

       1)實例化servlet

       2)初始化initi方法 

       3)service方法

      4)destory銷燬

32:標準標籤庫有哪些常見標籤?

       <c:if>

       <c:choose>

       <c:foreach>

33:jdbc中statement與preparedStatement區別?

34hibernatemybatis區別?

    Mybatis需要手寫大量sql語句,hibernate可以自動生成,偶爾會寫一些hql;

    Mybatis的工作量比hibernate大很多;

    涉及到數據庫字段的修改,hibernate修改的地方少,mybatis需要把sql mapping的地方一一修改



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章