美文网首页
前端面试知识点

前端面试知识点

作者: _旁观者_ | 来源:发表于2019-03-05 11:40 被阅读0次

html



css



JS


  • js的基本类型有哪些?引用类型有哪些?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?
    空值(null)、
    未定义(undefined)、
    布尔值(boolean)、
    数字(number)、
    字符串(string)、
    对象(object)、
    符号(symbol,ES6中新增)

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

// 主要用于检测引用类型(左边是对象,右边是函数.根据对象的原形链往上找,如果原形链上有右边函数.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

ES6



框架


  • 简述 vue 工作流程

/**
* 1 数据劫持 2 编译模板
* 1 数据劫持 就是 Object.defineProperty 方法,他有get set 方法,get取数据 set设置数据 更新数据了会重新编译数据模板
* 2 编译作用是把 vue 模板转为 浏览器的dom展示在页面上,主要做的那就是把模板上绑定的事件转化为一个个监听器,监视用户的动作,执行updata 方法
* 3 获取接口 重置 data时 就触发 数据劫持的set 方法, set 方法调用 监听器的 update 方法
* 4 页面用户输入 操作时 触发对应的事件,事件有对应的监听器 可以调用 监听器的 update 方法更新数据
*/

  • 什么是MVVM,MVC,MVP
  • mvc(agular)
    1 用户输入动作(指令),
    2 指令触发,调用相应的函数方法逻辑,更改数据
    3 数据更改后,通过某种方法(这里是脏治检测)告诉视图更新
  • mvvm(vue)
    就是通过某种方法使 视图(view) 和 数据(model) 建立联系(这里是通过js Object.defineProperty(), 方法建立双向关系)
    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 为啥是函数 不是对象
    第13个问题

  • angluar vue的区别
    https://www.jianshu.com/p/7b7b195e0297

  • vue 和原生的区别

  • vuex 优势
    统一公共属性方法 方便维护
    只提供单一的更改属性的方法 保证维护 溯源的方便(要是多个更改方法会难以维护 溯源)

  • 处理跨域

    开发环境 用热更新插件 配置 地址 node 代理
    生产环境 ngix 配置
    cors 配置

  • 兄弟a b组件之间,点击a组件 出发b的函数

a 触发 this.$emit 给父组件,父组件 用ref.子组件的方法

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

EventBus.$off(channel, {})


前端优化


  • 防抖 节流
防抖:  规定一个期限时间,在首次触发事件时,不立即执行回调函数,而是在期限时间后再执行,如果期限时间内回调函数被重复执行,则期限时间重新计时。(100ms 内执行10次,按最后一次的的时间,在延时执行,函数执行需要 一段时间)
节流: 一段时间只执行一次,执行多次按最后一次计算(100ms 内执行10次,只执行最后一次)

https://www.jianshu.com/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系统
  // 引入fastclick 做相关处理
  document.addEventListener('DOMContentLoaded', function () {
    FastClick.attach(document.body)
  }, false)
} else {
// 苹果版本 11 以上已经处理了延时
  if (parseInt(ver[1]) < 11) {
    // 引入fastclick 做相关处理
    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/', // 这个是服务器的访问路径配置
  ...
  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



算法



面试题



打包工具


职业规划



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

相关文章

  • 2018 前端面试准备

    前端面试常见问题按知识点分类整理 前端面试常考问题整理,按模块知识点分类,持续完善中... Front-end-D...

  • 分享一些前端的面试题、重要知识点等干货~~~

    分享一些前端的面试题、重要知识点等干货~~~ Github仓库地址: 关于前端学习的笔记 前端面试相关 JavaS...

  • 前端面试集锦(1)

    前端面试集锦(转载) 转载地址:前端开发面试题 以下皆为转载 前端开发知识点: 作为一名前端工程师,无论工作年头长...

  • 前端开发面试知识点大纲

    本文旨在加深对前端知识点的理解,资料来源于网络。 前端开发面试知识点大纲: 1.请你谈谈Cookie的弊端 coo...

  • 超全前端面试(全!全!全!!!)

    笔者通过平时面试总结以及面试别人常提的问题,结合自己认为非常重要的前端各技术栈的知识点,总结了这篇中高级前端面试。...

  • 最全前端开发面试问题及答案整理

    最全前端开发面试问题及答案整理 前端开发面试知识点大纲: HTML&CSS: 对Web标准的理解、浏览器内核差异、...

  • web面试汇总

    《前端面试常见问题按知识点分类整理》 《CSS 中布局终极方案》面试中经常遇到的面试题之一,居中布局,特来总结 《...

  • 前端开发面试知识点大纲

    史上最全 前端开发面试问题及答案整理 本文旨在加深对前端知识点的理解,资料来源于网络,由本人收集整理。 前端开发面...

  • 前端面试(一)

    前端面试的门槛越来越高,前端的知识点多而零散,前端框架层出不穷,怎么做才能全面的复习知识,怎么做才能掌握前端技能,...

  • 前端面试梳理(一):基础知识点

    前端面试梳理(一):基础知识点 原始类型 涉及面试题:基础数据类型有哪些?null是对象? 基础数据类型有哪些? ...

网友评论

      本文标题:前端面试知识点

      本文链接:https://www.haomeiwen.com/subject/hxmryqtx.html