前端面试题

原型与原型链的区别
vue的计算属性是什么且怎么用
vue的兄弟父子组件间传值
vue的状态管理什么时候用到
如果使刷新时vue状态管理中数据不遗失
vue什么情况选择localStorage存储数据
如何修改UI组件样式
上下两个盒子,上面 margin-buttom:50px; 下面盒子 margin-top:30px; 实际中间间隔多高
常用状态码和意义,302是干嘛的
Vue 路由守卫及其在实际开发中的应用
项目中如何处理跨域问题 // 运用代理
this.$set用法 // 更改vue实例中对象/数组对象属性值可以触发更新视图
对闭包的了解,与实战中什么情况用到闭包
pc端移动端调试工具
遇到过什么兼容问题
移动端uniapp有很多兼容问题,有遇到过哪些
微信H5分享功能 openid问题如何解决
优势是什么
平时都是怎么学习新技术的

先做自我介绍
问从输入 Url 到浏览器渲染的过程,把自己知道的尽可能说出来
问 Https 的对称加密和非对称加密的工作方式
问 Webpack 的工作原理
问 Vue 双向绑定原理
问虚拟 DOM 的 Diff 算法
问对方主要业务是什么
问对方前端使用的技术栈
问对方前端团队规模

简单的自我介绍
vue-router路由有哪几种模式
vuex分别有哪些方法和属性
h5有哪些特性
讲下闭包原理
列举一些es6相关的技术
有了解过WebSocket没有
是否有过小程序的开发经历
有没有做过直播类开发相关
有没有要对他们公司了解的
Q: 问了下后端用的什么技术开发 A:用的PHP开发
Q: 你们公司有没有nodejs相关的 A:没有
Q: 你们公司现在是在做直播方面的开发?技术方向是0-1的开发还是全部第三方的方式接入开发 A: 正在准备这方面的开发,都使用第三方接入开发

做下简单的自我介绍
为什么离开现在这家公司
讲下vue的生命周期
讲下Vue双向绑定的原理
讲下v-model值改变的原理
有没有做过换肤,讲下怎么换肤
给一个树形结构,怎么去实现一个菜单组件
一个项目有几百个页面,怎么去优化它
css3动画有哪些,分别讲一下
媒体查询怎么设定它的范围去实现pc和移动端的适配
移动端适配,讲下rem,vw的使用
你了解的排序算法有哪些?(简单描述了下插入排序和快排),讲下快排的实现
一段外部的JavaScript和一个vue实例他们之间怎么进行交互?(这个面试官自己描述都挺模糊)
你了解的设计模式有哪些?描述下是怎么个实现过程
A: 你对我们这边的了解有多少? Q:只知道你们是做电商相关的
A: 对我们这边还有什么要了解的? Q:没有(面试官全程一脸严肃)

自我介绍
问 Js 原型链是什么
Vuex 原理
Webpack 打包加速方案
CDN 是什么
前端埋点是什么
浏览器缓存
网站安全问题有哪些及其防范措施
Vdom 是什么,Diff 算法原理
Vue 和 React 的挂载区别(不太懂问的什么)
冒泡排序和选择排序的区别是什么
为什么用 Flutter 开发移动端,比其他框架的优势在哪

自我介绍
Vue和React的生命周期
Vue和React的区别
TypeScript相比较JavaScript有什么特性
JS事件循环
聊了下宏任务和微任务
浏览器渲染机制
有多少种缓存方式(强缓存和协商缓存这一类)
还聊了点后端相关的,EggJS和NextJS,这里被虐了。。我只是接触过,并不熟悉
Vue的数据绑定原理
Vue的事件循环机制(后来确认了他是想问nextTick的原理)
说一说以往工作中遇到过的兼容性问题以及如何解决
浏览器从输入URL到展示页面都做了些什么
Vue如何做到组件间的通信(不是兄弟组件和父子组件,指的是两个关系并不大的组件间的通信)
React 组件的工作顺序
Webpack相关,loader、打包
ES6的新特性
Promise的特性
Set/Map底层实现原理
Taro原理
TypeScript中泛型和any有什么区别
Redux的工作流程
EggJS定时任务的原理
html5中视频的离屏渲染(这里我一脸懵逼,离屏渲染不是Canvas的吗???)

自我介绍
webpack打包
如何配置环境变量
对加密这块有什么了解
脚手架有没有了解
如何减少webpack压缩体积
前端如何实现图片压缩
canvas
非父子组件传值方法 
父组件异步加载数据传值给子组件如何实时渲染 A: computed watch
监听后还是没有渲染的情况有什么 A: 数组对象属性变化时, 还有渲染未结束时数据变化 nextTick
原理是什么  A: dom的异步渲染机制和vue的双向绑定原理
本地开发联调 mock
vue slot(插槽 ) 和作用域区别

基础知识

prototype和proto的关系是什么
meta viewport原理
域名收敛是什么
float和display:inline-block;的区别
前端优化策略列举
首屏、白屏时间如何计算
闭包
作用域链
ajax如何实现、readyState五中状态的含义
jsonp如何实现
怎么处理跨域
restful的method解释
get和post的区别
事件模型解释
编写一个元素拖拽的插件
编写一个contextmenu的插件
编写web端cookie的设置和获取方法
兼容ie6的水平垂直居中
兼容ie的事件封装
h5和原生android的优缺点
编写h5需要注意什么
xss和crsf的原理以及怎么预防
css优先级
如何实现点击radio的文字描述控制radio的状态(通过label实现)
delegate如何实现
jsonp有什么安全问题?为什么有这些安全问题?
单链表和双向链表的区别?
有用过reactjs?简单说一下其生命周期方法
框架
如何了解这些前端的框架?如angular,react,vue。

angularjs

angular的directive怎么写
angular的脏检查(双向绑定)是如何实现的
依赖注入如何实现
scope如何实现
$parse模块如何实现(主要自己写了一个类似的库)

react

react在setState后发生了什么,请结合源码说说你的理解。
flux解释。
说说你对React框架的理解。

requirejs

amd和cmd区别,怎么了解到这些区别的,是否是去看了规范。
requirejs那些经常用的方法,然后对其进行解释。

Node

Buffer模块是干什么的。
Stream是什么,使用的两种模式。
http模块如何将异步处理方式实现成同步处理方式。

其他问题

utf8和gbk的区别。
知道页面上某个点的坐标,如何获取该坐标上的所有元素。
angular、react和jQuery适合哪些应用场景(建议查看各个框架产生背景)。
7点15分小于180度的夹角是多少。
如何实现大数相加。
给5升和6升的水杯如何倒出3升的水。
一班喜欢足球的人60%,喜欢排球的70%,喜欢篮球的80%,求喜欢足球和排球的占多少。
前端异常监测如何实现。
直播点赞按钮的冒泡功能如何实现。
js的uglify如何实现。

优化方面

前端工程化方面做了哪些东西,怎么做。

算法

什么二叉树,从一堆大数中选出满足条件的数要求最快。

nuxt 组件中axios请求接口返回结果错误问题

多次测试结论,是层级太深的组件中mounted请求失效;应避免深层级组件中使用mounted方法

  async mounted() {
    let self = this
    // 获取左侧推荐二级分类菜单             
    await axios.get('/rest/getCommondProductType').then((res) => {
      console.log(res.data)
    }).catch((error) => {
      console.log(error)
    })
  }

1、当声明在components/index/recommend/Rnav.vue中时,多次刷新界面,响应结果总是另一接口响应内容;

2、在nextServiceInit与pages中时,响应结果为该接口结果,正确

怀疑是缓存造成,全局增加axios请求时间戳
3、给请求添加时间戳,多次刷新界面,响应结果经常为另一接口结果,偶尔响应null

{"resultCode":"SUCCESS","result":null,"message":null,"date":"2020-05-16 12:52:01"}

4、当去掉另一接口请求组件模块时,多次刷新界面,经常响应null,偶尔正确

5、在button点击事件中请求该接口,多次点击一直响应正确

猜测组件层级太深影响,往上提一层
6、当声明在components/index/index.vue中时,多次刷新界面,响应结果经常正确,偶尔为null;

7、再提升一层components/Test.vue,多次刷新界面,响应皆正常

react中受控组件和非受控组件

受控和非受控,我们可以理解为状态,而这个时候的状态,都是通过函数来控制。
我们在html中遇到的表单元素【input】【textarea】等,都是自身元素有状态的元素,而且还会随着用户的输入更新状态,而用户的更新都会触发函数来改变表单元素的状态。
在react中,可变的状态我们都保存在状态属性中,而且只能用setState来更新,是不是很怀恋vue中直接双向绑定的形式,直接通过this来访问data并且修改?

继续阅读“react中受控组件和非受控组件”

vue如何优雅的使用keep-alive实现页面缓存

最近有一个页面,头疼的紧啊!一个页面,八种类型,一部分公用类型,剩下的信息按照类型的不同来随时切换,中间还会跳到别的页面选择相应的信息再回来,但是之前选择的信息不能消失,因为中间的状态太多,所以考虑用了vuex,但也试着用了一下keepalive,实际上真的很不错啊

继续阅读“vue如何优雅的使用keep-alive实现页面缓存”

typescript结合react+electron桌面应用程序的实践(二)—react-router配置篇

或许,分节奏、分篇幅来写是一个不错的选择,毕竟,谁也不喜欢裹脚布一样的阅读体验。

我们在配置好最基本的项目启动之后,我们可以看到最最最原始的一个原生应用窗口,里面只有脚手架自带的一个页面,一个完整的前端项目,我们希望是路由、组件、功能模块、公用组件封装等等一系列来组成,我们在这一篇来记录react-router的配置方法,或许结合typescript你会发现不一样的写法。

继续阅读“typescript结合react+electron桌面应用程序的实践(二)—react-router配置篇”