前端面試知識點


html



css



JS


  • js的基本類型有哪些?引用類型有哪些?引用類型和基本類型有什么區(qū)別?哪個是存在堆哪一個是存在棧上面的?
    空值(null)、
    未定義(undefined)、
    布爾值(boolean)、
    數(shù)字(number)、
    字符串(string)、
    對象(object)、
    符號(symbol,ES6中新增)

https://www.cnblogs.com/cxying93/p/6106469.html
https://www.zhihu.com/question/349080864

// 主要用于檢測引用類型(左邊是對象,右邊是函數(shù).根據(jù)對象的原形鏈往上找,如果原形鏈上有右邊函數(shù).prototype,返回true;否則返回false)
var obj = {}; obj instanceof Object; //=> true; 
var arr = []; arr instanceof Array; //=> true;
var fn = function() {}; fn instanceof Function; //=> true;

hasOwnProperty() obj對象自身屬性中是否具有某個屬性
isPrototypeOf()

// 用于測試一個對象是否存在于另一個對象的原型鏈上。在obj對象原型鏈上搜尋
    function VFrank() {}
    VFrank.prototype.name = "vfrank";
    VFrank.prototype.age = 29;
    VFrank.prototype.job = "Web Engineer";
    var person = new VFrank();
    console.log(VFrank.prototype.isPrototypeOf(person));// true
  • foreach map 區(qū)別
    1 都是循環(huán)每一項
    2 foreach 更改原數(shù)組, 沒有返回值
    3 map 不更改原數(shù)組,有返回值
  • 瀏覽器運行機制
    https://segmentfault.com/a/1190000020889508

ES6



框架


  • 簡述 vue 工作流程

/**
* 1 數(shù)據(jù)劫持 2 編譯模板
* 1 數(shù)據(jù)劫持 就是 Object.defineProperty 方法,他有g(shù)et set 方法,get取數(shù)據(jù) set設(shè)置數(shù)據(jù) 更新數(shù)據(jù)了會重新編譯數(shù)據(jù)模板
* 2 編譯作用是把 vue 模板轉(zhuǎn)為 瀏覽器的dom展示在頁面上,主要做的那就是把模板上綁定的事件轉(zhuǎn)化為一個個監(jiān)聽器,監(jiān)視用戶的動作,執(zhí)行updata 方法
* 3 獲取接口 重置 data時 就觸發(fā) 數(shù)據(jù)劫持的set 方法, set 方法調(diào)用 監(jiān)聽器的 update 方法
* 4 頁面用戶輸入 操作時 觸發(fā)對應(yīng)的事件,事件有對應(yīng)的監(jiān)聽器 可以調(diào)用 監(jiān)聽器的 update 方法更新數(shù)據(jù)
*/

  • 什么是MVVM,MVC,MVP
  • mvc(agular)
    1 用戶輸入動作(指令),
    2 指令觸發(fā),調(diào)用相應(yīng)的函數(shù)方法邏輯,更改數(shù)據(jù)
    3 數(shù)據(jù)更改后,通過某種方法(這里是臟治檢測)告訴視圖更新
  • mvvm(vue)
    就是通過某種方法使 視圖(view) 和 數(shù)據(jù)(model) 建立聯(lián)系(這里是通過js Object.defineProperty(), 方法建立雙向關(guān)系)
    view 改變通知vm ,然后vm 改變 model
    model 改變通知vm, 然后vm 改變 view
    https://blog.csdn.net/spring5530/article/details/65982198

https://blog.csdn.net/weixin_45213848/article/details/93231307
https://www.cnblogs.com/yiyiyurou/p/9881156.html

  • data 為啥是函數(shù) 不是對象
    第13個問題

  • angluar vue的區(qū)別
    http://www.itdecent.cn/p/7b7b195e0297

  • vue 和原生的區(qū)別

  • vuex 優(yōu)勢
    統(tǒng)一公共屬性方法 方便維護
    只提供單一的更改屬性的方法 保證維護 溯源的方便(要是多個更改方法會難以維護 溯源)

  • 處理跨域

    開發(fā)環(huán)境 用熱更新插件 配置 地址 node 代理
    生產(chǎn)環(huán)境 ngix 配置
    cors 配置

  • 兄弟a b組件之間,點擊a組件 出發(fā)b的函數(shù)

a 觸發(fā) this.$emit 給父組件,父組件 用ref.子組件的方法

EventBus.$on(channel: string, callback(payload1,…))

EventBus.$off(channel, {})

https://www.qy.cn/jszx/detail/3822.html


前端優(yōu)化


  • 防抖 節(jié)流
防抖:  規(guī)定一個期限時間,在首次觸發(fā)事件時,不立即執(zhí)行回調(diào)函數(shù),而是在期限時間后再執(zhí)行,如果期限時間內(nèi)回調(diào)函數(shù)被重復執(zhí)行,則期限時間重新計時。(100ms 內(nèi)執(zhí)行10次,按最后一次的的時間,在延時執(zhí)行,函數(shù)執(zhí)行需要 一段時間)
節(jié)流: 一段時間只執(zhí)行一次,執(zhí)行多次按最后一次計算(100ms 內(nèi)執(zhí)行10次,只執(zhí)行最后一次)

http://www.itdecent.cn/p/3b782abd27ed


babel


https://www.jiangruitao.com/babel/quick-start/


移動端


  • 移動端 1px 像素
// border
:after{
      content: '';
      position: absolute;
      left: 0;
      bottom: 0;
      background: #cccccc;
      width: 100%;
      height: 1px;
      -webkit-transform: scaleY(0.5);
      transform: scaleY(0.5);
      -webkit-transform-origin: 0 0;
      transform-origin: 0 0;
    }
// 按鈕邊框
:after{
      content: '';
      position: absolute;
      left: 0;
      top: 0;
      border: 1px solid #cccccc;
      border-radius: 26px;
      width: 200%;
      height: 200%;
      -webkit-transform: scale(0.5);
      transform: scale(0.5);
      -webkit-transform-origin: left top;
      transform-origin: left top;
    }

參考

  • 移動端rem適配
(function (doc, win) {
  // 以蘋果6 375px為標準  1rem為10px
  var docEl = doc.documentElement
  var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
  var recalc = function () {
    var clientWidth = docEl.clientWidth
    if (!clientWidth) return
    docEl.style.fontSize = 2 * (clientWidth / 75) + 'px'
  }
  if (!doc.addEventListener) return
  win.addEventListener(resizeEvt, recalc, false)
  doc.addEventListener('DOMContentLoaded', recalc, false)
})(document, window)

  • 300 毫秒的點擊延時
const str = navigator.userAgent.toLowerCase()
const ver = str.match(/cpu iphone os (.*?) like mac os/)
if (!ver) { // 非IOS系統(tǒng)
  // 引入fastclick 做相關(guān)處理
  document.addEventListener('DOMContentLoaded', function () {
    FastClick.attach(document.body)
  }, false)
} else {
// 蘋果版本 11 以上已經(jīng)處理了延時
  if (parseInt(ver[1]) < 11) {
    // 引入fastclick 做相關(guān)處理
    document.addEventListener('DOMContentLoaded', function () {
      FastClick.attach(document.body)
    }, false)
  }
}
  • 輸入框不回彈處理、
      setTimeout(() => {
        window.scrollTo(0, document.body.scrollTop + 1)
        document.body.scrollTop >= 1 && window.scrollTo(0, document.body.scrollTop - 1)
      }, 10)
// routerjs
const router = createRouter({
  // https://cli.vuejs.org/zh/config/#publicpath
  base: '/www/', // 這個是服務(wù)器的訪問路徑配置
  ...
  routes
})
export default router

// vue.config.js
module.exports = {
  // 安卓不能訪問 帶 # 號的url 改成 history模式了
  // 參考 https://www.cnblogs.com/tugenhua0707/p/8127466.html
  publicPath: process.env.NODE_ENV === 'develop' ? '/' : '/www/',
...
}

http



算法



面試題



打包工具


代碼管理

--

職業(yè)規(guī)劃



http://www.cnblogs.com/lvshaonan/p/8693301.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容