因為各種原因,今年過年來就提離職了,又要開始面試了,心裡還是比較慌的,面試了兩三周的樣子,總共面試了10家左右大大小小的公司,中途拿到了幾個offer,但是因為不太滿意拒絕了,拒絕之後壓力更大了啊o(╥﹏╥)o。不過在三月初拿到了hin滿意的offer!!在這裡總結下我的面試經驗,希望能幫助到正在找工作的你們~~~
下面是我的總結,如果有不對的地方,麻煩指出!φ(>ω<*)
js六種基本型別是什麼?
首先,我們要知道js中分為七種內建型別,七種內建型別又分為兩大型別:基本型別和物件。
基本型別:null、undefined、boolean、number、string、symbol
js中的基本型別和引用型別
基本型別:儲存在棧記憶體中,因為這些型別在記憶體中分別占有固定大小的空間,通過按值來訪問。
引用型別:儲存在堆記憶體中,因為這種值的大小不固定,因此不能把它們儲存在棧記憶體中。但記憶體位址大小是固定的,因此該物件的訪問位址存在棧記憶體中。當查詢引用型別的變數時,先從棧中讀取記憶體位址,然後再通過位址找到堆中的值。對於這種,我們把它叫做按引用訪問。
閉包中的變數是儲存在堆記憶體中,這也解釋了函式之後為什麼還能引用到函式內的變數
null和undefined的區別
null:給乙個全域性變數賦值為null,相當於將這個變數的指標物件以及值清空,如果是給物件的屬性賦值為null或將區域性變數賦值為null,相當於給這個屬性分配了一塊空的記憶體,然後值為null,js會**全域性變數為null的物件
undefined:給乙個全域性變數賦值為undefined,相當於將這個物件的值清空,但是這個物件依舊存在,如果是給物件的屬性賦值為undefined,說明這個值為空值
js型別檢測
獲取乙個變數的正確型別:
object.prototype.tostring.call(xx)
例如:
var a = [1,2,3]
object.prototype.tostring.call(a) // "[object array]"
js中的falsy值
undefined、null、false、nan、『』、0、-0
== 運算規則
比較 x == y:
若type(x)與type(y)相同,則:
若type(x)為undefined,返回true
若type(x)為null,返回true
若type(x)為number,則:
若x或y為nan,返回false
若x與y為相等值,則返回true
若x為+0且y為-0,返回true;反之亦然
返回false
若type(x)為string,則當x和y為完全相同的字串行時返回true,否則返回false
若type(x)為boolean,當x和y同為true或同為false時返回true。否則,返回false
當x和y引用同一物件時返回true。否則返回false
若x為null且y為undefined,返回true;反之亦然
若type(x)為number且type(y)為string,返回 x == tonumber(y)的結果;反之亦然
若type(x)為boolean,返回比較 tonumber(x) == y 的結果;反之亦然
若type(x)為string或number,且type(y)為object,返回比較 x == toprimitive(y)的結果;反之亦然
返回false
for in 和 for of的區別
for in 遍歷的是陣列的索引(即鍵值)key
遍歷順序可能不是內部順序
會遍歷陣列內所有可列舉屬性
for of 遍歷的是陣列元素 value
只遍歷陣列內元素
不能遍歷物件,因為沒有迭代器物件
若實在想用for of來遍歷普通物件的屬性的話,可以通過和 object.keys() 搭配使用
domcontentload和onload的區別
一般情況下,domcontentload事件要在window.onload之前執行,dom樹構建完成時就會執行domcontentload事件
而window.onload是在頁面載入完成的時候才執行,這其中包括了dom、css、js、
跨域問題
jsonp:通過標籤的非同步載入來實現的
websocket本身就支援跨域
cors:需要前後端同時支援。跨域時,瀏覽器會攔截ajax請求,並在http頭部加origin
postmessage
影象ping:乙個網頁可以從任何網頁中載入影象,不用擔心跨域問題。影象ping是與伺服器進行簡單、單項的跨域通訊的一種方式。
js中的new做了什麼
新生成了乙個物件
鏈結到原型
繫結this
返回新物件
用原生js實現new:
function create ()
foreach和map都能遍歷陣列,它們的區別是什麼
foreach會改變原陣列;map不會改變原陣列,會返回乙個新陣列
原生js實現ajax
}js陣列去重
方法很多,就不一一枚舉了。 這裡列舉的挺全的,可以參考下。
js中的this
首先,我們要知道的是,this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到底指向誰,實際上this最終指向的是呼叫它的那個物件。
new的優先順序最高:
var c = new foo()
c.a = 3
console.log(c.a) // 3
我們再來看看箭頭函式中的this:
function a ()
}}a()()() // undefined
箭頭函式其實是沒有this的,這個函式中的this只取決於他外面的第乙個不是箭頭函式的函式的this。在上面這個例子中,this是window。並且this一旦繫結了上下文,就不會被任何**改變。
js閉包和原型鏈差不多是必問的了,這兩個篇幅較大,就不再這裡說了。
挑了一些我覺得比較重要的記錄下來了(還有一部分原因是好多其他的題我不記得了哈哈哈),如果後續記起來的話會挑些重要的補充的~
前端面試總結篇(初級)
除了這兩個,關於es6的常用還有箭頭函式 模板字串 變數的解構賦值等 所謂的跨域問題是由於瀏覽器的同源策略限制的,當協議網域名稱埠號不同即為跨域,對於協議和埠來說,前端不能解決。解決跨域的幾種方式 1 資訊,伺服器收到請求,需要請求者繼續執行操作 101,公升級為websocket協議 2 成功,操...
前端面試 前端面試總結2018 07
2周面試了11家公司吧,具體面試題如下 面試第一周 7.23 7.27 中谷芯厚建 蘇寧vivo外包 電面 杭州通策會 第二週 7.30 8.3 南京軟體谷研究院 烽火科技 邁特望,蘇寧外包 電面 平安科技外包 華泰 外包 一輪 技術面,二輪現場技術面 三隻松鼠 電面 一.中谷芯 二.厚建 angu...
ofo前端面試篇
今天參加了ofo的校招面試,自我感覺就是有一些東西是寫過但是沒存住,或者是說網上有現成的原始碼自己用的時候可能就是copy過來修改一下就直接用了。就答得感覺稀爛。不說了直接上題吧。一 頁面元素垂直居中 對於行內元素 若該行內元素只有一行,且該行內元素父元素的高度一定,可以設定該行內元素的line h...