前端常見基礎(chǔ)面試題

HTTP

  1. 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)求的處理濒生。

  1. TCP

JavaScript

  1. 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ù)
    
    
  2. 判斷數(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;
  1. 描述下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 分割 (字符串操作)
  1. 什么是Ajax和JSON款咖,它們的優(yōu)缺點(diǎn)

  2. 使用JS寫個(gè)原生的Ajax過程

    var xhr = new XMLHttpRequest();
    
    xhr.open(url);
    
    xhr.send();
    
  1. 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)度限制
  1. 如何實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊頁(yè)面中的任意標(biāo)簽奄喂,alert該標(biāo)簽的名稱。注意兼容性

  2. 請(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 隱式丟失
  1. 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)傳播的階段
  1. 事件委托的實(shí)現(xiàn)原理是什么坏逢?有什么優(yōu)缺點(diǎn)域帐?
  1. 什么是原型鏈?什么是作用域鏈是整?分別有什么作用肖揣?

  2. 請(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>
  1. 已知構(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() {}

};
  1. 請(qǐng)寫出以下這段JS代碼的輸出結(jié)果舵盈,并解釋原因陋率。
var num = 100;

function print() {

 console.log(num);

 var num;

}

print();  //undefined 閉包
  1. 請(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í)行上下文。

  1. 什么是函數(shù)節(jié)流楚堤?它有什么作用疫蔓?請(qǐng)寫一段函數(shù)節(jié)流的示范代碼?

  2. 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)
}
  1. 編寫有返回的提交表單的AJAX方法呼盆?
 $.ajax({
    type: "POST",//方法類型
    dataType: "json",//預(yù)期服務(wù)器返回的數(shù)據(jù)類型
    url: url ,//url
    data: data,
    success: function (result) {
       
    },
    error : function() {
       
    }
});
  1. 請(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;
}
  1. 在一個(gè)方法中定義變量不寫var會(huì)導(dǎo)致什么結(jié)果访圃?
  1. 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代碼徽鼎。
  1. 請(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());
    
  1. 請(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
  1. 在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'
  1. 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ì)被上一次覆蓋
  1. 解釋一下JavaScript的同源策略。你所能了解到的Ajax跨越解決方案以及各種方案的優(yōu)缺點(diǎn)报咳。

  2. [1,2,3] == [1,2,3] 和 [1,2,3] === [1,2,3]的結(jié)果侠讯?

  3. 寫出以下代碼運(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
  1. var arr = ['a','b','c','d'],分別寫出delete arr[1]和arr[1] = null操作之后的arr的結(jié)果和arr[1]的結(jié)果
    [圖片上傳失敗...(image-a819e5-1583901382435)]

  2. 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;
  1. 完成confirmEnding函數(shù)厢漩,來判斷一個(gè)字符串(str)是否以指定的字符串(target)結(jié)尾
function confirmEnding(str, target) {

}
  1. 找出“The quick brown fox jumped over the lazy dog"字符串中最長(zhǎng)的單詞,返回該項(xiàng)的內(nèi)容和長(zhǎng)度岩臣。

  2. 寫出計(jì)算一個(gè)整數(shù)的階乘的方法(定義一個(gè)方法編寫)

// 遞歸調(diào)用
function factorial(n){
    return n > 1 ? n * factorial(n-1) : 1;
}
factorial(5);//120
  1. 按要求進(jìn)行數(shù)組的操作
let arr = \['html', 'css', 'js', 'vue', 'angular', 'bootstrap'\]

要求輸出結(jié)果為:

\['js', 'css', 'vue', 'html', 'angular', 'bootstrap'\]
  1. 談?wù)勀銓?duì)模塊化的理解

  2. 寫出下面運(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
  1. 什么是作用域溜嗜,如何改變作用域宵膨?
    js只有兩種形式的作用域:全局作用域和函數(shù)作用域
    es6 新增塊級(jí)作用域
    改變作用域方法:使用apply()方法:使用call()方法: 使用new關(guān)鍵字:

  2. 寫出下面程序的運(yùn)行結(jié)果

for (var i = 0; i < 10; i++) {

 setTimeout(function() {

 console.log(i);

 });

} 

// 輸出十個(gè)10 同時(shí)
  1. 什么是內(nèi)存泄漏?
    不再用到的內(nèi)存炸宵,沒有及時(shí)釋放辟躏,就叫做內(nèi)存泄漏

  2. 寫一個(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])]
  1. 談一談ES6中的let和箭頭函數(shù)有哪些特點(diǎn)?
    let 作用于

  2. 談一談你對(duì)ES6的了解

  3. 寫一個(gè)倒計(jì)時(shí)程序土全,要求XXXX年XX月XX日XX時(shí)XX分XX秒(動(dòng)態(tài))

  4. 手寫判斷在數(shù)組中最大的值捎琐,然后讓數(shù)組的第一個(gè)數(shù)跟最大的數(shù)相乘,返回最后的結(jié)果

// 數(shù)組最大值
var arr = [ 1,5,1,7,5,9];
Math.max(...arr)  // 9 
  1. 寫出下面程序的運(yùn)行結(jié)果裹匙,并解釋原因
var a = 'aa';

function foo() {

 alert(a);

 var b = 'bb';

 alert(b);

}

test();
  1. 寫出下面程序的運(yùn)行結(jié)果瑞凑,并解釋原因
function Foo() {

 getName = function() {

 alert(1);

 }

 return this;

}

new Foo().getName();
不執(zhí)行
  1. ['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]
  1. 談?wù)勀銓?duì)promise的理解

  2. 閉包是什么惰匙?使用閉包實(shí)現(xiàn)ul>li點(diǎn)擊技掏,彈出對(duì)應(yīng)的下標(biāo)?

  3. 一個(gè)數(shù)組中项鬼,如何刪除第三個(gè)元素哑梳?

  4. 如何阻止事件的冒泡(考慮兼容性)?

  5. 統(tǒng)計(jì)字符串中每個(gè)字符出現(xiàn)的次數(shù),最多的是誰绘盟,出現(xiàn)了幾次涧衙?

var str = "helloworld";
  1. let 和 const聲明變量區(qū)別是什么,其應(yīng)用場(chǎng)景有啥不同奥此?

  2. Object.assign()函數(shù)的作用和用法弧哎,請(qǐng)舉例說明?
    深淺拷貝

  3. 如何合并兩個(gè)對(duì)象稚虎?

Object.assign()
  1. 希望獲取到頁(yè)面中所有的checkbox怎么做撤嫩?(不使用第三方庫(kù)或者框架)

  2. 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ù)列表形式不同。

  1. 請(qǐng)分別解釋 filter() , map() , every() , some() , join() 的作用以及區(qū)別察皇。

  2. 如何將偽數(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

  1. 如何實(shí)現(xiàn)數(shù)組的去重?

CSS&Less&Sass

  1. 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不支持。

  2. 如何理解CSS盒子模型肌幽?

  3. 描述CSS reset的作用和用途

  4. CSS3有哪些新特性晚碾?

  5. CSS選擇器有哪些?CSS3中新增了哪些喂急?聲明的優(yōu)先級(jí)怎么計(jì)算格嘁?

  6. p>a, p~a, p+a 有什么區(qū)別?

  7. 列舉你所知道的偽類和偽元素廊移。偽類和偽元素有什么區(qū)別糕簿?
    偽類包含兩種:狀態(tài)偽類和結(jié)構(gòu)性偽類。
    CSS 偽類用于向某些選擇器添加特殊的效果狡孔。
    CSS 偽元素用于將特殊的效果添加到某些選擇器懂诗。

  8. CSS3中圓角屬性是什么?
    border-radius

  9. 如何顯示沒有下劃線的超鏈接苗膝?
    text-decoration none

  10. 用CSS隱藏頁(yè)面元素的方法有哪些殃恒?

  11. 寫一段media query的功能,至少展示不同寬度下一個(gè)div的css樣式變化

  12. div和table布局比較辱揭?

  13. em和rem的相同點(diǎn)和不同點(diǎn)离唐?

  14. 請(qǐng)羅列常見的清除浮動(dòng)方案。

  15. 請(qǐng)羅列移動(dòng)前端常用的自適應(yīng)解決方案

  16. 手寫三列布局的實(shí)現(xiàn)(左右固定问窃,中間自適應(yīng))

  17. 左定寬亥鬓,右自適應(yīng)右?guī)追N方式?

  18. 列出position的相關(guān)屬性域庇,解釋他們的用法

  19. 水平垂直居中的四種方案

  20. box-sizing的內(nèi)容

  21. 說說transition和animation的區(qū)別嵌戈?

  22. CSS3新增哪些動(dòng)畫特性?

  23. 實(shí)現(xiàn)不使用border畫出1px高的線听皿,在不同瀏覽器的標(biāo)準(zhǔn)模式和怪異模式不發(fā)生改變

  24. 請(qǐng)編寫一個(gè)動(dòng)畫熟呛,實(shí)現(xiàn)一個(gè)正方形向左移動(dòng)100px,并且放大一倍尉姨,旋轉(zhuǎn)45度惰拱。

  25. 如何將less/Sass轉(zhuǎn)換成css

HTML

  1. HTML和XHTML有什么區(qū)別?
  2. HTML5比HTML4新增了哪些標(biāo)簽啊送?
  3. HTML5的文檔類型和字符集是偿短?
  4. meta標(biāo)簽的使用
  5. 行內(nèi)元素有哪些?塊級(jí)元素有哪些馋没?空(void)元素有哪些昔逗?
  6. HTML5中如何嵌入音頻?
  7. cookie篷朵、localStorage勾怒、sessionStorage三者優(yōu)缺點(diǎn)婆排、使用場(chǎng)景。共同點(diǎn):都是保存在瀏覽器笔链,且同源的段只。區(qū)別:

jQuery

  1. 請(qǐng)寫出jQuery綁定事件的方法,不少于兩種鉴扫。
  2. 使用加jQuery為DOM元素綁定點(diǎn)擊事件赞枕,都有哪些方法?這些方法有什么區(qū)別坪创?
  3. jQuery的get/post函數(shù)定義如何寫炕婶?
  4. 如何判斷當(dāng)前元素內(nèi)是否有某個(gè)class?

Angular

  1. 簡(jiǎn)述AngularJS的技術(shù)優(yōu)勢(shì)

Vue

  1. Vue的主線程是什么莱预?
  2. vue的生命周期柠掂?
    beforeCreate
    created
    beforeMount
    mounted
    beforeUpdate
    updated
    beforeDestroy
    destroyed
    image
  3. vue數(shù)據(jù)綁定機(jī)制,其雙向數(shù)據(jù)綁定的原理依沮?
  4. vue-cli搭建項(xiàng)目的好處涯贞?
  5. vue-router的搭建注意事項(xiàng)?
  6. 如何配置一個(gè)vue-router規(guī)則危喉,使用戶輸入未配置的路由時(shí)跳轉(zhuǎn)到404頁(yè)面宋渔。
  7. vue有哪些指令
  8. v-if和v-show的區(qū)別

React

  1. react的生命周期
  2. setState是在何時(shí)調(diào)用

Mini Program

  1. 簡(jiǎn)述微信小程序開發(fā)的基本流程,在開發(fā)時(shí)你認(rèn)為哪些需要注意的

NodeJS&Auto-Builder

  1. npm包管理姥饰?
  2. CommonJS與ES6規(guī)范的區(qū)別
  3. webpack配置

Other

  1. 用過哪些庫(kù)?
  2. 優(yōu)化頁(yè)面加載速度的方法
  3. 一個(gè)頁(yè)面上有大量的圖片(如大型電商網(wǎng)站)孝治,加載很慢列粪,你有哪些方法優(yōu)化這些圖片的加載,給用戶更好的體驗(yàn)谈飒?
  4. 針對(duì)移動(dòng)web岂座,如何選擇適合移動(dòng)端的前端框架,選擇的理由是什么杭措?
  5. 簡(jiǎn)要敘述web開發(fā)如何適配不同的瀏覽器顯示效果费什?
  6. 如果你的筆試題不能得到面試的機(jī)會(huì),請(qǐng)給我一個(gè)理由說服我你應(yīng)該得到這個(gè)機(jī)會(huì)手素。
  7. 列舉一項(xiàng)你最近(在項(xiàng)目)中碰到的挑戰(zhàn)鸳址,你是如何解決的?
  8. 都做過哪些項(xiàng)目泉懦,公司有幾個(gè)前端稿黍,你所擔(dān)任的職責(zé)是什么?
  9. 是否獨(dú)立地搭建過項(xiàng)目崩哩,如何搭建一個(gè)前端項(xiàng)目巡球?
  10. 不使用代理服務(wù)器言沐,前后臺(tái)如何實(shí)現(xiàn)聯(lián)調(diào)?
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酣栈,一起剝皮案震驚了整個(gè)濱河市险胰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矿筝,老刑警劉巖起便,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異跋涣,居然都是意外死亡缨睡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門陈辱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奖年,“玉大人,你說我怎么就攤上這事沛贪÷兀” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵利赋,是天一觀的道長(zhǎng)水评。 經(jīng)常有香客問我,道長(zhǎng)媚送,這世上最難降的妖魔是什么中燥? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮塘偎,結(jié)果婚禮上疗涉,老公的妹妹穿的比我還像新娘。我一直安慰自己吟秩,他們只是感情好咱扣,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涵防,像睡著了一般闹伪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上壮池,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天偏瓤,我揣著相機(jī)與錄音,去河邊找鬼椰憋。 笑死硼补,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熏矿。 我是一名探鬼主播已骇,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼离钝,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了褪储?” 一聲冷哼從身側(cè)響起卵渴,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鲤竹,沒想到半個(gè)月后浪读,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辛藻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年碘橘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吱肌。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伞辛,死狀恐怖看蚜,靈堂內(nèi)的尸體忽然破棺而出绅这,到底是詐尸還是另有隱情栗弟,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布规揪,位于F島的核電站桥氏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏猛铅。R本人自食惡果不足惜字支,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奸忽。 院中可真熱鬧堕伪,春花似錦、人聲如沸月杉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)苛萎。三九已至,卻和暖如春检号,著一層夾襖步出監(jiān)牢的瞬間腌歉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工齐苛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翘盖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓凹蜂,卻偏偏與公主長(zhǎng)得像馍驯,于是被迫代替她去往敵國(guó)和親阁危。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 本章內(nèi)容都是作者手動(dòng)整理并且盡量縮減內(nèi)容汰瘫,目的就是可以讓開發(fā)者短時(shí)間內(nèi)回顧知識(shí)碎片和面試問題狂打。 常規(guī) 1.js如何...
    XKolento閱讀 2,043評(píng)論 3 73
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,221評(píng)論 0 3
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級(jí)和職位的變化,入門級(jí)到專家級(jí)混弥,廣度和深度都會(huì)有所增加趴乡。 題目類型: 理論知...
    怡寶丶閱讀 2,588評(píng)論 0 7
  • 一、理論基礎(chǔ)知識(shí)部分 1.1蝗拿、講講輸入完網(wǎng)址按下回車晾捏,到看到網(wǎng)頁(yè)這個(gè)過程中發(fā)生了什么 a. 域名解析 b. 發(fā)起T...
    我家媳婦蠢蠢噠閱讀 3,129評(píng)論 2 106
  • 面試題一:https://github.com/jimuyouyou/node-interview-questio...
    R_X閱讀 1,625評(píng)論 0 5