秋招面经1
#
1. VivoVivo 是我最早面的一个,貌似也是最早开提前批的厂,Vivo 提前批怎么说...简历过了感觉就是送 offer,一个很水的技术面 + HR 面,然后就发带薪 Offer 了... 建议都可以投一波,先拿个 offer 再说。
#
一面一面 18 min 左右,记错了面试时间很尴尬,被打电话提醒面试....
先是自我介绍,然后随便问了几个问题...
在面试十分钟左右的时候面试官就说什么问题要问了....不过后面为了面试时间还是再问了几个问题?...
下面的问题不是按顺序提问的,全凭印象记录
项目介绍
项目中的请求交互问题,ajax 和 fetch 有什么不同
css 可以被继承的属性
js 闭包
403 状态码什么意思,发生的场景
语句和表达式是什么
跨域问题
箭头函数和普通函数的区别
软件工程专业的话你有学过哪些知识
项目中有使用 threejs ,问了 threejs 的运行原理
项目中有没有遇到什么性能问题
vivo 那边是使用 vue 的,我没接触过,之前学习的是 react ,问我有什么看法
前端学习多久了
为什么会选择前端
#
2. 京东#
一面京东的面试体验还不错,面试过程比较轻松,更像是聊天,在交流的过程中穿插一些问题,一些不懂的点面试官也会解释。最后反问阶段面试官也回复得很详细。
不过还是挂了...面完说好等后面的电话,然后当天晚上再看的时候状态就是转推荐了...
- 为什么选择前端,说一下对前端的理解
- JS 基本数据类型
- 堆栈、引用类型
- 堆和栈的特性,那个效率高,为什么
- 什么情况下会造成栈溢出
- 静态链表和动态链表...不清楚
- HTTP 和 HTTPS,HTTPS不能防范哪些前端安全问题
- TCP 和 UDP
- 三次握手,为什么两次不行
- TCP 如何保证可靠
- 线程和进程,线程间的通信方式
- 红黑树和xxxx树有使用过吗?...没有,二叉树呢....
- TCP 拥塞控制
- 登陆验证,COOKIE 和 SESSION,SESSION会有什么问题,COOKIE大小
- GET 和 POST 的区别,用途,GET上传数据要注意的问题
- 从浏览器输入URL到页面展示过程
- 其他忘了
#
3.滴滴滴滴这个是在牛客的 SP 专场里投的,官网上貌似没有相关信息,所以到时候可以关注一波。
三轮面试是连着的,面完一场后如果过了的 HR 会通知你等一会儿进行下一轮面试,没有通知的话就是挂了...这边的面试是不分部门一起面的。
后面在八月多的时候,有人被加面(关于加面有几种说法, 一种是处于被挂边缘,一种是定职级,还有一种是因为你最后归属部门的 leader 想再面一下你),也有人是 HR 面,我是属于最后一类,没有加面也没有 HR 面然后发意向书的.
#
一面- 如何学习前端的
- JS 继承,组合继承是什么,它和原型继承相比解决了什么问题,ES6 的 super 中做了什么操作
- ES6 新特性
- 数组去重
- 计算数组的最大深度,写了两种:深搜 + 广搜
- 在不知道宽高的情况下的 div 水平居中布局方法
- css 中的 left、top 这些和 transform 属性有什么区别
- 有哪些方式能够不触发重排
- 任务队列,有哪些微任务
- hook 的出现是为了解决了什么问题
- 一个父组件中有十个函数组件或十个类组件,它们有什么区别(执行次数
- react 状态管理工具
- fiber 原理,为什么暂停后能够继续工作
- redux connect 方法原理
- redux 中 action 为什么要是同步的
- webpack 原理
- tree shaking 原理
- webpack 执行过程中是怎么进行模块分析的
- webpack 优化方法
- 页面渲染优化方法
#
二面react 中状态传递方式,有使用过其他什么状态管理工具吗
react 事件、事件捕获冒泡、什么事件会被先触发
一个场景题:有两个页面,这两个页面中有很多共同的地方,如一些数据展示、图表等等,那么要怎么设计实现呢。
考查组件复用,回答了 HOC,然后问十分钟能不能实现一下...回答 HOC 没怎么实践过,然后就换下一题了。
react 中的 key 有什么作用,回答用于提升 diff 的效率,然后问还有其他什么作用吗?
问 webpack ,是直接使用 create-react-app 这样的脚手架配置还是自己有进行一些额外配置。
出了几个题,主要是变量提升和作用域的。
然后问 this,让手写一个 call、apply
然后一个简单的算法题,给两个数组,数组中什么都有,让找出两个相加为 100 的元素,要求效率尽可能高,问还能比 O(n) 更快吗?
setState 是同步的还是异步的
其他忘了
#
三面- 项目介绍
- 写 shader 吗,有看过threejs源码吗
- 在项目中有遇到跨域问题吗,为什么会有跨域限制
- 缓存流程
- 浏览器缓存(cookie、webstorage、indexDB..)
- 事件循环机制
- 双等号和三等号
- css 实现 0.5px 的线
- transform、translate、transition 介绍,平时有用哪些
- 深拷贝、浅拷贝,结合你的项目说一下
- 闭包,解决了什么问题,带来了什么问题
- 设计一个轮播图,说一下思路,轮播图移动要怎么实现,如果想要轮播图开始快,后面慢怎么办
- 五分钟,写一个递归的二分查找,写完后问若查找的数字有多个怎么办,要怎么修改
- 你相比于其他人有什么优势吗
- 读研方向怎么定的
- 对前端的哪方面感兴趣
- 目前在学些什么
- ts 了解吗
- 除了 JS 还有学些过哪些语言,平时还会用什么语言
- 如果让你重新写你的项目,你会做哪些改进
- 其他忘了...
#
4.百度#
一面一面是电话面,通话质量不太好,因此面试体验差了点。
- MVVM
- React 是什么模式
- 前端优化方法
- tree shaking 原理
- css 优化
- BFC
- 事件循环
- 闭包
- 垃圾回收
- 浏览器缓存
- http介绍
- tcp介绍
- http 和 tcp 的关系
- http 方法
- 上传数据用什么方法
- 什么情况使用 redux
- hooks 原理
- useEffect 和 useLayoutEffect
- 父子组件交互方法
- xhr 和 fetch
- 前端开发遇到过的困难
#
二三面二三面是去现场面试的,本着面试 + 参观的想法去,不过面完感觉亏大了,首先上海这边的百度研发中心不大,也没参观啥,就看看大门了....然后面试是在一个公共场合,旁边有很多人在讨论问题,面试环境不太友好...
最坑的是三面面完问了一下面试官这个岗位有几个HC,面试官居然还回答我了(1个)!!!
问面试结果什么时候出来,面试官说很快,还需要和其他候选人比较一下...
我从学校来回三小时没了,面完回来还赶上地铁晚高峰,今天就当做是百度大门一日游了🙃
不过有一说一,尽管环境比较差,但是现场面试比线上面试体验不要好太多...现场面试和面试官交流起来完全不费劲,有什么想法也可以很及时的和面试官交流反馈,而且视频面试的时候还是会有点小紧张,但现场面试基本不会,比较放松
二面首先简单问了点前端基础,然后出了一道异步任务输出题(promise setTimeout)
然后是两个笔试题,第一个是写一个有任务数量限制的并发控制器,第二个是一个根据区域来分配节点,如 [{start: 8, end: 80}, {start: 15, end: 40}, {start: 30, end: 50}, {start: 81, end: 88}]
,然后根据区间来重新分配每个节点,每个节点有一个 children
属性用来保存被包裹的所有子节点。
两题都写了一些,但是都没做出来,最后只能和面试官交流了一下思路。(感觉基本没了)
三面更偏向于聊天,问了项目,问了设计模式、如何实现 mdx 解析器(mdx ,可以看做是 markdown 语法的一种拓展)、如何学习前端、未来的发展目标、为什么选择前端,前端领域的偏好、树的遍历、react fiber,还提到了 ts 和 web worker。
最后还是得吐槽一句,百度上海 HC 真是太少了啊😫
日后谈
百度一直拖着养鱼,每天望眼欲穿去官网上看状态,然而还是没有变化。就这样拖了快一个月居然收到了百度的人才测评,然后做完过两天就接到了 HR 电话,接着就是意向书。太惊喜了,本来认为基本是挂了,没想到来了个反转(承认存在侥幸心理)~ 还是觉得是因为去现场面试比较诚恳加了分~
#
5. 字节#
一面首屏优化方法
https 握手
面向对象三要素:继承、封装和多态
泛型
实现一个div半红半蓝,考察盒子模型的
下面组件会渲染几次:
const FC = () => { const [loading, setLoading] = useState(); useEffect(()=>{ setTimeout(()=>{ setLoading(false); setLoading(true); },0) },[]); console.log(1); return null;}
写一个函数 Foo,要求:
var a = new Foo() // => {id: 1}var b = new Foo() // => {id: 2}
实现一个 Cash 类,期望执行下面代码:
const cash1 = new Cash(105);const cash2 = new Cash(66); const cash3 = cash1.add(cash2);const cash4 = Cash.add(cash1, cash2);const cash5 = new Cash(cash1 + cash2); console.log(`${cash3}`, `${cash4}`, `${cash5}`); // 希望输出结果为:// 1元7角1分,1元7角1分 ,1元7角1分
判断链表是否有环
function ListNode(val, next = null) { this.val = val this.next = null}const node1 = new ListNode(1)const node2 = new ListNode(2)const node3 = new ListNode(3)const node4 = new ListNode(4)node1.next = node2node2.next = node3node3.next = node4node4.next = node2console.log(isListContainsLoop(node1)) function isListContainsLoop(root) { // your code.}
#
二面一二面是连着面的(中间间隔了十分钟左右)
flex 布局
盒模型
url 输入过程
React 生命周期
let const var
事件循环
useEffect 和 useEffectLayout 的区别
浏览器缓存
状态码
怎么学习前端的
有学习其他什么前端知识吗,平常做什么
看代码说答案
'use strict';var b = 2;if (true) { let a = 2; var b = 3; var c = 4; const d = 5;} console.log(a);console.log(b); console.log(c);console.log(d);var d = 6;
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案
全排列,力扣上有
示例 1: 输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3: 输入:nums = [1]输出:[[1]]
实现一个简单的 EventEmitter 类,once, on, off, emit方法
once
表示该类型的事件只触发一次就删除on
表示挂载一个类型的事件off
表示卸载一个类型的事件emit
表示对某一类型的事件进行一次分发看代码说结果
setTimeout(() => { console.log('setTimeout1')}) Promise.resolve().then(() => { console.log('promise1')}) setTimeout(() => { console.log('setTimeout2')}) Promise.resolve().then(() => { console.log('promise2')}) Promise.resolve().then(() => { console.log('promise3')}) console.log('script end');
本来三面要接着面,不过三面面试官有事,就换时间了,没想到...
#
三面三面没问什么八股文也没做题,上来聊了几句后就给了两个场景题,写了点伪代码 + 场景实现分析
第一个场景题:要实现一个搜索框该怎么做,讨论了一下,首先是防抖\节流,然后是异步请求和页面数据显示的问题,面试官提示可能后一个请求会先于前面的请求返回。
然后写的时候想复杂了,卡了好一会儿,在面试官的指点下定了一个简单的方案,就是根据当前输入框中的数据与请求结果进行匹配,只显示当前输入框中的返回数据,其余返回结果都抛弃或是中断正在进行的请求等。
第二个场景题:后端收到前端的这个搜索词条后,要进行模糊查找,不过现在有100W条数据(总之就是很多),要怎样高效的查找呢?
然后这些查找到的数据假设也有很多,但是前端只需要显示那么几条数据,该怎么处理呢?
还问了一些其他问题:
你是怎么学习前端的
说一下你的优点和缺点
什么时候能来实习
问了之前的一些经历
java 手写单例模式...忘了,这么经典的设计模型都忘了,我是 FW T_T
#
三面(二)之前第的三面蹦了,然后说加一轮面试,还以为是原来那个组的,面完才知道是同个团队下的其他组。
面完后没过多久 HR 就通知过了~
- 你觉得你前几轮面的怎么样(当然不太行...,说了自己觉得面蹦的地方
- 对之前没答好的知识是否有回顾,具体说了一下
- 单例模式、工厂模式及其应用举例
- 问项目及其相关内容
- JS里 new 运算符后发生了什么
- 如果要在屏幕上渲染一个立方体,鼠标拖动要能够旋转等,怎么做
- CSS 动画属性,举个最简单的动画效果例子要怎么实现
- 前端页面优化方法
- HTTP2.0
- CDN
- 懒加载怎么实现
#
6. 拼多多#
一面遇到了之前春招实习面试的面试官...我刚面的时候就发现有点眼熟,然后最后反问环节面试官说看我的简历也有点眼熟,之前面过一个简历里的项目很像的人,然后就互相认出来了哈哈哈
- 项目介绍,遇到的难点以及如何解决
- 修改过源码的库要如何和别人的开源仓库保持一致
- 对 ThreeJS 底层有什么了解
- 对游戏开发有了解吗,游戏渲染引擎有了解吗
- react 是用什么版本的
- 生命周期函数
- hooks 有了解过吗
- webpack 优化做过吗
- 前端安全,CSRF,POST 攻击怎么做,如何让用户感觉不到发起攻击,CSRF 相关的问了好久...还答的比较差
- 顺序数组合并
- 有什么擅长的但没问
- ES7 的 await 和 async 要怎么转为低版本代码
- babel 原理,像 await 这些 babel 是怎么做的
不过一面有点蹦,多亏了春招脸熟加成,不然可能就得挂了😅
#
二面- 项目介绍
- 最近有写什么代码什么项目吗
- 对 react 框架的看法和理解
- 对组件的理解
- 对类组件和函数组件的看法和理解,什么时候使用类组件什么时候使用函数组件
- state 和 props 的区别
- hooks,useEffect 的用法
- redux 流程
- 组件间的通信方式
- 手撕代码:按从小到大的顺序合并多个数组并去重
- let 、const 和 var
- 函数作用域,如何获得函数作用域中使用 var 申明的变量
- 箭头函数和普通函数的区别
- 如何改变函数的 this 指向
- flex 布局及其属性
- Flex布局实现在一个导航栏中,有两个固定宽高的元素,它们分别在最左和最右同时相对导航栏垂直居中
- flex-between 和 flex-around 的区别
- css 中的单位属性(px、%、vw、vh、em、rem)
- html 渲染步骤
- 哪些会阻塞页面渲染,除了 js 呢
- js 异步加载(async、defer)
- 如何计算页面的渲染时间
#
三面三面面试官人很nice,语气比较温和,基本全程都在微笑。面试过程更像是聊天,相比于其他面试会轻松很多,面试体验很棒
聊项目
为什么选择前端
对ThreeJS中光源和材质的了解
聊毕设
一道题:给定一个数组,无序,无重复值,值的范围为 1 - 100,但少了两个数,如何在一次遍历中求出
对 pdd 有什么了解
前前后后聊了快四十分钟