摘要:元素的位置通過以及屬性進(jìn)行規(guī)定。表明請求被正常處理了。服務(wù)器返回的響應(yīng)報文包括協(xié)議版本狀態(tài)碼解釋狀態(tài)碼的原因短語響應(yīng)首部字段實體主體。瀏覽器接受響應(yīng),檢查里的狀態(tài)碼,并做出不同的處理方式。關(guān)于返回的狀態(tài)碼的具體說明看上個問題。
html 篇說明:簡答題沒有固定答案,以下給出的答案是從別處摘錄或自己總結(jié),有錯之處歡迎指出。
標(biāo)簽上title和alt屬性的區(qū)別是什么?
alt是html標(biāo)簽的屬性,而title既是html標(biāo)簽,又是html屬性。
title作為屬性時,用來為元素提供額外說明信息。例如,給超鏈接標(biāo)簽a添加了title屬性,把鼠標(biāo)移動到該鏈接上面,就會顯示title的內(nèi)容,以達(dá)到補(bǔ)充說明或者提示的效果。
alt屬性則是用來指定替換文字,只能用在img、area和input元素中,用于網(wǎng)頁中圖片無法正常顯示時給用戶提供文字說明使其了解圖像信息。注意,alt是替代圖像作用而不是提供額外說明文字的。
使用alt屬性還具有搜索引擎優(yōu)化效果,因為搜素引擎是無法直接讀取圖像的信息的,alt可以為其提供文字信息所以對搜索引擎比較友好。
css 篇
relative、absolute、static、fixed的作用,相對誰定位?
static(靜態(tài)定位):occurs where it normally would in the document.
默認(rèn)值。元素使用正常的布局行為,相對于document,即元素在文檔流中當(dāng)前的布局位置。此時top,bottom, left, right 或者 z-index無效。
relative(相對定位):you can use top,bottom... to move the element relative to where it would normally occur in the document.
生成相對定位的元素,相對于本該在文檔中的位置。通過top,bottom,left,right的設(shè)置相對于其正常(原先本身)位置進(jìn)行定位??赏ㄟ^z-index進(jìn)行層次分級。
absolute (絕對定位):the element will removed from the document and placed exactly where you tell it to go.
生成絕對定位的元素,相對于 static 定位以外的第一個父元素進(jìn)行定位。元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定??赏ㄟ^z-index進(jìn)行層次分級。絕對定位可以設(shè)置margin,且不會與其他元素合并。
fixed(固定定位):生成絕對定位的元素,相對于屏幕飾扣進(jìn)行定位。元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定??赏ㄟ^z-index進(jìn)行層次分級。打印時,元素會出現(xiàn)在每頁的固定位置。
sticky(粘性定位):是相對定位和固定定位結(jié)合,在跨越閾值之前相對定位,之后固定定位。
畫出css盒模型
W3C標(biāo)準(zhǔn)盒模型:width = contentWidth+padding+border+margin。
盒子在頁面占據(jù)的大小包括了margin,border,padding以及content。而盒子的實際大小包括border,padding以及內(nèi)容區(qū)域content,但是不包括margin。另一點需要說明的是,我們通過JavaScript代碼獲取某一個元素的大小時,所得到的width和height其實是盒子模型中的content的大小。
IE盒模型:width = contentWidth(包含border+padding)+margin。
IE盒模型也包含margin,border,padding以及content這幾部分。IE盒模型的content部分包含了border和padding。
border-box和content-box的區(qū)別和使用場景?
為了更能形像看出box-sizing中content-box和border-box兩者的區(qū)別,我們來個示例圖,如下所示,
這個box-sizing屬性,我們都有哪些使用場景呢?
特殊場景的布局:假設(shè)我們有這樣的一個場景,設(shè)置子類元素的margin或者border時,可能會撐破父層元素的尺寸,這時我就需要使用box-sizing: border-box來將border包含進(jìn)元素的尺寸中,這樣就不會存在撐破父層元素的情況了。
統(tǒng)一風(fēng)格的表單元素:表單中有一些input元素其實還是展現(xiàn)的是傳統(tǒng)IE盒模型,帶有一些默認(rèn)的樣式,而且在不同平臺或者瀏覽器下的表現(xiàn)不一,造成了表單展現(xiàn)的差異。此時我們可以通過box-sizing屬性來構(gòu)建一個風(fēng)格統(tǒng)一的表單元素。
css清除浮動的方法
設(shè)置好一個類用來clearfix,再把該類名加至父元素上:
.clearfix:before, .clearfix:after { content: " "; display: table; } .clearfix:after {clear: both;} .clearfix: {zoom: 1}
clearfix技巧是基于在父元素上使用":before"和":after"兩個偽類。我們可以在浮動元素的父容器前面和后面創(chuàng)建隱藏元素,":before"用來防止元素頂部的外邊距塌陷,用display:table來創(chuàng)建一個匿名的table-cell元素,也確保IE6/7下一致":after"用來防止子元素底部的外邊距塌陷,以及用來清除浮動元素。缺點是代碼多一點,但還好,用的人也多,兼容性也好。
overflow方法:在父元素上設(shè)置overflow: hidde/auto。使用auto在IE中有一個滾動條,最好還是用hidden。缺點:如果有元素需要移動到父容器外面,就回隱藏,或者給子元素在沒有padding下做個陰影,也會被父元素切斷
在父容器結(jié)束標(biāo)簽前加一個空標(biāo)簽,并設(shè)置clear:both。但如果有很多元素都包含浮動元素,就麻煩,語義化也不好。
談?wù)勀闶窃趺催m配移動端各種尺寸手機(jī)的,以設(shè)計稿寬度為375px為例?
根據(jù)如下代碼,判斷p元素中文字的顏色?
javascript 篇內(nèi)容
//red
代碼題
function fun(n, o) { console.log(o); return { fun: function(m) { return fun(m, n) } } } var a = fun(1).fun(2).fun(4).fun(8) //undefined,1,2,4
var User = { count: 1, getCount: function() { return this.count } } var fn = User.getCount console.log(fn()); //undefined
function test() { for(var i=0; i<5; i++) { setTimeout(function() { console.log(i) }, 0) } } test(); //5,5,5,5,5
var o = { fn: function() { console.log(fn) } } console.log(o.fn()); //ReferenceError
function Animal(name) { this.name = name; } Animal.prototype.sayName = function() { console.log(this.name) } function Cat(name) { Animal.call(this, name) } var kat = new Cat("Jim") kat.sayName(); //TypeError: kat.sayName is not a function //除非加上 Cat.prototype = new Animal()
寫一個數(shù)組去重的方法
/** 方法一: * 1.構(gòu)建一個新的數(shù)組存放結(jié)果 * 2.for循環(huán)中每次從原數(shù)組中取出一個元素,用這個元素循環(huán)與結(jié)果數(shù)組對比 * 3.若結(jié)果數(shù)組中沒有該元素,則存到結(jié)果數(shù)組中 * 缺陷:不能去重數(shù)組中得引用類型的值和NaN */ function unique(array){ var result = []; for(var i = 0;i < array.length; i++){ if(result.indexOf(array[i]) == -1) { result.push(array[i]); } } return result; } // [1,2,1,2,"1","2",0,"1","你好","1","你好",NaN,NaN] => [1, 2, "1", "2", 0, "你好",NaN,NaN] // [{id: "1"}, {id: "1"}] => [{id: "1"}, {id: "1"}]
//方法二:ES6 Array.from(new Set(array)) // [1,2,1,2,"1","2",0,"1","你好","1","你好",NaN,NaN] => [1, 2, "1", "2", 0, "你好", NaN]
寫一個方法,將URL中的查詢字符串解析成一個字典對象
var path = "www.u.com/home?id=2&type=0&dtype=-1"; function parseUrl(url) { var result = []; var tmp = (url.split("?"))[1]; var tmpArr = tmp.split("&"); tmpArr.map(function(v, k) { var value, key; var obj = {}; key = (v.split("="))[0]; value = (v.split("="))[1]; obj[key] = value; result.push(obj) }) return result; } console.log(parseUrl(path)); //[{id: "2"},{type: "0"},{dtype: "-1"}]
//功能:獲取url中的參數(shù)的值 function UrlSearch(url) { var name,value; var str = url; //取得整個地址欄 var num = str.indexOf("?"); str = str.substr(num+1); //取得所有參數(shù) stringvar.substr(start [, length ] var arr=str.split("&"); //各個參數(shù)放到數(shù)組里 for(var i=0;i < arr.length;i++){ num = arr[i].indexOf("="); if(num>0){ name=arr[i].substring(0,num); value=arr[i].substr(num+1); this[name]=value; } } } // 測試 var path = "www.u.com/home?id=2&type=0&dtype=-1"; var Request= new UrlSearch(path); //實例化 console.log(Request); //[{dtype: "-1"},{id: "2"},{type: "0"}] var nickname = encodeURIComponent(Request.dtype); console.log(nickname); //-1
//功能:修改url參數(shù)值 function changeURLArg(url,arg,arg_val){ var pattern=arg+"=([^&]*)"; var replaceText=arg+"="+arg_val; if(url.match(pattern)){ var tmp="/("+ arg+"=)([^&]*)/gi"; tmp=url.replace(eval(tmp),replaceText); return tmp; }else{ if(url.match("[?]")){ return url+"&"+replaceText; }else{ return url+"?"+replaceText; } } return url+" "+arg+" "+arg_val; } var path = "www.u.com/home?id=2&type=0&dtype=-1"; console.log(changeURLArg(path,"type",4)); //"www.u.com/home?id=2&type=4&dtype=4"
Ajax請求的時候get和post的區(qū)別
談?wù)刢ookie,sessionStorage, localStorage的區(qū)別和優(yōu)缺點
你知道的性能優(yōu)化的方法
http 篇
http狀態(tài)碼有哪些?分別表示什么意思?
狀態(tài)碼告知從服務(wù)器返回的請求結(jié)果。
2XX表明請求被正常處理了。200OK、204No Content(服務(wù)器接收的請求已經(jīng)處理成功,但在返回的響應(yīng)報文中不包含實體的主體部分)、206Partial Content(客戶端進(jìn)行了范圍請求,對資源的某一部分請求);3XX重定向,301moved permanently(資源已分配新的uri)、302 found(本次使用新uri訪問)、303 see other(以get定向到另一個uri)、304 not modified、307 temporary redirect(不會從post改為get);4XX客戶端錯誤,400 bad request(請求報文中存在語法錯誤),402 unauthorized(發(fā)送的請求需要通過http認(rèn)證)、403 forbidden(服務(wù)器拒絕了對資源的訪問)、404 not found(服務(wù)器上沒有請求的資源);500XX服務(wù)器錯誤 500internal server error(服務(wù)器在執(zhí)行是發(fā)生了錯誤)、503 service unavailable(服務(wù)器正忙或停機(jī)維護(hù))。
一個頁面從輸入 URL 到頁面加載完的過程中都發(fā)生了什么事情?
總的來說,根據(jù)web瀏覽器地址欄中指定的URL,web瀏覽器從web服務(wù)器端獲取資源文件等信息,從而顯示出web頁面。具體而言,有如下幾個步驟:
1.瀏覽器接收URL(包含的信息:協(xié)議方案名、服務(wù)器地址:服務(wù)器端口號、帶層次的文件路徑、查詢字符串?、片段標(biāo)識符)
2.將URL與緩存進(jìn)行比對如果請求的頁面在緩存中且未過期,則直接進(jìn)行第8步。
3.負(fù)責(zé)域名解析DNS服務(wù)。系統(tǒng)進(jìn)行DNS查找,并將IP地址返回給瀏覽器。
DNS服務(wù)適合HTTP協(xié)議一樣位于應(yīng)用層的協(xié)議。它提供域名到IP地址之間的解析服務(wù)。可以通過域名查找IP地址,也可以逆向從IP地址反查找域名。
4.瀏覽器與服務(wù)器建立TCP連接(在傳輸層)
這一步很復(fù)雜因為用到了HTTPS。三次握手(SYN,SYN/ACK,ACK),若有一次任何一方收不到信息那么將會重新發(fā)起 TCP 連接。
5.瀏覽器向服務(wù)器通過TCP協(xié)議連接發(fā)送HTTP請求。
數(shù)據(jù)經(jīng)過應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層,傳輸?shù)较乱粋€目的地。應(yīng)用層決定了向用戶提供應(yīng)用服務(wù)時的通信(http協(xié)議,DNS服務(wù))。傳輸層對上層應(yīng)用層,提供處于網(wǎng)絡(luò)連接中的兩臺計算機(jī)之間的數(shù)據(jù)傳輸(TCP協(xié)議和UDP協(xié)議)。網(wǎng)絡(luò)層用來處理網(wǎng)絡(luò)上流動的數(shù)據(jù)包,數(shù)據(jù)包是網(wǎng)絡(luò)傳輸?shù)淖钚?shù)據(jù)單位,該層規(guī)定通過怎樣的路徑到達(dá)對方計算機(jī),并把數(shù)據(jù)傳輸給對方。鏈路層處理連接網(wǎng)絡(luò)的硬件部分(網(wǎng)卡,光纖)。這一步驟還會涉及發(fā)送給服務(wù)器的請求報文(請求方法、請求URI、協(xié)議版本、首部字段、內(nèi)容實體)。
6.服務(wù)器收到請求,從它的文檔空間中查找資源并返回HTTP響應(yīng)。
服務(wù)器返回的響應(yīng)報文包括協(xié)議版本、狀態(tài)碼、解釋狀態(tài)碼的原因短語、響應(yīng)首部字段、實體主體。
7.瀏覽器接受 HTTP 響應(yīng),檢查 HTTP header 里的狀態(tài)碼,并做出不同的處理方式。關(guān)于返回的狀態(tài)碼的具體說明看上個問題。
8.如果是可以緩存的,這個響應(yīng)則會被存儲起來。
根據(jù)首部字段判斷是否進(jìn)行緩存。例如,Cache-Control, no-cache(每次使用緩存前和服務(wù)器確認(rèn)),no-store 絕對禁止緩存。
9.瀏覽器解碼響應(yīng)
瀏覽器拿到index.html文件后,就開始解析其中的html代碼,遇js/css/image等靜態(tài)資源時,就向服務(wù)器端去請求下載;解析成對應(yīng)的樹形數(shù)據(jù)結(jié)構(gòu)DOM樹、CSS規(guī)則樹,Javascript腳本通過DOM API和CSSOM API來操作DOM樹、CSS規(guī)則樹。
10.渲染頁面
11.關(guān)閉TCP連接或繼續(xù)保持連接
通過四次揮手關(guān)閉連接(FIN ACK, ACK, FIN ACK, ACK)。
頁面渲染的過程
頁面渲染過程總的來說是,瀏覽器拿到html文檔,自上而下構(gòu)建dom樹,再根據(jù)dom樹構(gòu)建渲染樹(和dom樹有區(qū)別,瀏覽器解析html文檔和解析css樣式形成dom樹和cssdom樹,結(jié)合這兩種才會構(gòu)建渲染樹)。這里有一種情況,如果在head中寫入link某個css文件,而后插入script標(biāo)簽,引入一個巨大的js文件,由于瀏覽器下載css文件需耗時間,這個時候瀏覽器還在自上而下地去解析dom樹,但是遇到script標(biāo)簽,并且由于樣式表沒有下載下來,阻塞了構(gòu)建渲染樹。一旦css文件加載完成,會結(jié)合剛在的dom樹構(gòu)建渲染樹,顯示到頁面,接續(xù)加載js文件。但是恰巧js文件巨大,阻塞了瀏覽器向下解析,等待這個巨大的js文件下載完成后才繼續(xù)向下解析。如此反復(fù), 最后將渲染樹渲染到頁面。
jsonp原理
react 篇react生命周期
組件間的通信
算法篇
寫一個大整數(shù)乘法計算的方法
假如一個數(shù)很大很大,計算的時候會導(dǎo)致精度丟失的問題。網(wǎng)上有各種解法,大家可以自行g(shù)oogle。這里我給出的思路是把整數(shù)轉(zhuǎn)換成字符串類型的數(shù)據(jù),再把轉(zhuǎn)換后的數(shù)據(jù)拆分成單個數(shù)據(jù),分別計算單個數(shù)據(jù)相乘,最后相加并把結(jié)果轉(zhuǎn)換回number類型。不知可不可行。。。
寫出一種排序算法
之前整理過一篇blog,適合算法小白入門——幾種基本排序算法
輸入url到頁面展示參考:http://www.jianshu.com/p/71cf...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/112301.html
摘要:元素的位置通過以及屬性進(jìn)行規(guī)定。表明請求被正常處理了。服務(wù)器返回的響應(yīng)報文包括協(xié)議版本狀態(tài)碼解釋狀態(tài)碼的原因短語響應(yīng)首部字段實體主體。瀏覽器接受響應(yīng),檢查里的狀態(tài)碼,并做出不同的處理方式。關(guān)于返回的狀態(tài)碼的具體說明看上個問題。 說明:簡答題沒有固定答案,以下給出的答案是從別處摘錄或自己總結(jié),有錯之處歡迎指出。 html 篇 標(biāo)簽上title和alt屬性的區(qū)別是什么? alt是htm...
摘要:元素的位置通過以及屬性進(jìn)行規(guī)定。表明請求被正常處理了。服務(wù)器返回的響應(yīng)報文包括協(xié)議版本狀態(tài)碼解釋狀態(tài)碼的原因短語響應(yīng)首部字段實體主體。瀏覽器接受響應(yīng),檢查里的狀態(tài)碼,并做出不同的處理方式。關(guān)于返回的狀態(tài)碼的具體說明看上個問題。 說明:簡答題沒有固定答案,以下給出的答案是從別處摘錄或自己總結(jié),有錯之處歡迎指出。 html 篇 標(biāo)簽上title和alt屬性的區(qū)別是什么? alt是htm...
摘要:獲取的對象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對象即使沒有代碼,也會把默認(rèn)的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據(jù)我測試不同環(huán)境結(jié)果可能有差異而就是。 花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點個贊,點個star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項目地址 https:...
摘要:最新最全的開源項目合集掘金是由整理并維護(hù)的安卓相關(guān)開源項目庫集合。準(zhǔn)備的插件開發(fā)必開發(fā)者福利史上最全開發(fā)和安全系列工具掘金取證工具一個工具箱,用于分析手機(jī)元數(shù)據(jù)。 最新最全的 Android 開源項目合集 - Android - 掘金awesome-github-android-ui 是由OpenDigg整理并維護(hù)的安卓UI相關(guān)開源項目庫集合。我們會定期同步OpenDigg上的項目到這...
閱讀 1438·2021-09-28 09:44
閱讀 2500·2021-09-28 09:36
閱讀 1143·2021-09-08 09:35
閱讀 1982·2019-08-29 13:50
閱讀 809·2019-08-29 13:29
閱讀 1129·2019-08-29 13:15
閱讀 1724·2019-08-29 13:00
閱讀 2987·2019-08-26 16:16