HTML&CSSjavascript
JavaScript:css
其餘:html
DOM結構 —— 兩個節點之間可能存在哪些關係以及如何在節點之間任意移動。前端
DOM操做 —— 如何添加、移除、移動、複製、建立和查找節點等。html5
事件 —— 如何使用事件,以及IE和標準DOM事件模型之間存在的差異。java
XMLHttpRequest —— 這是什麼、怎樣完整地執行一次GET請求、怎樣檢測錯誤。node
嚴格模式與混雜模式 —— 如何觸發這兩種模式,區分它們有何意義。jquery
盒模型 —— 外邊距、內邊距和邊框之間的關係,及IE8如下版本的瀏覽器中的盒模型android
塊級元素與行內元素 —— 怎麼用CSS控制它們、以及如何合理的使用它們git
浮動元素 —— 怎麼使用它們、它們有什麼問題以及怎麼解決這些問題。
HTML與XHTML —— 兩者有什麼區別,你以爲應該使用哪個並說出理由。
JSON —— 做用、用途、設計結構
Doctype做用?標準模式與兼容模式各有什麼區別?
HTML5 爲何只須要寫 ?
行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?
首先:CSS規範規定,每一個元素都有display屬性,肯定該元素的類型,每一個元素都有默認的display值,如div的display默認值爲「block」,則爲「塊級」元素;span默認display屬性值爲「inline」,是「行內」元素
行內元素有:a b span img input select strong(強調的語氣)
塊級元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
常見的空元素:
頁面導入樣式時,使用link和@import有什麼區別?
介紹一下你對瀏覽器內核的理解?
常見的瀏覽器內核有哪些?
html5有哪些新特性、移除了那些元素?如何處理HTML5新標籤的瀏覽器兼容問題?如何區分 HTML 和HTML5?
HTML5 如今已經不是 SGML的子集,主要是關於圖像,位置,存儲,多任務等功能的增長
新增功能
移除的元素:
支持HTML5新標籤:
<!--[if lt IE 9]> <script> src="http://html5shim.googlecode.com/svn /trunk/html5.js"</script> <![endif]-->
簡述一下你對HTML語義化的理解?
HTML5的離線儲存怎麼使用,工做原理能不能解釋一下?
在用戶沒有與因特網鏈接時,能夠正常訪問站點或應用,在用戶與因特網鏈接時,更新用戶機器上的緩存文件
原理:HTML5的離線存儲是基於一個新建的.appcache文件的緩存機制(不是存儲技術),經過這個文件上的解析清單離線存儲資源,這些資源就會像cookie同樣被存儲了下來。以後當網絡在處於離線狀態下時,瀏覽器會經過被離線存儲的數據進行頁面展現
如何使用:
CACHE MANIFEST #v0.11 CACHE: js/app.js css/style.css NETWORK: resourse/logo.png FALLBACK: / /offline.html
瀏覽器是怎麼對HTML5的離線儲存資源進行管理和加載的呢?
請描述一下 cookies,sessionStorage 和 localStorage 的區別?
cookie是網站爲了標示用戶身份而儲存在用戶本地終端(Client Side)上的數據(一般通過加密)。
cookie數據始終在同源的http請求中攜帶(即便不須要),記會在瀏覽器和服務器間來回傳遞。
sessionStorage和localStorage不會自動把數據發給服務器,僅在本地保存
存儲大小:
有期時間:
iframe有那些缺點?
Label的做用是什麼?是怎麼用的?
<label for="Name">Number:</label> <input type=「text「name="Name" id="Name"/> <label>Date:<input type="text" name="B"/></label>
HTML5的form如何關閉自動完成功能?
如何實現瀏覽器內多個標籤頁之間的通訊? (阿里)
webSocket如何兼容低瀏覽器?(阿里)
頁面可見性(Page Visibility API) 能夠有哪些用途?
如何在頁面上實現一個圓形的可點擊區域?
實現不使用 border 畫出1px高的線,在不一樣瀏覽器的標準模式與怪異模式下都能保持一致的效果
<div style="height:1px;overflow:hidden;background:red"></div>
網頁驗證碼是幹嗎的,是爲了解決什麼安全問題
title與h1的區別、b與strong的區別、i與em的區別?
title屬性沒有明確意義只表示是個標題,H1則表示層次明確的標題,對頁面信息的抓取也有很大的影響
strong是標明重點內容,有語氣增強的含義,使用閱讀設備閱讀網絡時:會重讀,而是展現強調內容
i內容展現爲斜體,em表示強調的文本;
Physical Style Elements -- 天然樣式標籤 b, i, u, s, pre
Semantic Style Elements -- 語義樣式標籤 strong, em, ins, del, code
介紹一下標準的CSS的盒子模型?低版本IE的盒子模型有什麼不一樣的?
CSS選擇符有哪些?哪些屬性能夠繼承?
id選擇器( # myid)
類選擇器(.myclassname)
標籤選擇器(div, h1, p)
相鄰選擇器(h1 + p)
子選擇器(ul > li)
後代選擇器(li a)
通配符選擇器( * )
屬性選擇器(a[rel = "external"])
僞類選擇器(a:hover, li:nth-child)
可繼承的樣式: font-size font-family color, UL LI DL DD DT
不可繼承的樣式:border padding margin width height
CSS優先級算法如何計算?
優先級就近原則,同權重狀況下樣式定義最近者爲準
載入樣式以最後載入的定位爲準
優先級爲:
CSS3新增僞類有那些?
p:first-of-type 選擇屬於其父元素的首個
元素的每一個
元素。
p:last-of-type 選擇屬於其父元素的最後
元素的每一個
元素。
p:only-of-type 選擇屬於其父元素惟一的
元素的每一個
元素。
p:only-child 選擇屬於其父元素的惟一子元素的每一個
元素。
p:nth-child(2) 選擇屬於其父元素的第二個子元素的每一個
元素。
:after 在元素以前添加內容,也能夠用來作清除浮動。
:before 在元素以後添加內容
:enabled
:disabled 控制表單控件的禁用狀態。
:checked 單選框或複選框被選中
如何居中div?
div{ width:200px; margin:0 auto; }
div { position: absolute; width: 300px; height: 300px; margin: auto; top: 0; left: 0; bottom: 0; right: 0; background-color: pink; /* 方便看效果 */ }
div { position: relative; /* 相對定位或絕對定位都可 */ width:500px; height:300px; top: 50%; left: 50%; margin: -150px 0 0 -250px; /* 外邊距爲自身寬高的一半 */ background-color: pink; /* 方便看效果 */ }
transform
屬性div { position: absolute; /* 相對定位或絕對定位都可 */ width:500px; height:300px; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: pink; /* 方便看效果 */ }
水平垂直居中三
.container { display: flex; align-items: center; /* 垂直居中 */ justify-content: center; /* 水平居中 */ } .container div { width: 100px; height: 100px; background-color: pink; /* 方便看效果 */ }
display有哪些值?說明他們的做用。
position的值relative和absolute定位原點是?
CSS3有哪些新特性?
請解釋一下CSS3的Flexbox(彈性盒佈局模型),以及適用場景?
用純CSS建立一個三角形的原理是什麼?
#demo { width: 0; height: 0; border-width: 20px; border-style: solid; border-color: transparent transparent red transparent; }
一個滿屏 品 字佈局 如何設計?
css多列等高如何實現?
常常遇到的瀏覽器的兼容性有哪些?緣由,解決方法是什麼,經常使用hack的技巧
.bb{ background-color:red;/*全部識別*/ background-color:#00deff\9; /*IE六、七、8識別*/ +background-color:#a200ff;/*IE六、7識別*/ _background-color:#1e0bd1;/*IE6識別*/ }
IE下,能夠使用獲取常規屬性的方法來獲取自定義屬性,也能夠使用getAttribute()獲取自定義屬性;
Firefox下,只能使用getAttribute()獲取自定義屬性
解決方法:統一經過getAttribute()獲取自定義屬性。
IE下,even對象有x,y屬性,可是沒有pageX,pageY屬性
Firefox下,event對象有pageX,pageY屬性,可是沒有x,y屬性
解決方法:(條件註釋)缺點是在IE瀏覽器下可能會增長額外的HTTP請求數。
Chrome 中文界面下默認會將小於 12px 的文本強制按照 12px 顯示,
可經過加入 CSS 屬性 -webkit-text-size-adjust: none; 解決。
超連接訪問事後hover樣式就不出現了。被點擊訪問過的超連接樣式不在具備hover和active瞭解決方法是改變CSS屬性的排列順序:
L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
li與li之間有看不見的空白間隔是什麼緣由引發的?有什麼解決辦法?
爲何要初始化CSS樣式
absolute的containing block(容器塊)計算方式跟正常流有什麼不一樣?
不管屬於哪一種,都要先找到其祖先元素中最近的 position 值不爲 static 的元素,而後再判斷:
一、若此元素爲 inline 元素,則 containing block爲可以包含這個元素生成的第一個和最後一個 inline box 的 padding box (除 margin, border 外的區域) 的最小矩形;
二、不然,則由這個祖先元素的 padding box 構成。若是都找不到,則爲 initial containing block。
補充:
CSS裏的visibility屬性有個collapse屬性值是幹嗎用的?在不一樣瀏覽器下之後什麼區別?
position跟display、margin collapse、overflow、float這些特性相互疊加後會怎麼樣?
對BFC規範(塊級格式化上下文:block formatting context)的理解?
css定義的權重
/*權重爲1*/ div{ } /*權重爲10*/ .class1{ } /*權重爲100*/ #id1{ } /*權重爲100+1=101*/ #id1 div{ } /*權重爲10+1=11*/ .class1 div{ } /*權重爲10+10+1=21*/ .class1 .class2 div{ }
請解釋一下爲何須要清除浮動?清除浮動的方式
.clearfix:before, .clearfix:after { content: " "; display: table; } .clearfix:after { clear: both; } .clearfix { *zoom: 1; }
&:after,&:before{ content: " "; visibility: hidden; display: block; height: 0; clear: both; }
解析原理:
經過分析發現,除了clear:both用來閉合浮動的,其餘代碼無非都是爲了隱藏掉content生成的內容,這也就是其餘版本的閉合浮動爲何會有font-size:0,line-height:0
什麼是外邊距合併?
zoom:1的清除浮動原理?
移動端的佈局用過媒體查詢嗎?
假設你如今正用一臺顯示設備來閱讀這篇文章,同時你也想把它投影到屏幕上,或者打印出來,而顯示設備、屏幕投影和打印等這些媒介都有本身的特色,CSS就是爲文檔提供在不一樣媒介上展現的適配方法
<style> @media (min-width: 700px) and (orientation: landscape){ .sidebar { display: none; } } </style>
使用 CSS 預處理器嗎?喜歡那個?
CSS優化、提升性能的方法有哪些?
瀏覽器是怎樣解析CSS選擇器的?
margin和padding分別適合什麼場景使用?
::before 和 :after中雙冒號和單冒號 有什麼區別?解釋一下這2個僞元素的做用
如何修改chrome記住密碼後自動填充表單的黃色背景 ?
input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill { background-color: rgb(250, 255, 189); /* #FAFFBD; */ background-image: none; color: rgb(0, 0, 0); }
設置元素浮動後,該元素的display值是多少?
怎麼讓Chrome支持小於12px 的文字?
讓頁面裏的字體變清晰,變細用CSS怎麼作?
font-style屬性可讓它賦值爲「oblique」 oblique是什麼意思?
position:fixed;在android下無效怎麼處理?
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
若是須要手動寫動畫,你認爲最小時間間隔是多久,爲何?(阿里)
display:inline-block 何時會顯示間隙?(攜程)
什麼是Cookie 隔離?(或者說:請求資源的時候不要讓它帶cookie怎麼作)
什麼是CSS 預處理器 / 後處理器?
介紹js的基本數據類型
介紹js有哪些內置對象?
說幾條寫JavaScript的基本規範?
JavaScript原型,原型鏈 ? 有什麼特色?
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有幾種類型的值?,你能畫一下他們的內存圖嗎?
棧:原始數據類型(Undefined,Null,Boolean,Number、String)
堆:引用數據類型(對象、數組和函數)
兩種類型的區別是:存儲位置不一樣;
引用數據類型存儲在堆(heap)中的對象,佔據空間大、大小不固定。若是存儲在棧中,將會影響程序運行的性能;引用數據類型在棧中存儲了指針,該指針指向堆中該實體的起始地址。當解釋器尋找引用值時,會首先檢索其在棧中的地址,取得地址後從堆中得到實體
如何將字符串轉化爲數字,例如'12.3b'?
如何將浮點數點左邊的數每三位添加一個逗號,如12000000.11轉化爲『12,000,000.11』?
function commafy(num){ return num && num .toString() .replace(/(\d)(?=(\d{3})+\.)/g, function($1, $2){ return $2 + ','; }); }
如何實現數組的隨機排序?
var arr = [1,2,3,4,5,6,7,8,9,10]; function randSort1(arr){ for(var i = 0,len = arr.length;i < len; i++ ){ var rand = parseInt(Math.random()*len); var temp = arr[rand]; arr[rand] = arr[i]; arr[i] = temp; } return arr; } console.log(randSort1(arr));
var arr = [1,2,3,4,5,6,7,8,9,10]; function randSort2(arr){ var mixedArray = []; while(arr.length > 0){ var randomIndex = parseInt(Math.random()*arr.length); mixedArray.push(arr[randomIndex]); arr.splice(randomIndex, 1); } return mixedArray; } console.log(randSort2(arr));
var arr = [1,2,3,4,5,6,7,8,9,10]; arr.sort(function(){ return Math.random() - 0.5; }) console.log(arr);
Javascript如何實現繼承?
構造繼承
原型繼承
實例繼承
拷貝繼承
原型prototype機制或apply和call方法去實現較簡單,建議使用構造函數與原型混合方式
function Parent(){ this.name = 'wang'; } function Child(){ this.age = 28; } Child.prototype = new Parent();//繼承了Parent,經過原型 var demo = new Child(); alert(demo.age); alert(demo.name);//獲得被繼承的屬性
javascript建立對象的幾種方式?
javascript建立對象簡單的說,無非就是使用內置對象或各類自定義對象,固然還能夠用JSON;但寫法有不少種,也能混合使用
一、對象字面量的方式
person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"};
二、用function來模擬無參的構造函數
function Person(){} //定義一個function,若是使用new"實例化",該function能夠看做是一個Class person.name="Mark"; var person=new Person(); person.age="25"; person.work=function(){ alert(person.name+" hello..."); } person.work();
function Pet(name,age,hobby){ this.name=name;//this做用域:當前對象 this.age=age; this.hobby=hobby; this.eat=function(){ alert("我叫"+this.name+",我喜歡"+this.hobby+",是個程序員"); } } var maidou =new Pet("麥兜",25,"coding");//實例化、建立對象 maidou.eat();//調用eat方法
var wcDog =new Object(); wcDog.name="旺財"; wcDog.age=3; wcDog.work=function(){ alert("我是"+wcDog.name+",汪汪汪......"); } wcDog.work();
function Dog(){ } Dog.prototype.name="旺財"; Dog.prototype.eat=function(){ alert(this.name+"是個吃貨"); } var wangcai =new Dog(); wangcai.eat();
function Car(name,price){ this.name=name; this.price=price; } Car.prototype.sell=function(){ alert("我是"+this.name+",我如今賣"+this.price+"萬元"); } var camry =new Car("凱美瑞",27); camry.sell();
Javascript做用鏈域?
談談This對象的理解。
eval是作什麼的?
什麼是window對象? 什麼是document對象?
null,undefined 的區別?
null 表示一個對象是「沒有值」的值,也就是值爲「空」;
undefined 表示一個變量聲明瞭沒有初始化(賦值);
undefined不是一個有效的JSON,而null是;
undefined的類型(typeof)是undefined;
null的類型(typeof)是object;
Javascript將未賦值的變量默認值設爲undefined;
Javascript歷來不會將變量設爲null。它是用來讓程序員代表某個用var聲明的變量時沒有值的
typeof undefined
typeof null //"object"
注意:
寫一個通用的事件偵聽器函數。
// event(事件)工具集,來源:github.com/markyun markyun.Event = { // 頁面加載完成後 readyEvent : function(fn) { if (fn==null) { fn=document; } var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = fn; } else { window.onload = function() { oldonload(); fn(); }; } }, // 視能力分別使用dom0||dom2||IE方式 來綁定事件 // 參數: 操做的元素,事件名稱 ,事件處理程序 addEvent : function(element, type, handler) { if (element.addEventListener) { //事件類型、須要執行的函數、是否捕捉 element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent('on' + type, function() { handler.call(element); }); } else { element['on' + type] = handler; } }, // 移除事件 removeEvent : function(element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler, false); } else if (element.datachEvent) { element.detachEvent('on' + type, handler); } else { element['on' + type] = null; } }, // 阻止事件 (主要是事件冒泡,由於IE不支持事件捕獲) stopPropagation : function(ev) { if (ev.stopPropagation) { ev.stopPropagation(); } else { ev.cancelBubble = true; } }, // 取消事件的默認行爲 preventDefault : function(event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, // 獲取事件目標 getTarget : function(event) { return event.target || event.srcElement; }, // 獲取event對象的引用,取到事件的全部信息,確保隨時能使用event; getEvent : function(e) { var ev = e || window.event; if (!ev) { var c = this.getEvent.caller; while (c) { ev = c.arguments[0]; if (ev && Event == ev.constructor) { break; } c = c.caller; } } return ev; } };
["1", "2", "3"].map(parseInt) 答案是多少?
function parseInt(str, radix) { return str+'-'+radix; }; var a=["1", "2", "3"]; a.map(parseInt); // ["1-0", "2-1", "3-2"] 不能大於radix
事件是?IE與火狐的事件機制有什麼區別? 如何阻止冒泡?
什麼是閉包(closure),爲何要用它?
閉包是指有權訪問另外一個函數做用域中變量的函數,建立閉包的最多見的方式就是在一個函數內建立另外一個函數,經過另外一個函數訪問這個函數的局部變量,利用閉包能夠突破做用鏈域,將函數內部的變量和方法傳遞到外部
閉包的特性:
//li節點的onclick事件都能正確的彈出當前被點擊的li索引 <ul id="testUL"> <li> index = 0</li> <li> index = 1</li> <li> index = 2</li> <li> index = 3</li> </ul> <script type="text/javascript"> var nodes = document.getElementsByTagName("li"); for(i = 0;i<nodes.length;i+= 1){ nodes[i].onclick = (function(i){ return function() { console.log(i); } //不用閉包的話,值每次都是4 })(i); } </script>
function say667() { // Local variable that ends up within closure var num = 666; var sayAlert = function() { alert(num); } num++; return sayAlert; } var sayAlert = say667(); sayAlert()//執行結果應該彈出的667
javascript 代碼中的"use strict";是什麼意思 ? 使用它區別是什麼?
如何判斷一個對象是否屬於某個類?
if(a instanceof Person){ alert('yes'); }
new操做符具體幹了什麼呢?
var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj);
Javascript中,有一個函數,執行時對象查找時,永遠不會去查找原型,這個函數是?
JSON 的瞭解?
var obj =eval('('+ str +')'); var obj = str.parseJSON(); var obj = JSON.parse(str); JSON對象轉換爲JSON字符串: var last=obj.toJSONString(); var last=JSON.stringify(obj);
js延遲加載的方式有哪些?
Ajax 是什麼? 如何建立一個Ajax?
ajax的全稱:Asynchronous Javascript And XML。
異步傳輸+js+xml
所謂異步,在這裏簡單地解釋就是:向服務器發送請求的時候,咱們沒必要等待結果,而是能夠同時作其餘的事情,等到有告終果它本身會根據設定進行後續操做,與此同時,頁面是不會發生整頁刷新的,提升了用戶體驗
(1)建立XMLHttpRequest對象,也就是建立一個異步調用對象
(2)建立一個新的HTTP請求,並指定該HTTP請求的方法、URL及驗證信息
(3)設置響應HTTP請求狀態變化的函數
(4)發送HTTP請求
(5)獲取異步調用返回的數據
(6)使用JavaScript和DOM實現局部刷新
Ajax 解決瀏覽器緩存問題?
一、在ajax發送請求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。
二、在ajax發送請求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。
三、在URL後面加上一個隨機數: "fresh=" + Math.random();。
四、在URL後面加上時間搓:"nowtime=" + new Date().getTime();。
五、若是是使用jQuery,直接這樣就能夠了 $.ajaxSetup({cache:false})。這樣頁面的全部ajax都會執行這條語句就是不須要保存緩存記錄
同步和異步的區別?
如何解決跨域問題?
模塊化開發怎麼作?
var module1 = (function(){ var _count = 0; var m1 = function(){ //... }; var m2 = function(){ //... }; return { m1 : m1, m2 : m2 }; })();
AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)規範區別?
// CMD define(function(require, exports, module) { var a = require('./a') a.doSomething() // 此處略去 100 行 var b = require('./b') // 依賴能夠就近書寫 b.doSomething() // ... }) // AMD 默認推薦 define(['./a', './b'], function(a, b) { // 依賴必須一開始就寫好 a.doSomething() // 此處略去 100 行 b.doSomething() // ... })
異步加載JS的方式有哪些?
(1) defer,只支持IE
(2) async:
(3) 建立script,插入到DOM中,加載完畢後callBack
documen.write和 innerHTML的區別
DOM操做——怎樣添加、移除、移動、複製、建立和查找節點?
.call() 和 .apply() 的區別?
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1);
jquery.extend 與 jquery.fn.extend的區別?
Jquery與jQuery UI 有啥區別?
jquery 中如何將數組轉化爲json字符串,而後再轉化回來?
$.fn.stringifyArray = function(array) { return JSON.stringify(array) } $.fn.parseArray = function(array) { return JSON.parse(array) } 而後調用: $("").stringifyArray(array)
針對 jQuery 的優化方法?
如何判斷當前腳本運行在瀏覽器仍是node環境中?(阿里)
jQuery 的 slideUp動畫 ,若是目標元素是被外部事件驅動, 當鼠標快速地連續觸發外部元素事件, 動畫會滯後的反覆執行,該如何處理呢?
那些操做會形成內存泄漏?
JQuery一個對象能夠同時綁定多個事件,這是如何實現的?
$("div").on("click mouseover", function(){});
$("div").on({ click: function(){}, mouseover: function(){} });
知道什麼是webkit麼? 知道怎麼用瀏覽器的各類工具來調試和debug代碼麼?
檢測瀏覽器版本版本有哪些方式?
//"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36"
What is a Polyfill?
作的項目中,有沒有用過或本身實現一些 polyfill 方案(兼容性處理方案)?
使用JS實現獲取文件擴展名?
function getFileExtension(filename) { return filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2); }
String.lastIndexOf()
String.prototype.slice()
Object.is() 與原來的比較操做符「 ===」、「 ==」的區別?
頁面重構怎麼操做?
網站重構:在不改變外部行爲的前提下,簡化結構、添加可讀性,而在網站前端保持一致的行爲。也就是說是在不改變UI的狀況下,對網站進行優化,在擴展的同時保持一致的UI
對於傳統的網站來講重構一般是:
表格(table)佈局改成DIV+CSS
使網站前端兼容於現代瀏覽器(針對於不合規範的CSS、如對IE6有效的)
對於移動平臺的優化
針對於SEO進行優化
深層次的網站重構應該考慮的方面
減小代碼間的耦合
讓代碼保持彈性
嚴格按規範編寫代碼
設計可擴展的API
代替舊有的框架、語言(如VB)
加強用戶體驗
一般來講對於速度的優化也包含在重構中
壓縮JS、CSS、image等前端資源(一般是由服務器來解決)
程序的性能優化(如數據讀寫)
採用CDN來加速資源加載
對於JS DOM的優化
HTTP服務器的文件緩存
列舉IE與其餘瀏覽器不同的特性?
什麼叫優雅降級和漸進加強?
是否瞭解公鑰加密和私鑰加密
WEB應用從服務器主動推送Data到客戶端有那些方式?
對Node的優勢和缺點提出了本身的見解?
你有用過哪些前端性能優化的方法?
(1) 減小http請求次數:CSS Sprites, JS、CSS源碼壓縮、圖片大小控制合適;網頁Gzip,CDN託管,data緩存 ,圖片服務器。
(2) 前端模板 JS+數據,減小因爲HTML標籤致使的帶寬浪費,前端用變量保存AJAX請求結果,每次操做本地變量,不用請求,減小請求次數
(3) 用innerHTML代替DOM操做,減小DOM操做次數,優化javascript性能。
(4) 當須要設置的樣式不少時設置className而不是直接操做style。
(5) 少用全局變量、緩存DOM節點查找的結果。減小IO讀取操做。
(6) 避免使用CSS Expression(css表達式)又稱Dynamic properties(動態屬性)。
(7) 圖片預加載,將樣式表放在頂部,將腳本放在底部 加上時間戳
(8) 避免在頁面的主體佈局中使用table,table要等其中的內容徹底下載以後纔會顯示出來,顯示比div+css佈局慢
對普通的網站有一個統一的思路,就是儘可能向前端優化、減小數據庫操做、減小磁盤IO。向前端優化指的是,在不影響功能和體驗的狀況下,能在瀏覽器執行的不要在服務端執行,能在緩存服務器上直接返回的不要到應用服務器,程序能直接取得的結果不要到外部取得,本機內能取得的數據不要到遠程取,內存能取到的不要到磁盤取,緩存中有的不要去數據庫查詢。減小數據庫操做指減小更新次數、緩存結果減小查詢次數、將數據庫執行的操做盡量的讓你的程序完成(例如join查詢),減小磁盤IO指儘可能不使用文件系統做爲緩存、減小讀寫文件次數等。程序優化永遠要優化慢的部分,換語言是沒法「優化」的
http狀態碼有那些?分別表明是什麼意思?
100 Continue 繼續,通常在發送post請求時,已發送了http header以後服務端將返回此信息,表示確認,以後發送具體參數信息
200 OK 正常返回信息
201 Created 請求成功而且服務器建立了新的資源
202 Accepted 服務器已接受請求,但還沒有處理
301 Moved Permanently 請求的網頁已永久移動到新位置。
302 Found 臨時性重定向。
303 See Other 臨時性重定向,且老是使用 GET 請求新的 URI。
304 Not Modified 自從上次請求後,請求的網頁未修改過。
400 Bad Request 服務器沒法理解請求的格式,客戶端不該當嘗試再次使用相同的內容發起請求。
401 Unauthorized 請求未受權。
403 Forbidden 禁止訪問。
404 Not Found 找不到如何與 URI 相匹配的資源。
500 Internal Server Error 最多見的服務器端錯誤。
503 Service Unavailable 服務器端暫時沒法處理請求(多是過載或維護)
一個頁面從輸入 URL 到頁面加載顯示完成,這個過程當中都發生了什麼?(流程說的越詳細越好)
注:這題勝在區分度高,知識點覆蓋廣,再不懂的人,也能答出幾句,而高手能夠根據本身擅長的領域自由發揮,從URL規範、HTTP協議、DNS、CDN、數據庫查詢、 到瀏覽器流式解析、CSS規則構建、layout、paint、onload/domready、JS執行、JS API綁定等等
詳細版:
一、瀏覽器會開啓一個線程來處理這個請求,對 URL 分析判斷若是是 http 協議就按照 Web 方式來處理;
二、調用瀏覽器內核中的對應方法,好比 WebView 中的 loadUrl 方法;
三、經過DNS解析獲取網址的IP地址,設置 UA 等信息發出第二個GET請求;
四、進行HTTP協議會話,客戶端發送報頭(請求報頭);
五、進入到web服務器上的 Web Server,如 Apache、Tomcat、Node.JS 等服務器;
六、進入部署好的後端應用,如 PHP、Java、JavaScript、Python 等,找到對應的請求處理;
七、處理結束回饋報頭,此處若是瀏覽器訪問過,緩存上有對應資源,會與服務器最後修改時間對比,一致則返回304;
八、瀏覽器開始下載html文檔(響應報頭,狀態碼200),同時使用緩存;
九、文檔樹創建,根據標記請求所需指定MIME類型的文件(好比css、js),同時設置了cookie;
十、頁面開始渲染DOM,JS根據DOM API操做DOM,執行事件綁定等,頁面顯示完成。
簡潔版:
你用的駕輕就熟用的熟練地編輯器&開發環境是什麼樣子?
對前端工程師這個職位是怎麼樣理解的?它的前景會怎麼樣?
前端是最貼近用戶的程序員,比後端、數據庫、產品經理、運營、安全都近。
前端是最貼近用戶的程序員,前端的能力就是能讓產品從 90分進化到 100 分,甚至更好
參與項目,快速高質量完成實現效果圖,精確到1px;
與團隊成員,UI設計,產品經理的溝通
作好的頁面結構,頁面重構和用戶體驗
處理hack,兼容、寫出優美的代碼格式
針對服務器的優化、擁抱最新前端技術
平時如何管理你的項目?
先期團隊必須肯定好全局樣式(globe.css),編碼模式(utf-8) 等;
編寫習慣必須一致(例如都是採用繼承式的寫法,單樣式都寫成一行);
標註樣式編寫人,各模塊都及時標註(標註關鍵樣式調用的地方);
頁面進行標註(例如 頁面 模塊 開始和結束);
CSS跟HTML 分文件夾並行存放,命名都得統一(例如style.css);
JS 分文件夾存放 命名以該JS功能爲準的英文翻譯。
圖片採用整合的 images.png png8 格式文件使用 - 儘可能整合在一塊兒使用方便未來的管理
說說最近最流行的一些東西吧?常去哪些網站?
移動端(Android IOS)怎麼作好用戶體驗?