信大捷安面試20190218

信大捷安:

重點關注:多線程處理、高併發、網絡安全

jQuery 
1. jQuery 庫中的$()是什麼
答:$()函數是jQuery()函數的別稱,常用的方法。

2. 網頁上存在5個<div>元素,如何使用和選擇
答:使用選擇器,常用的選擇器有id選擇器、class選擇器、標籤選擇器。
eg:$("div")會返回所有的div標籤的jQuery對象。

3. jQuery裏的id選擇器和class選擇器的不同
答:id選擇器是使用id來選擇元素,而class選擇器是使用css class來進行選擇元素。
使用場景:當你只需要選擇一個元素時,使用id選擇器,而如果你想要選擇一組具有相同css class
的元素時候,就要使用class下載你去。
使用方式:id選擇器使用的字符"#"和id信息 ,class選擇器使用的是"."和class信息。

4.如何在點擊一個按鈕時候使用jQuery隱藏一個圖片
答:通過id進行隱藏
$('#ButtonToClick').click(function(){
    $('#ImageToHide').hide();
});

5.$(domcument).ready()是什麼函數
 

6. JavaScript window.onload 事件和jQuery ready 函數的不通
答:jQuery ready()函數只需要對DOM樹的等待,而無需對圖片和外部資源加載的等待,
執行速度較快。
     window.onload等待dom被創建還要等待包含大型圖片、音頻、視頻所在外部資源都
     完全被加載,相對耗時較長。
     
7. 如何找到所有HTML select標籤的選中項
答:$('[name=NameOfSelectedTag] :selected')

8. jQuery裏的each()是什麼函數
答:each() 是一種遍歷
$('[name=NameOfSelectedTag] :selected').each(function(selected) {
    alert($(selected).text());
});

9. 合入將一個HTML元素添加到DOM樹中的
答:使用jQuery的appendTo()函數。

10. 怎麼在jQuery代碼選擇所有在段落內部的超鏈接嗎?
答:使用段落使用<p>標籤,內部的超鏈接 <a>標籤

11. $(this) 和this關鍵字不同
答:jQuery中前者返回一個jQuery對象,你可以對它調用多個jQuery方法,
    this是上下文中當前dom 的操作使用
    
12: 如何使用jQuery來提取一個HTML標記的屬性
答:attr()方法
  $('a').each(function(){
  alert($(this).attr('href'))
  });
  需要注意 attr 一個參數的是獲取,兩個產生賦值。

13: jQuery中的detach() 和 remove() 方法的區別        ---- 不太明白
答:都是用來移除 dom元素的。
detach():移除被選元素,包括所有文本和子節點。會保留所有綁定的事件、附加的數據.

remove():移除被選元素,包括所有文本和子節點。綁定的事件、附加的數據等都會被移除。

14:jQuery添加 移除 css類
答:addClass() 和 removeClass()

15: cdn 加載jQuery庫優勢   ---- 待定

答:加快速度,自動選擇合適的緩存。

16: $().get() 和 $().ajax()方法之間的區別
答:get 只是具有獲取數據的能力
    ajax() 可配置性強。

17:jq 方法鏈是什麼
答:一個方法的返回結果調用另一個方法。

18:jq 事件處理返回false會怎麼樣
答:阻塞事件向上冒泡

19:document.getElemengbyId("myId") 還是 $("#myId")效率高
答:第一種,因爲它直接調用JavaScript引擎。  


https://juejin.im/post/5a9ca0d6518825555c1d1acd
sql相關的面試
1. 什麼是存儲過程,爲什麼要使用存儲過程。
答:類似於函數,將我們要執行的複雜問題進行一個封裝處理。
這樣寫的優點:將複雜的sql進行統一的封裝方便使用;
              存儲過程保存在數據庫中;
              存儲過程是一個預編譯的代碼塊,執行效率比較的高。
不足之處:每個數據庫的存儲過程語法幾乎不一樣,通用性差 不便於維護;
           業務邏輯放在數據庫上,難以迭代。

2. 什麼是三個範式
答:
第一範式:數據庫表中的字段都是單一屬性的,不可再分,
這個單一屬性由基本類型構成包含 整型、日期、字符型、邏輯型。
第二範式:表中的字段必須完全依賴於全部主鍵而非部分主鍵,即主鍵唯一,
比如:表中的一條數據,id 爲1 日期爲20190216 姓名  silianbo 的數據中 
slianbo 這條數據就依賴 日期20190216存在。
第三範式:非主鍵外的所有字段必須互不依賴,這樣的目的是消除傳遞依賴
比如:一個公司有 研發部 市場部 銷售部,在設計公司人員表的時候 
人員基本信息是一個表 部門信息時一個表 兩個之間通過部門id進行一個關聯。

3. 什麼是視圖?視圖的使用場景有哪些?
答:視圖是一種基於數據庫表的一種虛擬表;
視圖的建立是已存在表的基礎上的,視圖表中沒有真正的數據,真正的數據還是
存儲在基表中的,代碼中對視圖的操作最終哦還是會轉成操作基表,設計視圖的目的
是查詢數據進行一個封裝 避免保留原表信息,但是不會提供查詢效率。

4. drop、delete、truncate的使用場景
答:
drop 和  truncate 都屬於ddl,;
delete 屬於dml,需要提交可回滾。

drop 刪除的是表內容和數據。
truncate 清空表內容。
delete 根據where條件進行刪除。

不再需要一張表的時候使用 drop;
想刪除部分數據的 使用 delete + where ;
保留表結構只是想清空表中的數據時使用 truncate。

5.索引是什麼?有什麼作用以及優缺點?
答:索引是一種快速查詢表中的內容的機制,類似於書的目錄,索引運用在表
中的某些字段上,但存儲時,獨立於表之外。
在主鍵上自動建立索引,不需要單獨維護 由數據庫進行管理。
使用場景:
表需要經常進行select操作;
表中的字段經常在where字句或者連接條件中出現。

不建議使用索引的場景:
經常進行insert update delete 操作
表中的數據很少
不常出現在 where字句或者連接條件中。

6. 索引的分類:
唯一索引:唯一索引不允許兩行具有相同的索引值
主鍵索引:每個主鍵唯一 並且不能爲空。
聚集索引:表中各行的物理順序和鍵值的邏輯順序相同,每個表只能有一個。
非聚集索引:

7. 事務:
答:一次進行的所有操作算一個事務,執行的結果要麼同時成功,要麼同時失敗。
數據庫事務正確執行的四個基本要素:
原子性、一致性、隔離性、持久性。
比如:銀行之間的相互轉賬。
開啓事務的方式 是關閉自動提交 setAutoCommit(false);

回滾使用 rollback();

8. 數據庫的樂觀鎖和悲觀鎖是什麼?
答:
悲觀鎖:
發生衝突時候屏蔽一切可能違反數據完整性的操作;
在查詢完數據的時候就把事務鎖起來,直到提交事務,實現方式 使用數據庫的鎖機制。
樂觀鎖:
假設不會發生衝突,只在提交操作時檢查是否違反數據的完整性,實現方式 version版本或者時間戳。

9. sql約束有哪幾種:
答:
not null:用於控制字段的內容一定不能爲空
unique:控件字段內容不能重複,保證唯一性。
primary key:自動內容不允許重複
check:字段範圍

10:varchar 和 char的區別
答:
char是一種固定長度的類型,varchar 是一種可變長度的類型。

11:sql優化
答:
查詢避免使用 * 
明確查詢的同一字段的多個條件使用 in 代替 or
關鍵字儘量全部大寫,Oracle服務器總是首先會將小寫字母轉成大寫後執行。
獨立sql多使用commit;
清空表內容使用truncate非delete
有索引儘量使用索引
12 : rowid和rownum
答:rowid 是物理地址 ,是唯一不變的,rownum 是相對問題  會根據查詢方式的不同進行變換
SELECT *
FROM (SELECT tmp.*, rownum AS row_num FROM (SELECT * FROM table_name ) tmp WHERE ROWNUM <= 20)
WHERE row_num > 10


Spring:

Spring MVC 運行流程:
1.spring mvc將所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模塊負責對請求 進行真正的處理工作。
2.DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.
3.DispatcherServlet請請求提交到目標Controller
4.Controller進行業務邏輯處理後,會返回一個ModelAndView
5.Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象
6.視圖對象負責渲染返回給客戶端。


SpringMVC的工作原理
1.客戶端提交請求到前端控制器DispatcherServlet來處理,它會負責調用系統的
其他模塊來處理真正的請求。
2.前端控制器DispatcherServlet收到請求後,將根據請求的信息(URL、HTPP協議
、請求頭、請求參數等)以及HandleMapping找到目標Controller
3.在這個地方Spring會通過HandleAdpter 進行封裝
4.Handle處理完成後,會返回一個ModeAndView
5.modeandview的視圖是邏輯視圖,藉助viewResolver完成邏輯視圖到真實視圖的解析工作。
6.通過進行數據的渲染就可以呈現給前臺了。


Spring MVC 啓動流程:
在 web.xml 文件中給SpringMVC的Servlet配置了load-on-startup,所以程序啓動的時候會初始化 Spring MVC,在 HttpServletBean 中將配置的 contextConfigLocation屬性設置到 Servlet 中,然後在FrameworkServlet 中創建了 WebApplicationContext,DispatcherServlet根據contextConfigLocation 配置的 classpath 下的 xml 文件初始化了Spring MVC 總的組件。

Spring 的單例實現原理:
Spring對Bean實現的創建採用單例註冊表的方式進行實現的,而這個註冊表的緩存是
ConcurrentHashMap對象。

Spring 框架中使用到了那些設計模式:
代理模式:AOP
單例模式:在spring配置文件定義bean。
模板方法:restTemplate、JmsTemplate、JpaTemplate。
工廠模式:BeanFactory用來創建對象的實例。


動態代理與cglib實現的區別
jdk動態代理只能對實現了接口的類生產代理,而不能針對類。
cglib是針對類實現代理,主要是對指定的類生成一個子類,覆蓋其中的方法因爲是繼承
jdk代理是不需要依賴第三方的庫
cglib必須依賴cglib的類庫

談談自己多高併發的理解?

平時在開發過程中數據傳輸過程中怎麼保證安全?

數據庫中數據怎麼保證安全?

數據在傳輸過程中被截獲怎麼保證安全?

 

               
                       
         


 

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