一、基礎問答部分
- 請描述一下https的原理以及與http的區別
- position 有哪些屬性
- img 標籤間距問題的原理以及如何解決
- typeof 的原理是什麼,與 instanceOf 、 Object.prototype.toString.call() 的區別
- 0.1 + 0.2 === 0.3 嗎?爲什麼?
二、手寫部分
- 實現一個算法,來完成字符串相加,比如 “111” + ”2222“ = ”2333“
- 利用html css 編寫樣式,div垂直body居中、div內的text垂直居中,div高度等於body寬度的一半
- 類型比較
if([] == false){console.log(1)};
if({} == false){console.log(2)};
if([]){console.log(3)}
if([1]==[1]){console.log(4)} // 引用類型比對地址
if(!![]) {console.log(5)}
- bind函數實現
- trottle函數實現
三、框架部分
- 提供一個 VDOM 對象,寫一個 render 函數來讓他變成一顆 DOM 樹。(比如大概長這樣)
{
type: 'h1',
props: {
className: "",
style: "",
},
children: [] // 嵌套節點
}
- React組件通信是怎麼實現的
- mixin、hoc、render props、react-hooks的優劣如何
- Time Slice的理解
- 什麼是虛擬DOM呢
四、小程序部分
- 說一下微信小程序的原理
- 小程序的雙向綁定和vue哪裏不一樣
- 小程序的生命週期函數
- 哪些方法可以用來提高微信小程序的應用速度
- bindtap和catchtap的區別是什麼
五、算法部分
position 有哪些屬性
position: static | relative | absolute | sticky | fixed
static: 默認值,元素出現在正常流之中;top,bottom,left,right,z-index均無效
relative: 生成相對定位的元素,相對其正常位置進行定位;對table類元素無效
absolute: 生成絕對定位的元素,相對於static定位以外的第一個父元素進行定位;絕對定位的元素可以設置外邊距,且不會與其他邊距合併
sticky: 可以理解爲是相對定位和固定定位的混合
fixed: 通過指定元素相對於屏幕視口的位置來定位元素,打印時,元素會出現在每頁的固定位置
參考說明: MDN
typeof 的原理,與 instanceOf 、 Object.prototype.toString.call() 的區別
- typeof
JS在底層存儲變量的時候,會在變量的機器碼的低位1-3位存儲其類型信息
000:對象
010:浮點數
100:字符串
110:布爾
1:整數
對於undefined 和 null 來說,信息存儲有點特殊
null 所有的機器碼都爲0,所以會被認爲是object
undefined用-2^30整數來表示
use: typeof function() {}
能快速檢查undefined,string,number,boolean類型;
當類型爲object,null,array時都會返回object,無法區分
- instanceOf
use:“str” instanceof String
能檢測number, function, object類型
不能檢測number,boolean,string類型
- Object.prototype.toString.call()
use: Object.prototype.toString.call(“str”)
能準確的判斷所有的類型。寫法相對繁瑣
後續可參考資料:簡書