字节跳动 抖音前端 实习面经(三面+HR面,已入职

背景简述

本人23届CS弱相关专业,自学前端两个月,做过微信小程序的全栈开发项目,简历里写的技术栈是三大件+node+vue,除此之外无开发岗实习经历。当时是有学长给我了部门定向内推,日常实习,整体过程还算挺顺利的,觉得题目也相对基础。

面试问题

一面(约40min

  1. 介绍项目

  2. jwt在项目中的具体实现,必要性?为什么不用微信API的鉴权?(答官方文档建议开发者自定登录态)

  3. tcp与udp区别?应用场景?

  4. get与post区别,应用场景?在项目中的使用?

  5. http缓存控制,协商缓存?

  6. https如何保证安全的?加密方式?公私钥交换过程?

  7. 跨域是什么?产生条件?在微信小程序中的运用?解决了什么?

  8. jsonp有了解过吗?(答没有什么了解,之前看到跨域解决方案的时候有看到过对比,没有深入了解,熟悉的是cors和nginx反向代理。然后也没有追问下去了)

  9. 看输出,解释原因

    // 1.局部作用域与全局作用域
    let val = 1;
    function foo() {
      console.log(val);
    }
    function bar() {
      let val = 2;
      foo();
    }
    bar();
    
    // 2.this指向
    window.name = 'ByteDance';
    function A() {
      this.name = 123;
    }
    A.prototype.getA = function () {
      return this.name + 1;
    };
    let a = new A();
    let funcA = a.getA;
    console.log(funcA());
    // 解释完上面答下面这种情况
    console.log(a.getA());
    
    // 3.this指向(call)
    const obj = {
      birth: 1990,
      getAge(year) {
        let fn = y => y - this.birth;
        return fn.call({ birth: 2000 }, year);
      },
    };
    console.log(obj.getAge(2020));
    
    // 4.执行顺序
    async function async1() {
      console.log('async1 start');
      await async2();
      console.log('async1 end');
    }
    async function async2() {
      console.log('async2');
    }
    console.log('script start');
    setTimeout(() => {
      console.log('setTimeout');
    }, 0);
    async1();
    new Promise(function (resolve) {
      console.log('promise1');
      resolve();
    }).then(function () {
      console.log('promise2');
    });
    console.log('script end');
    
  1. 算法:栈模拟队列 剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode) (leetcode-cn.com)

二面(约70min

  1. 介绍项目,看项目后端中某个具体功能的具体代码(图片上传与处理)

  2. 实习经历?(简历上写的hr岗怎么就整开发了呢?噢,原来是用python编写脚本、使用文档,提升部门某项重复性耗时工作的工作效率)

  3. 浏览器不同标签页面通信?同源、跨域情况下?(可能我一直都没答到点子上,一直让我说有没有其他的方案,说了好几个能想到的,包括storage api,server侧配合websocket甚至外部应用程序

  4. localStorage,sessionStorage区别?

  5. css实现三角形!(我答的transform: rotate(45deg)然后在父元素overflow: hidden,插问了rotate的旋转中心怎么确定。总之是没答到正解border的点子上)

  6. css position属性有哪些?区别是什么?详细说说fixed的定位方式?

  7. 看输出,解释原因

    //1也是关于this的,还有闭包,和一面差不多
    
    //2. 作用域?变量提升?
    for(var i=0;i<5;i++){
      setTimeout(()=>{
        console.log(i);
      },0) 
    }
    //3也是关于event loop的,和一面的执行顺序差不多,让具体解释了一下宏任务和微任务
  1. 算法:查找json中的children路径
    现有如下json(简化为对象),已知每个节点id唯一,编写findNode(id),返回路径,如findNode(5) 输出 1->4->5
    (直接DFS就行,当时一下没想好回溯写了半天没写对,面试结束后两分钟搞定了)

    {
      id: 1,
      children: [
        { id: 2, children: [{ id: 3, children: [] }] },
        {
          id: 4,
          children: [
            { id: 5, children: [] },
            { id: 6, children: [] },
          ],
        },
        { id: 7, children: [] },
      ],
    };
  2. 算法:合并两个有序数组88. 合并两个有序数组 - 力扣(LeetCode) (leetcode-cn.com),要求时间O(m+n)。改进:输入的两个数组各自有序,有可能分别是升序,降序情况

三面(约40min

  1. 项目整体设计思路与逻辑、架构(感觉很棒的是面试官从项目本身的需求出发,一起探讨了项目的设计和方向,还给项目提出了建设性意见,而不是模板式的让我说有什么难点、解决方案)
  2. 前端是怎么学的?
  3. promise原理与实现(我答了发布订阅模式的实现方法,说逻辑没让写代码)
  4. 那已经有发布订阅模式了,为什么还要promise(我答promise是用这个模式来解决异步回调地狱问题balabala,扯到了事件循环)
  5. 事件队列保存在哪?执行栈呢?

HR面(约20min

时间不长,主要聊了爱好、为什么选择前端?学习方法?详细聊了聊之前的实习经历的工作?读不读研、职业规划?可以实习的时间,公司待遇方面的介绍。

最后

由于篇幅原因,这里分享最有用的面试题部分,我把我的学习历程、面试流程、实习一月的体验的记录与总结(其实挺多废话的hhh)都发在了自己的blog上,这里遵守牛客的相关规章只发名称,不做引流,感兴趣的可以自行在搜索引擎搜索 @西行寺悟空の小站 。有任何问题也可以和我在评论区交流,希望大家都能收到理想的offer~

#面经##实习##字节跳动#
全部评论
电话面还是视频面?
2 回复 分享
发布于 2022-03-13 07:50
我也到字节三面了,请问大佬三面的话该如何去准备呢,感觉三面面试官问的东西都比较深,而且从全局的角度去提问,我感觉自己有点欠缺,望大佬赐教
1 回复 分享
发布于 2022-03-21 14:56
二面的第三问 postmessage,iframe
1 回复 分享
发布于 2022-03-13 11:56
我也是自学两个月 被字节说 学历不行 简历太基础 这就是人与人之间的差距吧😣
点赞 回复 分享
发布于 2022-05-30 21:10
求问做的是什么项目呀
点赞 回复 分享
发布于 2022-05-11 00:14
看到lz的博客这么熟悉 原来我在你这买过chromebook
点赞 回复 分享
发布于 2022-05-04 09:20
请问offer后多久入职的呀
点赞 回复 分享
发布于 2022-04-26 16:58
问的挺简单的😂
点赞 回复 分享
发布于 2022-04-14 23:13
请问大佬可以说自己有读研计划吗😂
点赞 回复 分享
发布于 2022-04-11 19:05
请问 事件队列保存在哪?执行栈呢?,这个队列是保存在堆里面吗,执行栈就在栈内存吗
点赞 回复 分享
发布于 2022-03-29 10:02
三面没有算法吗
点赞 回复 分享
发布于 2022-03-21 14:02
还要求看项目具体代码的嘛?瑟瑟发抖,我以为口头说清楚就可以
点赞 回复 分享
发布于 2022-03-19 17:15
HR面之后多久给的offer啊,我HR面没有问的什么时候能到岗
点赞 回复 分享
发布于 2022-03-16 20:50
三面后多久通知HR面呀
点赞 回复 分享
发布于 2022-03-15 21:04
回溯?
点赞 回复 分享
发布于 2022-03-14 09:52

相关推荐

2025-12-27 18:11
已编辑
门头沟学院 前端工程师
28双非鼠鼠第一份实习,感谢金山,感谢面试官张先生的赏识,也感谢自己很开心很开心(有没有待过的前辈,求摸鱼技巧bushi)timeline12.15&nbsp;投递12.16&nbsp;约面12.18&nbsp;一面&nbsp;半个小时后约二面12.19&nbsp;二面,口头oc12.24&nbsp;发offer一面1.&nbsp;开发页面中使用的布局方式2.&nbsp;flex:&nbsp;1&nbsp;是什么的缩写3.&nbsp;水平居中的方法4.&nbsp;tailwindcss&nbsp;的优势5.&nbsp;js&nbsp;的闭包6.&nbsp;打印结果的题,解释为什么(var&nbsp;定义&nbsp;i&nbsp;,setTimeout&nbsp;执行打印),使用&nbsp;let&nbsp;的打印结果7.&nbsp;箭头函数和普通函数的区别8.&nbsp;promise&nbsp;构造函数是同步还是异步9.&nbsp;内存泄漏的情况10.&nbsp;interface&nbsp;和&nbsp;type&nbsp;的区别11.&nbsp;react&nbsp;的&nbsp;key&nbsp;作用12.&nbsp;常用的钩子函数13.&nbsp;怎么避免不必要的渲染14.&nbsp;useeffect&nbsp;的使用场景15.&nbsp;react&nbsp;和&nbsp;vue&nbsp;怎么选择16.&nbsp;vue&nbsp;的&nbsp;data&nbsp;为什么用函数17.&nbsp;tcp&nbsp;为什么需要三次握手和四次挥手18.&nbsp;vite&nbsp;为什么比较快19.&nbsp;解释防抖节流和手写防抖函数,还有实现思路20.&nbsp;深浅拷贝的区别和手写深拷贝,讲实现思路反问了业务,反馈时间和学习建议二面基本上是围绕项目展开,根据项目的每一项,来给场景题问你会怎么做,跟基础相关的东西如下:1.&nbsp;虚拟列表的实现和原理2.&nbsp;zustand&nbsp;和&nbsp;context&nbsp;的区别3.&nbsp;vitest&nbsp;相关,写测试的话应该怎么做些什么?4.&nbsp;monorepo的细节问题5.&nbsp;做项目的动机6.&nbsp;事件委托和时间冒泡的区别有个点顺着问了我五个问题实在是答不下去了就是说感觉金山云这边面试虽然一面全是八股,但是二面还是要好好准备项目,做到能被深挖那么两三个问题的程度,鼠鼠也是运气很好,问的都是准备过的嘻嘻面试完之后还很期待这个面试官会不会是我mt或者ld,会很认真的听我说话,然后告诉我哪里有小问题,不知道是不是鼠鼠的错觉,感觉他看后辈的眼神都是带有欣赏的意味真的很复合我对mt/ld的幻想(bushi),但是后来发现他ip是北京的qwq有点点小失落,不过没关系,看隔壁某书感觉金山的节奏还挺慢的期待入职ing愿一切顺利,好运常伴吾身这里再吐槽一下流程,怎么!!这么!!慢!!急死我了急死我了!!鬼知道我从周一到接到offer这段时间有多煎熬,哎呀但是但是好在一切如愿
发面经攒人品
点赞 评论 收藏
分享
评论
30
172
分享

创作者周榜

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