京東前端在線筆試


1、 MySQL的HASH索引是什么

        其實,hash就是一種(key=>value)形式的鍵值對,如數學中的函數映射,允許多個key對應相同的value,但不允許一個key對應多個value。正是由於這個特性,hash很適合做索引,為某一列或幾列建立hash索引,就會利用這一列或幾列的值通過一定的算法計算出一個hash值,對應一行或幾行數據(這里在概念上和函數映射有區別,不要混淆)。在java語言中,每個類都有自己的hashcode()方法,沒有顯示定義的都繼承自object類,該方法使得每一個對象都是唯一的,在進行對象間equal比較,和序列化傳輸中起到了很重要的作用。

2、 輸入0和非0開頭的數字,其正則表達式是

3、 判斷一個序列是否為堆

答:進行二叉樹進行排序,判斷是否孩子結點都大於父節點都大於稱為大根堆,或者孩子結點都小於父結點稱為小根堆。

4、 js開箱即用的小部件和UI部件是

答:開箱即用的小部件有ExtJS、YUI;開箱不即用的部件有Prototype、jQuery、MooTools

5、 Js文本域支持的事件有,題目選出不支持的

tabindex, accesskey, onfocus, onblur, onselect, onchange,
onclick, ondblclick, onmousedown, onmouseup, onmouseover,
onmousemove, onmouseout, onkeypress, onkeydown, onkeyup

6、 abc +*代表的表達式

參考:http://blog.csdn.net/antineutrino/article/details/6763722/

舉例:
(3 + 4) × 5 - 6 就是中綴表達式
- × + 3 4 5 6 前綴表達式
3 4 + 5 × 6 - 后綴表達式

中綴表達式:常用的算術表示形式

前綴表達式(前綴記法、波蘭式)

前綴表達式的運算符位於操作數之前。

前綴表達式的計算機求值:
從右至左掃描表達式,遇到數字時,將數字壓入堆棧,遇到運算符時,彈出棧頂的兩個數,用運算符對它們做相應的計算(棧頂元素 op次頂元素),並將結果入棧;重復上述過程直到表達式最左端,最后運算得出的值即為表達式的結果。
例如前綴表達式“- × + 3 4 5 6”:
(1) 從右至左掃描,將6、5、4、3壓入堆棧;
(2) 遇到+運算符,因此彈出3和4(3為棧頂元素,4為次頂元素,注意與后綴表達式做比較),計算出3+4的值,得7,再將7入棧;
(3) 接下來是×運算符,因此彈出7和5,計算出7×5=35,將35入棧;
(4) 最后是-運算符,計算出35-6的值,即29,由此得出最終結果。
可以看出,用計算機計算前綴表達式的值是很容易的。
后綴表達式(后綴記法、逆波蘭式)
后綴表達式與前綴表達式類似,只是運算符位於操作數之后。
后綴表達式的計算機求值:
與前綴表達式類似,只是順序是從左至右:
從左至右掃描表達式,遇到數字時,將數字壓入堆棧,遇到運算符時,彈出棧頂的兩個數,用運算符對它們做相應的計算(次頂元素 op 棧頂元素),並將結果入棧;重復上述過程直到表達式最右端,最后運算得出的值即為表達式的結果。
例如后綴表達式“3 4 + 5 × 6 -”:
(1) 從左至右掃描,將3和4壓入堆棧;
(2) 遇到+運算符,因此彈出4和3(4為棧頂元素,3為次頂元素,注意與前綴表達式做比較),計算出3+4的值,得7,再將7入棧;
(3) 將5入棧;
(4) 接下來是×運算符,因此彈出5和7,計算出7×5=35,將35入棧;
(5) 將6入棧;
(6) 最后是-運算符,計算出35-6的值,即29,由此得出最終結果。

7、 基於比較的常用排序算法

選擇排序、冒泡排序、插入排序、希爾排序、歸並排序、快速排序、堆排序

8、 PDA分析圖在功能、結構、在什么時期使用

PAD圖(problem analysis diagram,問題分析圖):

與方框圖一樣,PAD圖也只能描述結構化程序允許使用的幾種基本結果。它用二維樹形結構的圖表示程序的控制流,以PAD圖為基礎,遵循機械的走樹(Tree Walk)規則就能方便地編寫出程序,用這種圖轉換為程序代碼比較容易。

 

其特征為:

1)結構清晰,結構化程度高;

2)易於閱讀

3)最左端的縱線是程序主干線,對應程序的第一層結構;每增一層PAD圖向右擴展一條縱線,幫程序的縱線數等於程序層次數。

4)程序執行:從PAD圖最左主干線上端結點開始,自上而下、自左向右依次執行,程序終止於最左主干線。

9、 DHCP向客戶端發送的消息

    DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網網絡協議,使用UDP協議工作,主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員作為對所有計算機作中央管理的手段

    DHCP使用客戶端/服務器模式,請求配置信息的計算機叫做DHCP客戶端,而提供信息的叫做DHCP的服務器。DHCP為客戶端分配地址的方法有三種:手工配置、自動配置、動態配置。

10、 SNMP報文共有哪幾部分組成

由三部分組成:版本號、團體名、協議數據單元PDU

參考:http://blog.csdn.net/shanzhizi/article/details/11606767

11、 Vsftpd服務器流量的控制參數

12、 決策樹對於噪聲的敏感度小

13、 下列地址中哪個地址與86.32/12無法匹配

86.32/12的含義是前12位是網絡地址,只需看IP地址的前12位是不是與之相同即可。

14、 已知文法G[S]

        S->AdB

        A->a|

        B->b|Bdb|

則G[S]的活前綴是:

15、 一個c語言程序在一台32位機器上運行,定義兩個變量x,y,

其中x的數據類型為int,y的數據類型為float,已知x=2013,y=201.3,則在一個32bit的機器中執行下列表達式時,結果為真的有(BCD)這是一個多選題

Y =(float)(int)y

Y =(float)(double)y

X =(float)(int)x

X =(int)(float)x

編程題:1、求A,B兩個集合的並集 ;                   還有一個編程題忘了,也不會做

1111111111

 

3、問答題

1、談談優雅降級和漸進增強的區別

答:漸進增強 progressive enhancement:針對低版本瀏覽器進行構建頁面,保證最基本的功能,然后再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。

  優雅降級 graceful degradation:一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容。

區別:優雅降級是從復雜的現狀開始,並試圖減少用戶體驗的供給,而漸進增強則是從一個非常基礎的,能夠起作用的版本開始,並不斷擴充,以適應未來環境的需要。降級(功能衰減)意味着往回看;而漸進增強則意味着朝前看,同時保證其根基處於安全地帶。

 

2、解釋盒模型,行內元素與塊級元素的概念

盒模型:盒模型是CSS的核心知識點之一,它指定元素如何顯示以及如何相互交互。頁面上的每個元素都被看成一個矩形框,這個框由元素的內容、內邊距、邊框和外邊距組成。

塊級元素:塊狀元素排斥其他元素與其位於同一行,可以設定元素的寬(width)和高(height),塊級元素一般是其他元素的容器,可容納塊級元素和行內元素。常見的塊級元素有div, p ,h1~h6等。

行內元素:行內元素不可以設置寬(width)和高(height),但可以與其他行內元素位於同一行,行內元素內一般不可以包含塊級元素。行內元素的高度一般由元素內部的字體大小決定,寬度由內容的長度控制。常見的行內元素有a,span,em ,strong等。

3、簡述cookies\sessionstoage和localstorage的區別

共同點:都是保存在瀏覽器端,且同源的。

區別:(1)存儲位置不同,cookie數據始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務器間來回傳遞。而sessionStorage和localStorage不會自動把數據發給服務器,僅在本地保存。

(2) 存儲大小限制也不同,cookie數據不能超過4k,同時因為每次http請求都會攜帶cookie,所以cookie只適合保存很小的數據,如會話標識。sessionStorage和localStorage雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。

(3) 數據有效期不同,sessionStorage:僅在當前瀏覽器窗口關閉前有效,自然也就不可能持久保持;localStorage:始終有效,窗口或瀏覽器關閉也一直保存,因此用作持久數據;cookie只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。

(4) 作用域不同,sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個頁面;localStorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。

4、如何進行前端優化,簡述幾種常用的方法

第一:面向內容的優化
1. 減少 
HTTP 請求

   網頁請求時將會頻繁的與服務器建立連接,與釋放連接,這必定會造成資源的浪費,且每個HTTP請求都會對服務器和瀏覽器產生性能負擔。
2. 減少 DNS查找

DNS信息會保存在操作系統的DNS緩存中(如windows上的DNS Client Service)。大多數瀏覽器有自己的緩存,與操作系統的緩存有所不同。只要瀏覽器在自己的緩存上面保留DNS記錄,它不會向操作系統請求DNS記錄。

當我們在瀏覽器的地址欄輸入網址(譬如: www.baidu.com) ,然后回車,回車這一瞬間到看到頁面到底發生了什么呢?

域名解析 --> 發起TCP的3次握手-->建立TCP連接后發起http請求-->服務器響應http請求,瀏覽器得到html代碼-->瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等)-->瀏覽器對頁面進行渲染呈現給用戶。
3. 避免重定向

  重定向用於將用戶從一個URL重新路由到另一個URL。當頁面發生了重定向,就會延遲整個HTML文檔的傳輸。在HTML文檔到達之前,頁面中不會呈現任何東西,也沒有任何組件會被下載。

常用的重定項類型:(1)301永久重定項(2)臨時重定項(3)Not Modified
4. 使用 Ajax緩存

   Ajax在發送的數據成功后,會把請求的URL和返回的響應結果保存在緩存內,當下一次調用Ajax發送相同的請求時,它會直接從緩存中把數據取出來,這是為了提高頁面的響應速度和用戶體驗。當前這要求兩次請求URL完全相同,包括參數。這個時候,瀏覽器就不會與服務器交互。

   這種設計使客戶端對一些靜態頁面內容的請求,比如圖片,css文件,js腳本等,變得更加快捷,提高了頁面的響應速度,也節省了網絡通信資源。
5. 預先載入組件

資源預拉取(prefetch)則是另一種性能優化的技術。通過預拉取可以告訴瀏覽器用戶在未來可能用到哪些資源。
7. 減少 DOM元素數量

考慮大量DOM元素中循環的性能開銷,在循環結束時一次性寫入。減少對DOM元素的查詢和修改,查詢時可將其賦值給局部變量。

第二:面向 Server

1. 壓縮內容 (Gzip Components)
對於絕大多數站點,這都是必要的一步,能有效減輕網絡流量壓力。

2. 設置 Etags (Configure ETags)
對於 Etag,可能是多數網站維護者都會忽略的地方。在這一系列優化規則出現之前,可能互聯網上絕大多數站點都對這個問題忽略了。

第三:面向cookies
1. 縮小 Cookie

如果需要用Cookie,那么應該盡可能使其體積小一些。

這樣做的原因是:

如果對某個域(Domain)保存了Cookie,那么針對這個域的所有請求,都會發送這些所有的Cookie(哪怕當前請求根本用不着,例如針對圖片的請求),大量地、重復地發送Cookie毫無疑問會增加網絡的流量,並因此而降低請求被執行的性能。
2. 針對 Web組件使用域名無關性的

這個話題在此前針對 Web 圖片服務器的討論中曾經提及。這里說的 Web 組件(Component),多指靜態文件,比如圖片CSS等,客戶端請求靜態文件的時候,減少了Cookie的反復傳輸對主域名的影響。

5、如何設計開發一個圖片輪播組件,簡述要點或寫代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM