字节前端面经

一面:
1. 自我介绍
2. Event Loop读代码
3. js闭包概念,应用(防抖,节流)
4. 手撕每隔一秒输出数组中的一项,多种方式 setInterval,setTimeout递归,遍历setTimeout 时间为index*1000,async/await和Promise实现   await返回的是什么?Promise
5. css选择器优先级
6. 后端返回HTML到显示在浏览器中间发生了什么
7. http头设置什么可以用来获取用户ip地址?  没答上来
8. http状态码知道哪些,分别代表什么    100 102 200 201 202 301 302 304 400 401 403 404 500 503
9. 什么是虚拟DOM;
10. Vue数据响应式怎么实现的? 发布订阅模式11. 谈一下Vue的Diff算法
12. 浏览器路由?   History和Hash模式,当时答得不是很好 ,结合Vue-router讲的
13. 手撕代码
```js
请为所有数组对象添加一个flatten()方法, 返回其扁平结构
Q:    tip: 跳过[], null, undefined
/ test case1
[[[[[0]], [1]], [[[2], [3]]], [[4], [5]]]].flatten()     => [1,2,3,4,5]
// test case2 [['a','b'], [0,['a']], [false], null].flatten()     => ['a','b',0,'a',false]
//我的实现
let arr =   [[[[[0]], [1]], [[[2], [3]]], [[4], [5]]]];
let arr2 =  [['a','b'], [0,['a']], [false], null];    Array.prototype.myFlatten =  function (){               return  this.reduce(function(pre,cur,index){                   if(cur==undefined) return pre;                   else{
return Array.isArray(cur)?pre.concat(cur.myFlatten()):pre.concat(cur);                                          }                },[]);     }
let array = arr.myFlatten();
let array2 = arr2.myFlatten(    );    console.log(array2);
```    一面结束后现场通知的二面二面:
1. 自我介绍一下
2. 平时怎么学习前端的?
3. 三栏布局有哪些实现方式? 谈了float flex布局 relative+absolute  table-cell4. 用css 把色子 3 的那一面实现一下 ,只需要写布局部分即可   ```html   <div class='container' >       <div class="point"></div>       <div class="point"></div>       <div class="point"></div>   </div>   ```
5. 读代码,大概是一道this指向的题目,输出结果并且解释,好像是考察了返回匿名函数指向window
6. webpack了解吗?  我说只有用vue-cli自动配置,平时就使用proxyTable配置代理服务器,其他看过文档没有实践过。面试官说,没事,不是很熟悉就不问这个了
7. 配置代理服务器,所以追问了一下各种跨域方式以及具体的实现,这个之前去仔细了解过,大概答了JSONP前后端结合,CORS纯后端,代理服务器纯前端,以及不是很常用的window.postMessage(),然后还扯到了nginx反向代理也是一种纯后端的解决方案。
8. 讲一下token? 我大概把cookie,session,token结合讲了一下
9. 讲token的时候,谈到了自己选修过安全方面的,问了一下,CSRF是什么,且应该怎么样区防范,谈到了检查http请求的refer字段,追问如果refer字段也被伪造了呢,没答上来。面试官表示就聊聊,这个不知道也没事
10. 手撕  bind函数  这个面试前准备过apply call bind手撕都应该掌握
11. 来一道算法题
```js    给定一个无序的整数数组,找到其中最长上升子序列的长度。         *  输入: [10,9,2,5,3,7,101,18]         * 输出: 4         * 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。                                    我的实现
function getNum(array){        let max = 0;        for(let i=0;i<array.length;i++){            let temp_max = 1;            let temp_value = array[i];            for(let j=i+1;j<array.length;j++){                if(array[j]>temp_value){                    temp_value = array[j];                    temp_max++;                    max = Math.max(max,temp_max);                }            }        }        return max;    }    ```
12. 有什么问题想要问我的? 问了一下在贵公司平时前端具体工作是做一些什么呢?
二面结束一小时收到三面通知
三面:面试官比较严肃
1. 讲一下平时是怎么学习前端的?
2. 看你的简历里面提到参加了很多比赛,给你带来的收获是什么
3. 简历里面的垃圾分类小程序,你完成了哪些部分 ?   全栈加训练模型,前端用wx小程序开发,后端用flask框架,数据库采用mysql,模型用了pytorch框架,使用了开源的resNet18训练模型的。
4. 在开发这个小程序的难点是什么?  emmmm因为前后端比较简单,就讲了训练模型的过程,调参,cuda。
5. 怎么提高准确率的?  用python爬取数据集,筛选符合要求的图片分类,然后修改分组大小,图片大小,图片旋转等等,控制变量法看哪个正确率高?   (这块当时做的时候也是不是很清楚原理,不知道答得怎么样)
6. 简历中的C2C众包项目你完成了哪些部分?   Vue+VanUI+Cordova 跨平台开发的移动端,完成了主页,模糊搜索任务,任务发布提交,任务地图等等功能
7. 你简历中说到任务地图实现了Marker的合并,具体是怎么实现的?   用一个数组存marker,当后端传来数据时,遍历往数组里面添加,判断和已有marker的距离,如果小于一定值,则直接添加到这个marker下面,实现随着地图放大缩小,不同情况下的marker聚合显示状况
8. marker图标是怎么实现的? 直接调用的高德地图默认的图标
9. Vue组件写过吗,写个基本的模板
10. Vue自定义指令用过吗,写一下。   这个语法忘记了,但是讲了一下Vue指令在底层是怎么解析的
11. 怎么给一个数据结构添加迭代器?  谈到了es6中的迭代器,具体怎么实现谈到了原型上面添加属性和遍历方法,不知道答的对不对
12. JS CSS HTML Vue哪个比较了解?答了Vue,最近在学习写Vue底层源码
13. JS掌握的怎么样?还行
14. BOM和DOM的区别是啥?        ....一道很基础的题目当时没想起来,尴尬
15. 有自己的实习计划么?   没课了,可以马上过去实习
16. 你有什么问题要问我吗?  问了一些关于新人培养的政策
总体来说 一面二面表现得都挺好,三面有点拉垮。
过了一个礼拜左右通知面试通过了,发了意向书
10.29开奖了,sp,太开心了,谢天谢地。#字节跳动##前端工程师##面经##校招#
全部评论
楼主面之前有实习经历嘛
1 回复 分享
发布于 2020-11-02 11:10
楼主什么部门,base哪里?
点赞 回复 分享
发布于 2020-11-03 19:44
北京农商银行
校招火热招聘中
官网直投
楼主可以教教一面第4题的async/await和Promise实现,怎么做吗?
点赞 回复 分享
发布于 2020-11-03 22:31
现场1.2.3面吗,那我现场就面了两面的就凉了?
点赞 回复 分享
发布于 2020-11-05 08:03
楼主是本科生吗
点赞 回复 分享
发布于 2020-11-17 17:31
有需要内推,查进度等等,需要帮忙的都可以加我微信 sxd1239652039噢
点赞 回复 分享
发布于 2020-11-26 23:36
这实习面试这么难吗……
点赞 回复 分享
发布于 2020-12-03 10:16

相关推荐

09-11 12:06
已编辑
门头沟学院 前端工程师
一面1.&nbsp;自我介绍2.&nbsp;React的常见hook3.&nbsp;跨组件状态怎么管理4.&nbsp;Redux和Zustand的区别(不知道,反正我觉得更简洁)5.&nbsp;Webpack和Vite的区别6.&nbsp;ESBulid为什么热更新更快7.&nbsp;ESMoudle和CommonJS的应用场景区别8.&nbsp;移动端响应式布局怎么实现9.&nbsp;媒体查询设了几个档10.&nbsp;移动端图片使用几倍图11.&nbsp;git&nbsp;revert&nbsp;rebase&nbsp;reset的区别12.&nbsp;git&nbsp;reset&nbsp;--soft&nbsp;和&nbsp;git&nbsp;reset&nbsp;--hard的区别13.&nbsp;单页应用优化14.&nbsp;组件按需加载,比如引入需要Antd中的一个组件,如何按需加载15.&nbsp;组件库ESMoudle和CommonJS哪种可以按需加载(为什么ESMoudle可以实现Tree&nbsp;Shaking,CommonJS支持动态加载模块,所以不行)16.&nbsp;事件循环(浏览器和Node.js的)17.&nbsp;Node.js的组成部分18.&nbsp;Nuxt.js和Next.js等SSR框架的作用代码题1.&nbsp;实现三栏布局2.&nbsp;深拷贝和浅拷贝(写一下即可,不是手写)二面1.&nbsp;null和undefined的区别2.&nbsp;typeof&nbsp;null等于什么,为什么是Object(顺带一提&nbsp;typeof&nbsp;undefined是undefined)3.&nbsp;ES6&nbsp;let&nbsp;const的引入解决了什么问题4.&nbsp;什么是闭包(后面面试官提到,对于这类概念性问题,最好能够使用通俗易懂&nbsp;的语言描述,比如tcp的三次握手,可以比喻为打电话的三次确认,很好的一个思路)5.&nbsp;深拷贝和浅拷贝的区别6.&nbsp;纯函数,(我知道react函数式组件用到了这个概念,但不清楚他,只知道无副作用。实际上纯函数是确定性的:给定一组参数,返回值是确定的;没有副作用,不会修改外部状态)7.&nbsp;slice和splice的区别(都是切割数组,slice返回新数组不改变原数组,splice返回被删除的数组不改变原数组)8.&nbsp;轮询(即在特定间隔时间不断请求资源,分为短轮询和长轮询,短轮询即在间隔较短的时间内不断请求资源;长轮询则是在请求服务器之后保持连接,等待服务器返回新的数据,连接次数较少)9.&nbsp;CSS的层叠性(样式叠加抵消,类似ps的图层概念,同样的权重下,下面的样式可以抵消掉上面的样式,当然不同的选择器也有不同的权重,例如类选择器、ID选择器、标签选择器之类的,行内样式,import关键字等等,样式的层叠性是CSS的基础,面试官也问了我CSS的中文名,即层叠样式表,突出层叠)10.&nbsp;line-height:1是什么效果,我以为是默认行距,但其实是一倍字体大小11.&nbsp;position:sticky,在什么场景下有用12.&nbsp;TCP的三次握手(面试官这里很明显的要我用更加通俗的语言解释)13.&nbsp;vue和react更熟悉哪个,vue,面试官说那我考一些react的吧,哈哈哈14.&nbsp;useEffect15.&nbsp;react优化方法16.&nbsp;懒加载17.&nbsp;web&nbsp;worker18.&nbsp;我怎么看待面试八股文这件事,觉得八股文有意义么挂 #百度求职进展汇总# #我的实习求职记录#
点赞 评论 收藏
分享
面试官真好啊,但是感觉我太菜了,还有很多地方提升1.&nbsp;实习经历2.&nbsp;学校里做过的有成就的事(不是技术相关)3.&nbsp;tcp&nbsp;和&nbsp;udp,区别特点应用4.&nbsp;深度优先遍历和广度优先遍历5.&nbsp;闭包是什么,应用、原理(面试官提到了作用域,但是我在想计算机基础里的东西)6.&nbsp;Promise.all&nbsp;和&nbsp;race&nbsp;区别7.&nbsp;for&nbsp;in、for&nbsp;of、forEach&nbsp;区别8.&nbsp;css&nbsp;盒模型9.&nbsp;React&nbsp;dom&nbsp;diff&nbsp;原理10.&nbsp;React&nbsp;Fiber11.&nbsp;为什么会存在&nbsp;React&nbsp;Fiber12.&nbsp;打包&nbsp;webpack&nbsp;和&nbsp;vite&nbsp;区别是什么(只讲了&nbsp;vite&nbsp;打包用的&nbsp;rollup、又讲了&nbsp;vite&nbsp;如何控制打包结构,但是&nbsp;webpack&nbsp;还没复习)13.&nbsp;为啥用&nbsp;vite&nbsp;开发,相比&nbsp;webpack&nbsp;有啥优势14.&nbsp;vite&nbsp;缺点15.&nbsp;有没有遇见过&nbsp;vite&nbsp;打包产物不同造成的后果16.&nbsp;对&nbsp;Next.js&nbsp;的理解17.&nbsp;ssr&nbsp;和&nbsp;csr&nbsp;分别在什么场景下有优势18.&nbsp;有做过&nbsp;ssr&nbsp;性能分析吗19.&nbsp;ssr&nbsp;主要性能优化在哪个地方(我怀疑面试官想问&nbsp;csr,因为最后跟我聊了一下浏览器从输入url发生的过程,又问了你觉得&nbsp;csr&nbsp;可以在哪方面优化)20.&nbsp;从输入&nbsp;url&nbsp;到浏览器渲染发生了什么吗21.&nbsp;ssr&nbsp;和&nbsp;csr&nbsp;在渲染阶段有啥区别22.&nbsp;你有做过什么性能优化23.&nbsp;做题(eventBus、找错题)24.&nbsp;反问(部门做什么、有啥需要改进的嘛)--------------面试官最后讲了&nbsp;10&nbsp;分钟我需要改进啥(他温我哭)更新:已挂
查看24道真题和解析
点赞 评论 收藏
分享
查看13道真题和解析
点赞 评论 收藏
分享
百度的一面还是比较轻松愉快的,全是八股,这就太舒服了。但是反问环节问了一下面试官,是不是三轮左右,他说不是,提前批可能有五轮,真是有点恐怖了大家一定要提前下载他们那个如流软件啊,今天用浏览器打开,一直没有代码区,尬了五分钟。最后有个题来不及只能说思路了。不过面试官反馈还行,口头过了项目:1.字节实习这边负责的项目是0开始搭建还是已经有了2.简单介绍一下garfish3.新版本嵌入旧版本子应用4.微前端的子应用样式问题怎么解决,样式隔离5.为什么用到jotai6.地图如何构建?地图的虚拟坐标和真实坐标怎么转换?7.军工项目背景简单介绍,需求谁来推动8.为什么用到websocket,还有什么别的方式可以实现?八股:1.闭包2.undefined、null、Nan,Nan代表什么3.bind、call、apply4.let、const、var,var定义之前拿到是什么?var&nbsp;a之后还能var&nbsp;a吗5.防抖和节流6.跨域。origin定义的是什么。了解过postMessage吗7.除了get和post还有什么请求?都用来干什么,区别8.什么时候会用到预检请求?了解过吗9.讲了一下excel导入和导出10.语义化标签,为什么要引入语义化标签11.如果没有给这些语义化标签加样式,跟div和span有什么区别?(问得好啊,这个不知道)12.rem、em、px、vw、vh手撕:1.const&nbsp;arr&nbsp;=&nbsp;[1,&nbsp;2,&nbsp;3,&nbsp;1,&nbsp;2,&nbsp;3,&nbsp;undefined,&nbsp;undefined,&nbsp;NaN,&nbsp;NaN,&nbsp;{},&nbsp;{},&nbsp;[],&nbsp;{},[],&nbsp;undefined]去重这个题其实没完全a出来,一开始想到了一个很神奇的思路,因为我知道{},{}在set去重的时候是会被当做不一样的元素处理的,所以想到了JSON.strigify先转成字符串,去掉首位再set去重,写完就发现,怎么把这些元素还原好像不太方便马上换了第二个思路,用map存,不过时间有点紧,细节没处理好2.力扣:3数之和这个题就没写,只说了思路最后一题:url输入到看到页面全流程正式批是有笔试的,大伙可以根据这个判断是提前批被捞了还是正式批还有就是面试官说提前批是两周一清,反馈时间最长不超过两周,超过两周应该是凉了#百度##百度求职进展汇总##提前批##秋招##前端#
查看21道真题和解析 百度求职进展汇总
点赞 评论 收藏
分享
10 95 评论
分享
牛客网
牛客企业服务