摘要:只要沒有被覆蓋的話對象原型的屬性就能在所有的實例中找到,若整個原型鏈未找到則返回如何實現繼承構造繼承原型繼承實例繼承拷貝繼承原型機制或和方法去實現較簡單,建議使用構造函數與原型混合方式。
HTML相關問題
1.XHTML和HTML有什么區別
HTML是一種基本的WEB網頁設計語言,XHTML是一個基于XML的標記語言
最主要的不同:
XHTML 元素必須被正確地嵌套。
XHTML 元素必須被關閉。
標簽名必須用小寫字母。
XHTML 文檔必須擁有根元素。
2.什么是語義化的HTML?
直觀的認識標簽 對于搜索引擎的抓取有好處,用正確的標簽做正確的事情!
html語義化就是讓頁面的內容結構化,便于對瀏覽器、搜索引擎解析;
在沒有樣式CCS情況下也以一種文檔格式顯示,并且是容易閱讀的。搜索引擎的爬蟲依賴于標記來確定上下文和各個關鍵字的權重,利于 SEO。
使閱讀源代碼的人對網站更容易將網站分塊,便于閱讀維護理解。
3.常見的瀏覽器內核有哪些?
Trident內核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等。[又稱MSHTML]
Gecko內核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等
Presto內核:Opera7及以上。 [Opera內核原為:Presto,現為:Blink;]
Webkit內核:Safari,Chrome等。 [ Chrome的:Blink(WebKit的分支)]
4.HTML5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分 HTML 和HTML5?
HTML5 現在已經不是 SGML 的子集,主要是關于圖像,位置,存儲,多任務等功能的增加。
支持HTML5新標簽:
繪畫 canvas;
用于媒介回放的 video 和 audio 元素;
本地離線存儲 localStorage 長期存儲數據,瀏覽器關閉后數據不丟失;
sessionStorage 的數據在瀏覽器關閉后自動刪除;
語意化更好的內容元素,比如 article、footer、header、nav、section;
表單控件,calendar、date、time、email、url、search;
新的技術webworker, websockt, Geolocation;
移除的元素:
純表現的元素:basefont,big,center,font, s,strike,tt,u;
對可用性產生負面影響的元素:frame,frameset,noframes;
IE8/IE7/IE6支持通過document.createElement方法產生的標簽,可以利用這一特性讓這些瀏覽器支持HTML5新標簽;瀏覽器支持新標簽后,還需要添加標簽默認的樣式。
5.請描述一下 cookies,sessionStorage 和 localStorage 的區別?
cookie在瀏覽器和服務器間來回傳遞,sessionStorage和localStorage不會;
sessionStorage和localStorage的存儲空間更大;
sessionStorage和localStorage有更多豐富易用的接口;
sessionStorage和localStorage有各自獨立的存儲空間。
6.如何實現瀏覽器內多個標簽頁之間的通信?
調用localstorge、cookies等本地存儲方式
7.HTML5 為什么只需要寫 !DOCTYPE HTML?
HTML5 不基于 SGML,因此不需要對DTD進行引用,但是需要doctype來規范瀏覽器的行為(讓瀏覽器按照它們應該的方式來運行);而HTML4.01基于SGML,所以需要對DTD進行引用,才能告知瀏覽器文檔所使用的文檔類型。
8.Doctype作用?標準模式與兼容模式各有什么區別?
!DOCTYPE聲明位于HTML文檔中的第一行,處于html 標簽之前。告知瀏覽器的解析器用什么文檔標準解析這個文檔。DOCTYPE不存在或格式不正確會導致文檔以兼容模式呈現。
標準模式的排版 和JS運作模式都是以該瀏覽器支持的最高標準運行。在兼容模式中,頁面以寬松的向后兼容的方式顯示,模擬老式瀏覽器的行為以防止站點無法工作。
9.Doctype? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義?
用于聲明文檔使用哪種規范(html/Xhtml)一般為嚴格過度基于框架的html文檔。
加入XMl聲明可觸發,解析方式更改為IE5.5 擁有IE5.5的Bug。
10.Canvas 與 SVG 的比較
Canvas
依賴分辨率
不支持事件處理器
弱的文本渲染能力
能夠以 .png 或 .jpg 格式保存結果圖像
最適合圖像密集型的游戲,其中的許多對象會被頻繁重繪
SVG
不依賴分辨率
支持事件處理器
最適合帶有大型渲染區域的應用程序(比如谷歌地圖)
復雜度高會減慢渲染速度(任何過度使用 DOM 的應用都不快)
不適合游戲應用
CSS相關問題
1.CSS實現垂直水平居中
一道經典的問題,實現方法有很多種,以下是其中一種實現:
HTML結構:
CSS:
.wrapper{position:relative;} .content{ background-color:#6699FF; width:200px; height:200px; position: absolute; //父元素需要相對定位 top: 50%; left: 50%; margin-top:-100px ; //二分之一的height,width margin-left: -100px; }
2.display有哪些值?說明他們的作用。
block 塊類型。默認寬度為父元素寬度,可設置寬高,換行顯示。 none 缺省值。像行內元素類型一樣顯示。 inline 行內元素類型。默認寬度為內容寬度,不可設置寬高,同行顯示。 inline-block 默認寬度為內容寬度,可以設置寬高,同行顯示。 list-item 像塊類型元素一樣顯示,并添加樣式列表標記。 table 此元素會作為塊級表格來顯示。 inherit 規定應該從父元素繼承 display 屬性的值。
3.行內元素有哪些?塊級元素有哪些?CSS的盒模型?
塊級元素:div,p,h1,form,ul,li;
行內元素 : span,a,label,input,img,strong,em;
CSS盒模型:內容,border ,margin,padding,有兩種類型:
IE 盒子模型、標準 W3C 盒子模型;
IE的content部分包含了 border 和 pading;
2)盒模型: 內容(content)、填充(padding)、邊界(margin)、 邊框(border).
4.CSS引入的方式有哪些? link和@import的區別是?
內聯 內嵌 外鏈 導入
區別 :
(1).link屬于HTML標簽,而@import是CSS提供的;
(2).頁面被加載的時,link會同時被加載,而@import引用的CSS會等到頁面被加載完再加載;
(3).import只在IE5以上才能識別,而link是HTML標簽,無兼容問題;
(4).link方式的樣式的權重高于@import的權重.
(5).link支持使用javascript改變樣式,后者不可
5.CSS選擇符有哪些?哪些屬性可以繼承?優先級算法如何計算?內聯和important哪個優先級高?
標簽選擇符 類選擇符 id選擇符
繼承不如指定 Id>class>標簽選擇
!important的優先級高
6.CSS清除浮動的幾種方法(至少兩種)
使用帶clear屬性的空元素;
使用CSS的overflow屬性;
使用CSS的:after偽元素;
使用鄰接元素處理;
7.CSS居中(包括水平居中和垂直居中)
內聯元素居中方案
水平居中設置:
1.行內元素
設置 text-align:center;
2.Flex布局
設置display:flex;justify-content:center;(靈活運用,支持Chroime,Firefox,IE9+)
垂直居中設置:
1.父元素高度確定的單行文本(內聯元素)
設置 height = line-height;
2.父元素高度確定的多行文本(內聯元素)
a:插入 table (插入方法和水平居中一樣),然后設置 vertical-align:middle;
b:先設置 display:table-cell 再設置 vertical-align:middle;
塊級元素居中方案
水平居中設置:
1.定寬塊狀元素
設置左右的margin值為 auto;
2.不定寬塊狀元素
a:在元素外加入table標簽(完整的,包括 table、tbody、tr、td),該元素寫在 td 內,然后設置margin的值為 auto;
b:給該元素設置 displa:inine 方法;
c:父元素設置 position:relative 和 left:50%,子元素設置 position:relative 和 left:50%;
垂直居中設置:
使用position:absolute(fixed),設置left、top、margin-left、margin-top的屬性;
利用position:fixed(absolute)屬性,margin:auto這個必須不要忘記了;
利用display:table-cell屬性使內容垂直居中;
使用css3的新屬性transform:translate(x,y)屬性;
使用:before元素;
8.在書寫高效 CSS 時會有哪些問題需要考慮?
reset。
規范命名。尤其對于沒有語義化的html標簽,例如div,所賦予的class值要特別注意。
抽取可重用的部件,注意層疊樣式表的“優先級”。
9.display:none和visibility:hidden的區別?
display:none 隱藏對應的元素,在文檔布局中不再給它分配空間,它各邊的元素會合攏,就當他從來不存在。
visibility:hidden 隱藏對應的元素,但是在文檔布局中仍保留原來的空間。
10.position的absolute與fixed共同點與不同點
A.共同點:
1.改變行內元素的呈現方式,display被置為block;
2.讓元素脫離普通流,不占據空間;
3.默認會覆蓋到非定位元素上
B.不同點:
absolute的"根元素"是可以設置的,而fixed的"根元素"固定為瀏覽器窗口。當你滾動網頁時,fixed元素與瀏覽器窗口之間的距離是不變的。
JS相關問題
1.談一談JavaScript作用域鏈
當執行一段JavaScript代碼(全局代碼或函數)時,JavaScript引擎會為其創建一個作用域又稱為執行上下文(Execution Context),在頁面加載后會首先創建一個全局的作用域,然后每執行一個函數,會建立一個對應的作用域,從而形成了一條作用域鏈。每個作用域都有一條對應的作用域鏈,鏈頭是全局作用域,鏈尾是當前函數作用域。
作用域鏈的作用是用于解析標識符,當函數被創建時(不是執行),會將this、arguments、命名參數和該函數中的所有局部變量添加到該當前作用域中,當JavaScript需要查找變量X的時候(這個過程稱為變量解析),它首先會從作用域鏈中的鏈尾也就是當前作用域進行查找是否有X屬性,如果沒有找到就順著作用域鏈繼續查找,直到查找到鏈頭,也就是全局作用域鏈,仍未找到該變量的話,就認為這段代碼的作用域鏈上不存在x變量,并拋出一個引用錯誤(ReferenceError)的異常。
2.如何理解JavaScript原型鏈
JavaScript中的每個對象都有一個prototype屬性,我們稱之為原型,而原型的值也是一個對象,因此它也有自己的原型,這樣就串聯起來了一條原型鏈,原型鏈的鏈頭是object,它的prototype比較特殊,值為null。
原型鏈的作用是用于對象繼承,函數A的原型屬性(prototype property)是一個對象,當這個函數被用作構造函數來創建實例時,該函數的原型屬性將被作為原型賦值給所有對象實例,比如我們新建一個數組,數組的方法便從數組的原型上繼承而來。
當訪問對象的一個屬性時, 首先查找對象本身, 找到則返回; 若未找到, 則繼續查找其原型對象的屬性(如果還找不到實際上還會沿著原型鏈向上查找, 直至到根)。只要沒有被覆蓋的話, 對象原型的屬性就能在所有的實例中找到,若整個原型鏈未找到則返回undefined
3.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);//得到被繼承的屬性
4.JavaScript的typeof返回哪些數據類型
object
number
function
boolean
underfind
5.例舉3種強制類型轉換和2種隱式類型轉換?
強制:parseInt、parseFloat、number
隱式:==、===
6.split()和join()的區別
前者是切割成數組的形式,后者是將數組轉換成字符串
7.數組方法pop() push() unshift() shift()的理解
pop()尾部刪除
push()尾部添加
unshift()頭部添加
shift()頭部刪除
8.IE和DOM事件流的區別
執行順序不一樣
參數不一樣
事件加不加on
this指向問題
9.ajax請求的時候get和post方式的區別
一個在url后面,一個放在虛擬載體里面
有大小限制
安全問題
應用不同 一個是論壇等只需要請求的,一個是類似修改密碼的
10.IE和標準下有哪些兼容性的寫法
var ev = ev || window.event document.documentElement.clientWidth || document.body.clientWidth var target = ev.srcElement||ev.target
11.ajax請求時,如何解釋json數據
使用eval parse,鑒于安全性考慮 使用parse更靠譜。
12.事件委托是什么?
利用事件冒泡的原理,自己所觸發的事件,讓他的父元素代替執行!
13.閉包是什么,有什么特性,對頁面有什么影響?簡要介紹你理解的閉包
閉包就是能夠讀取其他函數內部變量的函數。變量得不到銷毀,一直儲存在內存中,可能造成內存泄漏。
14.添加 刪除 替換 插入到某個接點的方法
obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild
15..”==”和“===”的不同
前者會自動轉換類型,后者不會
16.編寫一個b繼承a的方法
function A(name){ this.name = name; this.sayHello = function(){alert(this.name+” say Hello!”);}; } function B(name,id){ this.temp = A; this.temp(name); //相當于new A(); delete this.temp; this.id = id; this.checkId = function(ID){alert(this.id==ID)}; }
17.如何阻止事件冒泡和默認事件
function stopBubble(e){ if (e && e.stopPropagation) e.stopPropagation() else window.event.cancelBubble=true } return false
18.下面程序執行后彈出什么樣的結果?
function fn() { this.a = 0; this.b = function() { alert(this.a) } } fn.prototype = { b: function() { this.a = 20; alert(this.a); }, c: function() { this.a = 30; alert(this.a); } } var myfn = new fn(); myfn.b(); myfn.c();
19.談談對this對象的理解。
this是js的一個關鍵字,隨著函數使用場合不同,this的值會發生變化。
但是有一個總原則,那就是this指的是調用函數的那個對象。
this一般情況下:是全局對象Global。 作為方法調用,那么this就是指這個對象
20.下面程序的結果
function fun(n,o) { console.log(o); return { fun:function(m){ return fun(m,n); } }; } var a = fun(0); a.fun(1); a.fun(2); a.fun(3); var b = fun(0).fun(1).fun(2).fun(3); var c = fun(0).fun(1); c.fun(2); c.fun(3);
答案:
a: undefined,0,0,0
b: undefined,0,1,2
c: undefined,0,1,1
21.下面程序的輸出結果
var name = "World!"; (function () { if (typeof name === "undefined") { var name = "Jack"; console.log("Goodbye " + name); } else { console.log("Hello " + name); } })();
22.了解Node么?Node的使用場景都有哪些?
高并發、聊天、實時消息推送
23.介紹下你最常用的一款框架
jquery,rn,angular等;
24.對于前端自動化構建工具有了解嗎?簡單介紹一下
Gulp,Grunt等;
25.說一下什么是JavaScript的同源策略?
一段腳本只能讀取來自于同一來源的窗口和文檔的屬性,這里的同一來源指的是主機名、協議和端口號的組合。
其他問題
1.說說最近最流行的一些東西吧?常去哪些網站?
Node.js、MVVM、React-native,Angular,Weex等
CSDN,Segmentfault,博客園,掘金,Stackoverflow,伯樂在線等
2.如果今年你打算熟練掌握一項新技術,那會是什么?
via開發單頁webapp的技術。
SAP能夠是頁面與頁面之間無縫連接,避免出現白頁,且帶有動態效果,提高用戶體驗。同時SAP,有JavaScript渲染頁面,然后在從服務器獲取小量的數據顯示,如此反復,請求的數據無需要服務器處理,減少服務器負荷。
SAP對技術要求高。要考慮首屏加載事件過長;動畫效果要考慮低端手機;垃圾收集,需要自己釋放資源,避免頁面變卡。
PS:五個典型的JavaScript試題:
問題1: 范圍(Scope)
思考以下代碼:
(function(){ var a=b=5; })(); console.log(b);
控制臺(console)會打印出什么?
答案:上述代碼會打印出5。
這個問題的陷阱就是,在立即執行函數表達式(IIFE)中,有兩個命名,但是其中變量是通過關鍵詞var來聲明的。這就意味著a是這個函數的局部變量。與此相反,b是在全局作用域下的。
這個問題另一個陷阱就是,在函數中他沒有使用"嚴格模式" ("use strict";)。如果 嚴格模式 開啟,那么代碼就會報出未捕獲引用錯誤(Uncaught ReferenceError):b沒有定義。記住,嚴格模式要求你在需要使用全局變量時,明確地引用該變量。因此,你需要像下面這么寫:
(function(){ "use strict" var a=window.b=5; })(); console.log(b);
問題2: 創建 “原生(native)” 方法
在String對象上定義一個repeatify函數。這個函數接受一個整數參數,來明確字符串需要重復幾次。這個函數要求字符串重復指定的次數。舉個例子:
console.log("hello".repeatift(3));
應該打印出hellohellohello.
答案:一種可能的實現如下所示:
String.prototype.repeatify=String.prototype.repeatify||function(times){ var str=""; for(int i=0;i這個問題測試了開發人員對于JavaScript中繼承的掌握,以及prototype這個屬性。這也驗證了開發人員是否有能力擴展原生數據類型的功能(雖然不應該這么做)。
這個問題的另一個重點是驗證你是否意識到并知道如何避免覆蓋已經存在的函數。這可以通過在自定義函數之前判斷該函數是否存在來做到。String.prototype.repeatify=String.prototype.repeatify||function(times){ /*code here*/ };當你需要為舊瀏覽器實現向后兼容的函數時,這一技巧十分有用。
問題3: 變量提升(Hoisting)
執行以下代碼會有什么結果?為什么?
function test(){ console.log(); console.log(foo()); var a=1; function foo(){ return 2; } } test();答案:這段代碼的執行結果是undefined和2。
這個結果的原因是,變量和函數都被提升了(hoisted)。因此,在a被打印的時候,它已經在函數作用域中存在(即它已經被聲明了),但是它的值依然是 undefined。換言之,上述代碼和以下代碼是等價的。
function test(){var a=1; function foo(){ return 2; } console.log(); console.log(foo()); a=1; } test();問題4: this 在 JavaScript 中是如何工作的
以下代碼的結果是什么?請解釋你的答案。
var fullname="AAA"; var obj={ fullname:"BBB"; prop:{ fullname:"CCC", getFUllname:fullname(){ return this.fullname; } } }; console.log(obj.prop.getFullname()); var test=obj.prop.getFullname; console.log(test());答案:上面的代碼打印出CCC和AAA。原因是在JavaScript中,一個函數的上下文環境,也就是this關鍵詞所引用對象,是依賴于函數是如何被調用的,而不是依賴于函數如何被定義的。
在第一個 console.log() 調用中,getFullname() 是作為obj.prop的函數被調用的。因此,這里的上下文環境指向后者并且函數返回this對象的fullname屬性。相反,當 getFullname() 被賦為test變量的值時,那個語境指向全局對象(window)。這是因為,test 被隱式設置為全局對象的屬性。因此,函數調用返回window的fullname屬性值,在此段代碼中,這個值是通過第一行賦值語句設置的。
問題5: call() 和 apply()
修復上一個問題,讓最后一個console.log()打印出CCC。
答案:要解決這個問題,可以通過為函數call()或者apply()強制函數調用的上下文環境。
console.log(test.call(obj.prop));本文章持續更新中,個人能力有限,錯誤之處希望小伙伴們踴躍指出。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80901.html
摘要:收集的一些前端面試題從面試題發現不足,進而查漏補缺,比通過面試更難得及各大互聯網公司前端筆試面試題篇及各大互聯網公司前端筆試面試題篇面試題個和個經典面試題前端開發面試題如何面試前端工程師很重要個變態題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發現不足,進而查漏補缺,比通過面試更難得 1 BAT及各大互聯網公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:收集的一些前端面試題從面試題發現不足,進而查漏補缺,比通過面試更難得及各大互聯網公司前端筆試面試題篇及各大互聯網公司前端筆試面試題篇面試題個和個經典面試題前端開發面試題如何面試前端工程師很重要個變態題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發現不足,進而查漏補缺,比通過面試更難得 1 BAT及各大互聯網公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:獲取的對象范圍方法獲取的是最終應用在元素上的所有屬性對象即使沒有代碼,也會把默認的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據我測試不同環境結果可能有差異而就是。 花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點個贊,點個star再走哈~ 持續更新中……,可以關注下github 項目地址 https:...
摘要:只要沒有被覆蓋的話對象原型的屬性就能在所有的實例中找到,若整個原型鏈未找到則返回如何實現繼承構造繼承原型繼承實例繼承拷貝繼承原型機制或和方法去實現較簡單,建議使用構造函數與原型混合方式。 HTML相關問題 1.XHTML和HTML有什么區別 HTML是一種基本的WEB網頁設計語言,XHTML是一個基于XML的標記語言最主要的不同:XHTML 元素必須被正確地嵌套。XHTML 元素必須被...
摘要:只要沒有被覆蓋的話對象原型的屬性就能在所有的實例中找到,若整個原型鏈未找到則返回如何實現繼承構造繼承原型繼承實例繼承拷貝繼承原型機制或和方法去實現較簡單,建議使用構造函數與原型混合方式。 HTML相關問題 1.XHTML和HTML有什么區別 HTML是一種基本的WEB網頁設計語言,XHTML是一個基于XML的標記語言最主要的不同:XHTML 元素必須被正確地嵌套。XHTML 元素必須被...
閱讀 1229·2021-11-24 09:39
閱讀 378·2019-08-30 14:12
閱讀 2591·2019-08-30 13:10
閱讀 2433·2019-08-30 12:44
閱讀 957·2019-08-29 16:31
閱讀 845·2019-08-29 13:10
閱讀 2432·2019-08-27 10:57
閱讀 3152·2019-08-26 13:57