HTTP
-
HTTP狀態(tài)碼知道哪些彻秆?
200 請(qǐng)求已成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。
400 請(qǐng)求參數(shù)有誤或者語(yǔ)義有誤脂信,當(dāng)前請(qǐng)求無法被服務(wù)器理解。
401 當(dāng)前請(qǐng)求需要用戶驗(yàn)證
404 請(qǐng)求失敗透硝,請(qǐng)求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)狰闪。
500 服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況,導(dǎo)致了它無法完成對(duì)請(qǐng)求的處理濒生。
- TCP
JavaScript
-
JS有哪些內(nèi)置對(duì)象埋泵?
Array: \- concat: 合并 \- join: 連接成字符串 \- pop: 移除最后元素 \- push: 添加元素 \- shift: 移除第一個(gè)元素 \- slice: 返回?cái)?shù)組的一段 \- sort: 排序 \- reverse: 反轉(zhuǎn) Date: \- get/setDate, get/setTime \- get/setFullYear, get/setYear, get/setMonth, get/setDay \- get/setHours, get/setMinutes, get/setSeconds RegExp: \- g: 全文查找 \- i: 忽略大小寫 \- m: 多行查找 String: \- charAt: 返回指定索引位置的字符 \- match: 使用正則進(jìn)行查找,并返回查找結(jié)果 Math: \- ceil: 向上取整罪治,floor: 向下取整 \- round: 四舍五入 \- random: 隨機(jī)數(shù)
判斷數(shù)據(jù)類型的方式
1.typeof 可以判斷的的類型有 undefined Boolean Number String Object
注意 使用typeof 判斷 Array 和 null結(jié)果均為 object
type = typeof a // 結(jié)果為undefined Boolean Number String Object
2.instanceof
c instanceof Array
3.根據(jù)對(duì)象的 constructor
c.constructor === Array // 繼承的時(shí)候會(huì)出錯(cuò)
4.prototype 原型鏈方式
alert(Object.prototype.toString.call(a) === ‘[object String]’) -------> true;
alert(Object.prototype.toString.call(b) === ‘[object Number]’) -------> true;
alert(Object.prototype.toString.call(c) === ‘[object Array]’) -------> true;
alert(Object.prototype.toString.call(d) === ‘[object Date]’) -------> true;
alert(Object.prototype.toString.call(e) === ‘[object Function]’) -------> true;
alert(Object.prototype.toString.call(f) === ‘[object Function]’) -------> true;
- 描述下Array中的split()和join()的區(qū)別
1.split()
將一個(gè)字符串分割為子字符串丽声,將結(jié)果作為字符串?dāng)?shù)組返回,若字符串中存在多個(gè)分割符號(hào)规阀,亦可分割恒序。
形式:
stringObj.split([separator,[,limit]])
stringObj 必選項(xiàng) string對(duì)象或者文字 該對(duì)象不會(huì)被split方法修改
separator 可選項(xiàng) 字符串或者正則表達(dá)式對(duì)象
limit 可選項(xiàng) 返回?cái)?shù)組中的元素個(gè)數(shù)
把數(shù)組中的所有元素放入一個(gè)字符串中
形式:
arrayObj.join(separator);
separator 可選項(xiàng) 省略該參數(shù),則使用逗號(hào)作為分割符
方法名 | 用途 | 改變?cè)瓟?shù)組 |
---|---|---|
pop | 刪除最后一個(gè)并返回谁撼,改變?cè)瓟?shù)組 | 是 |
push | 向數(shù)組末尾添加元素歧胁,并返回新的長(zhǎng)度 | 是 |
unshift | 向數(shù)組開頭添加元素,并返回新的長(zhǎng)度 | 是 |
reverse | 顛倒數(shù)組順序 | 是 |
shift | 將第一個(gè)元素刪除并且返回厉碟,空即為undefined | 是 |
splice | splice(start,length,item)新增刪除替換數(shù)組元素喊巍,返回被刪除數(shù)組,無刪除不返回 | 是 |
sort | 對(duì)數(shù)組排序箍鼓,改變?cè)瓟?shù)組 | 是 |
concat | 連接多個(gè)數(shù)組崭参,返回新的數(shù)組 | 否 |
join | 將數(shù)組中所有元素以參數(shù)作為分隔符放入一個(gè)字符串 | 否 |
slice | slice(start,end),返回選定元素 | 否 |
split | 分割 (字符串操作) | 否 |
什么是Ajax和JSON款咖,它們的優(yōu)缺點(diǎn)
使用JS寫個(gè)原生的Ajax過程
var xhr = new XMLHttpRequest();
xhr.open(url);
xhr.send();
-
Ajax中的get和post請(qǐng)求方式的區(qū)別
GET - 從指定的資源請(qǐng)求數(shù)據(jù)何暮。
POST - 向指定的資源提交要被處理的數(shù)據(jù)
請(qǐng)求方式 | 緩存 | 請(qǐng)求是否保留在瀏覽器歷史記錄 | 是否可收藏為書簽 | 長(zhǎng)度限制 |
---|---|---|---|---|
GET | 可被緩存 | 保留 | 可收藏 | 有長(zhǎng)度限制 |
POST | 不可被緩存 | 不保留 | 不可收藏 | 無長(zhǎng)度限制 |
如何實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊頁(yè)面中的任意標(biāo)簽奄喂,alert該標(biāo)簽的名稱。注意兼容性
請(qǐng)寫出以下這段JS代碼的輸出結(jié)果海洼,并解釋原因跨新。
var num = 100;
var obj = {
num: 200,
inner: {
num: 300,
print: function () {
console.log(this.num);
}
}
};
obj.inner.print(); // 300 隱式綁定 調(diào)用棧:obj -> inner -> print
var func = obj.inner.print;
func(); // 100 默認(rèn)綁定 調(diào)用棧:window -> func
(obj.inner.print)(); // 300 隱式綁定 調(diào)用棧:window -> obj -> inner -> print
(obj.inner.print = obj.inner.print)(); // 100 隱式丟失
- DOM事件流包括哪幾個(gè)階段?
1. 捕獲階段:事件從document節(jié)點(diǎn)自上而下向目標(biāo)節(jié)點(diǎn)傳播的階段
2. 目標(biāo)階段:真正的目標(biāo)節(jié)點(diǎn)正在處理事件的階段
3. 冒泡階段:事件從目標(biāo)節(jié)點(diǎn)自上而下向Document節(jié)點(diǎn)傳播的階段
- 事件委托的實(shí)現(xiàn)原理是什么坏逢?有什么優(yōu)缺點(diǎn)域帐?
什么是原型鏈?什么是作用域鏈是整?分別有什么作用肖揣?
請(qǐng)使用原生JavaScript為以下li實(shí)現(xiàn)事件委托,點(diǎn)擊后打印其對(duì)應(yīng)的node-type屬性值浮入。
<ul id="test">
<li node-type='1'>惠普金融</li>
<li node-type='2'>愛錢進(jìn)</li>
<li node-type='3'>硅谷中心</li>
</ul>
- 已知構(gòu)造函數(shù)A龙优,請(qǐng)實(shí)現(xiàn)B函數(shù),需要繼承A
var A = function(name) {
this.name = name;
};
A.prototype = {
fun1: function() {},
fun2: function() {}
};
- 請(qǐng)寫出以下這段JS代碼的輸出結(jié)果舵盈,并解釋原因陋率。
var num = 100;
function print() {
console.log(num);
var num;
}
print(); //undefined 閉包
- 請(qǐng)寫出以下這兩段JS代碼的輸出結(jié)果,并分別解釋原因秽晚。
// a.js
(function(num){
console.log(num);
var num = 10;
}(100)); // 100
?
// b.js
(function(num){
console.log(num);
var num = 10;
function num(){}; // function num() { … } 代碼解析階段
}(100));
// JavaScript 中瓦糟,函數(shù)及變量的聲明都將被提升到函數(shù)的最頂部。
// JavaScript 中赴蝇,變量可以在使用后聲明菩浙,也就是變量可以先使用再聲明。
// JavaScript 初始化不會(huì)提升
其實(shí)主要理解 js 的解析機(jī)制就行句伶。遇到 script 標(biāo)簽的話 js 就進(jìn)行預(yù)解析劲蜻,將變量 var 和 function 聲明提升但不會(huì)執(zhí)行 function,然后就進(jìn)入上下文執(zhí)行考余,上下文執(zhí)行還是執(zhí)行預(yù)解析同樣操作直到?jīng)]有 var 和 function先嬉,就開始執(zhí)行上下文。
什么是函數(shù)節(jié)流楚堤?它有什么作用疫蔓?請(qǐng)寫一段函數(shù)節(jié)流的示范代碼?
JS基礎(chǔ)數(shù)據(jù)類型與引用數(shù)據(jù)類型有哪些身冬?請(qǐng)根據(jù)提示完成以下getType的函數(shù)代碼衅胀。
Number、String 酥筝、Boolean滚躯、Null和Undefined。
基本數(shù)據(jù)類型是按值訪問的,因?yàn)榭梢灾苯硬僮鞅4嬖谧兞恐械膶?shí)際值掸掏。
引用數(shù)據(jù)類型茁影,也就是對(duì)象類型Object type,比如:Function丧凤、Object呼胚、Date、RegExp息裸、Number、String沪编、Boolean和自定義類等
/*
\* 返回變量的具體類型名稱
\* @param obj 待判定的變量
*/
function getType(value) {
var a = Object.prototype.toString.call(value).split(" ")[1];
return a.substring(0,a.length-1)
}
- 編寫有返回的提交表單的AJAX方法呼盆?
$.ajax({
type: "POST",//方法類型
dataType: "json",//預(yù)期服務(wù)器返回的數(shù)據(jù)類型
url: url ,//url
data: data,
success: function (result) {
},
error : function() {
}
});
- 請(qǐng)編寫一個(gè)JS函數(shù)parseQueryString,它的用途是把URL參數(shù)解析為一個(gè)對(duì)象蚁廓,如:
var url = "http://example.cn/index.html?key0=0&key1=1&key2=2";
function parseQueryString(url) {
var params = {};
var urls = url.split("?");
var arr = urls[1].split("&");
for (var i = 0, l = arr.length; i < l; i++) {
var a = arr[i].split("=");
params[a[0]] = a[1];
}
return params;
}
- 在一個(gè)方法中定義變量不寫var會(huì)導(dǎo)致什么結(jié)果访圃?
- Ajax同步和異步的區(qū)別?
- async值為true (異步)
當(dāng)ajax發(fā)送請(qǐng)求后相嵌,在等待server端返回的這個(gè)過程中腿时,前臺(tái)會(huì)繼續(xù) 執(zhí)行ajax塊后面的腳本,直到server端返回正確的結(jié)果才會(huì)去執(zhí)行success饭宾,也就是說這時(shí)候執(zhí)行的是兩個(gè)線程批糟,ajax塊發(fā)出請(qǐng)求后一個(gè)線程 和ajax塊后面的腳本(另一個(gè)線程) - async值為false (同步)
當(dāng)執(zhí)行當(dāng)前AJAX的時(shí)候會(huì)停止執(zhí)行后面的JS代碼,直到AJAX執(zhí)行完畢后時(shí)看铆,才能繼續(xù)執(zhí)行后面的JS代碼徽鼎。
- 請(qǐng)寫出以下代碼運(yùn)行結(jié)果:
var obj = {
fullName: "javascript",
prop: {
getFullName: function () {
return this.fullName;
}
}
};
console.log(obj.prop.getFullName()); // undefined
var test = obj.prop.getFullName;// undefined
console.log(test());
- 請(qǐng)寫出以下代碼運(yùn)行結(jié)果
var name = "window";
var Tom = {
name: "Tom",
show: function() {
console.log(this.name);
},
wait: function() {
var fun = this.show;
fun();
}
};
Tom.wait(); // undefined
- 在String對(duì)象上定義一個(gè)repeatify函數(shù)。這個(gè)函數(shù)接受一個(gè)整數(shù)參數(shù)弹惦,來明確字符串需要重復(fù)幾次否淤。這個(gè)函數(shù)要求字符串重復(fù)指定的次數(shù)。比如:
'abc'.repeatify(3) // abcabcabc
var str = 'hello<img src="haha.png" alt="哈哈" />world';
// 正則匹配輸出'hello\[哈哈\]world'
- javaScript window.onload事件和jQuery ready函數(shù)有何不同
比較項(xiàng) | window.onload() | $(document).ready() |
---|---|---|
加載時(shí)機(jī) | 必須等待網(wǎng)頁(yè)全部加載完畢(包括圖片等)棠隐,然后再執(zhí)行JS代碼 | 只需要等待網(wǎng)頁(yè)中的DOM結(jié)構(gòu)加載完畢石抡,就能執(zhí)行JS代碼 |
執(zhí)行次數(shù) | 只能執(zhí)行一次,如果第二次助泽,那么第一次的執(zhí)行會(huì)被覆蓋 | 可以執(zhí)行多次啰扛,第N次都不會(huì)被上一次覆蓋 |
解釋一下JavaScript的同源策略。你所能了解到的Ajax跨越解決方案以及各種方案的優(yōu)缺點(diǎn)报咳。
[1,2,3] == [1,2,3] 和 [1,2,3] === [1,2,3]的結(jié)果侠讯?
寫出以下代碼運(yùn)行結(jié)果
var a = 8;
let r = 9;
// 分開考慮下面的結(jié)果
let a = r == 9 || 4;
console.log(a); // 標(biāo)識(shí)符已經(jīng)被聲明
let b = r == 9 || 4;
console.log(b) // true
29.寫出以下代碼運(yùn)行結(jié)果
var data =[];
for (let k = 0; k < 3; k++) {
data[k] = function () {
console.log(k);
};
}
data[0](); // 0
data[1](); // 1
data[2](); // 2 若上述for循環(huán)中換為var 則輸出為 3 3 3
var arr = ['a','b','c','d'],分別寫出delete arr[1]和arr[1] = null操作之后的arr的結(jié)果和arr[1]的結(jié)果
[圖片上傳失敗...(image-a819e5-1583901382435)]JS中不使用臨時(shí)變量將兩個(gè)變量的值進(jìn)行交換暑刃。
// es 6 解構(gòu)
let a = 1,
b = 2;
[a, b] = [b, a];
// 2 數(shù)組的特性
b = [a,a=b][0];
// 3 亦或
a ^= b;
b ^= a;
a ^= b;
- 完成confirmEnding函數(shù)厢漩,來判斷一個(gè)字符串(str)是否以指定的字符串(target)結(jié)尾
function confirmEnding(str, target) {
}
找出“The quick brown fox jumped over the lazy dog"字符串中最長(zhǎng)的單詞,返回該項(xiàng)的內(nèi)容和長(zhǎng)度岩臣。
寫出計(jì)算一個(gè)整數(shù)的階乘的方法(定義一個(gè)方法編寫)
// 遞歸調(diào)用
function factorial(n){
return n > 1 ? n * factorial(n-1) : 1;
}
factorial(5);//120
- 按要求進(jìn)行數(shù)組的操作
let arr = \['html', 'css', 'js', 'vue', 'angular', 'bootstrap'\]
要求輸出結(jié)果為:
\['js', 'css', 'vue', 'html', 'angular', 'bootstrap'\]
談?wù)勀銓?duì)模塊化的理解
寫出下面運(yùn)行結(jié)果
var bar = 0;
var obj = {
bar: 1,
foo: function() {
console.log(this.bar);
}
};
var obj2 = {
bar: 2,
foo: obj.foo
};
var obj3 = {
bar: 3,
foo: function() {
return obj.foo;
}
};
var tempFoo = obj2.foo;
obj.foo(); // 1
obj2.foo(); // 2
obj3.foo(); // 0
tempFoo(); // 0
什么是作用域溜嗜,如何改變作用域宵膨?
js只有兩種形式的作用域:全局作用域和函數(shù)作用域
es6 新增塊級(jí)作用域
改變作用域方法:使用apply()方法:使用call()方法: 使用new關(guān)鍵字:寫出下面程序的運(yùn)行結(jié)果
for (var i = 0; i < 10; i++) {
setTimeout(function() {
console.log(i);
});
}
// 輸出十個(gè)10 同時(shí)
什么是內(nèi)存泄漏?
不再用到的內(nèi)存炸宵,沒有及時(shí)釋放辟躏,就叫做內(nèi)存泄漏寫一個(gè)方法實(shí)現(xiàn)對(duì)數(shù)組進(jìn)行隨機(jī)排序
var arr = [1,2,3,4,5,6,7,8,9,10];
arr.sort(function(){
return Math.random() - 0.5;
})
console.log(arr);
// 數(shù)組去重
[...new Set([2,"12",2,12,1,2,1,6,12,13,6])]
談一談ES6中的let和箭頭函數(shù)有哪些特點(diǎn)?
let 作用于談一談你對(duì)ES6的了解
寫一個(gè)倒計(jì)時(shí)程序土全,要求XXXX年XX月XX日XX時(shí)XX分XX秒(動(dòng)態(tài))
手寫判斷在數(shù)組中最大的值捎琐,然后讓數(shù)組的第一個(gè)數(shù)跟最大的數(shù)相乘,返回最后的結(jié)果
// 數(shù)組最大值
var arr = [ 1,5,1,7,5,9];
Math.max(...arr) // 9
- 寫出下面程序的運(yùn)行結(jié)果裹匙,并解釋原因
var a = 'aa';
function foo() {
alert(a);
var b = 'bb';
alert(b);
}
test();
- 寫出下面程序的運(yùn)行結(jié)果瑞凑,并解釋原因
function Foo() {
getName = function() {
alert(1);
}
return this;
}
new Foo().getName();
不執(zhí)行
-
['1', '2', '3'].map(parseInt)的結(jié)果為多少? 并解釋原因?如果修改成期望的結(jié)果概页?
["1", "2", "3"].map(parseInt);
// 你可能覺的會(huì)是[1, 2, 3]
// 但實(shí)際的結(jié)果是 [1, NaN, NaN]
// 通常使用parseInt時(shí),只需要傳遞一個(gè)參數(shù).
// 但實(shí)際上,parseInt可以有兩個(gè)參數(shù).第二個(gè)參數(shù)是進(jìn)制數(shù).
// 可以通過語(yǔ)句"alert(parseInt.length)===2"來驗(yàn)證.
// map方法在調(diào)用callback函數(shù)時(shí),會(huì)給它傳遞三個(gè)參數(shù):當(dāng)前正在遍歷的元素, 元素索引, 原數(shù)組本身.
// 第三個(gè)參數(shù)parseInt會(huì)忽視, 但第二個(gè)參數(shù)不會(huì),也就是說,
// parseInt把傳過來的索引值當(dāng)成進(jìn)制數(shù)來使用.從而返回了NaN.
function returnInt(element) {
return parseInt(element, 10);
}
['1', '2', '3'].map(returnInt); // [1, 2, 3]
// 意料之中的結(jié)果
// 也可以使用簡(jiǎn)單的箭頭函數(shù)籽御,結(jié)果同上
['1', '2', '3'].map(str => parseInt(str));
// 一個(gè)更簡(jiǎn)單的方式:
['1', '2', '3'].map(Number); // [1, 2, 3]
// 與\`parseInt\` 不同,下面的結(jié)果會(huì)返回浮點(diǎn)數(shù)或指數(shù):
['1.1', '2.2e2', '3e300'].map(Number); // [1.1, 220, 3e+300]
談?wù)勀銓?duì)promise的理解
閉包是什么惰匙?使用閉包實(shí)現(xiàn)ul>li點(diǎn)擊技掏,彈出對(duì)應(yīng)的下標(biāo)?
一個(gè)數(shù)組中项鬼,如何刪除第三個(gè)元素哑梳?
如何阻止事件的冒泡(考慮兼容性)?
統(tǒng)計(jì)字符串中每個(gè)字符出現(xiàn)的次數(shù),最多的是誰绘盟,出現(xiàn)了幾次涧衙?
var str = "helloworld";
let 和 const聲明變量區(qū)別是什么,其應(yīng)用場(chǎng)景有啥不同奥此?
Object.assign()函數(shù)的作用和用法弧哎,請(qǐng)舉例說明?
深淺拷貝如何合并兩個(gè)對(duì)象稚虎?
Object.assign()
希望獲取到頁(yè)面中所有的checkbox怎么做撤嫩?(不使用第三方庫(kù)或者框架)
call和apply的區(qū)別?
定義:
apply:調(diào)用一個(gè)對(duì)象的一個(gè)方法蠢终,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象序攘。例如:B.apply(A, arguments);即A對(duì)象應(yīng)用B對(duì)象的方法。
call:調(diào)用一個(gè)對(duì)象的一個(gè)方法寻拂,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象程奠。例如:B.call(A, args1,args2);即A對(duì)象調(diào)用B對(duì)象的方法。
共同之處:
都“可以用來代替另一個(gè)對(duì)象調(diào)用一個(gè)方法祭钉,將一個(gè)函數(shù)的對(duì)象上下文從初始的上下文改變?yōu)橛蓆hisObj指定的新對(duì)象”瞄沙。
不同之處:
apply:最多只能有兩個(gè)參數(shù)——新this對(duì)象和一個(gè)數(shù)組argArray。如果給該方法傳遞多個(gè)參數(shù),則把參數(shù)都寫進(jìn)這個(gè)數(shù)組里面距境,當(dāng)然申尼,即使只有一個(gè)參數(shù),也要寫進(jìn)數(shù)組里垫桂。如果argArray不是一個(gè)有效的數(shù)組或arguments對(duì)象师幕,那么將導(dǎo)致一個(gè)TypeError。如果沒有提供argArray和thisObj任何一個(gè)參數(shù)诬滩,那么Global對(duì)象將被用作thisObj霹粥,并且無法被傳遞任何參數(shù)。
call:它可以接受多個(gè)參數(shù)疼鸟,第一個(gè)參數(shù)與apply一樣蒙挑,后面則是一串參數(shù)列表。這個(gè)方法主要用在js對(duì)象各方法相互調(diào)用的時(shí)候愚臀,使當(dāng)前this實(shí)例指針保持一致,或者在特殊情況下需要改變this指針矾利。如果沒有提供thisObj參數(shù)姑裂,那么 Global 對(duì)象被用作thisObj。
實(shí)際上男旗,apply和call的功能是一樣的舶斧,只是傳入的參數(shù)列表形式不同。
請(qǐng)分別解釋 filter() , map() , every() , some() , join() 的作用以及區(qū)別察皇。
如何將偽數(shù)組轉(zhuǎn)換為數(shù)組茴厉?
var arr = Array.prototype.slice.call(aLi)
var aLi = document.querySelectorAll('li');
3 console.log(aLi.constructor === Array) //false
4
5 aLi.proto = Array.prototype;
6
7 console.log(aLi.constructor === Array) //true
- 如何實(shí)現(xiàn)數(shù)組的去重?
CSS&Less&Sass
CSS引入的方式有哪些什荣?link和@import的區(qū)別是矾缓?
區(qū)別1:link是XHTML標(biāo)簽,除了加載CSS外稻爬,還可以定義RSS等其他事務(wù)嗜闻;@import屬于CSS范疇,只能加載CSS桅锄。
區(qū)別2:link引用CSS時(shí)琉雳,在頁(yè)面載入時(shí)同時(shí)加載;@import需要頁(yè)面網(wǎng)頁(yè)完全載入以后加載友瘤。
區(qū)別3:link是XHTML標(biāo)簽翠肘,無兼容問題;@import是在CSS2.1提出的辫秧,低版本的瀏覽器不支持束倍。
區(qū)別4:ink支持使用Javascript控制DOM去改變樣式;而@import不支持。如何理解CSS盒子模型肌幽?
描述CSS reset的作用和用途
CSS3有哪些新特性晚碾?
CSS選擇器有哪些?CSS3中新增了哪些喂急?聲明的優(yōu)先級(jí)怎么計(jì)算格嘁?
p>a, p~a, p+a 有什么區(qū)別?
列舉你所知道的偽類和偽元素廊移。偽類和偽元素有什么區(qū)別糕簿?
偽類包含兩種:狀態(tài)偽類和結(jié)構(gòu)性偽類。
CSS 偽類用于向某些選擇器添加特殊的效果狡孔。
CSS 偽元素用于將特殊的效果添加到某些選擇器懂诗。CSS3中圓角屬性是什么?
border-radius如何顯示沒有下劃線的超鏈接苗膝?
text-decoration none用CSS隱藏頁(yè)面元素的方法有哪些殃恒?
寫一段media query的功能,至少展示不同寬度下一個(gè)div的css樣式變化
div和table布局比較辱揭?
em和rem的相同點(diǎn)和不同點(diǎn)离唐?
請(qǐng)羅列常見的清除浮動(dòng)方案。
請(qǐng)羅列移動(dòng)前端常用的自適應(yīng)解決方案
手寫三列布局的實(shí)現(xiàn)(左右固定问窃,中間自適應(yīng))
左定寬亥鬓,右自適應(yīng)右?guī)追N方式?
列出position的相關(guān)屬性域庇,解釋他們的用法
水平垂直居中的四種方案
box-sizing的內(nèi)容
說說transition和animation的區(qū)別嵌戈?
CSS3新增哪些動(dòng)畫特性?
實(shí)現(xiàn)不使用border畫出1px高的線听皿,在不同瀏覽器的標(biāo)準(zhǔn)模式和怪異模式不發(fā)生改變
請(qǐng)編寫一個(gè)動(dòng)畫熟呛,實(shí)現(xiàn)一個(gè)正方形向左移動(dòng)100px,并且放大一倍尉姨,旋轉(zhuǎn)45度惰拱。
如何將less/Sass轉(zhuǎn)換成css
HTML
- HTML和XHTML有什么區(qū)別?
- HTML5比HTML4新增了哪些標(biāo)簽啊送?
- HTML5的文檔類型和字符集是偿短?
- meta標(biāo)簽的使用
- 行內(nèi)元素有哪些?塊級(jí)元素有哪些馋没?空(void)元素有哪些昔逗?
- HTML5中如何嵌入音頻?
- cookie篷朵、localStorage勾怒、sessionStorage三者優(yōu)缺點(diǎn)婆排、使用場(chǎng)景。共同點(diǎn):都是保存在瀏覽器笔链,且同源的段只。區(qū)別:
jQuery
- 請(qǐng)寫出jQuery綁定事件的方法,不少于兩種鉴扫。
- 使用加jQuery為DOM元素綁定點(diǎn)擊事件赞枕,都有哪些方法?這些方法有什么區(qū)別坪创?
- jQuery的get/post函數(shù)定義如何寫炕婶?
- 如何判斷當(dāng)前元素內(nèi)是否有某個(gè)class?
Angular
- 簡(jiǎn)述AngularJS的技術(shù)優(yōu)勢(shì)
Vue
- Vue的主線程是什么莱预?
- vue的生命周期柠掂?
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
beforeDestroy
destroyed
image - vue數(shù)據(jù)綁定機(jī)制,其雙向數(shù)據(jù)綁定的原理依沮?
- vue-cli搭建項(xiàng)目的好處涯贞?
- vue-router的搭建注意事項(xiàng)?
- 如何配置一個(gè)vue-router規(guī)則危喉,使用戶輸入未配置的路由時(shí)跳轉(zhuǎn)到404頁(yè)面宋渔。
- vue有哪些指令
- v-if和v-show的區(qū)別
React
- react的生命周期
- setState是在何時(shí)調(diào)用
Mini Program
- 簡(jiǎn)述微信小程序開發(fā)的基本流程,在開發(fā)時(shí)你認(rèn)為哪些需要注意的
NodeJS&Auto-Builder
- npm包管理姥饰?
- CommonJS與ES6規(guī)范的區(qū)別
- webpack配置
Other
- 用過哪些庫(kù)?
- 優(yōu)化頁(yè)面加載速度的方法
- 一個(gè)頁(yè)面上有大量的圖片(如大型電商網(wǎng)站)孝治,加載很慢列粪,你有哪些方法優(yōu)化這些圖片的加載,給用戶更好的體驗(yàn)谈飒?
- 針對(duì)移動(dòng)web岂座,如何選擇適合移動(dòng)端的前端框架,選擇的理由是什么杭措?
- 簡(jiǎn)要敘述web開發(fā)如何適配不同的瀏覽器顯示效果费什?
- 如果你的筆試題不能得到面試的機(jī)會(huì),請(qǐng)給我一個(gè)理由說服我你應(yīng)該得到這個(gè)機(jī)會(huì)手素。
- 列舉一項(xiàng)你最近(在項(xiàng)目)中碰到的挑戰(zhàn)鸳址,你是如何解決的?
- 都做過哪些項(xiàng)目泉懦,公司有幾個(gè)前端稿黍,你所擔(dān)任的職責(zé)是什么?
- 是否獨(dú)立地搭建過項(xiàng)目崩哩,如何搭建一個(gè)前端項(xiàng)目巡球?
- 不使用代理服務(wù)器言沐,前后臺(tái)如何實(shí)現(xiàn)聯(lián)調(diào)?