2018我遇到的前端面試題

一年工作經(jīng)驗(yàn)……

HTML篇:

1. doctype是什么?有哪些類型?

doctype用于聲明文檔類型;
HTML4的doctype有三種:過渡的(不嚴(yán)格)//嚴(yán)格的(不允許使用任何表現(xiàn)層的表示和屬性)//框架的

2.input有哪些新類型?簡要說明其用法。

email || url || number || range || Date || pickers (date, month, week, time, datetime, datetime-local) || search || color

==大多數(shù)瀏覽器不支持==

3.html5有哪些新特性、移除了那些元素?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題?如何區(qū)分 HTML 和 HTML5?

新特性
canvas

video和audio標(biāo)簽

本地存儲(chǔ):localStorage和sessionStorage
語義化:article、footer、header、nav、section

表單控件新類型

地理定位Geolocation

移除的元素

big/center/tt/u/s/frame/frameset/noframes

解決兼容性

<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

區(qū)分HTML4.0和HTML5

DOCTYPE聲明\新增的結(jié)構(gòu)元素\功能元素

4.bootstrap響應(yīng)式的實(shí)現(xiàn)原理是什么?

百分比和媒體查詢

5.多終端頁面適配是怎樣實(shí)現(xiàn)的?

1.使用淘寶的rem.js,基本原理是根據(jù)通過dpr設(shè)置縮放比,實(shí)現(xiàn)布局視口大小,然后通過js動(dòng)態(tài)計(jì)算font-size

2.根據(jù)設(shè)計(jì)稿的大小,設(shè)置一個(gè)參考值計(jì)算font-size

CSS篇:

1.實(shí)現(xiàn)兩列布局,左邊自適應(yīng),右邊固定寬度

網(wǎng)上有很多種方法,我只嘗試了一種:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>removeProp demo</title>
  <style>
    *{margin:0; padding:0;}
    html,body{height:100%;width:100%;overflow: hidden;}
    div{height:100%;position:absolute;}
    .box1{width:300px;background: pink;}
    .box2{width:100%;background: #0f0;left:300px;}
  </style>
</head>
<body>
  <div class="box1"></div>
  <div class="box2"></div>
</body>
</html>
2.用css畫一個(gè)三角形
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>triangle</title>
  <style>
    .box1{
      width:0;
      height:0;
      border:50px solid rgba(0,0,0,0);
      border-bottom-color:#f00;
    }
  </style>
</head>
<body>
  <div class="box1"></div>
</body>
</html>
3.css實(shí)現(xiàn)字體大寫
<html>
  <head>
    <style type="text/css">
      p.uppercase {text-transform: uppercase};//大寫
      p.lowercase {text-transform: lowercase};//小寫
      p.capitalize {text-transform: capitalize};//首字母大寫
    </style>
  </head>
  <body>
    <p class="uppercase">This is some text in a paragraph.</p>
    <p class="lowercase">This is some text in a paragraph.</p>
    <p class="capitalize">This is some text in a paragraph.</p>
  </body>
</html>
4.display有哪些常用屬性值,各是什么意思?

block:顯示為塊級(jí)元素(塊級(jí)元素和行內(nèi)元素的區(qū)別略)
inline-block || inline || none || flex || grid

5.position為absolute、relative、fixed的定點(diǎn)位置。

absolute:相對與除了static定位的父集元素;

relative:相對于自身原來的起點(diǎn)位置;

fixed:相對于可視窗口

6.用三種方法清除浮動(dòng)

1.在父級(jí)末尾添加空div,并設(shè)css樣式clear:both;

2.父級(jí)使用偽類after,具體如下:

el:after{
    content:"";
    height:0;
    position:absolute;
    clear:both;
    display:block;
}
el{
    zoom:1;//兼容IE
}

3.父級(jí)設(shè)置height

Javascript篇:

1.什么是事件捕獲和冒泡?如何阻止事件冒泡?(js原生和jQuery兩種)
2.js創(chuàng)建對象,至少用三種方式實(shí)現(xiàn)。
3.簡述一下事件穿透,及解決辦法。
4.用三種方式判斷變量類型是否是數(shù)組
5.怎樣實(shí)現(xiàn)對象的拷貝?(ES5)
var cloneObj = function (obj) {  
    var newObj = {};  
    if (obj instanceof Array) {  
        newObj = [];  
    }  
    for (var key in obj) {  
        var val = obj[key];  
        //newObj[key] = typeof val === 'object' ? arguments.callee(val) : val; //arguments.callee 在哪一個(gè)函數(shù)中運(yùn)行,它就代表哪個(gè)函數(shù), 一般用在匿名函數(shù)中。  
        newObj[key] = typeof val === 'object' ? cloneObj(val): val;  
    }  
    return newObj;  
}; 
6.什么是閉包?閉包有何優(yōu)缺點(diǎn)?
7.簡述一下new一個(gè)構(gòu)造函數(shù)的過程。
8.簡述一下ajax請求過程
9.為什么會(huì)有跨域?怎么實(shí)現(xiàn)的?簡述一下實(shí)現(xiàn)原理。
10.js的原始數(shù)據(jù)類型有哪些?

string , boolean , number , null , undefined

11.寫一個(gè)函數(shù),判斷一個(gè)變量是否是字符串(一種數(shù)據(jù)類型)。

typeof str != "string" && str.constructor != String

12.以下代碼有否正確?如不正確,請改正
f = function(){return true;}
g = function(){return false;}
(function(){
    if(g()&&[]==![]){
    f = function f(){return false;} 
    function g(){return true;} } 
})(); 
console.log(f());//true or false?
13.typeof有哪幾種結(jié)果?

string || number|| undefined || boolean || function|| object

14.箭頭函數(shù)和普通函數(shù)有什么區(qū)別?

1.箭頭函數(shù)沒有綁定this指針,普通函數(shù)的this指向調(diào)用函數(shù)的對象(匿名函數(shù)的this都指向全局window對象);
2.箭頭函數(shù)沒有構(gòu)造器

15.請用三種方法實(shí)現(xiàn)數(shù)組去重

1.使用空對象,將數(shù)組元素作為對象key值,出現(xiàn)次數(shù)作為value值,循環(huán)數(shù)組
2.使用ES6的Set類型,[...new Set([1,2,3,2,3,1,4,5])];//[1,2,3,4,5];
3.普通的for循環(huán),循環(huán)之前排序,會(huì)高效一點(diǎn)點(diǎn)

16.檢測一個(gè)對象是否有prop屬性,沒有就拋出異常,有的話返回true,并刪掉該屬性
 var o = {
      age:10,
      prop:"prop"
    }
    function hasProperty(pro,obj){
      if(obj.hasOwnProperty(pro)){
        delete obj.prop;
      }else{
        throw new Error("沒有該屬性");
      }
    }
    hasProperty("prop",o)
    console.log(o)
17.href和src有什么區(qū)別?

href是文檔之間的跳轉(zhuǎn)
src是資源的引用,將指定資源插入到src所在的位置

jQuery篇:

1.attr()和prop()的區(qū)別?

對于HTML元素本身就帶有的固有屬性,在處理時(shí),使用prop方法。

對于HTML元素我們自己自定義的DOM屬性,在處理時(shí),使用attr方法。

具有 true 和 false 兩個(gè)屬性的屬性,如 checked, selected 或者 disabled 使用prop()
典型應(yīng)用:用checkbox類型實(shí)現(xiàn)radio的功能,有興趣的話可以實(shí)驗(yàn)一把

<body>
<div class="checkBox">
    <input type="checkbox" />1
    <input type="checkbox" />2
    <input type="checkbox" />3
    <input type="checkbox" />4
</div>
<script type="text/javascript">
    $(":checkbox").click(function(){
        if($(this).prop("checked")!=undefined) {
            $(this).prop("checked",true).siblings().prop("checked",false);
        }
    })
</script>
2.on和bind有什么區(qū)別?js動(dòng)態(tài)添加的DOM元素,用on還是bind綁定?

bind現(xiàn)在基本已經(jīng)被棄用,不做討論

on常用于事件委托,如:

$(el).on("click","subel1,subel2",function(){});

之后動(dòng)態(tài)添加的el的同類型子元素自動(dòng)被綁上此事件?。?!

3.touch和click有何區(qū)別?

touch有延遲,等待是否雙擊事件

4.window.onload和jQuery的ready有什么區(qū)別?

略!

Vue篇:

1.簡述一下Vue的生命周期及其特點(diǎn)
2.Vue的雙向綁定原理是什么?
3.Vue的特點(diǎn)有哪些?和jQuery有何區(qū)別?
4.父子組件之間傳遞數(shù)據(jù)的方法
5.子組件之間如何共享數(shù)據(jù)

Vuex

6.一般用什么工具進(jìn)行數(shù)據(jù)交互?
7.webpack原理是什么?
8.簡述一下$nextTick的用法

瀏覽器篇:

1.有用過瀏覽器緩存嗎?請介紹一下基本的緩存機(jī)制。

瀏覽器緩存有兩種:強(qiáng)緩存和協(xié)商緩存,強(qiáng)緩存類型不會(huì)發(fā)送請求到服務(wù)器,協(xié)商緩存會(huì)發(fā)送請求到服務(wù)器,但不會(huì)請求新的響應(yīng)數(shù)據(jù);
js禁止緩存:設(shè)置請求頭 // 在鏈接后手動(dòng)添加隨機(jī)數(shù)

2.cookie,sessionStorage,localStorage的區(qū)別是什么?

兼容性問題篇:

1.key up,key down,key press在不同瀏覽器下有何不同?

主要是瀏覽器兼容性問題

2.請介紹一下margin “塌陷”問題。

網(wǎng)絡(luò)篇:

1.url請求所經(jīng)歷的過程有哪些?

判斷請求類型,是否用緩存,是否是異步數(shù)據(jù)交互等幾種情況,
詳見https://blog.csdn.net/u014600626/article/details/78720763

2.從服務(wù)器端安全考慮,請求方式用get還是post?

get!! 因?yàn)間et方式是查詢操作,而post可能會(huì)惡意修改數(shù)據(jù)

3.http和https的區(qū)別?

項(xiàng)目經(jīng)驗(yàn)篇:

1.項(xiàng)目過程中遇到的最大挑戰(zhàn)及解決辦法?

其他:

1.常用的網(wǎng)頁性能優(yōu)化方法有哪些?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容