前端面经 - 字节、百度、阿里、腾讯

接着奏乐,接着舞~


—— 字节跳动 实习 ——

一面(教育部门) 2020.6.30
  1. 自我介绍
  2. 项目难点
  3. uni-app的底层实现原理(如何实现跨平台的)
  4. uni-app和flutter的区别
  5. 提到的 (vuex里的) actions 是做什么的
  6. 为什么要用key
  7. key用index和id的区别
  8. 原型链的了解
  9. typeof判断数组结果是什么
  10. instanceOf呢
  11. this指向的一些题打印结果
  12. bind call apply
  13. 异步处理方式
  14. try catch能抛出promise的异常吗
  15. 和.then .catch有什么不同
  16. 事件循环原理
  17. 数组的一些操作方法
  18. 编程:
  • 最长不重复子串的长度
  • 每隔1s打印0~n(问原因和原理)

二面 2020.6.30
  1. 自我介绍
  2. Axios的原理
  3. 原生ajax对XHR怎么做处理的
  4. 对Fetch有了解吗
  5. Fetch第一次请求之后返回什么(204)
  6. Options请求有请求体吗
  7. Http请求有哪些参数
  8. Http有哪些请求方式
  9. Put和Post的区别
  10. 提交表单content-type是什么类型
  11. 提交表单还有哪些类型
  12. 哪种更好更通用
  13. 上传文件content-type是什么类型
  14. 移动端自适应适配布局的实现方法
  15. new期间发生了什么
  16. vue组件通信方式
  17. 兄弟组件的通信方式
  18. vue3.0的新特性
  19. 说一下proxy的原理
  20. 说一下vue双向绑定的实现
  21. 编程:
  • 检查回文字符串(英文大小不敏感)(忽略除英文以外的字符)
  • 抓石子问题(可能出现的情况)(可能性总数)(判断必胜情况)

三面 2020.7.3
  1. 自我介绍
  2. 项目难点
  3. 项目中vuex的难点在哪?
  4. 进程和线程的区别
  5. 进程间怎么通信的
  6. 什么是死锁
  7. 介绍304状态码
  8. Http协议是哪一层的
  9. 讲一下TCP传输过程
  10. 为什么断开连接有四次
  11. 讲一下Options请求是干嘛的
  12. 同源策略
  13. 跨域的解决方案
  14. JSONP的原理
  15. CORS中Options的作用
  16. 给你一些url,判断是不是跨域
  17. webpack中的loader
  18. 编程:
  • 给定任一数组和数字n
    求加和大于等于n的最短连续子数组的长度


—— 阿里巴巴 校招 ——

一面(淘系)2020.7.6
  1. 自我介绍
  2. 项目介绍
  3. 开发一个小程序的流程
  4. 小程序服务器域名如何配置
  5. taro和uni-app的区别
  6. react生命周期
  7. vue的传值方式
  8. 什么是原型链
  9. 什么是闭包 举个例子
  10. 虚拟dom作用
  11. 讲一下diff算法
  12. 什么情况下虚拟dom反而不适用
  13. 说一下常见的web安全问题
  14. 讲一下XSS和CSRF是怎么攻击的
  15. 讲一下对Cookie的了解
  16. // 打印结果
    Function.prototype.a = 1;
    Object.prototype.b = 2;
    
    function A() {}
    var a = new A();
    
    console.log(A.a, A.b);
    console.log(a.a, a.b);
    console.log(Function.b, Object.a);
  17. 编程:
  • 编写一个函数来查找字符串数组中的最长公共前缀。(如果不存在公共前缀,返回空字符串 "")

二面 2020.7.7
  1. 自我介绍
  2. 对项目的详细提问(项目难点、登录权限的控制的实现、后台数据的存放等等)
  3. 小程序开发和其它前端开发的区别
  4. 响应式布局实现
  5. 顶部固定,下面撑满的布局怎么实现
  6. 如何判断是移动端还是PC端
  7. user-agent是什么
  8. session的了解
  9. session是服务器端机制还是客户端
  10. flex的一些关键字
  11. 动画怎么实现
  12. canvas怎么控制动画
  13. requestAnimationFrame和定时器的区别
  14. JS正则表达式提取一段url中的电话号码
  15. MVVM和MVC的区别
  16. MVC的框架有哪些
  17. 对Spring有了解吗
  18. 了解IOP吗
  19. koa洋葱圈模型
  20. 状态管理容器有哪些
  21. vuex和redux的区别
  22. 异步处理方案
  23. 批量处理promise对象,拿到全部返回结果后一次性处理,怎么解决
  24. try catch能不能捕获promise抛出的异常
  25. 怎么去捕获抛出的异常
  26. 跨域产生的原因
  27. JSONP原理
  28. JSONP如何处理服务器端传回来的数据
  29. git的一些常用指令
  30. 如何解决git冲突
  31. 什么时候开始接触计算机
  32. 学习前端多久了
  33. 为什么选择前端
  34. 了解了一些比赛的项目和奖项

一面(淘菜菜) 2021.6.8
  1. 自我介绍
  2. 问项目(挺多,省略)
  3. 图片懒加载,没展示的时候使用占位符代替,如何让占位符根据图片尺寸大小自适应
  4. JS基本数据类型
  5. 使用哪些数据类型时候需要注意
  6. 如何判断null、undefined、空值
  7. 如何判断数组
  8. 如何判断所有类型
  9. instanceOf原理
  10. 原型链
  11. ES6用过哪些
  12. ES5中知道哪些继承方式
  13. 如何实现原型链继承
  14. 闭包
  15. 哪些场景下用到了闭包
  16. 防抖和节流,如何使用的闭包
  17. 闭包和自执行函数的关系
  18. 什么是事件冒泡
  19. 如何阻止冒泡
  20. 什么是移动端的事件穿透
  21. 如何解决事件穿透
  22. 用过哪些HTTP请求库
  23. 如何解决跨域
  24. CORS是怎么去做的
  25. 什么时候是非简单请求
  26. HTTP状态码
  27. 204状态码代表什么意思
  28. 知道哪些本地存储方式
  29. localstorage和sessionstorage的区别
  30. 如何实现将一个复杂的对象结构数据扁平化为数组结构

二面 2021.6.9
  1. 自我介绍
  2. 为什么选前端、学了多久、如何学的
  3. 看过哪些源码、为什么会去看
  4. sort方法的底层实现
  5. vue2.x、3.x的双向绑定底层实现
  6. taro、uni-app的跨端底层实现
  7. CSS高清模式了解吗
  8. 函数声明和变量声明的区别是什么
  9. 函数声明和函数表达式的区别是什么
  10. 箭头函数和普通函数的区别
  11. 在一个类的内部,用this声明一个方法或者属性 和 在prototype上声明一个 new 创建的 方法或者属性,两者有什么区别
  12. 用这个类去实例化两个对象,在上面的两种情况中,哪种情况下 改变其中一个对象会影响另一个对象
  13. 什么是闭包
  14. 什么是内存泄漏
  15. 垃圾回收机制
  16. 如何解决跨域
  17. 上面说的这些方法的区别是什么,分别是怎样的适用场景
  18. http的过程
  19. https的过程
  20. 问实习、项目、比赛(挺多,省略)

三面 2021.6.11
  1. 问实习、项目
  2. taro、uni-app跨平台实现原理
  3. 为什么会去做Flutter,你觉得这个属于前端方向吗?
  4. 为什么选前端,不做客户端、服务端(有项目经验)
  5. 封装一个组件需要考虑哪些因素
  6. 什么是低代码,低代码存在的意义
  7. 如果要你去做一个C端应用,你觉得需要关注哪些东西
  8. 需要关注的性能数据指标有哪些
  9. http2.0的新特性
  10. http2.0能被抓包到吗
  11. 在小程序中,用户去分享一条消息,每个用户有唯一标识,但很有可能会被别人窃取,那我们如何去避免呢
  12. 在微信中,用户发送一条消息,消息包含一个域名链接(指向其它应用),但是会被微信屏蔽掉,如何实现快速切换域名策略来解决这个问题
  13. TopK的思路
  14. 你觉得你比其他人的优势体现在哪里


— 百度 校招 ——

一面(智能小程序) 2020.9.26
  1. 自我介绍
  2. 项目难点
  3. px em rem区别
  4. echarts和g2的区别
  5. 闭包的使用场景
  6. 闭包的优缺点
  7. 异步解决方案
  8. var let const 的区别
  9. /*
    **    以下为两块代码,分别执行的打印结果
    */
    
    for(let i=0; i<3; i++) {
        setTimeout(() => {
            console.log(i)
        }, 1000)
    }
    
    for(var i=0; i<3; i++) {
        setTimeout(() => {
            console.log(i)
        }, 1000)
    }
  10. 深拷贝和浅拷贝的区别
  11. 深拷贝的实现(面试官希望听到的是JSON序列化和反序列化的方法)
  12. 了解vue哪些生态
  13. vue的双向数据绑定原理
  14. 如何进行数据劫持的
  15. object.defineProperty如何修改对象或者数组
  16. vue生命周期
  17. vuex解决了什么问题
  18. express和koa的区别
  19. CommonJS和ES module的区别
  20. amd和cmd的区别
  21. url到页面加载的过程,每个阶段发生了什么
  22. 编程:
  • 手写 快排

二面 2020.9.26
  1. 项目经历
  2. 实习经历
  3. 学习经历
  4. 了解百度小程序吗
  5. css选择器有哪些
  6. 选择器优先级
  7. 选择器权重怎么计算
  8. display有哪些属性,分别代表什么意思
  9. position有哪些属性,分别相对什么定位
  10. typeof实现原理
  11. instanceof实现原理
  12. typeof能判断哪些类型
  13. typeof null 打印什么 为啥
  14. typeof 数组 打印什么
  15. 如何判断数组和对象
  16. 冒泡、捕获的区别
  17. 如何阻止冒泡
  18. setTimeout和setTimeInterval的区别
  19. 如何确保时间不被篡改
  20. node做过什么
  21. node的 EventEmitter做了些什么
  22. 了解哪些JS继承方式
  23. 编程:
  • 实现 两边固定中间自适应布局
  • 多叉树深度搜索遍历
  • 寻找数组中第k大和第中间大的值(要求手撕冒泡)
  • 秒杀系统倒计时控制按钮可点击
  • call和apply实现的js继承(lz太菜了不会这个,改成了写个原型链继承)

三面 2020.9.26
  1. 自我介绍
  2. 实习介绍
  3. 为啥学前端
  4. 如何学习的前端
  5. 看过哪些书籍
  6. 如何看待前端技术迭代快这件事
  7. 职业规划
  8. 对架构有什么了解
  9. 学习方向选择广度还是深度
  10. 实习学到的东西
  11. Seo优化方法
  12. 实习中有没有提过意见被采纳
  13. 学校里最遗憾的事情
  14. 学校里最难忘的事情
  15. 参加过哪些比赛
  16. 哪场比赛让你印象深刻,最后获得了什么结果
  17. 你觉得你的优势是什么
  18. 你有哪些不足的


—— 腾讯 校招 ——

一面(CSIG)2020.10.26
  1. 技术熟练度介绍
  2. 行内元素和块级元素区别
  3. position属性区别
  4. 绝对定位相对以content、border、padding哪一个为源点
  5. 用过哪些布局
  6. flex布局属性
  7. flex实现垂直居中
  8. 父元素300px 子元素A flex: 1 子元素B flex: 2 问子元素宽度
  9. 如果父元素宽度只有200px 子元素A flex-basis 100px 子元素B flex-basis 200px 问宽度
  10. css选择器优先级
  11. vue中样式穿透原理 scoped原理
  12. 实现一个不知道宽高的正方形
  13. 盒模型有几种
  14. 回流和重绘,什么操作会引起回流,什么操作会引起重绘
  15. 加载很多个只有几k的小图片会出现什么问题,如何解决
  16. TS和JS区别,为什么要用TS
  17. js原型链
  18. instanceOf原理 具体怎么实现的
  19. js异步和同步区别
  20. 讲一下事件委托
  21. 事件冒泡的每个阶段
  22. vuex的模块有哪些
  23. actions和mutations区别
  24. vuex异步用哪一个模块
  25. vue-router路由两种模式,以及它们的区别,什么时候用哪个
  26. 使用history模式要注意些什么
  27. 如何配置对应路由处理
  28. 浏览器解析html过程
  29. 浏览器缓存
  30. 协商缓存有哪些字段
  31. get、post请求区别
  32. 为什么post要发送两个数据包
  33. 网络的七层协议
  34. udp、tcp在哪一层
  35. DNS解析过程
  36. tcp和udp区别
  37. 为什么tcp比udp快
  38. 数据库里的事务
  39. 外连接和内连接区别
  40. 死锁是什么
  41. 怎么预防死锁
  42. taro底层实现原理
  43. 项目介绍
  44. 项目难点
  45. 为什么换成uni-app
  46. 编程:
    • 找出所有最长连续重复字符子串
    • 计算m到n区间内能被k整除的值的个数

二面 2020.10.31
  1. 自我介绍
  2. 对数据结构了解
  3. css3
  4. 弹性盒子布局
  5. flex 实现 垂直水平居中
  6. rem 和 px 区别
  7. js 和 C语言区别
  8. 对面向对象的了解 以及 其特性
  9. 闭包
  10. 原型链
  11. 异步 和 同步特性
  12. 宏任务 和 微任务
  13. 数组的方法
  14. 讲一下深拷贝 和 浅拷贝
  15. ajax 原理
  16. ajax 如何实现异步请求的
  17. react 和 vue 区别
  18. vue 双向绑定原理
  19. 为什么object.defineproperty不能监听数组和对象
  20. 如何让它能够监听呢
  21. v-if实现原理
  22. vuex工作原理
  23. vuex解决了什么问题
  24. vuex如何改变数据的
  25. webpack用来做什么 为什么要用 不用不行吗
  26. cookie 和 session
  27. get 和 post 区别
  28. 为什么会有跨域
  29. cors原理
  30. git rebase 了解吗
  31. uni-app 和 taro 区别
  32. uni如何实现跨平台
  33. flutter 如何实现跨端
  34. node做过什么
  35. koa框架说一下
  36. 编程
    • 手写 dfs
    • 实现 左侧菜单栏
    • 实现 深拷贝

三面(2个半小时,很多不记得了....) 2020.11.1
  1. 自我介绍
  2. 实习介绍
  3. .....(一些常见人生规划问题)
  4. 小图片优化问题(说出尽量多的解决方案)
  5. iconfont如何配置
  6. 知道哪些前端优化,举出几个场景
  7. 实现正方形展示小图片
  8. 图片如何自适应
  9. 窗口垂直水平居中(说出尽量多的解决方案)
  10. px和rem区别
  11. rem原理
  12. viewport是什么,属性有哪些
  13. 回流和重绘是什么,如何产生的
  14. display: none 和 visibility: hidden 区别
  15. var a = [1,2,3]
    var b = a
    b.push(4)
    console.log(a)
  16. 如何实现数组复制呢(ES5、ES6的解决方案)
  17. 浅拷贝 和 深拷贝
  18. 原型链
  19. 链顶端是什么
  20. "aa.".rightTrim()
    // 实现这个函数
    // 面试官的意思就是 在原型链上添加一个这个方法
  21. js 如何自定义事件
  22. 如何删除事件,删除事件放在哪
  23. js 如何自定义属性
  24. 如何实现 .once
  25. js如何获取cookie
  26. 如何删除cookie
  27. cookie哪些属性
  28. ajax原理
  29. ajax如何处理原生xhr对象
  30. vue双向数据绑定(vue2.0、vue3.0)
  31. obeject.defineProperty是如何确定给指定值添加监听的
  32. 组件通信方式
  33. vuex工作原理
  34. webpack工作原理
  35. node如何搭建一个服务
  36. node用过什么模块
  37. 浏览器渲染html机制
  38. 如何构建的dom树
  39. http缓存(强缓存 / 协商缓存)
  40. expires、cache-control、etag、last-modified 分别讲一下
  41. http报文讲一下结构
  42. 请求行有哪些东西,顺序是怎样的
  43. 能通过http报文知道哪些东西
  44. post和get区别
  45. 什么时候用get呢
  46. https原理
  47. http1.0 和 http2.0区别
  48. 多路复用是怎样的
  49. http过程
  50. tcp传输过程
  51. dns解析过程
  52. 同源策略
  53. 为什么会有跨域
  54. jsonp原理
  55. 怎么转成JSON格式
  56. cors讲一下如何解决跨域的,需要设置哪些参数
  57. 什么情况下是非简单请求
  58. 非简单请求是怎样的一个过程
  59. base64原理
  60. base64缺点
  61. 对数据库的了解
  62. web攻击方式有哪些(xss、csrf、sql注入、ddos等等?)
  63. XSS讲解
  64. 如果是你,如何进行XSS攻击(带场景)
  65. 如何防范XSS攻击
  66. 线程和进程区别
  67. 什么是死锁
  68. 如何解决死锁
  69. git 如何临时保存 然后切换分支不会丢失
  70. let url = "https://www.xxx.com?url=https://www.xxx.com/a.jpg"
    // 如何获取到图片路径
    
  71. 如何解决死锁
  72. 编程
  • 从-10 到 10,找出所有满足 三个数之和等于10的组合(三个数不重复、组合不重复), 例如 { -1, 1, 10 }
  • 三个数不重复: 例如 { 1, 1, 0 }, { 1, 1, 1 } 算重复。
  • 组合不重复:例如 { 1, 2, 3 }, { 3, 2, 1 }, { 1, 3, 2 }.... 算重复。

四面 2020.11.6
  1. 自我介绍
  2. 技术栈
  3. vue和react区别
  4. vue双向绑定原理,具体如何实现的
  5. 浏览器占用cpu或内存过高是什么原因,怎么追踪原因
  6. 如何在移动设备真机上进行调试
  7. 移动设备cpu 和 pc端cpu 的区别(拉跨)
  8. 如何实现一个数据很多的长列表(虚拟列表)
  9. 如何保证展示可视区域的数据
  10. 如果用户恶意滚动(不停的滑动)会出现什么问题,如何解决
  11. 防抖和节流怎么做
  12. 怎么获取当前滚动到的区域高度、位置
  13. sessionStorage 和 localStorage 区别


—— 字节跳动 校招 ——

一面(商业变现)2020.10.28
  1. 自我介绍
  2. 移动端1px问题
  3. vue 3.0 做了哪些变化
  4. composition API详细说一下
  5. proxy代理做了些什么
  6. proxy实现上 做改动
  7. 对promise熟悉吗
  8. 说一下promise.all
  9. 用过装饰器吗(只用过ts库里的,没用过ES7的)
  10. 函数能用装饰器吗
  11. webpack和babel了解吗
  12. babel如何将ES6转ES5的
  13. webpack的 loader和plugins
  14. webpack 5.0了解吗
  15. node熟悉吗 平时用什么框架
  16. 什么是死锁
  17. 如何解决死锁
  18. http是哪一层
  19. tcp为什么挥手要四次
  20. 304状态码
  21. 缓存机制有哪些
  22. 协商缓存有哪些字段
  23. etag有什么其它字段要求
  24. 为什么浏览器不能跨域
  25. 为什么不允许跨域
  26. 如何防止cookie欺骗
  27. taro和Uni-app如何实现跨端的
  28. Hbuilder内核
  29. 编程
    • 实现proxy代理
    • 实现promise.all
    • 爬楼梯问题(斐波拉契)
    • Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), determine if a person could attend all meetings.

      Example 1:
      Input: [[0,30],[5,10],[15,20]]
      Output: false

      Example 2:
      Input: [[7,10],[2,4]]
      Output: true
    • 上个问题的演变, 改成输出最少需要多少间会议室。

二面(记错面试日期了,迟到了半个小时...,GG) 2020.11.3
  1. 实习介绍
  2. // 求打印结果 以及 原因
    
    function outer() {
        var arr = []
        for(var i=0; i<2; i++) {
             arr[i] = function inter() {
                return i
             }
        }
        return arr
    }
    var res = new outer()
    console.log(res[0]())
    console.log(res[1]())
  3. 两列布局实现方式(Grid?)
  4. 浏览器事件模型 以及 每个阶段
  5. 事件委托
  6. http1.0 1.1 2.0 3.0特性
  7. http2.0 头部压缩 如何确保两边的header索引表一致性
  8. https过程
  9. 为什么先非对称加密再对称加密
  10. 如何验证数字证书的
  11. DNS过程
  12. DNS是查找什么
  13. DNS缓存
  14. 跨域CORS请求原理
  15. 什么时候是非简单请求
  16. 非简单请求是怎样的
  17. 编程
    • 实现 观察者模式(发布 / 订阅)模式
    • 反转链表
    • 闭包实现函数柯里化,例如 sum(1)(2)() => 3


“  招你来是造火箭的,但你得先会拧螺丝。”
#面经##前端##阿里巴巴##腾讯##百度##字节跳动#
全部评论
我服了呀,是我太废了,我连这些问题都看不懂
1 回复
分享
发布于 2020-07-01 20:51
您好,请问楼主投的是什么部门?
1 回复
分享
发布于 2020-07-02 08:55
阿里巴巴
校招火热招聘中
官网直投
uniapp的底层实现原理lz怎么回答?
1 回复
分享
发布于 2020-07-02 09:06
现在前端都不屑于问CSS了吗🤣我觉得这部分才是最难的吧
1 回复
分享
发布于 2020-07-02 09:37
我明天面试JAVA前端,不知道会不会问类似问题..........看到楼主的这些问题我都有点蒙圈了.....
1 回复
分享
发布于 2020-07-05 01:12
请问面试手撕代码的时候,链表题的话,链表是要自己写ListNode去创建还是是像leetcode那样已经给好的呀
1 回复
分享
发布于 2020-07-05 04:21
太强了~!
1 回复
分享
发布于 2020-08-29 19:16
楼主你好呀😁请问涂鸦智能一面过了吗
点赞 回复
分享
发布于 2020-09-11 08:56

相关推荐

25 95 评论
分享
牛客网
牛客企业服务