时间:9月17日
西安新视窗科技有限公司
公司地址:西安市雁塔区团结南路32号中国航天技术军民融合创新中心大楼15层西
面试之前我对这家公司进行了上网了解,了解到这家公司是以智能型软件为主的科技型公司。并且对他们的招聘要求进行了简单分析,会算法的优先,有相关工作经验的优先,并且有培训经验的优先。
面试的时间是周一,去了公司以后没多少人,了解到他们是弹性工作。并且有分公司在其他地方。下面我简单回顾一下当时的面试题。
1. 平时在做移动端项目的时候,用什么单位?
对于只需要适配手机设备,使用px即可,对于需要适配各种移动设备,使用rem
2. 移动端你都知道哪些事件?
我当时回答出了4,5个事件,现在总结一下。
1、touchstart——当手指触碰屏幕时候发生。不管当前有多少只手指
2、 touchmove——当手指在屏幕上滑动时连续触发。通常我们再滑屏页面,会调用event的preventDefault()可以阻止默认情况的发生:阻止页面滚动
3、touchend——当手指离开屏幕时触发
4、touchcancel——系统停止跟踪触摸时候会触发。例如在触摸过程中突然页面alert()一个提示框,此时会触发该事件,这个事件比较少用
移动端click屏幕产生200-300 ms的延迟响应
移动设备上的web网页是有300ms延迟的,往往会造成按钮点击延迟甚至是点击失效。
解决方案fastclick可以解决在手机上点击事件的300ms延迟
zepto的touch模块,tap事件也是为了解决在click的延迟问题
触摸事件的响应顺序
1、ontouchstart
2、ontouchmove
3、ontouchend
4、onclick
解决300ms延迟的问题,也可以通过绑定ontouchstart事件,加快对事件的响应。
3. 了解AMD吗?
了解一些:AMD意思就是”异步模块定义”。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行.
4. Vue 中如何高效复用一个元素,如何解除对元素的复用?
Vue 会尽可能高效的渲染元素,通常会复用已有元素而不是从头进行渲染,那么解除这种渲染方式,我们可以在当前元素上面增加 key 属性,表示他的唯一性,那么 Vue 的渲染的时候就会重新对元素渲染而不是进行复用了
5. Vue 如何对数据进行监听?
在实例化 Vue 对象的时候,option选项中有 watch 可以用来实现对 data 数据中的数据进行监听,监听的方式如下:
data 数据:function(旧数据,新数据)我们可以在函数中实现对数据的监听以及修改数据等操作
6. 什么是 React 的 refs ,为什么它们很重要?
refs就像是一个逃生舱口,允许您直接访问DOM元素或组件实例。为了使用它们,您可以向组件添加一个 ref 属性,该属性的值是一个回调函数,它将接收底层的 DOM 元素或组件的已挂接实例,作为其第一个参数。
7. 如何告诉React 构建(build)生产模式,该做什么
将使用Webpack的 DefinePlugin 方法将 NODE_ENV 设置为 production。这将剥离像 propType 验证和额外的警告。除此之外,还有一个好主意,可以减少你的代码,因为React使用 Uglify 的 dead-code 来消除开发代码和注释,这将大大减少你的包的大小
8. createElement 和 cloneElement 有什么区别?
createElement是 JSX 被转载到的,是 React 用来创建 React Elements 的内容(一些 UI 的对象表示)cloneElement用于克隆元素并传递新的 props。他们钉住了这两个的命名。