Doctype做用?標準模式和兼容模式有什麼區別?javascript
html5爲何只須要寫?css
行內元素有哪些?塊級元素有哪些?空元素有哪些?html
頁面導入樣式時,使用link和@import有什麼區別?前端
介紹一下你對瀏覽器內核的理解?html5
主要分爲渲染引擎和js引擎。java
渲染引擎:負責取得網頁的內容,引入css,計算網頁的顯示方式,輸出到顯示器。node
js引擎:解析和執行js來實現網頁的動態效果。jquery
常見的瀏覽器內核有哪些?android
html5有哪些新特性,移除了哪些元素?如何處理html5新標籤的瀏覽器兼容問題?如何區分HTML和HTML5?ios
簡述一下你對html語義化的理解?
html5的離線存儲怎麼使用,工做原理能不能解釋一下?
在html標籤上添加上manifest="cache.manifest"
在cache.manifest文件中配置
#CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
net.png
FALLBACK:
//offline.html
複製代碼
工做原理:
會出現的問題:
請描述一下cookies,sessionStorage和localStorage的區別?
cookie數據始終在同源的http請求中攜帶,在客戶端和終端之間來回傳遞的,通常會加密,是用來驗證身份的。sessionStorage和localStorage僅保存在客戶端。
存儲量大小:cookie不超過4kb;其餘2個在5M或者更大。
什麼時候銷燬:cookie會設置有效期,過了有效期就過時了;sessionStorage窗口關閉就銷燬了;localStorage窗口除非手動刪除,否則一直會保存在瀏覽器中。
iframe有哪些缺點?
label的做用是什麼?是怎麼用的?
label的做用是當用戶選擇標籤時,瀏覽器會將焦點自動指向label所指向的表單控件。
html5的form如何關閉自動完成功能?
給form或者須要關閉自動完成功能的標籤添加autocomplete=off。
如何實現瀏覽器內多個標籤頁之間的通訊?
webSocket如何兼容低瀏覽器?
頁面可見性(Page Visibility API)能夠有哪些用途?
如何在頁面上實現一個圓形的可點擊區域?
實現不使用border畫出1px高的線,在不一樣瀏覽器的標準模式和怪異模式下都能保持同樣的效果。
.line{
height:1px;
overflow:hidden;
background:red;
}
複製代碼
網頁驗證碼是幹嗎的,是爲了解決什麼問題。
title與h1的區別,b與strong的區別,i與em的區別
介紹一下標準的css盒子模型?
css選擇符有哪些?哪些屬性能夠繼承?
css優先級算法如何計算?
同權重:標籤內部>style標籤中>外部樣式表
!important>id>class>tag
!important比內聯優先級高
css新增僞類有哪些?
after、before、enabled、disabled、checked、first-type-of
如何居中div?
display有哪些值?說明他們的做用。
position的值relative和absolute定位原點是?
css3有哪些新特性?
請解釋一下css3的flex佈局,以及適用場景。
用純css建立一個三角形的原理是什麼?
利用border,三個面的border-color設置爲transparent
一個滿屏「品」字佈局如何設計?
css多列等高如何實現?
常常遇到的瀏覽器的兼容性問題有哪些?緣由,解決方法?經常使用的hack技巧?
li和li之間有看不見的空白間隔是什麼緣由引發的?有什麼解決辦法?
爲何要初始化css樣式?
由於瀏覽器兼容問題,不一樣瀏覽器之間的標籤默認屬性值不一樣。
absolute的containing block(容器塊)計算方式跟正常流有什麼不一樣?
css裏的visibility屬性有個collapse屬性值是幹嗎用的?在不一樣瀏覽器下有什麼區別?
position跟display、margin、overflow、float這些特性相互疊加後會怎麼樣?
對BFC規範(塊級格式化上下文)的理解?
Block Formatting Context,BFC外部元素和內部元素互不影響。
css定義的權重。
請解釋一下爲何須要清除浮動?清除浮動的方式。
什麼是外邊距合併?
2個相鄰塊級元素的垂直外邊距會合並。合併的原則是取二者邊距的最大值。
zoom:1的清除浮動原理?
移動端的佈局用過媒體查詢嗎?
使用css預處理器嗎?喜歡哪一個?
css優化、提升性能的方法有哪些?
瀏覽器是怎麼樣解析css選擇器的?
在網頁中應該使用奇數仍是偶數字體?爲何?
margin和padding分別適合什麼場景使用?
抽離樣式模塊怎麼寫
元素豎向的百分比設定是相對於容器的高度嗎?
全屏滾動的原理是什麼?用到了css的哪些屬性?
什麼是響應式設計?響應式設計的基本原理是什麼?如何兼容低版本的ie?
視差滾動效果,如何給每頁作不一樣的動畫?(回到頂部,向下滑動再次出現,和只出現一次分別怎麼作?)
::before和:after中雙冒號和單冒號有什麼區別?解釋一下這2個僞元素的做用。
如何修改chrome記住密碼後自動填充表單的黃色背景?
對line-height的理解。
設置元素浮動後,該元素的display值是多少?
怎麼讓chrome支持小於12px的文字。
讓頁面的字體變清晰,變細,用css怎麼作?
font-style屬性可讓它賦值爲「oblique」,oblique是什麼意思?
position:fixed;在android、ios下無效怎麼處理?
fixed元素是相對於整個頁面固定位置的,移動端當頁面滾動時,滾動的是viewport。
在html頭部添加viewport的設置。
若是須要手動寫動畫,你認爲最小時間間隔是多久?爲何?
多數顯示器的頻率是60hz,也就是1秒鐘60幀,1000/60=16.67ms。
display:inline-block何時會顯示間隙?
overflow:scroll不能平滑滾動的問題怎麼處理?
有一個高度自適應的div,裏面有2個div,1個高度100px,但願另一個填滿剩下的高度。
png、jpg、gif這些圖片格式解釋一下,分別何時用。有沒有了解過webp?
什麼是cookie隔離?
style標籤寫在body後與body前有什麼區別?
什麼是css預處理器/後處理器?
rem佈局的優缺點?
rem和em有什麼區別?
rem是根據根元素的font-size大小定的;em是根據父元素的font-size大小定的。
介紹js的基本數據類型。
介紹js有哪些內置對象?
Object是javascript中全部對象的父對象。
數據封裝類對象:Object、Number、String、Boolean、Array
其餘對象:Function、Arguments、Math、Date、RegExp、Error
說幾條javascript的基本規範?
javascript有幾種類型的值?你能畫一下他們的內存圖嗎?
如何將字符串轉化爲數字,例如‘12.3b’?
如何實現數組的隨機排序?
javascript建立對象的幾種方式?
eval是作什麼的?
什麼是window對象?什麼是document對象?
null、undefined的區別?
null 表示一個對象是「沒有值」的對象,也就是值爲「空」。
undefined 表示一個變量聲明瞭,沒有賦值。
寫一個通用的事件偵聽器函數。
["1","2","3"].map(parseInt)答案是什麼?
什麼是閉包?爲何要用它?
javascript代碼中的「use strict」;是什麼意思?使用它的區別是什麼?
如何判斷一個對象是否屬於某個類?
if(a instanceOf Person){
alert("yes");
}
複製代碼
new操做符具體幹了什麼?
javascript,有一個函數,執行時對象查找時,永遠不會去查找原型。
hasOwnProperty。
對json的瞭解。
json是輕量級的數據交換格式。它是javascript的一個子集,數據格式簡單,易於讀寫,佔用帶寬小。
ajax是什麼?如何建立一個ajax?
ajax解決瀏覽器緩存問題?
同步和異步的區別?
同步,所有在一個線程上完成,不一樣進程爲協同完成某項工做而在前後次序上調整(經過阻塞,喚醒等方式).同步強調的是順序性.誰先誰後.異步則不存在這種順序性.
如何解決跨域問題看這
頁面編碼和被請求的資源編碼不一致怎麼處理?
服務器代理轉發時,如何處理cookie?
模塊化開發怎麼作?AMD、CMD規範區別?requireJS核心原理是什麼?(如何動態加載的?如何避免屢次加載?如何緩存的?)
JS模塊加載器的輪子怎麼造,如何實現一個模塊加載器?
談談你對ECMAScript6的瞭解。
Promise的理解?
Promise對象有2個特色:
Promise構造函數接受一個函數做爲參數,該函數的兩個參數分別是resolve和reject。它們是兩個函數,由javascript引擎提供,不用本身部署。
const promise = new Promise(function(resolve,reject){
//somecode
if(/**異步操做成功*/){
return resolve();
}else{
return reject();
}
})
複製代碼
Promise實例生成後,可使用then方法分別指定resolved狀態和rejected狀態的回調函數。
promise.then(function(value){
},function(error){
})
複製代碼
異步加載JS方式有哪些?
document.write和innerHTML的區別。
DOM操做——怎樣添加、移除、替換、插入、複製、建立和查找節點?
什麼是僞數組?怎麼轉換成數組?
call()和apply()的區別?還有bind()?
數組和對象有哪些原生方法?
數組
方法 | 描述 |
---|---|
concat() | 鏈接2個或更多的數組,並返回結果 |
join() | 把數組的全部元素放入字符串,並用指向的分隔符分隔 |
pop() | 刪除並返回數組的最後一個元素 |
push() | 向數組末尾添加一個或更多的元素,並返回新的長度 |
reverse() | 將數組反轉 |
shift() | 刪除並返回數組的第一個元素 |
slice() | 從某個已有的數組返回選定的元素 |
sort() | 數組排序 |
splice() | 刪除元素,並向數組添加新元素 |
unshift() | 向數組開頭添加一個或更多元素,並返回新的數組長度 |
toString() | 把數組轉換爲字符串,並返回 |
toLocaleString() | 把數組轉換爲本地數組,並返回結果 |
toSource() | 返回該對象的源代碼 |
valueOf() | 返回數組對象的原始值 |
Object對象實例方法
方法 | 描述 |
---|---|
valueOf() | 返回當前對象對應的值。 |
toString() | 返回當前對象對應的字符串形式。 |
toLocaleString() | 返回當前對象對應的本地字符串形式。 |
hasOwnProperty() | 判斷某個屬性是否爲當前對象自身的屬性,仍是繼承自原型對象的屬性。 |
isPrototypeOf() | 判斷當前對象是否爲另外一個對象的原型。 |
propertyIsEnumerable() | 判斷某個屬性是否可枚舉。 |
ECMAScript6怎麼寫class,爲何會出現class這東西?
class Cat{
constructor(name){
this.name=name;
}
makeSound(){
alert("喵喵喵");
}
}
//必定要new
const cat = new Cat("貓");
cat.makeSound();
//表達式
const Cat = class{
makeSound(){
alert("喵喵喵");
}
}
//不存在變量提高,與繼承有關
new Foo(); //ReferenceError
class Foo{}
//靜態方法 靜態方法中的this指向的是類,不是類的實例
//靜態屬性和和實例屬性 尚未靜態屬性 提案中
複製代碼
JS怎麼實現一個類?怎麼實例化這個類?看這
構造函數法
function Cat(){
this.name="貓";
}
//類的屬性和方法能夠定義在構造函數的prototype對象上
//爲何不用this.makeSound?
//若是用this.makeSound每次建立對象都會複製makeSound到這個對象上,開銷大
Cat.prototype.makeSound = function(){
alert("喵喵喵");
}
var cat = new Cat();
alert(cat.name);
cat.makeSound();
複製代碼
Object.create()法 變量聲明法
var Cat = {
name:"貓",
makeSound:function(){
alert('喵喵喵');
}
}
var cat = Object.create(Cat);
alert(cat.name);
cat.makeSound();
//不兼容的老瀏覽器
if(!Object.create()){
Object.create = function(o){
function F(){
}
F.prototype = o;
return new F();
}
}
複製代碼
極簡主義法
var Cat = {
createNew:function(){
var cat = {};
cat.name="貓";
car.makeSound=function(){
alert("喵喵喵");
}
return cat;
}
}
var cat1 = Cat.createNew();
alert(cat1.name);
cat1.makeSound();
複製代碼
繼承?
var Animal = {
createNew:function(){
var animal = {};
animal.sleep = function(){
alert("睡覺");
}
return animal;
}
}
var Cat = {
sound:'喵喵喵',//靜態屬性 共享
createNew:function(){
var cat = Animal.createNew();
var name = "貓";//私有屬性
cat.name= name;
cat.makeSound = function(){
alert(Cat.sound);
};
cat.changeSound = function(x){
Cat.sound = x;
};
return cat;
}
}
var cat1 = Cat.createNew();
var cat2 = Cat.createNew();
cat1.sleep();
cat1.makeSound();
cat2.makeSound();
cat1.changeSound("汪汪汪");
cat1.makeSound();
cat2.makeSound();
複製代碼
javascript原型、原型鏈?有什麼特色。
每一個對象都會在其內部初始化一個屬性,就是prototype(原型),當咱們訪問一個對象的屬性時,若是這個對象內部不存在這個屬性,那麼他就會去prototype裏找這個屬性,這個prototype又會有本身的prototype,因而就這樣一直找下去,也就是咱們平時所說的原型鏈的概念。
關係:instance.constructor.prototype = instance.__proto__
特色:
JavaScript對象是經過引用來傳遞的,咱們建立的每一個新對象實體中並無一份屬於本身的原型副本。當咱們修改原型時,與之相關的對象也會繼承這一改變。
當咱們須要一個屬性的時,Javascript引擎會先看當前對象中是否有這個屬性, 若是沒有的話,
就會查找他的Prototype對象是否有這個屬性,如此遞推下去,一直檢索到 Object 內建對象。
function Func(){}
Func.prototype.name = "Sean";
Func.prototype.getInfo = function() {
return this.name;
}
var person = new Func();//如今能夠參考var person = Object.create(oldObject);
console.log(person.getInfo());//它擁有了Func的屬性和方法
//"Sean"
console.log(Func.prototype);
// Func { name="Sean", getInfo=function()}
複製代碼
javascript做用域鏈?
當查找變量的時候,會先從當前上下文的變量對象中查找,若是沒有找到,就會從父級(詞法層面上的父級)執行上下文的變量對象中查找,一直找到全局上下文的變量對象,也就是全局對象。這樣由多個執行上下文的變量對象構成的鏈表就叫作做用域鏈。
javascript中的做用域與變量聲明提高?
全局做用域和局部做用域。
變量聲明提高,變量會先聲明,在任意代碼執行前先聲明。
談談對this的理解。
如何編寫高性能的javascript?
哪些操做會形成內存泄漏?
內存泄漏指的是因爲疏忽或錯誤形成程序未能釋放已經再也不使用的內存。
垃圾回收機制2種方式:標記清除和引用計數。
意外的全局變量引發的內存泄漏、閉包的使用不當、沒有清理DOM元素的引用、被遺忘的定時器或回調、子元素存在引用父元素刪除引發的內存泄漏、循環、控制檯日誌、EventListener
What is a Polyfill?
polyfill是一個js庫,是爲了撫平不一樣瀏覽器內核之間對js實現的差別。
咱們給一個dom同時綁定兩個點擊事件,一個用捕獲,一個用冒泡。會執行幾回事件,會先執行冒泡仍是捕獲?
會執行2次事件,先執行捕獲事件,再執行冒泡事件。
什麼是事件?IE與火狐的事件機制有什麼區別?
IE事件對象只有x、y,沒有pageX、pageY。
火狐反之。
冒泡事件和捕獲事件。
什麼是JS的函數節流和函數防抖?
angular2+中的編譯模式?有什麼區別?
jit編譯模式
aot編譯模式
二者的區別在於: