2022字节实习面经(已OC)

本人现大三学生,于2022年11月份面试实习字节跳动,已OC,base北京 技术中台

下面是我的面经,希望可以帮到你!

一面

1. 讲下你的项目

概括性地介绍了一下项目,具体实现的功能,以及自己准备的一些可以扩展的项目亮点

2. 如何实现15天免登陆

这个问题是根据上面的回答进行的进一步追问,我主要是通过 access token 和 refresh token 实现的,另外利用了缓存加锁对并发请求实现了进一步的控制(具体略)

3. 如何实现聊天功能

项目中利用的是 socket.io 实现实时通讯,具体项目实现以及对从 socket.io 实现原理,到 webSocket 原理、长轮询、短轮询机制

4.还有什么要补充的项目亮点吗?

再详细讲了一下如何通过 vue.extend 封装自定义命令式组件以及防抖处理搜索框

5. HTTP状态码

  • 大体说一下五大类 1xx,2xx,3xx,4xx,5xx 状态码总体的含义
  • 之后,说一些具体常见的状态码,比如 200,301,302,304,404

Tips:确保提到的具体的状态有深入了解以及扩展,将面试官向自己擅长有准备的方向去引导,比如可以说 304 从而引导问 浏览器缓存方面的问题

6. 浏览器缓存

这里同样概括性列出几个要点:

  • 为什么要有浏览器缓存(减轻服务端负担等...
  • 浏览器缓存机制的大体流程 第一次访问,没有缓存:直接请求服务器以及返回相应缓存字段再次访问 缓存未过期:强缓存缓存过期:协商缓存

7. 读代码

  window.name = 'byte';
        function A(){
            this.name = 123
        }
        A.prototype.getA= function(){
            console.log(this);
            return this.name +1
        }
        let a=new A();
        let funcA = a.getA
        funcA()
复制代码

输出:byte1

这里涉及知识点包括:

  • this 指向
  • 字符串

8.函数柯里化实现

9.写防抖、节流、问问闭包

10.合并两个有序数组(算法)

体验:一面问题这里可能有遗漏,没有及时记录,现在想起有点遗忘,一面是一个小姐姐面的,体验感也不错,自己输出了很多,二面面试官有提到自己在一面面评回答浏览器缓存回答的很好hh

二面

1.TCP为什么需要三次握手?

关于计网这里推荐学习:小林Coding

2.https

3.中间人攻击是什么 怎么预防

小林Coding-HTTPS一定可靠安全吗

4.为什么出现了http2.0

这里就要从HTTP发展史以及HTTP2.0解决的问题来入手

5.为什么要有缓存

6.为什么要设计强缓存和协商缓存

7.JS数据类型

这个问题也很常问奥分为原始数据类型和引用数据类型,把各自类型都分别说一下然后可以从两者的存储位置进行扩展

8. 判断是数组 instanceOf 原理

手写也要掌握奥

9.考察js作用域的一道输出题并解释

var x = 10;
(function (fn){
  var x = 20;
  fn();
})(function(){
  console.log(x)
})
复制代码

这里主要考察js作用域是词法作用域,在定义的时候就决定了,所以x的作用域就是全局,输出10

10.事件循环输出题 为什么要有宏任务和微任务 为什么要有任务队列

这里就可以看出面试官不仅仅关注一些知识本身,更关注它的历史发展和缘由,所以就像我之前说的学知识要多问为什么?关注来源、历史发展才能进一步掌握

11.算法:求两个数组的并集

12.手写Promise.all

Promise这里建议把源码都过一遍

体验:夸完一面面评,就来了两个浏览器缓存的为什么打得措手不及,在自己的理解之上说了一些,总体回答的还不错

三面

主要是集中项目展开问的

为什么要用refresh token? 缓存加锁的弊端

有考虑过使用 cookie 实现15天免登陆吗?优点是什么?

微信实现就是用 cookie ,leader这里向我推荐了要学会向“竞品”学习

聊天是通过什么实现的?用webSocket 有什么弊端?

实现红绿灯

绿、黄、红循环m次,每隔n秒一亮

function red(){
	console.log('red')
}
function green(){
	console.log('green')
}
function yellow(){
	console.log('yellow')
}
const step = (m, k, n) => {
  if(k <= m){
    task(n, 'red')
        .then(() => task(n, 'green'))
        .then(() => task(n, 'yellow'))
        .then(() =>{
          step(m, k+1,n)
        })
  }
}
step(2, 1, 1000)
复制代码

把step改写成async形式

const step2 = async(m, k, n) => {
  if(k <= m){
     await task(n, 'red')
     await task(n,'green')
     await task(n,'yellow')
     step2()
  }
}
复制代码

最后还有一道不难的算法题

体验:leader 人真的很好!很尊重我的想法,愿意倾听和肯定我的思考方向,同时会给予我一些额外的建议,受益匪浅!

hr面 11.22

前面几轮面试整体感觉是怎么样呢?

了解业务方向吗?

什么契机接触前端?为什么学前端呢?

介绍印象比较深的一个项目 项目中比较大的挑战?

以前暑假寒假都做什么

未来职业规划

互联网行业吸引你的点在哪?

自我评价 优缺点? 最近成就感较大的事情?

一周后就发 offer 啦,激动子!最后毅然选择去了字节啦~ base北京 技术中台(今年初九实习报到)

学习总结

  1. 尽可能将面试官往你会的知识点去引导,自己说出来的知识点就一定要是你深入扩展的,不然稍微一问就不知道啦(当然从学习本身出发,有探究精神,学知识要了解前因后果以及扩展必然也是不可少的!)
  2. 学习知识不要仅限于这个知识点,推荐从历史发展的层面去看,从这个东西为什么要有? 要解决什么问题? 它的前身是什么? 有什么缺陷导致后续的发展,这样才可以进一步掌握知识!(面试官也经常会问为什么哦)

愿所有努力都不会被辜负祝愿你也得到你想要的offer哦!加油!

全部评论
羡慕捏,带带鼠鼠我
7 回复 分享
发布于 2023-01-27 13:48 北京
大佬求带
1 回复 分享
发布于 2023-01-29 08:02 江苏
tql
1 回复 分享
发布于 2023-01-27 15:09 北京
1 回复 分享
发布于 2023-01-27 14:03 广东
1 回复 分享
发布于 2023-01-27 12:07 天津
发现楼主一点框架都没问,是不是因为技术栈不太匹配?
点赞 回复 分享
发布于 2023-03-24 19:37 广东
羡慕捏
点赞 回复 分享
发布于 2023-03-16 10:02 新加坡
羡慕
点赞 回复 分享
发布于 2023-03-02 08:15 河南
能学习下楼主项目源码吗
点赞 回复 分享
发布于 2023-03-01 19:36 四川
大佬求带
点赞 回复 分享
发布于 2023-01-27 21:03 陕西
怎么投的啊
点赞 回复 分享
发布于 2023-01-27 11:02 湖南
羡慕
点赞 回复 分享
发布于 2023-01-27 09:53 山东
厉害
点赞 回复 分享
发布于 2023-01-26 21:48 山西

相关推荐

06-26 13:50
已编辑
门头沟学院 Web前端
6.16&nbsp;一面&nbsp;20min自我介绍1.我们先问一下&nbsp;CSS&nbsp;就是实现,比如说一个盒子在一个容器里面居中有什么方法?2.能介绍一下这个&nbsp;Flex&nbsp;1是什么意思呢?3.能给我介绍一下&nbsp;js&nbsp;的数据类型吗?4.比如说我要判断一个数据类型的话,一般有哪几种方法?5.你知道这个&nbsp;typeof&nbsp;和这个&nbsp;instanceof&nbsp;有什么区别吗?6.介绍一下这个&nbsp;cosnt、var和&nbsp;let&nbsp;的区别吧。7.然后你再介绍一下这个&nbsp;promise&nbsp;和这个&nbsp;async&nbsp;await&nbsp;主要解决什么问题。8.你刚才提到这个&nbsp;JS,这个引擎是单线程的,你介绍一下这个&nbsp;js&nbsp;的事件循环吧。9.你知道这个&nbsp;ES6的这个新增的箭头还数和普通的函数有什么区别?10.这个&nbsp;TS&nbsp;你这边了解吗?那你知道这个&nbsp;interface&nbsp;和这个&nbsp;type&nbsp;有什么区别吗?11.让我们再来聊一下这个&nbsp;vue2&nbsp;和&nbsp;&nbsp;vue3,这个&nbsp;vue2&nbsp;和&nbsp;&nbsp;vue3&nbsp;的响式的区别,你能介绍一下。12.然后这个虚拟&nbsp;DOM&nbsp;的话,你能介绍一下吗?13.比如说我在vue2里面想更改数组或者对象的值,一般要怎么去更改才能触发响应式?14.&nbsp;vue2的话,父子组件间通信一般有什么方法?项目:1.我看你这个第一个项目用了这个&nbsp;SSE&nbsp;你能稍微介绍一下这块。2.你知道这个&nbsp;HTTP&nbsp;请求和这种&nbsp;SSE&nbsp;请求有什么区别吗?3.你知道这个http和https有什么区别吗?4.你了解这个浏览器的这个跨域吗?5.你刚才提到这个同源策略具体是怎么定义的啊?他要求就是哪三个东西是重样的?6.问一个,就是比如说如果我想把一个数组去重的话,你这边能想到什么方法?7.你用过那个&nbsp;map&nbsp;嘛,介绍一下&nbsp;set&nbsp;和&nbsp;map&nbsp;的区别。8.那你了解这个移动端的就是适配这个问题吗?反问:1.那我们这个面试基本就到这里了,你那边有什么想了解?想问一下贵公司这个做的项做的内容是什么?技术栈?2.这边是一个移动端的&nbsp;APP,然后你要做的话有一些这个&nbsp;H5的项目,就是主要是移动端的适配,然后大屏的话也有一些,然后也有一些这种后台管理,然后技术栈的话一般就是&nbsp;vue2和&nbsp;vue3。3.想问的一个团队的成员,比如说前端开发的成员有多少个呀?整个公司的话现在大概有50到60左右。4.什么时候能出结果?结果应该这几天就1到2天。6.18&nbsp;二面&nbsp;60min自我介绍1.我看到有做一个开发跨平台的预览系统,然后有提到那个封装postmessage&nbsp;通讯协议,统一处理&nbsp;electron&nbsp;桌面端,移动端、web端,你是怎么实现的?2.我看有&nbsp;Web&nbsp;端、移动端的样式适配与数据同步,这个具体说一下是怎么实现的?3.这就是有提到兼容这三个端,就是兼容&nbsp;Web,还有移动端这块就是统一处理这方面你是具体做了哪些工作呢?就是怎么能把它们统一实现的呢?4.axios二次封装有一个请求的集中处理。这块主要梳理了哪些错误请求呢?5.使用vue-router是吗?一个通过路由,有一个路由鉴权,有实现鉴权的功能吗?这个具体说一下,就是这个鉴权是怎么实现的呢?大概有什么角色之类的?6.去后台那里去拿这个角色权限表,那前端是怎么做到?就是根据这个不同的角色来跳转这个不同的页面的呢。这个代码上具体是怎么实现的呢?7.webpack有用过一些相关的优化配置嘛,就比如说配置什么可以更加的优化这个打包?8.相对于vite来说,有什么区别?代码题1、一共有5个元素,每个元素高120px,宽随浏览器窗口大小变化,请实现一行3个,每行两端对齐,不足3个的左对齐只要盒子与盒子之间有5px的间隔,怎么实现?2、首先说一下那个&nbsp;JS&nbsp;的话,它有一个浅拷贝和新拷贝,这两个有什么区别呢?3、那如果让你实现一个就是深拷贝的话,有哪些方法可以简单实现?简单写一下递归的这种方式吧4、那这个有没有考虑?就是如果这个对象有循环引用的情况呢?5、数组的map方法了解嘛,返回的是什么?你实现一个map方法。反问:1、结果能什么时候出来?效率最近挺快的,这周内能出2、用的什么框架?阿里的Rax,类似RN3、什么业务?大部分的业务像机票、酒店、用车还有保险,就里面各种圈子等等,其实都是用那个Rax开发的,都是一些跨平台比较混接对平混合的开发。6.20&nbsp;hr面群面三个人轮流自我介绍实习学到了什么?遇到的问题怎么解决?手上有其他offer吗?团员党员?期望薪资?父母做什么工作?父母支持去北京吗?反问结果?下周三前给答复6.26&nbsp;oc
点赞 评论 收藏
分享
评论
46
161
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务