首页 > 一大波前端面经正在来的路上,许愿牛客网
头像
小肉脸
编辑于 2020-10-09 20:31
+ 关注

一大波前端面经正在来的路上,许愿牛客网

不知不觉已经10月份了,楼主不知名211硕士,面的基本都是前端岗,从八月底左右开始,面了很多很多很多很多家公司,至今还没有oc~已经累了,毕业在即,打算春招再找找看吧(面试过程中一度怀疑自己可能不应该做一个程序媛233)
大概面了有道,依图,顺丰,涂鸦智能,北森,网易杭研,猿辅导,虾皮,百度,美团等等……整理了一部分出来,分享给大家,希望小伙伴们都能找到自己心仪的工作~~另外听同学说牛客网许愿很灵,顺便许个愿,希望10月能收到offer吧~~,0offer前端菜鸡已经快失去信心啦……

网易有道杭州面经(一面)

1 如何自学前端

2 手撕快排 先讲思路

3 画了一颗树 说出树的前序 中序 后序遍历

写出前序遍历的代码

什么是完全二叉树

什么是满二叉树

他们有什么区别

4 给一个数组,数组里是学生对象,有名字和分数的属性,如何完成学生的分数的排序,写出代码

5 给两个数组,如何判断两个数组是否有相同元素 讲思路和代码的时空复杂度

6 给一个数组 如何让A+B=C 使C的值最大 将思路 说时空复杂度 (我的思路不是最优让我讲了如何优化)

7 数据库的索引有哪几种

8 讲数据库的acid

9 你怎么看待前端组件化编程

秋招第一场面试,哈哈哈哈,代码写不来凉了~

依图科技一面

  • 高校没有开设过相关的前端课程,是如何学习前端的?
  • 原型和原型链说一下
  • 如何判断一个对象是数组
  • instance of 的原理
  • 看一道题目(主要考察的是变量提升和全局作用域以及局部作用域)
  • 问一些css相关的,translate和animation有了解吗,讲一下
  • 用尽可能多的方法实现水平垂直居中
  • 强缓存与协商缓存
  • webpack了解吗(不了解)
  • es6里你觉得比较好用的新特性
  • 箭头函数的主要优势是什么
  • promise的实现原理
  • react diff算法
  • 前端性能优化
  • 说一下重绘和重排
  • 手写防抖(debounce)

  • 顺丰一面
  • 1.自我介绍,控制在三分钟

    2.开发过程中最难的一个

    3.讲了实习,问最近是不是react比较熟悉,问了react的传参

    react答的不是很好,问了我一些基础题

    4.http状态码

    5.cookie,sessionStorage,localStorage的区别(答到session不安全,所以不能把一些重要的东西放在里面,问为什么不安全。答到cookie的大小比后两者小的多,问他们分别有多大……)

    6.事件冒泡和事件委托

    7.箭头函数和普通函数的区别

    8.了解symbol吗(

    9.半像素问题是前端老生常谈的问题听过吗(没听过……)

    10.了解视口吗说一下

    11.出几道题

    'a'++ //输出?
    const obj = {  '2':3,  '3':4,  'length':2,  'splice':Array.prototype.splice,  'push':Array.prototype.push } obj.push(1); obj.push(2); console.log(obj); 

    var a =10;  (function(){   console.log(a);   a = 5   console.log(window.a)   var a = 20;   console.log(a);  })()
    setTimeout(_=> console.log(1));  new Promise(resolve =>{  resolve()  console.log(2)  }).then(_=> {  console.log(3)  Promise.resolve().then(_=> {  console.log(4)  }).then(_=> {  Promise.resolve().then(_=> {  console.log(5)  })  }) })  console.log(6)

    顺丰二面

  • // 求出现次数最多的数字出现的次数 // [2, 3, 4, 4, 2, 5, 2] ==> 3 const maxRepeatedCount = (arr) => {  var max = 0;  var obj = {};  for (let i = 0; i < arr.length; i++) {  if (arr[i] in obj) {  obj[arr[i]]++;  } else {  obj[arr[i]] = 1;  }  if (max < obj[arr[i]]) {  max = obj[arr[i]];  }  }  return max; }
    // 数据过滤及转换 // [ [true, 'value1'], [false, 'value2']] // ==>  // [{ value: 'value1' }] const normalizeData = (arr) => {  return arr.reduce(function (pre, cur) {  if (cur[0]) {  pre.push({ value: cur[1] });  }  return pre;  }, []); }
    // 深度遍历转换 [{  codeName: "name1",  codeValue: "value1",  nodeList: [{  codeName: "name11",  codeValue: "value11",  nodeList: [{  codeName: "name111",  codeValue: "value111"  }]  },  {  codeName: "name12",  codeValue: "value12"  }  ] }, {  codeName: "name2",  codeValue: "value2",  nodeList: [{  codeName: "name21",  codeValue: "value21"  },  {  codeName: "name22",  codeValue: "value22"  }  ] }]  // ==>  [{  label: "name1",  value: "value1",  children: [{  label: "name11",  value: "value11",  children: [{  label: "name111",  value: "value111"  }]  },  {  label: "name12",  value: "value12"  }  ] }, {  label: "name2",  value: "value2",  children: [{  label: "name21",  value: "value21"  },  {  label: "name22",  value: "value22"  }  ] }] const dfsBasedTransform = (arr) => {  }

    涂鸦智能一面

    1.计算机网络的协议,他们分别在什么哪一层?

    2.有个很重要的http协议你没说,你能说一下http协议1.0和2.0的区别吗?

    3.那你知道http和https的区别吗

    4.http状态码有哪些

    5.浏览器存储有了解吗(讲了强缓存和协商缓存)

    6.一般什么文件用强缓存下,什么东西用协商缓存?

    7.xss攻击和XSRF攻击了解吗,攻击形式?怎么样抵御这些攻击?

    8.跨域是什么?

    9.你知道的跨域方法?

    10.为什么jsonp可以跨域?

    11.进程和线程的区别

    12.浏览器是多线程还是单线程?

    13.说一下浏览器从输入url到展示内容中间发生了什么?

    14.说一下事件循环(宏任务,微任务,还将了浏览器和node的事件循环的区别,又提了新版node已经向浏览器看齐)

    15.事件循环代码题,说输出

    16.说一下闭包

    17.闭包会带来什么问题?(内存泄漏)

    18.为什么会造成内存泄漏

    19重绘和回流说一下

    20.什么样的场景会发生重绘和回流?

    21.重绘和回流谁的开销更大?

    22.flex布局有了解吗?

    23.position的几个属性说一下

    24.说一下absolute?

    25.promise解决的是一个什么问题?

    26.常把promise用在哪里?

    27.react里setstate用完直接打印它的值得到的结果不是正确值为什么?

    28.那为什么把他放在一个定时器里就能得到正确的值

    29.asycn await

    30.简历里有写正则表达式,想问正则表达式的题目

    31.vue比较熟悉还是react?(react)

    32.react比较熟悉新版还是旧版?(旧版)

    33.怎么理解react的单向数据流

    34.react生命周期(说了旧版的生命周期,顺便说了新版和旧版的一些区别)

    35.为什么新版要做这些改变?

    36.怎么样优化react性能,减少重复渲染?

    37.你知道的数据结构

    38.栈和队列的区别

    39.git的常用命令

    40.还想问node,我说我不会

    41.最后问是选手撕继承还是手撕防抖节流

    北森一面

    1.盒模型

    2.css的引入方式

    3.浮动是什么?怎么清除浮动?

    4.判断js数据的类型?

    5.手撕代码。写个快排

    6.手撕代码。

    // 给定数据,大意是输入数字,返回数字,输入字符串,返回去掉字母的部分,如果全是字母,返回NaN // 123 -> 123 // "12a4d3s"->12345 // "123"->123 // “abc”->NaN

    7.说一下原型和原型链,原型是什么?原型链又是什么?什么东西有prototype属性,什么东西有__proto__属性

    8.闭包是什么,为什么会产生闭包?

    9.防抖和节流,使用场景,分别讲一下他们具体怎么做(描述概念,比如节流是控制单位时间内事件发生的次数)

    10.事件的传播过程(讲了事件冒泡和事件捕获)

    11.深浅拷贝。分别说一下怎么实现深浅拷贝。JSON.parse(JSON.strngify(obj))会带来什么问题?(对象内部是函数,或者嵌套互指的函数),那用什么方法解决(遍历拷贝),我反问,还有别的方法可以实现深拷贝吗?(没有了~)

    12.call apply讲一下

    13.sass和css的区别

    14.反问

    北森二面

    一开始面试官为了缓和气氛先进行了闲聊

    1.为什么想来北京,我怕你来北京适应不了,气候饮食什么之类的差别很大,又是女孩子

    2.为什么会想做前端?

    3.看了你的项目,能不能和我描述一下你做前端这么就最有技术成就感的一件事情?

    4.url按回车以后发生了什么?

    5.你刚刚提到页面的渲染,如果遇到js和css会发生什么?

    6.为什么TCP连接的建立需要三次握手?

    7.说一下操作系统的死锁

    8.说一下原型?(答了prototype和proto之间的关系),又问了原型链,又从原型链问到继承,问原型链继承的缺点,又问为什么用借用构造函数继承(

    9.手撕代码

    // 给定一个数组[2,4,3,6,7,9] 和sum值 9 // 输出[0,4] // 找出从左往右遇到的第一个让两数之和等于sum值的数的下标序号 比如最先遇到的应该是2+7=9,返回他们的序号 // 不存在输出-1  // 一开始和面试官说二重循环扫两遍就能得到结果,面试官说要求时间复杂度O(n) // 然后提出了用对象存储元素下标的思路,面试官说可行,没有要求空间复杂度。  function searchSum(arr, sum) {  let res = []  let obj = {}  for (let i = 0; i < arr.length; i++) {  if (!(arr[i] in obj)) {  obj[arr[i]] = i;  }  }  for (let i = 0; i < arr.length; i++) {  let tmp = sum - arr[i];  if (tmp in obj) {  res.push(i)  res.push(obj[tmp])  return res;  }  }  return -1; }  arr = [2, 4, 3, 6, 7, 9] sum = 9 console.log(searchSum(arr, sum));  

    10.

    // 给定系列的标号 1  1.1  1.1.1  1.1.2 2  2.1  2.1.1  // 问你会设计一个什么数据结构去存储?

    网易杭研一面怼怼怼经

    过程太过惨烈,我就随便回忆一下吧。

    1.之前投过有道,你觉得你表现的怎么样?现在再来面你之前答过得那些题你觉得你能答上来多少?

    2.react了解多少?你能讲一下虚拟dom嘛,虚拟dom是个啥?你知道虚拟dom是怎么构建的吗?为什么要虚拟dom?

    3.原生js了解多少?能不能讲一下事件委托?事件委托会存在什么问题?(实在想不到)所以你觉得事件委托没有问题是吗?

    4.微任务是什么?宏任务和微任务有什么区别?

    5.ES6的语法了解多少?讲一下你了解的promise。

    6.node了解吗?asp听过吗?

    7.webpack懂得多吗?你知道wepack是个啥吗?工作流程是什么?(大概回答了一些,其中提到了寻找模块依赖)你知道模块依赖通过什么方式寻找吗?为啥要用webpack?

    8.你知道为啥js是脚本语言吗?脚本语言有啥特点?你知道编译型语言和解释型语言的区别吗?为啥要分编译型语言和解释性语言?js可以编译吗?

    9.编译原理学过吗?语法树构建在哪个阶段?(其实是不知道,就随便说了一点),你觉得学前端不要学编译原理吗?我看你编译原理也学的不是很好啊,那你还会啥?(想说会数据结构……还没说出口)面试官就说,好了我没啥想问的了,今天先这样吧。结束视频hhhh。

    虾皮一面

    面了一个小时感觉身体被掏空

    HTML/CSS

    1.项目中用到的行内元素和块级元素

    2.行内元素和块级元素有什么区别

    3.给行内元素设置margin和padding会怎么样

    4.如何隐藏一个元素?

    5.dispaly:none/visibility:hidden/opcity:0有啥区别?给他们所在的元素绑定dom事件,会触发吗

    6.水平垂直居中的方法?(flex布局,transform:tranlate(这个问了实现的细节))

    7.footer元素,希望页面不够一屏的时候,显示在浏览器的底部,页面超过一屏的时候,显示在页面的底部。问怎么实现(懵,面试官提示:flex)


    js

    1.说一下this

    2.说一下输出

    function foo() {  console.log( this.a ); }  function doFoo() {  foo(); }  var obj = {  a: 1,  foo: doFoo };  var a = 2;  obj.foo();//2

    3.说一下原型链

    var F = function(){} Object.prototype.a=function(){}; Function.prototype.b=function(){}; var f = new F(); // 问f能不能调用a,b方法

    4.说一下性能优化

    5.说一下防抖节流,实现一下

    网络相关

    1.缓存相关的字段

    2.http1.x和http2.0的区别

    3.keep-alive和多路复用的区别,又问http2.0就真的不会阻塞吗?(灵魂拷问,会阻塞啊!那在哪里阻塞(直击心灵,不知道),最后面试官说实在tcp那里阻塞)

    4.http和https的区别(说了加密,证书还有完整性保护)面试官又问有详细了解过吗?(给他讲了https的加密策略时非对称加密+对称加密)


    ES6

    就问了let const var的区别

    console.log(a) let a=1; // 输出啥? // 会报错啊……(面试官听完就没继续问了……)


    框架相关

    1.setState()是同步还是异步的……(异步),面试官反问,那它可以同步吗?(我:可以把,那啥时候会同步呢?)

    面试官说:这是我想问你的…………(现在懂了233)

    2.有没有看过react源码?看过哪些模块的?


    算法与数据结构

    递归的版本,非递归中序遍历

    百度面试


    一面

    全部手撕编程,撕过了进入下一面233

    1.三列布局

    2.实现一个整数转化为千分位的函数,举例:输入为67212,输出为67,212(正则表达式实现)

    3.实现节流,立即执行版本

    4.爬楼梯你在爬楼梯,需要n步才能爬到楼梯顶部

    每次你只能向上爬1步或者2步。有多少种方法可以爬到楼梯顶部?

    5.原型链继承

    JavaScript 采用原型继承,即一个对象继承自另外一个对象,另外一个对象再继承自别的对象,依此往复。请写一个通用的 JavaScript 函数,来找出某个对象身上的某个属性继承自哪个对象。 function findPrototypeByProperty(obj, propertyName){ // 请实现函数体 } 使用举例: const foo = {a: 1} const bar = Object.create(foo) bar.b = 2 const baz = Object.create(bar) baz.c = 3 console.log(findPrototypeByProperty(baz, "c") === baz) // true console.log(findPrototypeByProperty(baz, "b") === bar) // true console.log(findPrototypeByProperty(baz, "a") === foo) // true

    二面

    只问了一道编程题

    https://www.baidu.com?foo=bar&key=value => {  foo: 'bar',  key: 'value' }

    1.原型和原型链

    2.深浅拷贝

    3.array里的assign方法,实现的是深拷贝还是浅拷贝

    4.如何创建一个原型对象为空的对象

    5.浏览器缓存

    6.盒子模型,box-sizing

    7.常用的数据结构

    大概就这么多啦~~希望对大家有帮助~也感谢今年来在牛客网上给我提供过帮助的(写面经的大家~)小伙伴~
    希望大家都能找到适合自己的工作~~

    更多模拟面试

    全部评论

    (15) 回帖
    加载中...
    话题 回帖

    相关热帖

    近期热帖

    历年真题 真题热练榜 24小时
    技术(软件)/信息技术类
    查看全部

    近期精华帖

    热门推荐