字節跳動一面的幾道面試題

一面問題比較基礎,但是由於平時使用vue+js, 字節跳動該崗位是react+ts,感覺有點懸

下面憑記憶還原一下面試題,都很常見,如有錯誤歡迎指出

  1. 實現三列布局,左右寬度固定,中間列自適應
    我的答案:
    左右float, 中間用margin
    flex佈局,左右固定寬度,中間flex: 1
  2. 上下兩個div,上面margin-bottom:20px, 下面margin-top:30px, 問兩個div之間的垂直距離是多少
    答: 30px,因爲margin合併
  3. 就以上問題,如何解決margin合併的問題
    BFC, 順便說了一下如何生成BFC
  4. css裏盒子模型的width由哪些部分組成
    答:border, padding, content
    根據box-sizing屬性的值,content-box, padding-box , border-box, 說了以下以上三種值時width對應的組成
  5. css裏定位有哪些, 說一下是如何定位的
    static,relative,absolute, fixed,sticky
  6. absolute定位的依據是什麼
    答: absolute外層第一個不是static的容器,沒有的話就是html
  7. 說一下事件委
    巴拉巴拉說了一堆
  8. currentTarget和target的區別
    答:前者是當前綁定事件的元素
    後者是當前觸發事件的元素
  9. js裏改變this指向的方法有哪些?
    call, apply, bind
  10. 說一下以上三個方法的區別
    call, apply傳參不同,call的參數一個一個的傳,apply的多個參數作爲一個數組一起傳進去
  11. console.log.bind({name: 'xiaoming'}, 1,2,3)(4,5)傳了幾個參數
    答: 5個
  12. 移動端1px的解決方法
    說了以下常用的幾個,例如僞類+transform,box-shadow, @media判斷
  13. 如何取消已經執行的異步操作
    答: ajax請求調用abort取消, 定時器調用clearTimeout(),回調的說法是定義一個標識符,回調時判斷是否可以執行(之所以這麼說是因爲面試官說有時候異步方法執行完之前,組件已經卸載了,這個時候異步後執行的一些操作可能會報錯。)
  14. 問關於fetch的,但是平時不用那個,所以面試官說不問了。。。
  15. 代碼題
// 異步方法
fetchData().then(callback)
// 封裝成一個方法,time時間沒有返回結果時報錯
fetchDataWithoutTimeout(time).then(callback)

利用節流的思路寫了一個答案,面試官說不符合要求,到了時間就拋出錯誤,而不是執行時才報錯。。。

  1. 一個業務場景,一個下拉框,點擊後展開panel, 如何做到點擊panel以外區域收起panel
    答:利用事件冒泡,body加click事件,觸發後判斷event.target是不是panel,不是就收起。

  2. 繼續問,如果不是剛好點擊了panel本身呢,而是點擊了panel裏的元素?
    答:判斷event.target是不是panel,或者event.target的parentNode裏有咩有panel

    面試官意味深長的emmmm了一聲。

  3. 一個代碼題

// 執行結果是什麼樣子的?
function demo () {
	const now = new Date().valueOf()
	document.body.style.backgroundColor = 'red';
	while(new Date().valueOf() - now <= 2000) {
		continue;
	}
	document.body.style.backgroundColor = 'blue';
}
demo(); 
詳解見上一篇博客
  1. 面試官問我有了多久react,答小半年,面試官說那就不問你react了。。。。。。
  2. 面試官要問ts的相關問題,我又沒用過,面試官又說那就不問你這個了。。。。

然後面試就結束了。。。。。互相客套了以下。。。。。尷尬

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章