前端面试部分--20200616试题

一、基础问答部分

  1. 请描述一下https的原理以及与http的区别
  2. position 有哪些属性
  3. img 标签间距问题的原理以及如何解决
  4. typeof 的原理是什么,与 instanceOf 、 Object.prototype.toString.call() 的区别
  5. 0.1 + 0.2 === 0.3 吗?为什么?

二、手写部分

  1. 实现一个算法,来完成字符串相加,比如 “111” + ”2222“ = ”2333“
  2. 利用html css 编写样式,div垂直body居中、div内的text垂直居中,div高度等于body宽度的一半
  3. 类型比较

if([] == false){console.log(1)};
if({} == false){console.log(2)};
if([]){console.log(3)}
if([1]==[1]){console.log(4)} // 引用类型比对地址
if(!![]) {console.log(5)}

  1. bind函数实现
  2. trottle函数实现

三、框架部分

  1. 提供一个 VDOM 对象,写一个 render 函数来让他变成一颗 DOM 树。(比如大概长这样)
{
  type: 'h1',
  props: {
    className: "",
    style: "",
  },
  children: [] // 嵌套节点
}
  1. React组件通信是怎么实现的
  2. mixin、hoc、render props、react-hooks的优劣如何
  3. Time Slice的理解
  4. 什么是虚拟DOM呢

四、小程序部分

  1. 说一下微信小程序的原理
  2. 小程序的双向绑定和vue哪里不一样
  3. 小程序的生命周期函数
  4. 哪些方法可以用来提高微信小程序的应用速度
  5. bindtap和catchtap的区别是什么

五、算法部分

  1. 用队列实现栈
  2. 数据流中的第K大元素
  3. 判断子序列

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”)
    能准确的判断所有的类型。写法相对繁琐
    后续可参考资料:简书

你可能感兴趣的:(Crystal的前端面试整理)