前端面試基礎(chǔ)整理

  1. 行內(nèi)元素與塊級元素的區(qū)別
    行內(nèi)元素設(shè)置width、height無效,margin、padding僅左右有效,上下無效。
  2. 前端的三層結(jié)構(gòu)
    結(jié)構(gòu)層html,表示層css,行為層js
  3. CSS的引入方式,區(qū)別是什么
    link和@import
  • 從屬關(guān)系:link是HTML提供的標(biāo)簽,@import是CSS提供的語法規(guī)則
  • 加載順序:link在頁面加載過程中會和內(nèi)容同時加載出來,@import引入會在頁面加載完成后才被加載。
  • 需要js控制DOM改變演示時只能使用link,DOM不能控制@import
  • link無兼容性問題,@import只在IE5以上才能識別
  • link樣式權(quán)重高于@import
  1. CSS選擇器有哪些
    id選擇器( # myid)
    類選擇器(.myclassname)
    標(biāo)簽選擇器(div, h1, p)
    相鄰選擇器(h1 + p)
    子選擇器(ul > li)
    后代選擇器(li a)
    通配符選擇器( * )
    屬性選擇器
    偽類選擇器
  2. display:none和visibility:hidden的區(qū)別
    display:none隱藏對應(yīng)元素,在文檔布局中不給它分配空間,相當(dāng)于不存在
    visibility:hidden隱藏對應(yīng)元素,但在文檔布局中仍保留原來的空間
  3. position的absolute與fixed共同點與不同點
    共同點:改變行內(nèi)元素的呈現(xiàn)方式,讓元素脫離普通流,不占據(jù)空間
    不同點:absolute是根元素可以設(shè)置的,fixed的根元素固定為瀏覽器窗口
  4. 顯示
    block:像塊類型元素一樣顯示
    inline:像行內(nèi)元素一樣顯示
    inline-block:像行內(nèi)元素一樣顯示,但內(nèi)容像塊類元素一樣顯示
    list-item:像塊類元素一樣顯示,并添加樣式列表標(biāo)記
  5. absolute、fixed、relative、static
    absolute:絕對定位,相對static以外的第一個祖先元素
    fixed:絕對定位,相對瀏覽器窗口
    relative:相對定位,相對普通流中 的位置
    static:默認值,沒有定位,處于正常流中
  6. CSS3中的新特性
    圓角border-radius
    陰影box-shadow
    文字陰影text-shadow
    線性漸變gradient
    旋轉(zhuǎn)transform
  7. 清除浮動技巧
  • 使用空標(biāo)簽定義css clear:both;缺點添加了無意義的標(biāo)簽
  • overflow:hidden;
  1. 減少頁面加載時間的方法
    壓縮CSS、JS文件
    優(yōu)化圖片
    圖片格式選擇
    優(yōu)化CSS
    標(biāo)明寬高
    減少http請求
    減少DOM操作
  2. undefined和null的區(qū)別
    undefined表示無,null表示尚未存在
  • 變量聲明未賦值為undefined
  • 調(diào)用函數(shù),函數(shù)參數(shù)未提供為undefined
  • 函數(shù)沒返回值,默認返回undefined
  • null系統(tǒng)會回收,可用于釋放內(nèi)存
  1. 優(yōu)雅降級和漸進增強
    優(yōu)雅降級:最開始針對新式瀏覽器進行完整功能構(gòu)建,再對低版本瀏覽器進行兼容。
    漸進增強:針對低版本瀏覽器進行構(gòu)建,逐步添加新式瀏覽器才支持的功能,當(dāng)瀏覽器支持時自動呈現(xiàn)并發(fā)揮作用。
  2. 下面三條語句的區(qū)別
    function show(){}
    var show=function(){}
    var show=new Function()
    函數(shù),函數(shù)表達式,函數(shù)對象
  3. JS輸出數(shù)據(jù)的方式
    使用 window.alert() 彈出警告框
    使用 document.write() 方法將內(nèi)容寫到 HTML 文檔中
    使用 innerHTML 寫入到 HTML 元素
    使用 console.log() 寫入到瀏覽器的控制臺
  4. 下面的代碼輸出什么
var y = 1;
if (function f(){}) {
    y += typeof f;
}
console.log(y);//1undefined
var k = 1;
if (1) {
    eval(function f(){});
    k += typeof f;
}
console.log(k); //1undefined
var k = 1;
if (1) {
    function f(){};
    k += typeof f;
}
console.log(k); //1function
  1. JavaScript 中 undefined 和 not defined 的區(qū)別
    未聲明的變量直接使用會拋出異常var name is not defined,如果沒有異常處理,代碼就會停止運行。
    但是使用typeof并不會產(chǎn)生異常,會直接返回 undefined。
var x;// 聲明 x
console.log(x); //undefined 
console.log(typeof y); //undefined
console.log(z); //拋出異常:ReferenceError: z is not defined
  1. JavaScript怎么清空數(shù)組
var arr=['a','b','c']
//方法1
arr=[]
//方法2
arr.length = 0;
//方法3
arr.splice(0,arr.length)
  1. 判斷一個object是否是數(shù)組(array)
    方法1:使用 Object.prototype.toString精確判斷對象類型
function isArray(obj){
    return Object.prototype.toString.call( obj ) === '[object Array]';
}
console.log(Object.prototype.toString.call(123)) //[object Number]
console.log(Object.prototype.toString.call('123')) //[object String]
console.log(Object.prototype.toString.call(undefined)) //[object Undefined]
console.log(Object.prototype.toString.call(true)) //[object Boolean]
console.log(Object.prototype.toString.call({})) //[object Object]
console.log(Object.prototype.toString.call([])) //[object Array]
console.log(Object.prototype.toString.call(function(){})) //[object Function]

方法2:使用原型鏈

function isArray(obj){
    return obj.__proto__ === Array.prototype;
}
  1. JavaScript中如何檢測一個變量是否是String類型
typeof(obj) === "string"
typeof obj === "string"
obj.constructor === String

21.列舉ES6的新特性

  • 類的支持,引入class關(guān)鍵字
  • 字符串模板``
  • 解構(gòu)
  • 默認參數(shù),不定參數(shù),拓展參數(shù)
  • let關(guān)鍵字
  • for of
  1. 不同瀏覽器的兼容性區(qū)別
    1.標(biāo)簽?zāi)J外邊界和內(nèi)填充不同
    解決辦法:margin:0;padding:0;
    2.塊屬性float+橫向margin在IE6中margin顯示比設(shè)置的大
    解決辦法:display:inline;
    3.標(biāo)簽高度設(shè)置較小(<10px)在IE6、7中高度顯示比設(shè)置的大
    解決辦法:overflow:hidden;或者設(shè)置line-height<height
    4.多個圖片標(biāo)簽設(shè)置在一起,某些瀏覽器默認有間距
    解決辦法:為圖片使用float
    5.火狐不支持hand,ie支持pointer
    解決辦法:統(tǒng)一使用cursor:pointer;
    6.small字體大小不同
    解決辦法:使用指定的字體大小
  2. JavaScript數(shù)組反轉(zhuǎn)
var arr = [5,1,4,7,2];
console.log(arr.reverse())//[ 2, 7, 4, 1, 5 ]
  1. JavaScript數(shù)組的排序
var arr = [5,1,4,7,2];
console.log(arr.sort())//[ 1, 2, 4, 5, 7 ]
var arr = [5,1,4,7,2];
console.log(arr.sort().reverse())//[ 7, 5, 4, 2, 1 ]
  1. JavaScript的基本類型
    字符串、數(shù)字、布爾、數(shù)組、對象、Null、Undefined
  2. let和const的區(qū)別
  • 都只在聲明所在的塊級作用域內(nèi)有效
  • let聲明的變量可以改變值/類型等,const聲明的變量不可改變值,const聲明同時必須初始化
  1. relative、absolute、fixed 定位原點
  • absolute:相對不是static的 第一個父元素
  • relative:相對其正常位置
  • fixed :相對瀏覽器窗口
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準。 注意:講述HT...
    kismetajun閱讀 28,894評論 1 45
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J的外補...
    _Yfling閱讀 14,207評論 1 92
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進階之旅閱讀 115,589評論 24 450
  • 一、理論基礎(chǔ)知識部分 1.1、講講輸入完網(wǎng)址按下回車,到看到網(wǎng)頁這個過程中發(fā)生了什么 a. 域名解析 b. 發(fā)起T...
    我家媳婦蠢蠢噠閱讀 3,259評論 2 106
  • 一、即時通訊 什么是即時通訊? 即時通訊,又稱實時通訊 即時通信(Instant Messaging,簡稱IM)是...
    Mg明明就是你閱讀 7,901評論 0 42

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