面试第2天,第6家,1个offer 和大佬们聊的很开心,今天没有被怼,也学到了很多东西 跳出当下看世界总归是有收获的😺 emmm… 总结下今天面试遇到的问题😸
1.简述或画图解释 MVM 和 MVVM 的区别
这是道笔试题,直接懵逼,知道 MVC 和 MVVM ,但是没听说过 MVM 呀🙊
谢谢阮大的图,截取自阮一峰博文 《MVC,MVP 和 MVVM 的图示》 ,原文链接戳这里👈
-MVC

View传送指令到ControllerController完成业务逻辑后,要求Model改变状态Model将新的数据发送到View,用户得到反馈
-MVP
MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向

- 各部分之间的通信,都是双向的。
View与Model不发生联系,都通过Presenter传递View非常薄,不部署任何业务逻辑,称为”被动视图”(Passive View),即没有任何主动性,而Presenter非常厚,所有逻辑都部署在那里
-MVVM
MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致
唯一的区别是,它采用双向绑定(data-binding):View 的变动,自动反映在 ViewModel,反之亦然

2.列举 JavaScript 数据类型
Number,String,Boolean,Undefined,Null
Object,Array,Function,RegExp,Date,Error,Math
嗯…当时少写了一个 Error 🙈
面试小哥哥问哪些是基本数据类型呢,哈哈,”第一行都是”🐱👤
3.数组排序
array.sort((a, b) => a - b)
因为早晨又看了下数组去重,一激动就堆上去了🤦
4.列举 ES6 新增属性,有没有用过 flex,flex : 1 是什么意思
let,const,Promise, 箭头函数, 字符串模板, 结构解构- 用过,在移动端有大量使用
- 元素平均且占满剩余宽度
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 行数组中每个值的函数,包含四个参数:
-
accumulator累加器累加回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue(如下所示) -
currentValue|可选 数组中正在处理的元素 -
currentIndex|可选 数组中正在处理的当前元素的索引。 如果提供了initialValue,则索引号为0,否则为索引为1 -
array调用reduce的数组
initialValue |
可选,用作第一个调用 callback 的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错 |
-返回值
函数累计处理的结果
6.总结
暴露了自己很多的不足,比如算法思维、对Promise的理解、数组数据操作……
最好的办法就是多实践,嗯…
继续加油🐱🐉