1. 程式人生 > >面試題:3年工作經驗 !=!=未看 1

面試題:3年工作經驗 !=!=未看 1

替代 拼接 IT 實現原理 處理 實現 doc 抽象類與接口 字符串拼接

一輪面試下來,由最初的自信什麽都能做,到現在感覺什麽都不會做;但是面對面試官,卻更坦然。

對自己還能記得起來的面試題,稍微整理一下。歡迎指正。

private、默認、protected、public作用範圍
1)private,同類
2)默認,同類、同包
3)protected,同類,同包,子類
4)public,所有

String trim的實現原理
去掉首尾ASCII碼值小於‘ ‘(空格)的字符

StringBuffer、StringBuilder區別
StringBuffer線程安全
StringBuilder線程不安全

抽象類與接口的異同
同:具有抽象方法
異:1)抽象類可以有構造器,非抽象方法,非公有屬性,僅可以單繼承抽象類
2)接口僅有公有抽象方法或者公有靜態常量,可以同時實現多個接口
個人使用經驗:一般在控制層使用抽象類,提取公共初始化方法、框架定制化工具方法等
一般會在業務層使用接口

List、Set、Collections區別
1)List,有序可重復
2)Set, 無序不可重復
3)Collections,集合工具類

列舉鍵值容器
1)HashMap,實現Map,異步
2)Hashtable,實現Map,同時繼承舊的Dictionary類,同步
3)Properties,Hashtable的子類,系統參數

算法:快速排序

技術分享圖片
    public static void quickSort(int a[], int start, int end) {   
        int i, j;   
        i = start;   
        j = end;   
        if ((a == null) || (a.length == 0))   
            return;   
     
        while (i < j) {//查找基準點下標   
            while (i < j && a[i] <= a[j])   
                // 以數組start下標的數據為key,右側掃描   
                j--;   
            if (i < j) { // 右側掃描,找出第一個比key小的,交換位置   
                int temp = a[i];   
                a[i] = a[j];   
                a[j] = temp;   
            }   
            while (i < j && a[i] < a[j])   
                // 左側掃描(此時a[j]中存儲著key值)   
                i++;   
            if (i < j) { // 找出第一個比key大的,交換位置   
                int temp = a[i];   
                a[i] = a[j];   
                a[j] = temp;   
            }   
        }   
        if (i - start > 1) { // 遞歸調用,把key前面的完成排序   
             quickSort(a, start, i - 1);   
        }   
        if (end - j > 1) {   
            quickSort(a, j + 1, end); // 遞歸調用,把key後面的完成排序   
        }   
    }  
技術分享圖片

inner join、left join、 right join區別
1)inner join,兩表字段值相同
2)left join,兩表字段值相同,以及左表字段有值,右表字段值為null
3)right join,與上相反

需要寫sql的試題
一般會讓查出值是最大的,用到子查詢、組函數等
Reads(id, ip, cnt) ip不唯一,查出訪問量最大的前10個ip並排序
select r.ip, r.s, rownum from (select ip, sum(cnt) s from reads group by ip order by s desc) r where r.rownum <= 10

數據庫性能調優
1)經常做查詢條件的字段建立序列
2)關聯查詢時,關聯結果集,替代直接關聯整張表;或者使用exists

jsp表單js校驗
var name = document.getElementById(‘userName‘).value;
if (name == ‘‘)
{
alert(‘用戶名不能為空‘);
return false;
}

Struts的Action是單例嗎
1)Struts1的Action是單例且線程安全
2)Struts2的Action不是單例,針對每一請求產生一個實例

Hibernate與Mybatis區別
1)Hibernate,使用pojo實現orm,查詢速度相比較慢,插入/更新開發容易
2)Mybaits,使用純sql開發,執行效率較快,比較適合統計、多表關聯查詢

Hibernate狀態
瞬時態:new對象
持久態:實例與數據庫中記錄對應,擁有持久化標識
遊離態:session關閉;session打開,遊離態轉成持久態

ibatis中#與$的區別
1)#,變量替換,即prepareStament設置字段值,並可以匹配變量類型
2)$,字符串拼接,需要小心依賴註入

事務特性
1)原子性:諸多操作要麽全做,要麽全不做
2)一致性:事務執行結果使數據庫從一個一致性狀態變到另一個一致性狀態
3)隔離性:事務執行不被其他事務影響
4)持久性:一旦提交,對數據庫的改變是永久性的

spring mvc與struts2的區別
1)struts2封裝展示層與控制層,展示層提供標簽庫及驗證器,請求與應答需要配置文件
2)spring mvc是單純的控制層框架,url實現零配置,運行效率提高

Spring IOC註入方式
1)配置文件中,配置屬性,提供setter/getter方法
2)零配置,@Autowired,統一配置根據名稱或者類型註入

Spring AOP思想
針對請求做統一預處理,如有效性校驗;或後處理,如記錄處理結果;針對方法加before或after處理

Spring事務配置
1)使用tx:advice,針對業務接口層,如以do、get等命名的方法,作事務配置

WebService技術
1)axis、xfire、cxf,基於soap,傳輸xml
2)restful風格

jvm性能調優
tomcat性能調優

面試題:3年工作經驗 !=!=未看 1