亞信來我們學校宣講,讓我們做了筆試題,我選擇了前端方向,下面是我的試題整理還有我的答案(不一定正确)以及知識點整理,如果有錯誤請大神們指正。這份筆試題涉及到了HTML CSS JavaScript jQuery 資料結構 前端工具,其實都是比較基礎的題目,當然有一部分知識我确實不是很清楚,是以也寫不出很好的解析,這部分以後一定會來更新補充。
1.這段代碼輸出什麼
if (new Boolean(false)) {
console.log('True');
}else{
console.log('False');
}
A.True
B.False
答案:A.True
解析:涉及到邏輯環境中的自動類型轉換
a. 當數字在邏輯環境中執行時,會自動轉為布爾類型。 0/-0和NaN會自動轉為false,其餘數字都被認為是true b.當字元串在邏輯環境中執行時,也會被轉為布爾類型。空字元串會被轉為false,其它字元串都會轉為true c.當undefined和null在邏輯環境中執行時,都被認為是false d.對象在邏輯環境中執行時,隻要目前引用的對象不為空,都會被認為是true e.使用包裝類執行個體的時候,引擎隻會判斷其引用是否存在,不會判斷内部的值(對于Boolean類,有一個特别需要注意的是,當傳入一個字元串時,它不會去解析字元串内部的值,而是做個簡單地判斷,隻要不是空字元串,都會被認為是true) 具體可見文章:https://www.cnblogs.com/liuhe688/p/5918589.html
2.c的值是什麼?
var a = function(){
this.b = 1;
}
var b = function(){
var b = new a().b;
return 5 + b;
}
var c = b();
A.5
B.null
C.代碼運作時會報錯
D.6
E.undefined
答案:D.6
解析:這題我還沒怎麼弄懂,再去看看預編譯 全局 this部分的知識點以後再來答好了,有大神解析的話就更好了
3.怎樣讀取一個字元串的第一個字元?
A.data.charAt(1);
B.data.charAt(0);
C.data.slice(1);
D.data.substr(0);
E.data.substring(1);
答案:B.data.charAt(0);
解析:charAt() :傳回指定位置的字元;
文法:stringObject.charAt(index)
注意:字元串中第一個字元的下标是0.如果參數index不在0與string.length之間,該方法将傳回一個空字元串。
slice() :提取字元串的某個部分,并且以新的字元串傳回被提取的部分;
文法:stringObject.slice(start, end)
注意: slice(start從該位開始截取, end截取到該位不包括該位) ,start和end可以為負,在數組中同樣适用
substr() :在字元串中提取從start下标開始的指定數目的字元;
文法:stringObject.substr(start, length)
注意: substr不建議使用(ECMAscript中未标準化),參數start中包括start指的該字元,當length不填時,預設截取到字元串的結尾;
subString() :提取字元串中指定下标間的字元
文法:stringObject.subString(start, end)
注意: subString(start從該位開始截取, end截取到該位不包括該位) ,start和end不可以為負,長度為end-start,當end 不填時,預設截取到字元串的結尾;
總結:slice()和subString()都是通過下标來截取字元串,但slice參數可以為負數,substr()是通過長度來截取字元串。
4.x的值是什麼?
var x = "1" + 2 + 3;
A.語句會報錯
B.123
C.15
D.6
答案:B.123
解析:JavaScript中 +運算符 用于把文本值或者字元串變量連接配接起來
5.下面哪個String原型方法的入參是正規表達式?
A.charCodeAt()
B.search()
C.indexOf()
D.All of these
答案:B.search()
解析:charCodeAt() 與 charAt() 類似,不過charCodeAt()是傳回指定位置的字元的Unicode編碼
search() :用于檢索字元串中指定的子字元串,或者正規表達式,傳回第一個比對到的子串的起始位置
文法:stringObject.search(regexp)
indexOf() :傳回某個指定的字元串值在字元串中首次出現的位置
文法:stringObject.indexOf(searchvalue, fromindex)
注意:該方法對大小寫敏感;從頭到尾開始檢索,若沒有檢索到,則傳回-1;
6.x的值是什麼?
var str = "What is this";
var x = str.search("is");
A.4 B.7 C.6 D.5 E.1
答案:D.5
解析:見第五題解析
7.下面哪一個函數聲明是正确的?
A.function myFunc(arg1,arg2)
B.function myFunc(arg1,arg2) {}
C.func myFunc(arg1 as string, arg2 as int) {}
答案:B.function myFunc(arg1,arg2) {}
解析:JavaScript是弱類型語言,變量定義中不需要使用到string int等等;
8.____操作符傳回一個字元串,辨別它所操作對象的類型
A.Type B.typeof C.TypeOf D.getType E.typename
答案:B.typeof
解析:typeof操作符傳回一個字元串,表示未經計算的操作數的類型,其餘選項不存在
9.操作符“&”是:
A.指派操作符 B.位移操作符 C.位于操作符 D.條件操作符
答案:C.位于操作符
解析:&表示and,是一個位操作符,類似的還有 |;
10.有a,b兩個數組,下面哪個選項可以把a,b合成一個新數組
var a = ["a", "b", "c"];
var b = ["d", "e", "f"];
A.全不正确
B.var c = a.push() + b.push();
C.var c = a.concat(b);
D.var c = a.join(b);
答案:C.var c = a.concat(b);
解析:push():在數組最後一位添加資料,可以直接添加多位,改變原數組,傳回新的長度;
是以答案B中c=6;
concat():連接配接兩個或兩個以上數組,不改變原數組,傳回一個新的數組,參數可以是值也可以是數組;
join():不改變原數組,把數組中的所有元素放入一個字元串,由傳入的參數進行分割,若忽略該參數,那麼用","進行分割
是以答案D中c="ad,e,fbd,e,fc"
11.關于下面的代碼,哪個選項說明是正确的?
function test(){
var foo = bar = 5;
}
test();
A.報SyntaxError
B.foo和bar都是全局變量
C.foo和bar是局部變量
D.foo是局部變量,bar是全局變量
答案:D.foo是局部變量,bar是全局變量
解析:和預編譯有關,到時候新寫一篇
12.執行下面的語句後,x等于什麼?
var x = 1 == '1';
A.1 B.undefined C.false D.1(字元) E.true
答案:E.true
解析:和資料類型轉換有關,過兩天整理完了以後專門寫一篇。
1.URL的中文名稱是“統一資源定位符”
A.對 B.錯
答案:A.對
解析:Uniform Resource Locator
2.定義表元的HTML是
A.<tr>
B.<td>
C.<table>
答案:C.<table>
解析:表元的意思即為表格的單元,是以為<table>
<tr>:表格的行
<td>:每行中的若幹單元格
<th>:表格的表頭,大多數浏覽器會把它設定為粗體居中的文本
3.下面關于新樣式對話框的說法錯誤的是:
A.在樣式表中自定義的元素樣式不可以在整個HTML中被調用
B.可以選擇Use CSS Selector(CSS給定的選擇用樣式)
C.可以選擇Redefine HTML Tag(HTML标簽選擇器)
D.可以選擇Make Custom Style(自定義樣式)
答案:A.在樣式表中自定義的元素樣式不可以在整個HTML中被調用
解析:Dreamweaver中的操作,不太懂
4.第四題漏截圖找不到了
5.若要是設計網頁的背景圖像為bg_360ds.jpg,以下标記中正确的是
A.<body image="bg_360ds.jpg">
B.<body background="bg_360ds.jpg">
C.<body bjround="bg_360ds.jpg">
答案:B.<body background="bg_360ds.jpg">
6.不屬于按鈕對象的屬性的是
A.status表示該對象的status屬性
B.value表示該對象的value屬性
C.form表示該對象的form屬性
D.type表示該對象的type屬性
E.name表示該對象的name屬性
答案:A.status表示該對象的status屬性
解析:<button>屬性見下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISO1EzM0IzMyETMyUDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
7.HTML文檔中,哪裡可以引用外部CSS樣式表
A.在<head>中
B.在<footer>中
C.在HTTP headers中
D.在<body>中
答案:A.在<head>中
解析:CSS的三種引用方式:
1.行内樣式 <div style="width:100px"></div>
2.内嵌式
<head>
<style>
.wrapper{width:100px;}
</style>
</head>
<body>
<div class="wrapper"></div>
</body>
3.外聯式
<head>
<title></title>
<link rel="stylesheet" href="demo/demo.css" target="_blank" rel="external nofollow" >
</head>
2.CSS樣式,font-family屬性用來做什麼
A.指定字型顔色
B.告訴你跟字型相關的東西
C.指定用什麼字型
D.制定字型大小
答案:C.指定用什麼字型
解析:font屬性
- font-style:字型樣式(标準、斜體等)
- font-weight:字型粗細
- font-size/line-height:字型大小
- font-family:字型系列
3.CSS樣式,下面哪一個元素能夠達到最大寬度,且前後各有一個換行
A.Square Element
B.Block Element
C.Box Element
D.Side Element
答案:B.Block Element
解析:塊級元素block:a. 獨占一行,其寬度自動填滿其父元素寬度
b.能夠達到最大寬度,前後各有一個換行
c.可以包含行内元素和塊級元素
d.可以通過css改變寬高
(div p ul li ol form address)
行級元素、内聯元素 inline:
a.不會獨占一行,相鄰的行内元素會排列在同一行,直到一行排不下才會換行,内容決定元素所占位置
b.不能包含塊級元素
c.不能改寬高
(span strong em a del)
行級塊元素 inline-block:
a.内容決定大小
b.可以改寬高
4.哪個答案最好地描述了CSS規則:a{text-decoration:none}
A.它是無效的
B.連結沒有下劃線
C.段落的文字将被隐藏
D.it's an anchor with no ship
答案:B.連結沒有下劃線
5.CSS樣式,邊距:10px 20px 40px 30px; 哪一個是底邊距
A.10px; B.20px; C.30px; D.40px;
答案:C.30px;
解析:
6.CSS樣式,下面哪個答案與這個語句的效果一緻:h1{font-family:sans-serif;}h2{font-family:sans-serif;}h3{font-family:sans-serif;}
A.h1,h2,h3{font-family:sans-serif;}
B.h*{font-family:sans-serif;}
C.這些都不對
D.h1 h2 h3{font-family:sans-serif;}
答案:A.h1,h2,h3{font-family:sans-serif;}
7.CSS樣式,聲明區域的開始字元和結束字元是什麼
A.用{開始,用}結束
B.用{開始,用)結束
C.用"開始,用"結束
D.用#開始,用#結束
答案:A.用{開始,用}結束
8.CSS樣式表檔案的預設擴充名是什麼
A、 .css B、 .main C、 .style D、 .styles
答案:A. .css
解析:預設擴充名的意思就是預設擴充名
1.通過下面的哪些方法可以擷取頁面的html元素(多選)
A.document.querySelector
B.document.getElementById
C.document.querySelectorAll
D.document.getElementByClassName
答案:ABCD
解析:JS擷取DOM元素的方法(8種)
- 通過ID擷取(getElementById)
- 通過name屬性(getElementsByName)
- 通過标簽名(getElementsByTagName)
- 通過類名(getElementsByClassName)
- 擷取html的方法(document.documentElement)
- 擷取body的方法(document.body)
- 通過選擇器擷取一個元素(querySelector)
- 通過選擇器擷取一組元素(querySelectorAll)
2.JSON對象obj有屬性a,下面擷取屬性正确的是(多選)
A. obj['a'] B. obj{a} C. obj.a D.obj('a')
答案:A. C
解析:JSON通路對象值的兩種方式:1.點号. 2.中括号[]
3.DOM事件流:将事件分為三個階段:捕獲階段、目标階段、冒泡階段,這三者的執行順序是
A.捕獲階段、目标階段、冒泡階段
B.捕獲階段、冒泡階段、目标階段
C.冒泡階段、捕獲階段、目标階段
D.冒泡階段、目标階段、捕獲階段
答案:A.捕獲階段、目标階段、冒泡階段
解析:
4.下清單達式最後列印結果是
for (var i = 0; i < 5; i++) {
(function(i){
setTimeout(function(){
console.log(i);
},1000);
})(i)
}
A.每隔一秒依次列印0,1,2,3,4
B.每隔一秒依次列印5,5,5,5,5
C.依次列印5,5,5,5,5
D.依次列印0,1,2,3,4
答案:D.依次列印0,1,2,3,4
解析:涉及到閉包的問題。到時候單獨寫一篇
1.在jQuery中,有以下代碼
$(".btn").click(function(){
var json = [
{"S_Name":"周顔", "S_Sex":"男"},
{"S_Name":"周穎", "S_Sex":"女"}
];
$.each(json,function(index, s) {
alert(s.S_Name + "," + s.S_Sex); --語句1
});
);
A.語句1會被執行1次
B.$.each()函數的用法有誤
C.此代碼不會正常運作
D.語句1會被執行2次
答案:D.語句1會被執行2次
解析:我還不是很懂。。。
2.請看下列html代碼:
<ul id="u_item">
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
使用jQuery計算<li>的個數,下列代碼正确的是:
A.var $obj = $('li'); alert($obj.length);
B.var $obj = $('#li'); alert($obj.length);
C.var $obj = $('#li'); alert($obj.length());
D.var $obj = $('ul li'); alert($obj.length());
答案:A.var $obj = $('li'); alert($obj.length);
3.哪一個可以作為串聯式jQuery指令的示例
A. $("box").fadeOut().fadeIn()
B. $("<#box>").fadeOut().fadeIn()
C. $(#box).fadeOut().fadeIn()
D. $("#box").fadeOut().fadeIn()
答案:D. $("#box").fadeOut().fadeIn()
4.在jQuery中,函數()能夠實作元素顯示和隐藏的互換
A. fade() B.hide() C.show() D.toggle()
答案:D.toggle()
1.webpack的熱更新會不會重新整理浏覽器
A.會 B.不會
答案:B.不會
解析:暫時還沒有接觸到webpack,不懂,以後再來補充吧。。
2.下面對于前端建構工具gulp.js的了解正确的是
A.Gulp遵循CommonJS規範,并且遵循代碼優于配置政策
B.Gulp.js是基于Node.js建構的
C.Gulp.js利用Node.js強大的流,不需要往磁盤中寫中間檔案,可以快速建構項目并減少頻繁的IO操作,更快地完成建構
D.以上三者都是
答案:D.以上三者都是
解析:暫時還沒有接觸到gulp.js,不懂,以後再來補充
1.以下答案中,有關ICMP最不正确的是
A.如果一個ICMP包被清除,另一個新的ICMP包就會産生
B.ICMP被IP資料包封裝
C.ICMP的主要功能是用于路由器和伺服器間的錯誤通知
D.ICMP是網絡控制消息協定的縮寫
答案:A.如果一個ICMP包被清除,另一個新的ICMP包就會産生
解析:ICMP消息被封裝在IP資料包内,通過IP傳送的ICMP消息主要是涉及錯誤操作的報告和回送給源節點的關于IP資料包處理情況的消息;
ICMP是(Internet Control Message Protocol)Internet控制封包協定。它是TCP/IP協定族的一個子協定,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然并不傳輸使用者資料,但是對于使用者資料的傳遞起着重要的作用。
2.TCP連接配接釋放過程,叙述不正确的是:
A.釋放連接配接采用了改進的三次握手機制
B.當一方釋放連接配接後另一方即不能繼續發送資料
C.隻有雙方均釋放連接配接後,該連接配接才被釋放
D.通過設定FIN來表示釋放連接配接
答案:B.當一方釋放連接配接後另一方即不能繼續發送資料
解析:
對于一個已經建立的連接配接,TCP使用改進的三次握手來釋放連接配接(使用一個帶有FIN附加标記的封包段)。TCP關閉連接配接的步驟如下: 第一步,當主機A的應用程式通知TCP資料已經發送完畢時,TCP向主機B發送一個帶有FIN附加标記的封包段(FIN表示英文finish)。 第二步,主機B收到這個FIN封包段之後,并不立即用FIN封包段回複主機A,而是先向主機A發送一個确認序号ACK,同時通知自己相應的應用程式:對方要求關閉連接配接(先發送ACK的目的是為了防止在這段時間内,對方重傳FIN封包段)。 第三步,主機B的應用程式告訴TCP:我要徹底的關閉連接配接,TCP向主機A送一個FIN封包段。 第四步,主機A收到這個FIN封包段後,向主機B發送一個ACK表示連接配接徹底釋放。
1.n個頂點的生成樹有幾條邊
A.n-1 B.n/2 C.n D.n+1
答案:A.n-1
解析:關于生成樹的概念可以看看這個,相對比較通俗,https://blog.csdn.net/qq_33060405/article/details/78536847
2.用單循環連結清單示隊列,正确的說法是
A.可設一個頭指針使入隊、出隊都友善
B.無論如何,隻可能使入隊友善
C.必須設頭尾指針才能使入隊、出隊都友善
D.可設一個尾指針使入隊、出隊都友善
答案:D.可設一個尾指針使入隊、出隊都友善
解析:不明白,資料結構沒學好,隻能以後補充了。