面试第2天,第6家,1个offer 和大佬们聊的很开心,今天没有被怼,也学到了很多东西 跳出当下看世界总归是有收获的😺 emmm… 总结下今天面试遇到的问题😸
1.简述或画图解释 MVM
和 MVVM
的区别
这是道笔试题,直接懵逼,知道 MVC
和 MVVM
,但是没听说过 MVM
呀🙊
谢谢阮大的图,截取自阮一峰博文 《MVC,MVP 和 MVVM 的图示》 ,原文链接戳这里👈
-MVC
View
传送指令到Controller
Controller
完成业务逻辑后,要求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
的理解、数组数据操作……
最好的办法就是多实践,嗯…
继续加油🐱🐉