多益網絡前端筆試題整理

2017校招javascript

1 寫出inline和inline-block的差異:
佈局方式相同,惟一的區別在inline-block能夠設置寬高,inline不能夠。另外:inline設置上下內邊距和上下外邊距會形成一些mess。

2 寫出五大主流瀏覽器的內核名稱
ie(trident),firefox(gecho),google chrome(blink),safari(webkit),oprea(blinnk)css


3 根據具體的情景寫出一個JSON數據
知道JSON數據怎麼寫,瞭解JSON數據和JS對象的區別就能夠,很簡單。html


4 考察字體大小的單位:rem,em,百分比java

em:node

核心觀點:
能夠複合計算,當前元素的一個em值的大小等於父元素的字體大小(若是父元素被定義了字體大小,遞歸找父元素),不然等於瀏覽器通常默認的16pxreact

remjquery

核心觀點:避免em的複合計算,相對root html元素的大小。web

百分比:與em類似

5 隱藏元素的N種方式ajax

opacity正則表達式

.hide {
opacity: 0;
}
佔據空間,能夠響應用戶交互,能夠有動畫。

 

visibility

.hide {
visibility: hidden;
}

佔據空間,可是不響應用戶交互,能夠有動畫。


display
display: none

不佔據空間,不響應交互,沒有動畫。

 

Position

.hide {
position: absolute;
top: -9999px;
left: -9999px;
}
不佔據空間,響應交互


6 jQuery中live,bind,on,delegate的區別

.bind()是直接綁定在元素上

.live()則是經過冒泡的方式來綁定到元素上的。更適合列表類型的,綁定到document DOM節點上。和.bind()的優點是支持動態數據。

.delegate()則是更精確的小範圍使用事件代理,性能優於.live()

.on()則是最新的1.9版本整合了以前的三種方式的新事件綁定機制

 

7 如何去除img元素底部的空白

1.img{vertial-align:middle}

2.div{line-height:0}//div爲img的父標籤

3.img{float:left}

4.img{font-size:0}//會形成圖文混亂

5.img{display:block}

 

1.svg畫四邊形,四個點的座標分別是(220,100)(300,210)(170,250)(123,234)

<svg height="300">

<polygon points="220,100 300,210 170,250 123,234" style="fill:blue;stroke:black;stroke-width:1;">
</svg>

 

2.寫出promise構造函數

var promise=new Promise(
function (resolve,reject) {
if("異步處理成功"){
resolve ();
}else{
reject();
}

});
promise.then(
function A () {
console.log("事件處理成功時的操做")

},
function B() {
console.log("事件處理失敗時的操做")
}
)

 

3.如何讓動態插入的div響應綁定事件

 <div id="testdiv">

<ul></ul>
</div>
//jquery 1.7版之後使用on動態綁定事件
$("#testdiv ul").on("click","div", function() {
//do something here
});

 

4.如何阻止冒泡事件和默認事件
(1)阻止冒泡事件

 function stopBubble(e) { 

if(e && e.stopPropagation){
e.stopPropagation();
} else {
window.event.cancelBubble = true;
}
}; 

 

(2)阻止默認事件

 function stopDefault(e){ 

if(e && e.preventDefault) {
e.preventDefault();
} else {
window.event.returnValue = false;
}
return false;
}; 

JavaScript中止冒泡和阻止瀏覽器默認行爲

 

5.翻譯:Using store state in a component simply includes returning the state within a computed property , because the store state is reactive . Triggering changes simply means committing mutations in component methods .

 在組件中使用存儲狀態簡單地包括在計算屬性中返回狀態,由於存儲狀態是被動的。觸發的變化意味着在組件的方法進行突變。

 

6.實現ajax的過程和代碼
(1)建立XMLHttpRequest對象;
(2)註冊回調函數,在XMLHttpRequest中設置要發送的請求,利用的是open(first,second,third)方法

@param first:提交的方式 get或者是post
@param second:該次請求的路徑url,若是是get,則須要在路徑後加上傳遞的相應參數parama,該url爲servlet對應的url
@param third:提交的模式是同步模式仍是異步模式 true表明異步模式

(3)發送請求給服務器,利用的是xmlHttp.send(null) ,加上null表明火狐和ie都支持
(4)利用xmlHttp的onreadystatechange的事件來監視xmlHttp.readyState的狀態,每次改變時都調用函數(回調函數)
(5)在回調函數中處理返回值 利用dom模型寫到頁面的指定位置 實現局部刷新

var XHR=null;
var XHRcreate=function() {
if (window.XMLHttpRequest) {
//針對FireFox,Mozillar,Opera,Safari,IE7,IE8
XHR = new XMLHttpRequest();
//針對某些特定版本的mozillar瀏覽器的BUG進行修正
if (XHR.overrideMimeType) {
XHR.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
//針對IE6,IE5.5,IE5
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0; i < activexName.length; i++) {
try{
//若是建立失敗,回拋出異常,而後能夠繼續循環,繼續嘗試建立
XHR = new ActiveXObject(activexName[i]);
break;
} catch(e){
}
}
}
}
XHRcreate();
XHR.onreadystatechange = callback;
//XHR.open("GET","login_verify.jsp?name="+ userName,true);
//XHR.send(null);
XHR.open("POST","AJAXXMLServer",true);
XHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XHR.send("name=" + userName);
function callback() {
//判斷對象的狀態是交互完成
if (XHR.readyState == 4) {
//判斷http的交互是否成功
if (XHR.status == 200) {
var responseText = XHR.responseText;
//經過dom的方式找到div標籤所對應的元素節點(爲了簡便,這裏客戶端的程序未寫了)
var divNode = document.getElementById("result");
divNode.innerHTML = responseText;
} else {
alert("error!");
}
}
}

 

7.new操做符作了什麼?


(1)建立了一個空對象

 var obj = new object();

 

(2)設置原型鏈

 obj._proto_ = fn.prototype;

 

(3)讓fn的this指向obj,並執行fn的函數體

 var result = fn.call(obj);

 

(4)判斷fn的返回值類型,若是是值類型,返回obj。若是是引用類型,就返回這個引用類型的對象。

 if (typeof(result) == "object"){ 

fnObj = result;
} else {
fnObj = obj;

8.寫出3種異步加載方案

異步加載又叫非阻塞加載,瀏覽器在下載執行js的同時,還會繼續進行後續頁面的處理。默認狀況javascript是同步加載的,也就是javascript的加載時阻塞的,後面的元素要等待javascript加載完畢後才能進行再加載,對於一些意義不是很大的javascript,若是放在頁頭會致使加載很慢的話,是會嚴重影響用戶體驗的。異步加載主要有如下三種方式:
(1)async:

定義:async 屬性規定一旦腳本可用,則會異步執行。
用法:<script type="text/javascript" src="async.js" async="async"></script>
註釋:async 屬性僅適用於外部腳本(只有在使用 src 屬性時)。
註釋:有多種執行外部腳本的方法:
若是 async=」async」:腳本相對於頁面的其他部分異步地執行(當頁面繼續進行解析時,腳本將被執行);
若是不使用 async 且 defer=」defer」:腳本將在頁面完成解析時執行;
若是既不使用 async 也不使用 defer:在瀏覽器繼續解析頁面以前,當即讀取並執行腳本 。


(2)defer:

只支持IE
defer 屬性規定是否對腳本執行進行延遲,直到頁面加載爲止。有的 javascript 腳本 document.write 方法來建立當前的文檔內容,其餘腳本就不必定是了。
若是您的腳本不會改變文檔的內容,可將 defer 屬性加入到

<script type="text/javascript" defer="defer">
alert(document.getElementById("p1").firstChild.nodeValue);
</script> 

 

(3)建立script,插入到DOM中,加載完畢後callBack 

function loadScript(url, callback){
var script = document.createElement_x("script")
script.type = "text/javascript";
if (script.readyState){ //IE
script.onreadystatechange = function(){
if (script.readyState == "loaded" || script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
} else { //Others: Firefox, Safari, Chrome, and Opera
script.onload = function(){
callback();
};
}
script.src = url;
document.body.appendChild(script);
}

 

19春招

一、寫出手機號的正則表達式

^1[3|4|5|7|8]\d{9}$ ^開始符號 首位爲1 第2位爲3或4或5或7或8 後面9位爲任意數字 $結束符號

 

二、css的繼承屬性

字體系列:font、font-size、font-weight

文本系列:text-align、line-height、color、text-transform

cursor、visibility、list-style

 

三、css製做動畫效果的3個屬性

transition、transform、animation

 

四、Promise的例子

function aaa(){

var p = new Promise(function(resolve,reject){

setTimeout(function(){

console.log('11111');

resolve('2222'); },1000); });

return p;}

aaa().then(function(data){

console.log(data);

});

 

五、css繪製一個直角梯形

一開始想到了border,但設置了高度,因此沒有成功

<head>

<style>

.mask{ height: 0; width: 100px; border-top: 100px solid red; border-left: 37px solid transparent; }

</style>

</head>

<body>

<div class="mask"></div>

</body>

 

六、HTTP協議請求方式

get、post、put、head、connect、trace、options、delete

18年

JS基礎是要有的,字符串函數 split() 還有數組一些api , reverse() join('') 這些要熟悉

 

正則表達式!是必考,反正我作的校招筆試題都會有問到,不直接問都會應用到。多益問的是寫出手機號正則,還算簡單

 

圖像格式: .jpg .png .svg .gif 圖像有啥區別

 

寫出幾個你網站優化的方法 : 應該往減小http請求,壓縮源代碼,控制圖片大小,緩存,減小DOM操做方面等答。

 

原生AJAX 其實ajax蠻簡單的,用的也不少。這個記住四步就能夠了

 

form 表單 提交的屬性 和請求的方法屬性 分別是? action 和 method 這個method屬性臨時忘了,本身都想打一巴本身了

翻譯英文片斷, 多益還有這個題,有點夠嗆,看了應該是框架文檔原文。

 

大題: 給你一段JSON數據,每條JSON表明一個對象,有個屬性指向它的父對象,請把這段JSON轉爲一個樹形結構的對象。

 

二、計算機網絡中五層協議分別是什麼,HTTP屬於哪一層?

計算機網絡中五層協議分別是(從下向上):1) 物理層 2)數據鏈路層 3)網絡層 4)傳輸層 5)

應用層七層:物理層->數據鏈路層->網絡層->傳輸層->會話層->表示層->應用層

其功能分別是:

1)物理層主要負責在物理線路上傳輸原始的二進制數據;

2)數據鏈路層主要負責在通訊的實體間創建數據鏈路鏈接;

3)網絡層主要負責建立邏輯鏈路,以及實現數據包的分片和重組,實現擁塞控制、網絡互連等功能;

4)傳輸曾負責向用戶提供端到端的通訊服務,實現流量控制以及差錯控制。(TCP、UDP)

5)會話層:定義了什麼時候開始、控制和結束一個回話,包括對多個雙向消息的控制和管理,以便在只完成連續消息的一部分時能夠通知應用,從而使得表示層看到的數據是連續的,某些狀況下,若是表示層收到了全部的數據,則用數據表明表示層。

6)表示層:主要功能是定義數據格式以及加密,

7)應用層爲應用程序提供了網絡服務。通常來講,物理層和數據鏈路層是由計算機硬件(如網卡)實現的,網絡層和傳輸層由操做系統軟件實現,而應用層由應用程序或用戶建立實現。

三、傳輸層有哪些協議?TCP協議與UDP協議的區別。

傳輸層(Transport Layer)是OSI中最重要, 最關鍵的一層,是惟一負責整體的數據傳輸和數據控制的一層.傳輸層提供端到端的交換數據的機制,檢查分組編號與次序。傳輸層對其上三層如會話層等,提供可靠的傳輸服務,對網絡層提供可靠的目的地站點信息.主要功能: 爲端到端鏈接提供傳輸服務.這種傳輸服務分爲可靠和不可靠的,其中Tcp是典型的可靠傳輸,而Udp則是不可靠傳輸. 爲端到端鏈接提供流量控制,差錯控制,服務質量(Quality of Service,QoS)等管理服務. 具備傳輸層功能的協議: TCP UDP SPX NetBIOS NetBEUI

 

四、你聽過 DNS嗎?能夠講講嗎?(我只聽過沒印象) DNS(Domain Name System,域名系統),萬維網上做爲域名和IP地址相互映射的一個分佈式數據庫,可以使用戶更方便的訪問互聯網,而不用去記住可以被機器直接讀取的IP數串。經過域名,最終獲得該域名對應的IP地址的過程叫作域名解析(或主機名解析)。DNS協議運行在UDP協議之上,使用端口號53。

 

五、排序算法有哪些?並給出時間複雜度

插入排序

選擇排序

冒泡排序

快速排序

哈希排序

堆排序

 

六、事件響應問題事件:JavaScript 建立動態頁面。事件是能夠被 JavaScript 偵測到的行爲。 網頁中的每一個元素均可以產生某些能夠觸發 JavaScript 函數或程序的事件。好比說,當用戶單擊按鈕或者提交表單數據時,就發生一個鼠標單擊(onclick)事件,須要瀏覽器作出處理,返回給用戶一個結果。

七、你聽過 ES6規範嗎,列舉一些你所知道的差異

答案請參考:https://blog.csdn.net/chenjuan1993/article/details/80952918

相關文章
相關標籤/搜索