java面试五
1.jquery中==和===的區別
先說 ===,這個比較簡單。下面的規則用來判斷兩個值是否===相等: 1、如果類型不同,就[不相等] 2、如果兩個都是數值,并且是同一個值,那么[相等];(!例外)的是,如果其中至少一個是NaN,那么[不相等]。(判斷一個值是否是NaN,只能用isNaN()來判斷) 3、如果兩個都是字符串,每個位置的字符都一樣,那么[相等];否則[不相等]。 4、如果兩個值都是true,或者都是false,那么[相等]。 5、如果兩個值都引用同一個對象或函數,那么[相等];否則[不相等]。 6、如果兩個值都是null,或者都是undefined,那么[相等]。 再說 ==,根據以下規則: 1、如果兩個值類型相同,進行 === 比較。 2、如果兩個值類型不同,他們可能相等。根據下面規則進行類型轉換再比較: a、如果一個是null、一個是undefined,那么[相等]。 b、如果一個是字符串,一個是數值,把字符串轉換成數值再進行比較。 c、如果任一值是 true2.jquery獲取parent,children的使用父親子類用法
$this.parent().children(".update_time ")
<div class="charts"> <h4 class="ITshuma"><a id="110000000" class="firstbangdan110000000" href="http://192.168.1.62:8080/yuda-web/brandRank/brandRank_110000000.htm">書籍</a></h4> <h3><a href="#tab19" class="">品牌排行</a><a href="#tab20" class="morenTitlt">產品排行</a></h3> <div class="tablecontent"></div> <div class="l_see"><a href="http://192.168.1.62:8080/yuda-web/rankList/rankList_110000000_110001000_110001001_16.htm">查看完整榜單</a></div> <div class="Update_time">該品類本月新增<span>3</span>個品牌,更新時間:2013-10-30</div> </div> <script type="text/javascript"> $('.charts h3 a').hover(function () { var $this = $(this); $this.parent().parent().children(".Update_time").children("span").text("5"); });3.數據庫左聯查
select * from customer LEFT OUTER JOIN orders on customer.custId=orders.customer_id;
 
左連接查詢兩個外鍵關聯一個主鍵,查詢出來有兩條結果;如果有一個為null則不行。
 
 
4.Mybitis綁定接口的幾種方法:
XML方式: <bean id="menuMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="sqlSessionFactory" ref="sqlSessionFactory" /><property name="mapperInterface" value="cn.vansky.schedule.time.menu.dao.MenuMapper" /> </bean>注解方式:
<bean name="mapperScannerConfigurer_one" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /><property name="basePackage" value="cn.vansky.schedule.time" /><property name="annotationClass" value="cn.vansky.framework.core.orm.mybatis.annotation.SqlMapper" /><property name="markerInterface" value="org.mybatis.spring.mapper.MapperFactoryBean" /> </bean>
BEAN注入:
 
5.Mybatis一對多有那幾種方式
collection的方法
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.yc.mapper.CustomerMapper"> <resultMap type="com.yc.m.Customer" id="resultCustomerMap"> <id column="id" jdbcType="INTEGER" property="id" /><result property="address" column="address"/> <result property="postcode" column="postcode"/> <result property="sex" column="sex"/> <result property="cname" column="cname"/> <collection property="orders" ofType="com.yc.m.Orders"><id property="id" column="id"/><result property="code" column="code"/></collection></resultMap> <select id="getCustomer" resultMap="resultCustomerMap" parameterType="int"> SELECT * FROM t_customer WHERE id=#{id} </select> </mapper>
6.值傳遞和引用傳遞
值傳遞:(形式參數類型是基本數據類型):方法調用時,實際參數把它的值傳遞給對應的形式參數,形式參數只是用實際參數的值初始化自己的存儲單元內容,是兩個不同的存儲單元,所以方法執行中形式參數值的改變不影響實際參數的值。
引用傳遞:(形式參數類型是引用數據類型參數):也稱為傳地址。方法調用時,實際參數是對象(或數組),這時實際參數與形式參數指向同一個地址,在方法執行中,對形式參數的操作實際上就是對實際參數的操作,這個結果在方法結束后被保留了下來,所以方法執行中形式參數的改變將會影響實際參數。
7.Spring的Bean默認是單例,但可以設置為多例
spring生成對象默認是單例的, <bean id="user" class="modle.User" scope="prototype"><property name="service" ref="userservice"></property></bean><bean id="userservice" class="service.userService" ><property name="tool" ref="tool"></property></bean> 通過scope屬性可以更改為多例。 <bean id="tool" class="service.ToolImpl" scope="prototype"></bean>
8.哈希沖突
一)哈希表簡介
非哈希表的特點:關鍵字在表中的位置和它之間不存在一個確定的關系,查找的過程為給定值一次和各個關鍵字進行比較,查找的效率取決于和給定值進行比較的次數。
? ? 哈希表的特點:關鍵字在表中位置和它之間存在一種確定的關系。
哈希函數:一般情況下,需要在關鍵字與它在表中的存儲位置之間建立一個函數關系,以f(key)作為關鍵字為key的記錄在表中的位置,通常稱這個函數f(key)為哈希函數。
hash :?翻譯為“散列”,就是把任意長度的輸入,通過散列算法,變成固定長度的輸出,該輸出就是散列值。
? ? ? ? ? ?這種轉換是一種壓縮映射,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來唯一的確定輸入值。
? ? ? ? ? ?簡單的說就是一種將任意長度的消息壓縮到莫伊固定長度的消息摘要的函數。
hash沖突:就是根據key即經過一個函數f(key)得到的結果的作為地址去存放當前的key value鍵值對(這個是hashmap的存值方式),但是卻發現算出來的地址上已經有人先來了。就是說這個地方要擠一擠啦。這就是所謂的hash沖突啦
二)哈希函數處理沖突的方法
1)開放定址法:
為產生沖突的地址H(key)求得一個地址序列 H0,H1,H2,H3,。。。。。。 其中H0=H(key) Hi=(H(key)+di)MOD i=1,2,。。。。,s其中 m 為表的長度
對增量di有三種取法:
線性探測再散列 ? di = 1 , 2 , 3 , ... , m-1
平方探測再散列 ? di = +1^ 2 , -1^2 , +2^2 , -2^2 , +3^2 , -3^2 , ... ,+ k^2 , ?-k^2
隨機探測再散列 ? di 是一組偽隨機數列
我在上面的這個配圖底部寫的那個紅色的12,我當時測試的時候,不知道這個12,也就是上面增量 di 的由來。不知道,限制知道了,那是1的2次方。。。。老師懶得或者說不會給數字打角標。
 
 
2)鏈地址法
3)再Hash法
Hi=RHi(key)i=1,2,。。。,k 產生沖突時 計算另一個哈希函數地址,直到另一個不在沖突為止就是算hashcode的方法不止一個,一個要是算出來重復啦,再用另一個算法去算。
4)再哈希、建立公共溢出區
建立一個公共溢出區域,就是把沖突的都放在另一個地方,不在表里面。
總結一下的就是下面的四行字: 1.開放定址法(線性探測再散列,二次探測再散列,偽隨機探測再散列)
? ?2.再哈希法
? ?3.鏈地址法(Java hashmap就是這么做的)
? ?4.建立一個公共溢出區
 
 
 
附上手繪圖鎮樓
 
 
 
總結
                            
                        - 上一篇: svn访问路径提示Unable to c
 - 下一篇: 可计算卫星轨道的Python包