面试公司

MetaApp、questMobile、汽车之家、哗啦啦、去哪儿网、作业帮、京东物流、美团

CSS

  1. 什么是盒子模型?怪异盒模型怎么设置它为正常的盒模型?
  2. 垂直居中的几种实现方式。子元素宽高不固定怎么实现?
  3. 移动端自适应布局有哪些实现方案?(rem的原理,除了rem还有别的方式没有?)
  4. BFC规则是啥?怎么触发它的规则?
  5. flex的参数有哪些?分别解释一下

    JavaScript

  6. 数组去重的实现方式

    代码实现:

    • 利用es6的Set

      1. function dedupe(array){
      2. // 利用Set不允许出现重复的元素这个特性,去重,然后转化成数组
      3. return Array.from(new Set(array));
      4. }
      5. dedupe([1,1,2,3]) //[1,2,3]
    • 利用

  7. es6的一些语法
  8. 用promise封装一个sleep函数
  9. 防抖节流函数
  10. 浅拷贝深拷贝
  11. 如何实现一个 new函数

    React

  12. 组件通信的几种实现方式?(重点看看context怎么通信的?)

  13. 生命周期的执行顺序,react16新增的生命周期函数有什么?为什么新增?从之前三个will为什么废弃说起,三个will不安全,什么情况下不安全的?
  14. setState的参数有哪些?第一个参数可以传递什么值?传递的值有什么区别吗?第二个值是什么?setState的内部执行的过程是怎么样的?了解吗?setState为什么异步?能不能同步?什么时候异步?什么时候同步?

https://www.sohu.com/a/219848526_695559

  1. react Hook有了解过吗?用过哪些?useEffect和useLayoutEffect有什么区别?useMemo和useCallBack有什么区别?
  2. react为什么会加入 Fiber?
  3. redux流程是什么?redux如何实现异步?如果用异步请求一个接口代码如何实现?

    Vue

  4. Vue的生命周期函数?

  5. Vue组件的通信方式有哪些?
  6. key的作用是什么?
  7. v-bind和v-model的区别有哪些?
  8. 响应式机制是什么样的?
  9. vue原理了解过吗?介绍一下vue实现的原理
  10. vue3.0实现了哪些东西?介绍一下vue3在性能方面做了哪些工作?compositionApi怎么使用的?

Vue和React比较

说一下两者之间的区别

Webpack

  1. webpack的打包流程是什么样的?主要是解释一下源码是怎么打包的
  2. webpack怎么配置文件分割
  3. 怎么实现热更新(css和js的热更新)
  4. 如何配置ts

    node

    node事件循环机制和宏任务微任务有了解吗?

    TypeScript

  5. interface和type有什么区别

  6. vue和react使用typescript的工具集用过没?

    性能优化

    说说平时自己项目中做过的
    比如:

  7. 防抖和节流,用在什么场景?有什么区别?代码如何实现,现场面试可能会写代码。

  8. 减少http的请求
  9. 减少DOM操作
  10. webpack做了哪些性能优化
  11. vue做了哪些性能优化
  12. react做了哪些性能优化。

手写代码

数组乱序

  1. // 示例
  2. var arr = [1, 2, 3, 4];
  3. var newArr = [2, 4, 1, 3];

代码实现:

  1. function sortArray(arr) {
  2. let newArray = [];
  3. const len = arr.length;
  4. for(let i = 0; i < len; i++) {
  5. // 根据数组的长度产生一个随机的下标
  6. const index = Math.floor(Math.random() * arr.length);
  7. // 根据随机的下标把对应的数组项push到新的数组
  8. newArray.push(arr[index]);
  9. // 删除已经出现过的元素
  10. arr.splice(index, 1);
  11. }
  12. return newArray;
  13. }
  14. const arr = [1,2,3,4,5];
  15. const newArr = sortArray(arr);
  16. console.log(newArr);

数组扁平化

  1. var arr = [1, [2, 3], 4, [5, 6]];
  2. var newArr = [1, 2, 3, 4, 5, 6];

代码实现:

  1. function flatten(arr) {
  2. while(arr.some(item=>Array.isArray(item))) {
  3. arr = [].concat(...arr);
  4. }
  5. return arr;
  6. }
  7. var arr = [1, [2, 3], 4, [5, 6]];
  8. flatten(arr)
  9. // [1,2,3,4,5,6]

一共有五种方法:https://www.cnblogs.com/wind-lanyan/p/9044130.html

统计一个字符串中相同字符出现的个数

  1. var str = "abbcccdffaa";
  2. var newStr = "a-3-b-2-c-3-d-1-f-2";

代码实现:

  1. var str = 'ABCABC你好你好ののA';
  2. //用来存储不重复的字符串
  3. var newStr = '';
  4. //字符串去重 将不重复的字符串存储到一个新的字符串内
  5. //将每一个字符单独提出来
  6. for (var i = 0; i < str.length; i++) {
  7. //判断有没有在newStr中出现过 没有出现过 放到newStr内
  8. if (newStr.lastIndexOf(str[i]) == -1) {
  9. newStr += str[i];
  10. }
  11. }
  12. // console.log(newStr);//ABC你好の
  13. for (var i = 0; i < newStr.length; i++) {
  14. var count = 0;
  15. for (var j = 0; j < str.length; j++) {
  16. //判断元素是否相等 如果相等 则次数加1
  17. if(newStr[i]==str[j]){
  18. count++;
  19. }
  20. }
  21. console.log(newStr[i],count);
  22. }

实现一个add(), add(1)(2)(3)(4)实现无限极累加

  1. add(1) //=> 1;
  2. add(1)(2) //=> 3;
  3. add(1)(2)(3) //=> 6;
  4. add(1)(2)(3)(4) //=> 10;
  5. 以此类推。。。。。

代码实现:

  1. function add(a) {
  2. function s(b) {
  3. a = a + b;
  4. return s;
  5. }
  6. s.toString = function() {return a;}
  7. return s;
  8. }
  9. console.log(add(1)(2)(3));

写出下列代码的执行结果

  1. async function async1() {
  2. console.log("async1 start");
  3. await async2();
  4. console.log("async1 end");
  5. }
  6. async function async2() {
  7. console.log( 'async2');
  8. }
  9. console.log("script start");
  10. setTimeout(function () {
  11. console.log("settimeout");
  12. },0);
  13. async1();
  14. new Promise(function (resolve) {
  15. console.log("promise1");
  16. resolve();
  17. }).then(function () {
  18. console.log("promise2");
  19. });
  20. console.log('script end');
  21. // 输出结果
  22. script start
  23. async1 start
  24. async2
  25. promise1
  26. script end
  27. promise2
  28. async1 end
  29. settimeout

微信小程序

微信小程序包最大不会超过2M,当超过2M的时候如何进行分包?

浏览器

  1. 浏览器的解析原理
  2. 浏览器的eventLoop和nodeJs的eventLoop是怎么样的?

    http

    对http有哪些了解?

    web安全

    有哪几种web攻击的方式?

    项目

    主要是介绍你在这个项目中负责的功能,挑一些你自己任务业务比较完整的一次功能迭代进行讲。开始先介绍项目的业务场景是干嘛的,然后你做了哪些功能,解决了哪些业务问题。用了什么技术,学到了什么东西之类的。