Ⅰ Web前端面試題小集
一、一個頁面上兩個div左右鋪滿整個瀏覽器,要保證左邊的div一直為100px,右邊的div跟隨瀏覽器大小變化(比如瀏覽器為500,右邊div為400,瀏覽器為900,右邊div為800),請寫出大概的css代碼。
1.使用flex
//html
Ⅱ 有哪些經典的 Web 前端或者 JavaScript 面試筆試題
、定項選擇題 (每題3共30)
1. 聲明象給加name屬性show顯示其name值代碼確( D )
A. var obj = [name:"zhangsan",show:function(){alert(name);}];
B. var obj = {name:zhangsan,show:alert(this.name)};
C. var obj = {name:zhangsan,show:function(){alert(name);}};
D. var obj = {name:zhangsan,show:function(){alert(this.name);}};
2. 關於Array數組象說確( CD )
A. 數組數據排序用sort函數排序效非預期給sort函數加排序函數參數
B. reverse用於數組數據倒序排列
C. 向數組位置加新元素用pop
D. unshift用於向數組刪除第元素
3. 要頁面狀態欄顯示已經選該文本框列JavaScript語句確( A )
A. window.status=已經選該文本框
B. document.status=已經選該文本框
C. window.screen=已經選該文本框
D. document.screen=已經選該文本框
4. 點擊頁面按鈕使打新窗口載入網頁JavaScript代碼行( AD )
A. button value=new
onclick=open(『new.html』, 『_blank』)/>
B. button value=new
onclick=window.location=』new.html』;/>
C. button value=new
onclick=location.assign(『new.html』);/>
D. _blankaction=new.html>
submit value=new/>
5. 使用JavaScript向網頁輸
hello
代碼行( BD )
A. text/javascript>
document.write(
hello
);
B. text/javascript>
document.write(
hello
);
C. text/javascript>
hello
D.
text/javascript>
document.write(hello);
6. 析面代碼:
text/javascript>
function writeIt (value) { document.myfm.first_text.value=value;}
#ffffff>
myfm>
text name=first_text>
text name=second_text>
說確( CD )
A. 頁面第二文本框輸入內容滑鼠離第二文本框第文本框內容變
B. 頁面第文本框輸入內容滑鼠離第文本框第二文本框復制第文本框內容
C. 頁面第二文本框輸入內容滑鼠離第二文本框第文本框復制第二文本框內容
D. 頁面第文本框輸入內容滑鼠離第文本框第二文本框內容變
7. 面JavaScript語句( D )實現檢索前頁面表單元素所文本框並全部清空
A. for(vari=0;i< form1.elements.length;i++) {
if(form1.elements.type==text)
form1.elements.value=";}
B. for(vari=0;i
if(forms[0].elements.type==text)
forms[0].elements.value=";
}
C. if(document.form.elements.type==text)
form.elements.value=";
D. for(vari=0;i
for(var j=0;j
if(document.forms.elements[j].type==text)
document.forms.elements[j].value=";
}
}
8. 表單(form1)文本框元素(fname)用於輸入電號碼格式:010-82668155要求前3位010緊接-面8位數字要求提交表單根據述條件驗證該文本框輸入內容效性列語句( A )能確實現功能
A. var str= form1.fname.value;
if(str.substr(0,4)!=010-|| str.substr(4).length!=8 ||
isNaN(parseFloat(str.substr(4))))
alert(效電號碼);
B. var str= form1.fname.value;
if(str.substr(0,4)!=010- && str.substr(4).length!=8 &&
isNaN(parseFloat(str.substr(4))))
alert(效電號碼);
C. var str= form1.fname.value;
if(str.substr(0,3)!=010-|| str.substr(3).length!=8 ||
isNaN(parseFloat(str.substr(3))))
alert(效電號碼);
D. var str= form1.fname.value;
if(str.substr(0,4)!=010-&& str.substr(4).length!=8 &&
!isNaN(parseFloat(str.substr(4))))
alert(效電號碼);
9. 關於則表達式聲明6位數字郵編代碼確( C )
A. var reg = /\d6/;
B. var reg = \d{6}\;
C. var reg = /\d{6}/;
D. var reg = new RegExp(\d{6});
10. 關於JavaScriptxml處理說明確( BCD )
A. Xml種擴展標記語言格式更規范作未html替代
B. Xml般用於傳輸存儲數據html補充兩者目同
C. JavaScript解析處理xml數據瀏覽器同其做同
D. IE瀏覽器處理xml首先需要創建ActiveXObject象
二、問答題
1. 列舉瀏覽器象模型BOM用至少4象並列舉window象用至少5 (10)
象:Window document location screen history navigator
:Alert() confirm() prompt() open() close()
2. 簡述列舉文檔象模型DOMdocument用查找訪問節點並做簡單說明 (10)
Document.getElementById 根據元素id查找元素
Document.getElementByName 根據元素name查找元素
Document.getElementTagName 根據指定元素名查找元素
三、程序題
1、補充按鈕事件函數確認用戶否退前頁面確認關閉窗口; (10)
text/javascript >
function closeWin(){
//處添加代碼
if(confirm(確定要退)){
window.close();
}
}
buttonvalue=關閉窗口onclick=closeWin()/>
2、寫簡單描述html標簽(帶屬性始標簽結束標簽)則表達式並字元串html標簽除掉(15)
var str = div
面段落
;
//
text/javascript>
varreg = /<\/?\w+\/?>/gi;
varstr = div
面段落
;
alert(str.replace(reg,"));
3、完foo()函數內容要求能夠彈框提示前選第幾單選框(10)
Content-Type content=text/html;charset=utf-8″ />
text/javascript >
function foo() {
//處添加代碼
var rdo =document.form1.radioGroup;
for(var i =0 ;i
if(rdo.checked){
alert(您選擇第+(i+1)+單選框);
}
}
}
form1″ >
radio name=radioGroup/>
radio name=radioGroup/>
radio name=radioGroup/>
radio name=radioGroup/>
submit/>
4、完函數showImg()要求能夠態根據拉列表選項變化更新圖片顯示 (15)
text/javascript >
function showImg (oSel) {
//處添加代碼
var str = oSel.value;
document.getElementById(pic).src= str+.jpg;
}
picsrc=img1.jpgwidth=200″ height=200″ />
sel>
img1>城市
img2>都市早報
img3>青山綠水
Ⅲ Web前端面試之css高頻面試題
今天小編要跟大家分享的文章是關於web前端面試之css高頻面試題。想要參加web前端面試的小夥伴們來和小編一起看一看吧,希望本篇文章能夠對大家有所幫助。
1.什麼是BFC機制
BFC(BlockFormattingContext),塊級格式化上下文,是一個獨立的渲染區域,讓處於BFC內部的元素與外部的元素相互隔離,使內外元素的定位不會相互影響。
·___シ⑻跫(以下任意一條)
§_loat的值不為none
§_verflow的值不為visible
§_isplay的值為table-cell、tabble-caption和inline-block之一
§_osition的值不為static或則releative中的任何一個
在IE下,Layout,可通過zoom:1_シ
·___FC布局與普通文檔流布局區別:
BFC布局規則:
1._浮動的元素會被父級計算高度(父級元素觸發了BFC)
2._非浮動元素不會覆蓋浮動元素的位置(非浮動元素觸發了BFC)
3._margin不會傳遞給父級(父級觸發BFC)
4._屬於同一個BFC的兩個相鄰元素上下margin會重疊
5._普通文檔流布局:浮動的元素是不會被父級計算高度
6._非浮動元素會覆蓋浮動元素的位置
7._margin會傳遞給父級元素
8._兩個相鄰元素上下的margin會重疊
·___⒅械撓τ
§_柚_argin重疊
§_梢園《亍宄誆扛《(清除浮動的原理是兩個div都位於同一個BFC區域之中)
§_允視α嚼覆季
§_梢宰柚乖乇桓《馗哺
2.CSS3中新增的選擇器以及屬性
這里只是列出來,具體的使用,請查看我的關於css3新增選擇器與屬性文章
·___糶匝≡衿
td{border:1pxsolid#ccc;padding:5px;margin:auto;}
td>p{text-align:left;}
td>pspan{text-align:center;display:block;}
屬性選擇器
含義描述
E[att^="val"]
屬性att的值以"val"開頭的元素
E[att$="val"]
屬性att的值以"val"結尾的元素
E[att*="val"]
屬性att的值包含"val"字元串的元素
·___峁刮崩嘌≡衿
td{border:1pxsolid#ccc;padding:5px;margin:auto;}
td>p{text-align:left;}
td>pspan{text-align:center;display:block;}
選擇器
含義描述
E:root
匹配文檔的根元素,對於HTML文檔,就是HTML元素
E:nth-child(n)
匹配其父元素的第n個子元素,第一個編號為1
E:nth-last-child(n)
匹配其父元素的倒數第n個子元素,第一個編號為1
E:nth-of-type(n)
與:nth-child()作用類似,但是僅匹配使用同種標簽的元素
E:nth-last-of-type(n)
與:nth-last-child()作用類似,但是僅匹配使用同種標簽的元素
E:last-child
匹配父元素的最後一個子元素,等同於:nth-last-child(1)
E:first-of-type
匹配父元素下使用同種標簽的第一個子元素,等同於:nth-of-type(1)
E:last-of-type
匹配父元素下使用同種標簽的最後一個子元素,等同於:nth-last-of-type(1)
E:only-child
匹配父元素下僅有的一個子元素,等同於:first-child:last-child或:nth-child(1):nth-last-child(1)
E:only-of-type
匹配父元素下使用同種標簽的唯一一個子元素,等同於:first-of-type:last-of-type或:nth-of-type(1):nth-last-of-type(1)
E:empty
匹配一個不包含任何子元素的元素,注意,文本節點也被看作子元素
·___ss3新增屬性
td{border:1pxsolid#ccc;padding:5px;margin:auto;}
td>p{text-align:left;}
td>pspan{text-align:center;display:block;}
屬性
含義描述
兼容
transition
設置過渡效果
transform
變換效果(移動、縮放、轉動、拉長或拉伸)
animation
動畫效果
box-shadow
陰影效果
FF3.5,Safari4,Chrome3
text-shadow
文本陰影
FF3.5,Opera10,Safari4,Chrome3
border-colors
為邊框設置多種顏色
FF3+
boder-image
圖片邊框
FF3.5,Safari4,Chrome3
text-overflow
文本截斷
IE6+,Safari4,Chrome3,Opera10
word-wrap
自動換行
IE6+,FF3.5,Safari4,Chrome3
border-radius
圓角邊框
FF3+,Safari4,Chrome3
opacity
不透明度
all
box-sizing
控制盒模型的組成模式
FF3+,Opera10,Safari4,Chrome3
outline
外邊框
FF3+,safari4,chrome3,opera10
background-size
不指定背景圖片的尺寸
safari4,chrome3,opera10
background-origin
指定背景圖片從哪裡開始顯示
safari4,chrome3,FF3+
background-clip
指定背景圖片從什麼位置開始裁切
safari4,chrome3
rgba
基於r,g,b三個顏色通道來設置顏色值,通過a來設置透明度
safari4,chrome3,FF3,opera10
3.居中布局
·___驕又
1._行內元素:_ext-align:center
2._塊級元素:_argin:0auto
3._絕對定位和移動:_bsolute+transform
4._絕對定位和負邊距:_bsolute+margin
5._flex布局:_lex+
justify-content:center
·___怪本又
1._子元素為單行文本:_ine-height:height
2._absolute+transform
3._flex+align-items:center
4._table:_isplay:table-cell;vertical-align:
middle
5._利用position和top和負margin
·___醬怪本又_HAPE*MERGEFORMAT
1.已知元素寬高:絕對定位+margin:auto:
_div{
___idth:200px;
___eight:200px;
___ackground:
green;
___osition:absolute;
___eft:0;
___op:0;
___ottom:0;
___ight:0;
___argin:
auto;
_
2.已知元素寬高:_遠ㄎ+負margin
_div{
___idth:200px;
___eight:200px;
___ackground:
green;
___osition:absolute;
___eft:0;
___op:0;
___ottom:0;
___ight:0;
___argin:
auto;
_
3.absolute+transform
_div{
__width:200px;
__height:200px;
__background:
green;
__position:absolute;
__left:50%;_/*定位父級的50%*/
__top:50%;
__transform:translate(-50%,-50%);/*自己的50%*/
_}
4.flex+justify-content
+align-items
.box{
_height:600px;
_display:flex;
_justify-content:center;//子元素水平居中
_align-items:center;__//子元素垂直居中
__/*aa只要三句話就可以實現不定寬高水平垂直居中。*/
__
.box>div{
__ackground:
green;
__idth:200px;
__eight:200px;
_
4.清除浮動有哪些方法,各有什麼優缺點
·___褂_lear屬性的空元素
在浮動元素後使用一個空元素如
Ⅳ 2020年Web前端面試題及答案匯總
今天小編要跟大家分享的文章是關於2020年Web前端面試題及答案匯總。正准備參加Web前端面試的小夥伴們來和小編一起看一看吧,希望本篇文章能夠對大家有所幫助。 Ⅳ 求web前端開發筆試題
最低0.27元/天開通網路文庫會員,可在文庫查看完整內容> Ⅵ 常見的web前端面試題及答案分享 1、 說下行內元素和塊級元素的區別?行內塊元素的兼容性使用?(IE8 以下) 答:行內元素:會在水平方向排列,不能包含塊級元素,設置width無效,height無效(可以設置line-height),margin上下無效,padding上下無效。塊級元素:各占據一行,垂直方向排列。從新行開始結束接著一個斷行。兼容性:display:inline-block;*display:inline;*zoom:1。 2、box-sizing常用的屬性有哪些?分別有什麼作用? 答:box-sizing: content-box|border-box|inherit。content-box:寬度和高度分別應用到元素的內容框。在寬度和高度之外繪制元素的內邊距和邊框(元素默認效果)。 border-box:元素指定的任何內邊距和邊框都將在已設定的寬度和高度內進行繪制。通過從已設定的寬度和高度分別減去邊框和內邊距才能得到內容的寬度和高度。 3、Doctype作用?標准模式與兼容模式各有什麼區別? 答:告知瀏覽器的解析器用什麼文檔標准解析這個文檔。DOCTYPE不存在或格式不正確會導致文檔以兼容模式呈現。 標准模式的排版和JS運作模式都是以該瀏覽器支持的最高標准運行。在兼容模式中,頁面以寬松的向後兼容的方式顯示,模擬老式瀏覽器的行為以防止站點無法工作。 4、html5有哪些新特性?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分 HTML 和 HTML5? 答:HTML5 現在已經不是 SGML 的子集,主要是關於圖像,位置,存儲,多任務等功能的增加。 (1)繪畫 canvas; (2)用於媒介回放的 video 和 audio 元素; (3)本地離線存儲 localStorage 長期存儲數據,瀏覽器關閉後數據不丟失; (4)sessionStorage 的數據在瀏覽器關閉後自動刪除; (5)語意化更好的內容元素,比如 article、footer、header、nav、section; (6)表單控制項,calendar、date、time、email、url、search; (7)新的技術webworker, websocket, Geolocation; IE8/IE7/IE6支持通過document.createElement方法產生的標簽,可以利用這一特性讓這些瀏覽器支持HTML5新標簽,瀏覽器支持新標簽後,還需要添加標簽默認的樣式。當然也可以直接使用成熟的框架、比如html5shim。 以上就是環球青藤小編關於web前端面試題的相關分享,希望對大家有所幫助,想要了解更多相關內容,請及時關注本平台並進行查看! Ⅶ 有哪些經典的 Web 前端或者 JavaScript 面試筆試題
JavaScript面試題:字元串處理 Ⅷ 有哪些經典的 Web 前端或者 JavaScript 面試筆試題
一、不定項選擇題 (每題3分,共30分) Ⅸ Web前端面試的常見面試題匯總 paragraph Ⅹ 一份超全的Web前端工程師面試題!收藏~
今天小編為大家准備了一份超全的Web前端工程師面試題,准備換工作參加Web前端工程師面試的小夥伴們快來和小編一起看一看這些題目吧,希望能夠對你的面試有所幫助!
一、Mysql資料庫
1.MySQL中varchar與char的區別以及varchar(50)中的50代表的涵義?
答案:
Varchar是變長字元串,最多存儲的大小是65535位元組,查詢速度相對較慢;Char
是定常字元串,最多存儲的大小是255位元組,查詢速度相對較快;
varchar(50)表示:Mysql4.0表示存放50個位元組,5.0存放50個字元。
2.簡述瀏覽器打開#顯示頁面,中間都經過哪些過程?
答案:
向DNS伺服器獲取域名對應的IP地址並返回瀏覽器,通過IP地址向Web伺服器發請求,Web伺服器從文件伺服器獲取網頁中所需要的文件,從資料庫伺服器獲取網頁中所需要的數據,最後講完整的網頁相應給瀏覽器。
3.如何解決MySQL中存儲中文亂碼問題?
答案:
腳本文件採用UTF8編碼
客戶端連接資料庫使用UTF8編碼
伺服器端創建資料庫使用UTF8編碼
4.Float和Double的區別是什麼?
答案:
FLOAT(單精度浮點數)類型數據可以存儲至多8位十進制數,並在內存中佔4位元組。
DOUBLE(雙精度浮點數)類型數據可以存儲至多18位十進制數,並在內存中佔8位元組。
5.把數據id等於1的名字oldboy更改為oldgirl?
答案:
updatetestsetname='oldgirl'whereid=1;
6.如何登錄mysql數據?
答案:
mysql-uroot。
二、JS基礎
1.continue和break有什麼區別?
答案:
break和continue都是用來控制循環結構的:
break終止循環,跳出循環體執行循環後面的語句。
continue跳過本次循環,執行下一次循環。
2.i++和++i的區別?
答案:
i++:先用i值後加1,
++i:先加1後用i值,
計算:varn=5;求varnum=n+++++n+n+++++n+n;//37
3.JavaScript都有哪些數據類型?
答案:
原始類型:數值型/字元串型/布爾型/undefined/null
引用類型:對象
4.自調用函數是什麼?用於什麼地方?
答案:立即執行的函數。(function(){//函數體})();
用於創建一個局部作用域。
5.slice和splice有什麼區別?
答案:
slice截取子數組,從指定的數組中,截取幾個連續的元素組成一個新數組
splice允許從指定數組中,刪除一部分元素,同時再添加另一部分元素
6.typeof返回的類型有哪些?
答案:
number、string、boolean、undefined、object、function
ex:
vararr=[1,2,3,4,5];
console.log(typeof(arr));//object
functionmyDemo(){
returnfunctiontest(){};
}
console.log(typeof(myDemo()));//function
7.取1~11之間的隨機數(即包括1不包括11)?
答案:
Math.floor(Math.random()*10+1)
parseInt(Math.random()*10+1)
8.什麼是變數聲明提前?
答案:
使用var關鍵字聲明的變數,會將聲明提升到所在作用域的最前邊。。
9.push、pop、shift和unshift區別?
答案:
這兩組同為對數組的操作,並且會改變數組的本身的長度及內容。
不同的是push()、pop()是從數組的尾部進行增減,unshift()、shift()是從數組的頭部進行增減。。
10.例舉4種強制類型轉換和3種隱式類型轉換?
答案:
強制轉換:parseInt/parseFloat/Number/toString
隱式轉換:
字元串+數值數值轉字元串
數值+布爾型布爾型中true轉為1,false轉為0
字元串+布爾型布爾型轉為字元串。
11.函數聲明與函數表達式的區別?
答案:
相同點:兩者都可以創建函數。
不同點:函數聲明可以存在函數提升(前),函數表達式不存在函數提升(前)。
//函數聲明
functionmyFunction(){
functioninnerFunction(){}
}
//以下為函數表達式
varmyFunc=function(){};
myFunc(function(){
returnfunction(){};
});
12.請指出JavaScript宿主對象和原生對象的區別?
答案:
宿主對象:指JavaScript解釋器提供的對象,由解釋器廠家自定義並提供實現,不同的解釋器提供的擴展對象存在較大的差異(DOM和BOM對象)。
原生對象:JavaScript語言本身預定義的對象,在ECMAScript標准中定義,由所有的解釋器廠家來提供具體實現(Array,Date,Math,Number,String,Boolean等)。
13.js中有哪些內置函數?
答案:Object,Array,Boolean,Number,String,Function,Date,Math,RegExp,
Error,Global
14.列舉出獲取日期相關函數
答案:
console.log(Date.now());//返回當前日期和時間/01/0100:00:00'之間的毫秒值
vardt=newDate();//獲取當前時間---年月日時分秒
console.log(dt.getTime());//返回當前日期和時間/01/0100:00:00'之間的毫秒值
console.log(dt.getFullYear());//年份
console.log(dt.getMonth()+1);//月份(0-11)
console.log(dt.getDate());//日期(0/1-31)
console.log(dt.getDay());//星期(0-6)
console.log(dt.getHours());//小時(0-23)
console.log(dt.getMinutes());//分鍾(0-59)
console.log(dt.getMilliseconds);//返回毫秒(0-999)
console.log(dt.getSeconds());//秒(0-59)
15.Math相關函數
答案:
Math.random()-返回0~1之間的隨機數
Math.abs(x)-返回數的絕對值
Math.ceil(x)-向上取整
Math.floor(x)-向下取整
Math.round()四捨五入
Math.max()和Max.min()獲取一組數據中的最大值和最小值
Math.PI獲取圓周率π的值Math.pow()獲取一個值的多少次冪
Math.sqrt()對數值開方
Math.pow(10,2)=100;
Math.sqrt(100)=10;
16.null和undefined的區別?
答案:
undefined是訪問一個未初始化的變數時返回的值,
null是訪問一個尚不存在的對象時所返回的值。因此,可以把undefined看作是空的變數,而null看作是空的對象。
17.==和===有什麼不同?
答案:
==抽象相等,比較時,會先進行類型轉換,然後再比較值;
===嚴格相等,判斷兩個值相等同時數據類型也得相同。
18.setTimeout和setInterval的區別是什麼?
答案:
二者都是用來設置定時操作的。
setTimeout:設置一個定時器,在定時器到期後執行一次函數或代碼段
setInterval:設置一個定時器,以固定的時間間隔重復調用一個函數或者代碼段
19.請說出以下代碼執行結果
for(vari=0;i<3;i++){
setTimeout(function(){
console.log(i);
},0);
console.log(i);
}
答案:012333,執行過程如下
vari=0;
console.log(i);i++;
console.log(i);i++;
console.log(i);i++;
setTimeout(function(){console.log(i);
},0);s
etTimeout(function(){
console.log(i);
},0);
setTimeout(function(){
console.log(i);
},0);//輸出012333
20.請說出(true+flase)>2+true的執行結果
答案:false
21.當前代碼塊輸出結果是什麼?
varz=10;
functionfoo(){console.log(z);}
(function(funArg){varz=20;funArg();})(foo);
答案:10,自調用函數。
22.setTimeout(function(){},10)表示什麼意思?
答案:每隔10毫秒調用一次函數。
23.程序中捕獲異常的方法?
答案:
try{
}catch(e){
}finally{
}
24.以下代碼執行結果?
varuname='jack'
functionchange(){
alert(uname)//?
varuname='lily'
alert(uname)//?
}
change()
答案:undefinedlily
25.如何使用npm下載express模塊?
答案:npminstallexpress
26.split和join的區別?
答案:split()將字元串按照指定的字元分割成一個數組,並返回
join()將數組用指定的字元連接成一個字元串,並返回
27.看下列代碼會有什麼樣的輸出?
varfoo="11"+2-"1";
console.log(foo);
console.log(typeoffoo);
答案:111number
28.foo=foo||bar,這行代碼是什麼意思?為什麼要這樣寫?
答案:這種寫法稱之為短路表達式
相當於:
varfoo;
if(foo){
foo=foo;
}else{
foo=bar;
}
常用於函數參數的空判斷
29.用js實現隨機選取10_100之間的10個數字,存入一個數組,並排序
答案:
functiongetRandom(istart,iend){
variChoice=iend-istart+1;
returnMath.floor(Math.random()*iChoice+istart);
}variArray=[];
for(vari=0;i<10;i++){
varresult=getRandom(10,100);
iArray.push(result);
}iArray.sort();
30.如何獲取javascript三個數中的最大值和最小值?
答案:Math.max(a,b,c);//最大值
Math.min(a,b,c)//最小值
31.實現冒泡排序?
vararray=[5,4,3,2,1];
vartemp=0;
for(vari=0;i
for(varj=0;j
if(array[j]>array[j+1]){
temp=array[j+1];
array[j+1]=array[j];
array[j]=temp;
}
}
三、NODEJS
1.同步和非同步有何區別?
答案:
同步:指發送一個請求,需要等待返回,然後才能夠發送下一個請求,有等待過程(在一個任務進行中時不能開啟其他的任務)。
非同步:指發送一個請求,不需要等待返回,隨時可以再發送下一個請求,即不需要等待(在一個任務進行中時可以開啟其他的任務)。
2.NodeJS中有哪些類型模塊,文件操作用哪一個模塊?
答案:
模塊類型:核心模塊、自定義模塊、第三方模塊。
文件操作:fs模塊
3.對NodeJS的優點和缺點提出自己的看法?
答案:CPU密集型任務的特點是進行大量的計算,消耗CPU資源,比如計算圓周率(上千位)、對視頻進行編碼等,全靠CPU的運算能力
(一般用C語言,java)IO(Input/
Output)密集型任務,這類任務的特點是CPU消耗很少,大部分時間都在等待IO操作。常見的大部分任務都是IO密集型任務,比如Web應用(一般用腳本語言:python/Nodejs)。Nodejs設計思想中以事件驅動、非同步、非堵塞I/O密集型為核心,他提供的大多數api都是基於事件的、非同步的風格。所以非常適合處理高並發請求。此外,與Node伺服器交互的客戶端代碼是由js語言編寫的,因此客戶端和伺服器端都用同一種語言編寫,減少了成本。
4.使用NodeJS完成登錄功能(編寫HTML頁面和路由介面中的代碼)?
答案:
HTML頁面:
用戶:
密碼:
user.js路由
constexpress=require('express');
constpool=require('../pool.js');
varrouter=express.Router();
router.post('/login',(req,res)=>{
varobj=req.body;
var$uname=obj.uname;
if(!$uname){
res.send({code:401,msg:'unamerequired'});
return;
}
var$upwd=obj.upwd;
if(!$upwd){res.send({code:402,msg:'upwdrequired'});
return;
}
varsql='SELECT*FROMxz_userWHEREuname=?ANDupwd=?'
pool.query(sql,[$uname,$upwd],(err,result)=>{
if(err)throwerr;
if(result.length>0){
res.send({code:200,msg:'loginsuccess'});
}else{
res.send({code:301,msg:'loginerror'});
}});
});
//路由器導出
mole.exports=router;
5.什麼是Nodejs?
Nodejs是一個JavaScript的運行環境,是一個伺服器端的「JavaScript解釋器」,用於方便高效地搭建一些響應速度快、易於擴展的網路應用。它採用事件驅動、非同步編程,為網路服務而設計
原發布者:觸不可及112
Web前端開發系班級姓名成績1、目前常用的WEB標准靜態頁面語言是________。2、改變元素的外邊距用________,改變元素的內填充用________。3、在Table中,TR是________,TD是________。4、如果給一行兩列的表格(table)定義高度樣式,在________標簽中定義最合理,最能減少代碼的臃腫。5、對ulli的樣式設成無,應該是用什麼屬性________。6、在新窗口打開鏈接的方法是________。7、合理的頁面布局中常聽過結構與表現分離,那麼結構是________,表現是________。1、在下面的XHTML中,哪個可以正確地標記折行?A:
B:C:
2、下列哪些是格式良好的XHTML?A:Ashortparagraph
B:
Ashortparagraph
C:
Ashortparagraph3、在以下的HTML中,哪個是正確引用外部樣式表的方法?A:B:css"href="mystyle.css">C:mystyle.css4、在HTML文檔中,引用外部樣式表的正確位置是?A:文檔的末尾 B:文檔的頂部C:部分D:部分1、請寫出超鏈接的順序或者你在初始樣式中的鏈接方法。(10分)2、當float和margin同時使用時,IE6的雙倍邊距BUG如何解決?(6分)3、為什麼無法定義1px左右高度的容器?(7分)4、Firefox中標簽的居中問題的解決方法
在應聘前端程序員時,在筆試部分經常會考到字元串處理的問題。這些題有一個特點,站在考官的角度去考慮,它考的不是你會不會,而是你能不能在不借用XX手冊或者XX指南再或者網路谷歌的情況下,用比較簡潔的方式寫出答案來。就具體的字元串處理問題,鄭州尚學堂給大家分享一下。
1、字元串轉換
字元串轉換是最基礎的要求和工作,你可以將任何類型的數據都轉換為字元串,你可以用下面三種方法的任何一種:
var num= 19; // 19
var myStr = num.toString(); // "19"
你同樣可以這么做:
var num= 19; // 19
var myStr = String(num); // "19"
或者,再簡單點兒:
var num= 19; // 19
var myStr = "" +num; // "19"
2、字元串分割
字元串分割,即將一個字元串分割為多個字元串,JavaScript中給我們提供了一個非常方便的函數,如:
var myStr = "I,Love,You,Do,you,love,me";
var substrArray = myStr .split(","); // ["I", "Love", "You", "Do", "you", "love", "me"];
var arrayLimited = myStr .split(",", 3); // ["I", "Love", "You"];
split()的第二個參數,表示返回的字元串數組的最大長度。
3、獲取字元串長度
字元串長度是在開發中經常要用到的,非常簡單如下:
var myStr = "I,Love,You,Do,you,love,me";
var myStrLength = myStr.length; //25
4、查詢子字元串
很多人都會忘記這幾個JavaScript的自帶的方法,或者忘記它們的具體用法,從而導致在做題的時候不得不嵌套for循環來做。
第一個函數:indexOf(),它從字元串的開頭開始查找,找到返回對應坐標,找不到返回-1,如下:
var myStr = "I,Love,you,Do,you,love,me";
var index = myStr.indexOf("you"); // 7 ,基於0開始,找不到返回-1
第二個函數:lastIndexOf(),它從字元串的末尾開始查找,找到返回對應坐標,找不到返回-1,如下:
var myStr = "I,Love,you,Do,you,love,me";
var index = myStr.lastIndexOf("you"); // 14
以上兩個函數同樣接收第二個可選的參數,表示開始查找的位置。
5、字元串替換
單單查到字元串應該還不會停止,一般題目都還經常會遇到讓你查到並替換為你自己的字元串,例如:
var myStr = "I,love,you,Do,you,love,me";
var replacedStr = myStr.replace("love","hate");//"I,hate,you,Do,you,love,me"
默認只替換第一次查找到的,想要全局替換,需要置上正則全局標識,如:
var myStr = "I,love,you,Do,you,love,me";
var replacedStr = myStr.replace(/love/g,"hate");//"I,hate,you,Do,you,hate,me"
6、查找給定位置的字元或其字元編碼值
想要查找給定位置的字元,你可以使用如下函數:
var myStr = "I,love,you,Do,you,love,me";
var theChar = myStr.charAt(8);// "o",同樣從0開始
同樣,它的一個兄弟函數就是查找對應位置的字元編碼值,如:
var myStr = "I,love,you,Do,you,love,me";
var theChar = myStr.charCodeAt(8); //111
7、字元串連接
字元串連接操作可以簡單到用一個加法運算符搞定,如:
var str1 = "I,love,you!";
var str2 = "Do,you,love,me?";
var str = str1 + str2 + "Yes!";//"I,love,you!Do,you,love,me?Yes!"
同樣,JavaScript也自帶了相關的函數,如:
var str1 = "I,love,you!";
var str2 = "Do,you,love,me?";
var str = str1.concat(str2);//"I,love,you!Do,you,love,me?"
其中concat()函數可以有多個參數,傳遞多個字元串,拼接多個字元串。
8、字元串切割和提取
有三種可以從字元串中抽取和切割的方法,如:
第一種,使用slice():
var myStr = "I,love,you,Do,you,love,me";
var subStr = myStr.slice(1,5);//",lov"
第二種,使用substring():
var myStr = "I,love,you,Do,you,love,me";
var subStr = myStr.substring(1,5); //",lov"
第三種,使用substr():
var myStr = "I,love,you,Do,you,love,me";
var subStr = myStr.substr(1,5); //",love"
與第一種和第二種不同的是,substr()第二個參數代表截取的字元串最大長度,如上結果所示。
9、字元串大小寫轉換
常用的轉換為大寫或者小寫字元串函數,如下:
var myStr = "I,love,you,Do,you,love,me";
var lowCaseStr = myStr.toLowerCase();//"i,love,you,do,you,love,me";
var upCaseStr = myStr.toUpperCase();//"I,LOVE,YOU,DO,YOU,LOVE,ME"
10、字元串匹配
字元串匹配可能需要你對正則表達式有一定的了解,先來看看match()函數:
var myStr = "I,love,you,Do,you,love,me";
var pattern = /love/;
var result = myStr.match(pattern);//["love"]
console.log(result .index);//2
console.log(result.input );//I,love,you,Do,you,love,me
如你所見,match()函數在字元串上調用,並且接受一個正則的參數。來看看第二個例子,使用exec()函數:
var myStr = "I,love,you,Do,you,love,me";
var pattern = /love/;
1. 聲明一個對象,給它加上name屬性和show方法顯示其name值,以下代碼中正確的是( D )
A. var obj = [name:"zhangsan",show:function(){alert(name);}];
B. var obj = {name:」zhangsan」,show:」alert(this.name)」};
C. var obj = {name:」zhangsan」,show:function(){alert(name);}};
D. var obj = {name:」zhangsan」,show:function(){alert(this.name);}};
2. 以下關於Array數組對象的說法不正確的是( CD )
A. 對數組里數據的排序可以用sort函數,如果排序效果非預期,可以給sort函數加一個排序函數的參數
B. reverse用於對數組數據的倒序排列
C. 向數組的最後位置加一個新元素,可以用pop方法
D. unshift方法用於向數組刪除第一個元素
3. 要將頁面的狀態欄中顯示「已經選中該文本框」,下列JavaScript語句正確的是( A )
A. window.status=」已經選中該文本框」
B. document.status=」已經選中該文本框」
C. window.screen=」已經選中該文本框」
D. document.screen=」已經選中該文本框」
4. 點擊頁面的按鈕,使之打開一個新窗口,載入一個網頁,以下JavaScript代碼中可行的是( AD )
A.
onclick=」open(『new.html』, 『_blank』)」/>
B.
onclick=」window.location=』new.html』;」/>
C.
onclick=」location.assign(『new.html』);」/>
D.
5. 使用JavaScript向網頁中輸出
hello
,以下代碼中可行的是( BD )
A.
document.write(
hello
);
B.
document.write(「
hello
」);
C.
hello
D.
document.write(「hello」);
6. 分析下面的代碼:
function writeIt (value) { document.myfm.first_text.value=value;}
以下說法中正確的是( CD )
A. 在頁面的第二個文本框中輸入內容後,當滑鼠離開第二個文本框時,第一個文本框的內容不變
B. 在頁面的第一個文本框中輸入內容後,當滑鼠離開第一個文本框時,將在第二個文本框中復制第一個文本框的內容
C. 在頁面的第二個文本框中輸入內容後,當滑鼠離開第二個文本框時,將在第一個文本框中復制第二個文本框的內容
D. 在頁面的第一個文本框中輸入內容後,當滑鼠離開第一個文本框時,第二個文本框的內容不變
7. 下面的JavaScript語句中,( D )實現檢索當前頁面中的表單元素中的所有文本框,並將它們全部清空
A. for(vari=0;i< form1.elements.length;i++) {
if(form1.elements.type==」text」)
form1.elements.value=」";}
B. for(vari=0;i
if(forms[0].elements.type==」text」)
forms[0].elements.value=」";
}
C. if(document.form.elements.type==」text」)
form.elements.value=」";
D. for(vari=0;i
for(var j=0;j
if(document.forms.elements[j].type==」text」)
document.forms.elements[j].value=」";
}
}
8. 在表單(form1)中有一個文本框元素(fname),用於輸入電話號碼,格式如:010-82668155,要求前3位是010,緊接一個「-」,後面是8位數字。要求在提交表單時,根據上述條件驗證該文本框中輸入內容的有效性,下列語句中,( A )能正確實現以上功能
A. var str= form1.fname.value;
if(str.substr(0,4)!=」010-」|| str.substr(4).length!=8 ||
isNaN(parseFloat(str.substr(4))))
alert(「無效的電話號碼!」);
B. var str= form1.fname.value;
if(str.substr(0,4)!=」010-」 && str.substr(4).length!=8 &&
isNaN(parseFloat(str.substr(4))))
alert(「無效的電話號碼!」);
C. var str= form1.fname.value;
if(str.substr(0,3)!=」010-」|| str.substr(3).length!=8 ||
isNaN(parseFloat(str.substr(3))))
alert(「無效的電話號碼!」);
D. var str= form1.fname.value;
if(str.substr(0,4)!=」010-」&& str.substr(4).length!=8 &&
!isNaN(parseFloat(str.substr(4))))
alert(「無效的電話號碼!」);
9. 關於正則表達式聲明6位數字的郵編,以下代碼正確的是( C )
A. var reg = /\d6/;
B. var reg = \d{6}\;
C. var reg = /\d{6}/;
D. var reg = new RegExp(「\d{6}」);
10. 關於JavaScript里的xml處理,以下說明正確的是( BCD )
A. Xml是種可擴展標記語言,格式更規范,是作為未來html的替代
B. Xml一般用於傳輸和存儲數據,是對html的補充,兩者的目的不同
C. 在JavaScript里解析和處理xml數據時,因為瀏覽器的不同,其做法也不同
D. 在IE瀏覽器里處理xml,首先需要創建ActiveXObject對象
二、問答題
1. 列舉瀏覽器對象模型BOM里常用的至少4個對象,並列舉window對象的常用方法至少5個 (10分)
對象:Window document location screen history navigator
方法:Alert() confirm() prompt() open() close()
2. 簡述列舉文檔對象模型DOM里document的常用的查找訪問節點的方法並做簡單說明 (10分)
Document.getElementById 根據元素id查找元素
Document.getElementByName 根據元素name查找元素
Document.getElementTagName 根據指定的元素名查找元素
三、程序題
1、補充按鈕事件的函數,確認用戶是否退出當前頁面,確認之後關閉窗口; (10分)
function closeWin(){
//在此處添加代碼
if(confirm(「確定要退出嗎?」)){
window.close();
}
}
2、寫出簡單描述html標簽(不帶屬性的開始標簽和結束標簽)的正則表達式,並將以下字元串中的html標簽去除掉(15分)
var str = 「
這里是div
裡面的段落
」;
//
varreg = /<\/?\w+\/?>/gi;
varstr = 「
這里是div
裡面的段落
」;
alert(str.replace(reg,」"));
3、完成foo()函數的內容,要求能夠彈出對話框提示當前選中的是第幾個單選框。(10分)
function foo() {
//在此處添加代碼
var rdo =document.form1.radioGroup;
for(var i =0 ;i
if(rdo.checked){
alert(「您選擇的是第」+(i+1)+」個單選框」);
}
}
}
4、完成函數showImg(),要求能夠動態根據下拉列表的選項變化,更新圖片的顯示 (15分)
function showImg (oSel) {
//在此處添加代碼
var str = oSel.value;
document.getElementById(「pic」).src= str+」.jpg」;
}
1.漸進增強與優雅降級
漸進增強
並不是一種技術,而是一種設計思想。各個瀏覽器的渲染能力各不相同,要做一個每個人都能看到的網頁、感受到的體驗都一致的網站幾乎不可能。但還是得網站的可訪問性,保證用戶在任何環境下都能正常訪問網頁得核心內容或能使用基本功能(避免網頁打不開、排版錯誤等),並為他們提供當前條件下最好的體驗,這就是漸進增強得核心思想。
優雅降級也是一種設計思想,為了保證在高版本瀏覽器中提供最好的體驗,碰到低版本瀏覽器再降級進行兼容處理,使其能正常瀏覽。
這兩種思想的區別在於:
1.漸進增強是向上兼容,優雅降級是向下兼容;
2.漸進增強是從簡單到復雜,優雅降級是從復雜到簡單;
3.漸進增強關注的是內容(保證核心內容),優雅降級關注的是瀏覽體驗(為了兼容低版本瀏覽器)
2.DOCTYPE
作用
DTD(DocumentTypeDefinition,文檔類型定義)是一系列的語法規則,用來定義XML或(X)HTML
的文檔類型。瀏覽器會使用它來判斷文檔類型,決定何種協議來解析,以及切換瀏覽模式。
DOCTYPE是用來聲明文檔類型和DTD
規范的,一個主要的用途便是文件的合法性驗證。如果文檔代碼不合法,那麼瀏覽器解析時便會出現一些差錯。
HTML5的文檔類型聲明:
HTML4.01Strict(HTML4.01嚴格模式)的DTD包含所有HTML
元素和屬性,但不包括展示性的和棄用的元素(如font),它的文檔類型聲明:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
標准模式與怪異模式
怪異模式(Quirks
Mode)用於模擬舊瀏覽器的行為。早期的網站並不會遵循完整的規范,隨著瀏覽器支持越來越多的規范,在那些舊的瀏覽器中開發的頁面在顯示時會被破壞。為了向後兼容,瀏覽器發明了怪異模式,一行錯誤或無效的
DOCTYPE都會觸發怪異模式。
瀏覽器使用文件開頭的DOCTYPE來決定用怪異模式處理或標准模式處理。DOCTYPE
可以確保不同瀏覽器以相同的方式解析文檔,以及執行相同的渲染模式。
怪異模式與標准模式的主要區別:
1.怪異模式的寬度和高度會包含padding和border。標准模式不包含,標准模式下可以通過設置box-sizing:
border-box將標准盒模型轉化成怪異模式下的盒模型。
2.怪異模式下,當內容超出容器高度時,會將容器拉伸,而不是溢出。
3.怪異模式下,在表格中的字體樣式(如font-size)不會繼承。
4.怪異模式下顏色值必須使用十六進制標記法。
3.語義化
HTML5
中的語義化就是讓元素、屬性或屬性值有含義,更准確地標記特定類型的內容。對元素語義化的目的是為了讓元素的語義和呈現分離,元素只負責文檔內容的結構與含義,而CSS
樣式控制內容的呈現,像元素,沒有語義但卻能將字體變粗,這類元素違背了語義化的目的,將會被廢棄。
優點
·使得HTML文檔結構清晰、布局合理、主體突出、可讀性更強。
·有利於SEO,搜索引擎根據標簽來確定上下文和各個關鍵字的權重。
·方便其他設備解析,如盲人閱讀器根據語義渲染網頁。
·有利於開發和維護,語義化更具可讀性,代碼更好維護,與CSS3關系更和諧。
語義化標簽
·
·footer內容的頁腳,通常包含該章節作者、版權數據或者與文檔相關的鏈接等信息;
·article
文檔、頁面、應用或網站中的獨立結構,是可獨立分配的、可復用的結構,如在發布中,它可能是論壇帖子、雜志或新聞文章、博客、用戶提交的評論、互動式組件,或者其他獨立的內容項目;
·nav描述一個含有多個超鏈接的區域,該區域包含跳轉到其他頁面或頁面內部其他部分的鏈接列表;
·section表示文檔中的一個區域(或節),比如,內容中的一個專題組;
·main定義文檔的主要內容,該內容在文檔中應當是獨一無二的,不包含任何在文檔中重復的內容,比如側邊欄,導航欄鏈接,版權信息,網站
logo,搜索框(搜索框作為文檔的主要內容);
·aside
表示一個和其餘頁面內容幾乎無關的部分,被認為是獨立於該內容的一部分且可以被單獨的拆分出來而不會影響整體。通常表現為側邊欄或嵌入內容。
4.超鏈接偽類
:link、:visited、:active和:hover的聲明順序是怎樣的?
:link表示未訪問的鏈接狀態;
:visited表示已訪問狀態;:active表示激活狀態(滑鼠按下);:hover表示懸停狀態。
推薦順序是LVHA,即:link:visited:hover:active。理由如下:
·當滑鼠懸停在未訪問的鏈接上時,:link和:hover都會命中,如果:hover在:link
之前聲明,那麼(:hover)就會被覆蓋;
·當滑鼠懸停在已訪問的連接上時,:visited和:hover都會命中,如果:hover在:visited
之前聲明,那麼(:hover)就會被覆蓋;
·當滑鼠單擊鏈接時,:active和:hover都會命中,我們大多是想讓:hover只在懸停時展示樣式,按下滑鼠時使用:active
樣式,因此:active在:hover之後聲明;
·綜上,:hover應在:link和:visited之後,在:active之前,因此active在最後。而:link和
:visited兩者的順序無所謂,互不影響。
5.CSS常見的長度單位
CSS中除了px長度單位之外,還有下面幾個長度單位:
·pc六分之一英寸,1pc=12pt=1/6*1in=16px;
·pt一磅,72分之一英寸。1pt=1/12_1pc=1/72_1in≈1.33px;
·in一英寸,1in=2.54cm=96px;
·ex在含有「X」字母的字體中,它是該字體的小寫字母的高度。對於很多字體來說,1ex≈0.5em;
·em1em等於父級元素的字體大小,2em就是父級元素字體大小的二倍;
·rem當用在根元素()的font-size上面時,它代表了它的初始值;
·ch代表元素所用字體font中「0」這一字形的寬度;
·vh1vh相當於視口高度的1%,100vh就是視口的高度;
·vw1vw相當於視口寬度的1%,100vw就是視口的寬度;
·vmax視口高度vw和寬度vh兩者中的最小值
·vmin視口高度vw和寬度vh兩種中的最大值;
·%相對於父級元素的大小來確定;
參考:CSS
CSSpercentage[2]
6.事件對象
冒泡與捕獲
事件冒泡與捕獲是事件處理的兩種機制,主要描述當在一個元素上有兩個相同類型的事件處理器被激活會發生什麼。
在點擊子元素時,瀏覽器運行了兩種不同的階段:捕獲階段和冒泡階段。捕獲階段的行為:
·瀏覽器檢查元素的最外層祖先,是否在捕獲階段中注冊了一個onclick事件處理程序,如果是,則運行它;
·
然後,它移動到中單擊元素的下一個祖先元素,並執行相同的操作,然後是單擊元素再下一個祖先元素,依此類推,直到到達實際點擊的元素;
而冒泡與捕獲恰恰相反:
·瀏覽器檢查實際點擊的元素是否在冒泡階段中注冊了一個onclick事件處理程序,如果是,則運行它;
·然後它移動到下一個直接的祖先元素,並做同樣的事情,然後是下一個,等等,直到它到達元素;
而現代瀏覽器在默認情況下,所有事件處理程序都在冒泡階段進行注冊。因此上面代碼在點擊子元素時會先執行子元素綁定的事件,然後向上冒泡,觸發父元素綁定的事件。
addEventListener函數的第三個參數是個布爾值。含義:
·當布爾值是false時(這也是默認值),表示向上冒泡觸發事件;
·當布爾值是true時,表示向下捕獲觸發事件;
不能冒泡的事件
有些事件是不會冒泡的。比如:
·blur元素失去焦點時觸發,focusout事件也是失去焦點時觸發,但可以冒泡;
·focus元素獲取焦點時觸發;
·mouseenter滑鼠移動到元素上時會觸發該事件,與之對應的是mouseover事件,但會冒泡;
·mouseleave滑鼠離開元素時觸發,與之對應的是mouseout,但會冒泡;
事件冒泡可以讓我們利用事件委託,尤其是處理大量子元素時,如果給每個子元素都綁定事件,這是不優雅的,可以將事件綁定到父元素上,並讓子節點上發生的事件冒泡到父節點上,利用
e.target屬性可以獲取到當前觸發事件的子元素。
事件對象中的方法
·stopPropagation()阻止事件冒泡,當設置後,點擊該元素時父元素綁定的事件就不會再觸發;
·preventDefault()阻止默認事件的發生;
·stopImmediatePropagation()它用來阻止監聽同一事件的其他事件監聽器被調用以及阻止事件冒泡,比如給同一個div
元素綁定多個click事件(使用addEventListener方法可以注冊多個),當在第二個事件函數中調用
stopImmediatePropagation方法時,點擊div元素時,後面注冊的click將不會被觸發,而且還會阻止事件冒泡;
比如下面的例子,給p綁定多個click事件,在第二個事件函數中調用stopImmediatePropagation,第三個click
事件就不會觸發,因為也阻止了冒泡,因此父元素的click事件也不會觸發。
一、HTML
§Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?
§HTML5為什麼只需要寫?
§行內元素有哪些?塊級元素有哪些?空(void)元素有那些?
§頁面導入樣式時,使用link和@import有什麼區別?
§介紹一下你對瀏覽器內核的理解?
§常見的瀏覽器內核有哪些?
§html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分HTML和HTML5?
§簡述一下你對HTML語義化的理解?
§HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
§瀏覽器是怎麼對HTML5的離線儲存資源進行管理和載入的呢?
§請描述一下cookies,sessionStorage和localStorage的區別?
§iframe有那些缺點?
§Label的作用是什麼?是怎麼用的?(加for或包裹)
§HTML5的form如何關閉自動完成功能?
§如何實現瀏覽器內多個標簽頁之間的通信?(阿里)
§webSocket如何兼容低瀏覽器?(阿里)
§頁面可見性(PageVisibility)API可以有哪些用途?
§如何在頁面上實現一個圓形的可點擊區域?
§實現不使用border畫出1px高的線,在不同瀏覽器的Quirksmode和CSSCompat模式下都能保持同一效果。
§網頁驗證碼是幹嘛的,是為了解決什麼安全問題?
§tite與h1的區別、b與strong的區別、i與em的區別?
二、CSS
§介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?
§CSS選擇符有哪些?哪些屬性可以繼承?
§CSS優先順序演算法如何計算?
§CSS3新增偽類有那些?
§如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?
§display有哪些值?說明他們的作用。
§position的值relative和absolute定位原點是?
§CSS3有哪些新特性?
§請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
§用純CSS創建一個三角形的原理是什麼?
§一個滿屏品字布局如何設計?
§常見兼容性問題?
§li與li之間有看不見的空白間隔是什麼原因引起的?有什麼解決辦法?
§經常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什麼,常用hack的技巧?
§為什麼要初始化CSS樣式。
§absolute的containingblock計算方式跟正常流有什麼不同?
§CSS里的visibility屬性有個collapse屬性值是幹嘛用的?在不同瀏覽器下以後什麼區別?
§position跟display、margincollapse、overflow、float這些特性相互疊加後會怎麼樣?
§對BFC規范(塊級格式化上下文:blockformattingcontext)的理解?
§CSS權重優先順序是如何計算的?
§請解釋一下為什麼會出現浮動和什麼時候需要清除浮動?清除浮動的方式
§移動端的布局用過媒體查詢嗎?
§使用CSS預處理器嗎?喜歡那個?
§CSS優化、提高性能的方法有哪些?
§瀏覽器是怎樣解析CSS選擇器的?
§在網頁中的應該使用奇數還是偶數的字體?為什麼呢?
§margin和padding分別適合什麼場景使用?
§抽離樣式模塊怎麼寫,說出思路,有無實踐經驗?[阿里航旅的面試題]
§元素豎向的百分比設定是相對於容器的高度嗎?
§全屏滾動的原理是什麼?用到了CSS的那些屬性?
§什麼是響應式設計?響應式設計的基本原理是什麼?如何兼容低版本的IE?
§視差滾動效果,如何給每頁做不同的動畫?(回到頂部,向下滑動要再次出現,和只出現一次分別怎麼做?)
§::before和:after中雙冒號和單冒號有什麼區別?解釋一下這2個偽元素的作用。
§如何修改chrome記住密碼後自動填充表單的黃色背景?
§你對line-height是如何理解的?
§設置元素浮動後,該元素的display值是多少?(自動變成display:block)
§怎麼讓Chrome支持小於12px的文字?
§讓頁面里的字體變清晰,變細用CSS怎麼做?(-webkit-font-smoothing:antialiased;)
§font-style屬性可以讓它賦值為「oblique」oblique是什麼意思?
§position:fixed;在android下無效怎麼處理?
§如果需要手動寫動畫,你認為最小時間間隔是多久,為什麼?(阿里)
§display:inline-block什麼時候會顯示間隙?(攜程)
§overflow:scroll時不能平滑滾動的問題怎麼處理?
§有一個高度自適應的div,裡面有兩個div,一個高度100px,希望另一個填滿剩下的高度。
§png、jpg、gif這些圖片格式解釋一下,分別什麼時候用。有沒有了解過webp?
§什麼是Cookie隔離?(或者說:請求資源的時候不要讓它帶cookie怎麼做)
§style標簽寫在body後與body前有什麼區別?
三、JavaScript
§介紹JavaScript的基本數據類型。
§說說寫JavaScript的基本規范?
§JavaScript原型,原型鏈?有什麼特點?
§JavaScript有幾種類型的值?(堆:原始數據類型和棧:引用數據類型),你能畫一下他們的內存圖嗎?
§Javascript如何實現繼承?
§Javascript創建對象的幾種方式?
§Javascript作用鏈域?
§談談This對象的理解。
§eval是做什麼的?
§什麼是window對象?什麼是document對象?
§null,undefined的區別?
§寫一個通用的事件偵聽器函數(機試題)。
§[「1」,「2」,「3」].map(parseInt)答案是多少?
§關於事件,IE與火狐的事件機制有什麼區別?如何阻止冒泡?
§什麼是閉包(closure),為什麼要用它?
§javascript代碼中的」usestrict」;是什麼意思?使用它區別是什麼?
§如何判斷一個對象是否屬於某個類?
§new操作符具體幹了什麼呢?
§用原生JavaScript的實現過什麼功能嗎?
§Javascript中,有一個函數,執行時對象查找時,永遠不會去查找原型,這個函數是?
§對JSON的了解?
§[].forEach.call($$("*"),function(a){a.style.outline="1pxsolid
#"+(~~(Math.random()*(1<<24))).toString(16)})能解釋一下這段代碼的意思嗎?
§js延遲載入的方式有哪些?
§Ajax是什麼?如何創建一個Ajax?
§同步和非同步的區別?
§如何解決跨域問題?
§頁面編碼和被請求的資源編碼如果不一致如何處理?
§模塊化開發怎麼做?
§AMD(Moles/Asynchronous-Definition)、CMD(CommonMole
Definition)規范區別?
§requireJS的核心原理是什麼?(如何動態載入的?如何避免多次載入的?如何緩存的?)
§讓你自己設計實現一個requireJS,你會怎麼做?
§談一談你對ECMAScript6的了解?
§ECMAScript6怎麼寫class么,為什麼會出現class這種東西?
§非同步載入的方式有哪些?
§documen.write和innerHTML的區別?
§DOM操作——怎樣添加、移除、移動、復制、創建和查找節點?
§.call()和.apply()的含義和區別?
§數組和對象有哪些原生方法,列舉一下?
§JS怎麼實現一個類。怎麼實例化這個類
§JavaScript中的作用域與變數聲明提升?
§如何編寫高性能的Javascript?
§那些操作會造成內存泄漏?
§JQuery的源碼看過嗎?能不能簡單概況一下它的實現原理?
§jQuery.fn的init方法返回的this指的是什麼對象?為什麼要返回this?
§jquery中如何將數組轉化為json字元串,然後再轉化回來?
§jQuery的屬性拷貝(extend)的實現原理是什麼,如何實現深拷貝?
§jquery.extend與jquery.fn.extend的區別?
§jQuery的隊列是如何實現的?隊列可以用在哪些地方?
§談一下Jquery中的bind(),live(),delegate(),on()的區別?
§JQuery一個對象可以同時綁定多個事件,這是如何實現的?
§是否知道自定義事件。jQuery里的fire函數是什麼意思,什麼時候用?
§jQuery是通過哪個方法和Sizzle選擇器結合的?(jQuery.fn.find()進入Sizzle)
§針對jQuery性能的優化方法?
§Jquery與jQueryUI有啥區別?
§JQuery的源碼看過嗎?能不能簡單說一下它的實現原理?
§jquery中如何將數組轉化為json字元串,然後再轉化回來?
§jQuery和Zepto的區別?各自的使用場景?
§針對jQuery的優化方法?
§Zepto的點透問題如何解決?
§jQueryUI如何自定義組件?
§需求:實現一個頁面操作不會整頁刷新的網站,並且能在瀏覽器前進、後退時正確響應。給出你的技術實現方案?
§如何判斷當前腳本運行在瀏覽器還是node環境中?(阿里)
§移動端最小觸控區域是多大?
§jQuery的slideUp動畫,如果目標元素是被外部事件驅動,當滑鼠快速地連續觸發外部元素事件,
動畫會滯後的反復執行,該如何處理呢?
§把Script標簽放在頁面的最底部的body封閉之前和封閉之後有什麼區別?瀏覽器會如何解析它們?
§移動端的點擊事件的有延遲,時間是多久,為什麼會有?怎麼解決這個延時?(click有300ms
延遲,為了實現safari的雙擊事件的設計,瀏覽器要知道你是不是要雙擊操作。)
§知道各種JS框架(Angular,Backbone,Ember,React,Meteor,Knockout)么?
能講出他們各自的優點和缺點么?
§Underscore對哪些JS原生對象進行了擴展以及提供了哪些好用的函數方法?
§解釋JavaScript中的作用域與變數聲明提升?
§那些操作會造成內存泄漏?
§JQuery一個對象可以同時綁定多個事件,這是如何實現的?
§Node.js的適用場景?
§(如果會用node)知道route,middleware,cluster,nodemon,pm2,server-side
rendering么?
§解釋一下Backbone的MVC實現方式?
§什麼是「前端路由」?什麼時候適合使用「前端路由」?「前端路由」有哪些優點和缺點?
§知道什麼是webkit么?知道怎麼用瀏覽器的各種工具來調試和debug代碼么?
§如何測試前端代碼么?知道BDD,TDD,UnitTest么?知道怎麼測試你的前端工程么(mocha,sinon,jasmin,
qUnit..)?
§前端templating(Mustache,underscore,handlebars)是幹嘛的,怎麼用?
§簡述一下Handlebars的基本用法?
§簡述一下Handlerbars的對模板的基本處理流程,如何編譯的?如何緩存的?
§用js實現千位分隔符?(來源:前端農民工,提示:正則+replace)
§檢測瀏覽器版本版本有哪些方式?
§我們給一個dom同時綁定兩個點擊事件,一個用捕獲,一個用冒泡,你來說下會執行幾次事件,然後會先執行冒泡還是捕獲。
四、其他問題
§原來公司工作流程是怎麼樣的,如何與其他人協作的?如何誇部門合作的?
§你遇到過比較難的技術問題是?你是如何解決的?
§設計模式知道什麼是singleton,factory,strategy,decrator么?
§常使用的庫有哪些?常用的前端開發工具?開發過什麼應用或組件?
§頁面重構怎麼操作?
§列舉IE與其他瀏覽器不一樣的特性?
§99%的網站都需要被重構是那本書上寫的?
§什麼叫優雅降級和漸進增強?
§是否了解公鑰加密和私鑰加密。
§WEB應用從伺服器主動推送Data到客戶端有那些方式?
§對Node的優點和缺點提出了自己的看法?
§你有用過哪些前端性能優化的方法?
§http狀態碼有那些?分別代表是什麼意思?
§一個頁面從輸入URL到頁面載入顯示完成,這個過程中都發生了什麼?(流程說的越詳細越好)
§部分地區用戶反應網站很卡,請問有哪些可能性的原因,以及解決方法?
§從打開app到刷新出內容,整個過程中都發生了什麼,如果感覺慢,怎麼定位問題,怎麼解決?
§除了前端以外還了解什麼其它技術么?你最最厲害的技能是什麼?
§你用的得心應手用的熟練地編輯器&開發環境是什麼樣子?
§對前端界面工程師這個職位是怎麼樣理解的?它的前景會怎麼樣?
§你怎麼看待WebApp、hybridApp、NativeApp?
§你移動端前端開發的理解?(和Web前端開發的主要區別是什麼?)
§你對加班的看法?
§平時如何管理你的項目?
§說說最近最流行的一些東西吧?常去哪些網站?
§如何設計突發大規模並發架構?
§說說最近最流行的一些東西吧?常去哪些網站?
§是否了解開源的工具bower、npm、yeoman、grunt、gulp,一個npm的包里的package.json
具備的必要的欄位都有哪些?(名稱、版本號,依賴)
§每個模塊的代碼結構都應該比較簡單,且每個模塊之間的關系也應該非常清晰,隨著功能和迭代次數越來越多,你會如何去保持這個狀態的?
§Git知道branch,diff,merge么?
§如何設計突發大規模並發架構?
§當團隊人手不足,把功能代碼寫完已經需要加班的情況下,你會做前端代碼的測試嗎?
§說說最近最流行的一些東西吧?平時常去哪些網站?
§知道什麼是SEO並且怎麼優化么?知道各種metadata的含義么?
§移動端(AndroidIOS)怎麼做好用戶體驗?
§簡單描述一下你做過的移動APP項目研發流程?
§你在現在的團隊處於什麼樣的角色,起到了什麼明顯的作用?
§你認為怎樣才是全端工程師(FullStackdeveloper)?
§介紹一個你最得意的作品吧?
§你有自己的技術博客嗎,用了哪些技術?
§對前端安全有什麼看法?
§是否了解Web注入攻擊,說下原理,最常見的兩種攻擊(XSS和CSRF)了解到什麼程度?
§項目中遇到國哪些印象深刻的技術難題,具體是什麼問題,怎麼解決?。
§最近在學什麼東西?
§你的優點是什麼?缺點是什麼?
§如何管理前端團隊?
§最近在學什麼?能談談你未來3,5年給自己的規劃嗎?
§
以上就是小編今天為大家分享的關於web前端工程師面試題的文章,希望本篇文章能夠對正准備學習編程技術的小夥伴們有所幫助。想要了解更多web前端相關知識記得關注北大青鳥web前端培訓官網哦!最後希望小夥伴們能夠好好准備這些問題的答案,在面試中取得好成績,成為一名優秀的web前端工程師!
§