技术面试题

232 阅读6分钟

1.说一下es6的新特性,箭头函数的特点?

    1. 函数体里面只有一行代码时,可以省略 return和花括号
  • 如果函数需要return 一个对象时,对象需要用小括号包裹;
let sum = (a, b) => a + b;
let getObj = (a, b) => ({a: a, b: b});
    1. 只有一个形参时,可以省略小括号
let say = msg => console.log(msg);
    1. 箭头函数里面没有arguments,但是可以使用不定参数(剩余参数)
let allIn = (...arg) => {
  let total = 0;
  for (let i = 0; i < arg.length; i++) {
    total += arg[i];
  }
  return total;
};
  • 不定参数(剩余参数):在函数形参中 ...形参名
    1. 不定参数是一个数组,可以使用数组方法
    2. 不定参数可以用作非必传参数
let fn = (a, b, ...arg) => {
  console.log(arg);
};
fn(1, 2); // arg = []
fn(1, 2, 3); // arg =[3]
fn(1, 3, 5, 7, 9, 11); // arg = [5, 7, 9, 11]
  1. 箭头函数中的this指向其声明时所在作用域中的this;原理:箭头函数没有自己的this;
    • this和arguments是两个特殊的变量,是在函数执行时js解析引擎传入给函数的,但是箭头函数执行时,解析引擎给箭头函数;
    • 箭头函数没有自己的this,所以不能用作构造函数;
    • 箭头函数不能用call、apply、bind修改this

2.移动端兼容问题:blog.csdn.net/hardgirls/a…

3.你以前用过跨域吗,JSONP的原理 www.zhihu.com/question/19…

4.说说对前端有哪些优化 www.zhihu.com/question/21…

5.浏览器的渲染原理;juejin.cn/post/684490…

6.实现跨域有多少种方式; blog.csdn.net/ligang25851…

7.说一说session cookie 和localstoreage的区别; www.cnblogs.com/caiyezi/p/5…

8.你怎么理解http;http怎么工作的; www.cnblogs.com/wxisme/p/62…

9.说一下promise底层实现机制;

10.AMD cmd require规范的区别;

11.webpack 工作配置问题

  1. git在工作中如何使用

  2. 跨域的几种方式 :juejin.cn/post/684490…

  3. DOM-diff原理;juejin.cn/post/684490…

  4. MVC和MVVM什么区别?

  • MVC: M model 是数据层 V view 视图层 C controller 控制器层,控制器层是连接model和视图的;一般是单向数据流,通过Controller把数据绑定到view中
  • MVVM: M model 数据层 V view 视图层 VM view-model 视图模型层 通过视图模型把数据层和视图层练习起来,可以双向数据绑定,可以单向数据绑定
  • 此外,vue是响应式的框架;所谓响应式不是css的响应式,而是通过修改数据,视图自动发生变化。当视图发生变化时,数据也会随着改变;这就是双向数据绑定;

16.同步异步,以及JS的事件流;juejin.cn/post/684490…

17.ajax中get和post有什么区别

18.前端的性能优化有哪些:juejin.cn/post/684490…

19.前端的安全性;

20.说一下深拷贝和浅拷贝:juejin.cn/post/1

21.常见的算法有哪些 :juejin.cn/post/684490…

22.你知道的前端加密是什么,怎么做的? juejin.cn/post/684490…

23.网络安全

24.从url输入到渲染的整个过程

25.TCP三次握手;

1.vue双向数据绑定原理

2.vue的生命周期以及在各个钩子函数执行发生的事情

3.说一下vue的双向数据绑定

4.vue中组件之间的通信如何完成

5.说一说vueX的组成?

6.vue的性能优化

7.vue中DOM-diff原理 :blog.csdn.net/m6i37jk/art…

1.react的生命周期

2.react中redux是实现原理

3.react中render实现的原理

4.JSX元素实现原理

5.react中组件之间通信如何完成

6.说一说react生命周期函数以及生命周期函数执行时做的事情;

7.如果在页面中只有一处文本改动,用jqery和react,,哪个框架实现的性能高?

8.VUE和REACT有什么区别?juejin.cn/post/684490…

9.react-redux 的实现原理;

10.react中的性能优化 :www.jianshu.com/p/333f390f2…

项目: 简单描述一下这个项目是做什么的? 你在这个项目中负责哪部分? 你在这个项目中遇到哪些问题,是怎么解决的; 这个项目中你应用了什么技术

项目中遇到的问题

  • 问题1:input输入框使用v-model时, 绑定计算属性时,数据没法双向响应;

    解决:用watch的set和get方法,和v-model

  • 问题 2:mounted 钩子函数中请求数据会导致页面闪屏问题

解决:这个是加载时机的问题,放在create里会比mounted触发早一点,如果在页面挂在完之前请求完成的话就不会看到闪屏了;

  • 问题 3:定时器中,切换页面,定时器依然在执行,耗性能

解决:在 data 中定义一个定时器名称,然后使用定时器;最后在 beforeDestroy()声明周期内清除定时器;

  • 问题 4:样式问题,webpack 会把 css 合并在一起,如果样式命名不规范,会容易造成冲突

解决:统一使用 less,能更好的解决,冲突的问题;

  • 问题 5: 在使用 redux 的时候;影响性能

解决:减少 HTTP 请求次数,尽量少使用高阶组件,高阶组件形成闭包嵌套,导致很多栈内存不销毁;

  • 问题6:Vuex中的初始化数据为一个数组,后续修改数组中已存在的数据没有导致视图变化

解决 :由于Vuex初始化监听数据时,只监听了数组,导致数组中的对象改变并不会去影响数 组,就不会渲染视图,所以重新拷贝了数组,对原数组进行修改;

  • 问题7:Vue中给绑定点击事件后并没有用

解决:由于router-link是Vue-router提供的组件,所以绑定事件后并没有绑定到原生dom节点 上,所以使用.native对事件进行修饰。

  • 问题8:监听滚动条滚动或者鼠标的移动,但浏览器触发这类事件的频率非常高,可能在10几毫秒就触发一次,如果我们处理事件的函数需要操作大范围的DOM,这对于浏览器的性能是个考验;

解决: 函数的防抖和分流;

  • 问题9:常见的兼容问题png24位的图片在iE6浏览器上出现背景

解决方案是做成PNG8.也可以引用一段脚本处理.

  • 浏览器默认的margin和padding不同。

解决方案是加一个全局的*{margin:0;padding:0;}来统一。

  • IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。 浮动ie产生的双倍距离(IE6双边距问题:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。) #box{ float:left; width:10px; margin:0 0 0 100px;}