首页 > 笔经面经 > 字节跳动 前端实习 一面+二面+三面 (新更新)

字节跳动 前端实习 一面+二面+三面 (新更新)

头像
前端弟弟
编辑于 2021-03-08 23:16:19 APP内打开
赞 33 | 收藏 173 | 回复18 | 浏览7133

废话

2 月中旬在牛客上投了不少字节,大多都杳无音讯了。有天教育业务的发我邮件邀约面试了,并且 HR 小姐姐加了我,然后预约了几天之后的面试时间。
面试平台 使用的是牛客网,摄像头 + 编程
HR 小姐姐很好看

一面

面试官看着挺亲和

- 自我介绍
没怎么准备的很简短的自我介绍...然后追问了项目的一些简单情况,聊聊天

- 平常怎么学习前端
老问题了,追问了对框架的了解,追问了对 react 的了解(我简历是 Vue)

- 实习时间

- 说一下网络七层模型

- HTTP 和 DNS 属于哪一层

- TCP 和 UDP 属于哪一层

- 说一个表示层的应用
大意了嗷,当时按照五层模型学的,OSI 的会话和表示还真的没有去了解,真的要好好恶补这两层的知识

- 介绍下 HTTP 协议
吧啦吧啦讲了一大通

- HTTP 协议规范了些什么东西呢
嗯,应该是上一题没答的足够好,面试官追问了。然后还提示了,比如他是一个单向/双向?

- HTTP 的状态码有哪些

- 各状态码的含义、出现场景
可能上一回答太简短,追问了。所以很详细地都讲了,讲了挺久

- 详细讲下 304 状态码
这个挺重要的,多次问到,建议大家把浏览器缓存原理和流程好好看一下

- 说一下 HTTP 缓存的策略,比如缓存的关键 Header 是什么

- TCP 和 UDP 的区别
之前的回答提了一下,这次更详细地补充了区别

- TCP 如何确保可靠传输的呢

- TCP 连接三次握手过程
详细地说了,以及为啥握手是三次

- TCP 连接四次挥手过程
详细地说了,以及为啥挥手是四次

- JS 的基本数据类型
当时脑子进水了,拿手指头数,Number、String、Boolean 和 Symbol,知道是 7 种的,可我怎么想都想不到了,然后就说有 4 种类型了 😂面试官多次问我还有其他数据类型吗,可我说不出了😂不知道面试官心里怎么想的...(漏了 BigInt、null、undefined)

- 还有其他数据类型吗?有什么呢
估计面试官对我刚才的回答产生了怀疑,开始追问了。但是之后我恢复正常了,一切没毛病

- 如何判断 JS 的数据类型呢
讲了子类型,讲了四种方法以及各自的优缺点和应用场景。在讲 typeof 时我还提到了需要注意的 null,可我仍然没反应过来 null 是数据类型,xswl

- 判断数组有哪些方法呢

- 浏览器的同源策略
吧啦吧啦讲了一大通

- 跨域该如何处理呢
介绍了几种方法以及应用场景

- 讲一下 CORS 的关键 Header,讲一下 CORS 的具体如何实施白名单呢
做了些补充,以及简单请求、预检请求做了些补充和说明。还讲了加名单 / * 的区别和需要注意的地方。还讲了跨域的学习、实践的过程(聊着聊着面试官不知道为啥嘴角上扬开心地笑了..)

- 其他的跨域方法讲下
追问了,详细讲了 JSONP 方法,代理服务器方法

- 在使用了 iframe 的情况下,该如何去解决同源策略
大意了,这方面了解的不多,讲了下自己的想法和理解,回去好好恶补

- 讲一下 ES5 和 ES6 的区别吗,讲一下新特性
感觉 ES6 真的太多了..一时间就说不出太多的区别和新特性了....这个问题可以反映我对知识体系的梳理和构建并不好, 回去再好好准备

- ES6 的箭头函数和以前的普通函数的区别
讲了箭头函数的特点、优点,以及一些限制,以及普通函数的创建过程和箭头函数的创建过程

- 箭头函数可以作为构造函数吗(可以使用 new 操作符的调用吗)

- 追问:为什么不能作为构造函数呢

- 说一下 Vue 2.x 响应式的原理
终于到框架了..我最不擅长的。然后给面试官背八股文听,还顺便背了 3.x 的响应式八股文,然后讲到了 Proxy,这个我知道,就 吧啦吧啦讲了一大通
(其实是知道一些的,但是没有实践,有空真要好好手写以下框架的部分实现,唉

- 说一下 Vue 的列表渲染中的 key 属性作用
这个懂,并结合场景详细说了,吧啦吧啦

- key 的值用 index 可以吗,是否能解决刚才的问题
这个问题问得挺好的,还好我 key 不是背八股文😂,之前实践过,就顺便回答了

- 代码题:斐波那契数列
属于很简单的代码题..可我没有实践过...想用递归可就是弄不出来,边界出了点问题。最后还是用动态规划写出来了(我脑子又开始进水了)

- 代码题:找出和最大的连续子数组
也是属于很基础的题,可我当时理解错题目了,完全写成其他题了,之后意识到了后又改,发现又理解错题又写错了...唉,LeetCode刷题几乎为 0,算法题也是上个星期才开始刷,包括这题都还没做过..都是眼高手低。来不及想怎么用动态规划了,马上写了个暴力枚举法,可就是测试不成功,md我太菜了,面试官说算了你已经过了一面了不用写了,可我当时气不过非要弄出来 😅..

- 反问环节
问面试官对我整个面试有什么看法和建议

面试结束了,面试官说后面是拔高的一些测试,二面面试官会找你的。
总结:
好好抽空把框架的原理看看,最好能都实践了。
以及多刷算法题..我这方面挺薄弱

二面

一面面完就关电脑打算出去吃晚饭了,没想到突然接到面试官电话。原来字节是一面二面连着的..面试官说算了一小时之后再面试,估计是也要吃饭吧

- 聊项目
问了挺多关于项目情况,以及对项目提出一些疑问,以及根据简历上写的细节来考我扩展方面的东西

- 代码题:数组,用 reduce 方法实现 map 方法
第一次做,难度不难,有些细节和特殊情况需要注意

- 代码题:
// 需要实现的函数
function repect (func,times,wait){}
// 使下面代码能正常工作
const repectFunc = repect(console.log, 4, 3000)

repectFunc('helloworld') //会输出 4 次 hellworld,每次间隔 3 秒
难度不难,做完后面试官让我说了下思路

- 刚刚提到了宏任务,说下什么是宏任务

- JS 为什么会把任务分为宏任务和微任务

- CSS 接触的多吗?如何用 CSS 画一个圆

- 像素最小是 1px,但如果我要画 0.5px 的直线该怎么办
一开始有些疑惑,因为像素是最小的显示单位。面试官说如果产品确实有这种需求,从效果上来看怎么实现。我给出的方案是改变缩放页面 / 分辨率,然后再计算出真实的 px
面试官说思路是对的,就是通过缩放,CSS 中 transform 的 scale 为 0.5 即可实现。大悟,我把这东西给忘记了

- JS 里面 Map 和 Set 的区别
这个我之前都看到过,但是很惭愧都忘了,只记得看过文章有用 Map 来优化 if-else 代码,但是也不记得具体的了..好好恶补一下

- 说下对 webpack 了解
吧啦吧啦讲了很久

- 最近在看什么技术方面的东西

- 反问环节
问面试官对我整个面试有什么看法和建议

第二天收到 HR 的消息说二面过了,预约三面。因为面试官出差了所以推迟了一个星期,目前还没有面

更新:今天下午刚面完的,热乎的!

三面

 - 实习时间
嗯..面试官都很关注这些,毕竟希望越早去越好,实习时间越长越好

 - 介绍下项目经历、技术经历
讲了一大通

 - 介绍简历上项目有什么技术难点,又是怎么解决的
讲了一大通,和面试官聊了很多,又讲到了性能优化、重构做了哪些工作等等

 - 面试官问了 Vuetify(我简历上面的);他有什么优点;为什么选择使用它;你认为它有哪些地方不够好
聊了很多自己关于 UI 组件的看法,Vuetify 和 Element 的对比等,以及选择  Vuetify 的原因和优点、缺点

 - 代码题:把 ajax 封装成 promise 的形式
面试官看我简历上有封装所以出了个封装题..我太菜了我连 XHR 实例的一些方法和回调函数给忘记了..一般都是去搜,没有刻意去记,害,说白了还是用原生用的少了现在

 - 代码题:写一个 vue 组件,实现类百度的搜索框,可以出现自动的下拉列表,里面出现可能的和文字相关的信息(自动补全)
牛客的网页也没任何代码提示..只好手撸 vue 组件..第一次实践..看似比较简单的功能实则实现的细节有很多,比如性能方面的防抖、异步请求方面需要注意的地方(乱序!!可能先发出的请求后返回)、处理下拉框时的细节等。
我对组件的实现还是比较浅的,很多细节没有做到位。面试官还说 目前 只是让你先实现一个搜索框,都还没让你实现一个通用的搜索框组件呢,如果让你实现又该怎么去做?(别骂了别骂了~~)

 - 反问环节
问面试官对我整个面试有什么看法和建议
很详细地回答了我刚才的表现,尤其是我第二个代码题里需要注意的地方..受益匪浅,非常感谢!

全程 1h,面试总体体验很好,面试官人挺好的哈哈,总体感觉自己两个代码题都没有表现的很好,很多细节没有注意到!以为可能凉了吧。结果今晚 HR 约面试,明天 HR 面

HR面

目前还没有面

更多模拟面试

18条回帖

回帖
加载中...
话题 回帖

推荐话题

相关热帖

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

近期精华帖

热门推荐