陸金所面試題
今天下午去陸金所面試java。問得是java基礎與框架,但是自己沒有背面試寶典,很多都回答不好。
1.hashmap 與 hashtable 的區別 以及 hashmap的實現原理
arraylist與liknedlist 的區別與原理
Comparable和Comparator介面是幹什麼的?列出它們的區別。
2.多執行緒:volatile 關鍵字與記憶體可見性 CAS 演算法 同步容器類 ConcurrentHashMap鎖分段機制
object 中 的wait sleep notify
寫一個多執行緒的生產者與消費者的例子
3.jvm 模型 以及類載入機制 棧記憶體溢位 記憶體溢位
4.springMVC 模型原理
5.springIOC AOP 動態代理機制
6.mybatis原理 #、$ 的區別 分頁 resulttype與resultmap的區別
resultType:sql語句的結果集封裝型別
比如 : resultType="User"
看出來了吧,resultType和resultMap都對映到了User物件中
說說不同點吧,resultType 和restltMap
restulyType:
1.對應的是java物件中的屬性,大小寫不敏感,
2.如果放的是java.lang.Map,key是查詢語句的列名,value是查詢的值,大小寫敏感
3.resultMap:指的是定義好了的id的,是定義好的resyltType的引用
注意:用resultType的時候,要保證結果集的列名與java物件的屬性相同,而resultMap則不用,而且resultMap可以用typeHander轉換
4.type:java 物件對應的類,id:在本檔案要唯一column :資料庫的列名或別名,property:對應java物件的屬性,jdbcType:java.sql.Types
查詢語句中,resultMap屬性指向上面那個屬性的標籤的id
parameterType:引數型別,只能傳一個引數,如果有多個引數要封裝,如封裝成一個類,要寫包名加類名,基本資料型別則可以省略
5.一對1、一對多時,若有表的欄位相同必須寫別名,不然查詢結果無法正常對映,出現某屬性為空或者返回的結果與想象中的不同,而這往往是沒有報錯的。
6.若有意外中的錯誤,反覆檢查以上幾點,和認真核查自己的sql語句,mapper.xml檔案是否配置正確。
另外還有resultMap 元素,它是 MyBatis 中最重要最強大的元素,它能提供級聯查詢,快取等功能
原sql語句:
[sql]<span style= "font-size:18px;"> delete from ups_role_permission_dataparams where role_id = #{roleId,jdbcType=INTEGER} </span>
在這裡用到了#{},使用#時:
1、用來傳入引數,sql在解析的時候會加上" ",當成字串來解析 ,如這裡 role_id = "roleid";
2、#{}能夠很大程度上防止sql注入;
延伸:
1、用${}傳入資料直接顯示在生成的sql中,如上面的語句,用role_id = ${roleId,jdbcType=INTEGER},那麼sql在解析的時候值為role_id = roleid,執行時會報錯;
2、${}方式無法防止sql注入;
3、$一般用入傳入資料庫物件,比如資料庫表名;
4、能用#{}時儘量用#{};
注意:
mybaties排序時使用order by 動態引數時需要注意,使用${}而不用#{};