Skip to the content.

面试第2天,第6家,1个offer 和大佬们聊的很开心,今天没有被怼,也学到了很多东西 跳出当下看世界总归是有收获的😺 emmm… 总结下今天面试遇到的问题😸

1.简述或画图解释 MVMMVVM 的区别

这是道笔试题,直接懵逼,知道 MVCMVVM ,但是没听说过 MVM 呀🙊 谢谢阮大的图,截取自阮一峰博文 《MVC,MVP 和 MVVM 的图示》原文链接戳这里👈

-MVC

  1. View 传送指令到 Controller
  2. Controller 完成业务逻辑后,要求 Model 改变状态
  3. Model 将新的数据发送到 View,用户得到反馈

-MVP

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向

  1. 各部分之间的通信,都是双向的。
  2. ViewModel 不发生联系,都通过 Presenter 传递
  3. View 非常薄,不部署任何业务逻辑,称为”被动视图”(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里

-MVVM

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致 唯一的区别是,它采用双向绑定(data-binding)View 的变动,自动反映在 ViewModel,反之亦然

2.列举 JavaScript 数据类型

NumberStringBooleanUndefinedNull ObjectArrayFunctionRegExpDateErrorMath

嗯…当时少写了一个 Error 🙈 面试小哥哥问哪些是基本数据类型呢,哈哈,”第一行都是”🐱‍👤

3.数组排序

array.sort((a, b) => a - b) 因为早晨又看了下数组去重,一激动就堆上去了🤦‍

4.列举 ES6 新增属性,有没有用过 flexflex : 1 是什么意思

  1. let, const, Promise, 箭头函数, 字符串模板, 结构解构
  2. 用过,在移动端有大量使用
  3. 元素平均且占满剩余宽度

5.reduce 接受几个参数

嗯…这题也没答,不会,心痛😿 看下 MDN 文档怎么讲的

reduce() 方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。

const array1 = [1, 2, 3, 4]
const reducer = (accumulator, currentValue) => accumulator + currentValue

console.log(array1.reduce(reducer)) //10
console.log(array1.reduce(reducer, 5)) //15

-语法

arr.reduce(callback[, initialValue])

-参数

callback 行数组中每个值的函数,包含四个参数:

initialValue 可选,用作第一个调用 callback 的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错

-返回值

函数累计处理的结果

6.总结

暴露了自己很多的不足,比如算法思维、对Promise的理解、数组数据操作…… 最好的办法就是多实践,嗯… 继续加油🐱‍🐉