记录第一次字节实习offer

前言: 在七月份面试了整整四个星期拿到了满意的实习offer, 于是发篇博客记录一下 (主要包括内容是: 上一段实习 + 面经 + 感想)

第一段实习

经历

第一段实习是在明汯投资管理里面做实习生, 因为是第一段实习所以还是格外的珍惜, mentor对我很好, 总会请我喝咖啡, 吃饭和聊天, 遇到的人都是很好的人, 而且也不执行打卡制度,下午六点钟大伙就都走的差不多了,唯一的缺点是公司规模很小, 也不是互联网公司, 开发流程很草台班子, 开发人员也很少(? )

收获

沟通能力可能增加了一点(? ) 也变得更加自信了(确信), 也在mt的建议下多去找人交流沟通, 锻炼自己的表述能力, 多去表达一下自己, 能够锐利一点可以抓住事情的重点. 这些都是我欠缺的部分, 也在一直慢慢的改善!!!

七月的全部面试

  • 快手(电商 - 杭州): 一面秒挂
  • 滴滴(北京日常实习): 一面挂, 另外投了暑期实习国际化的岗位, 两轮技术面一轮总leader面, 最后offer
  • 炎魂网络(杭州): 线下一面, offer
  • 字节跳动国际电商(珠海): 一面二面过, 三面挂
  • 字节跳动AILab(上海): 两轮技术面一轮hr面 offer

还记住的一些面试题

  1. 在面试快手的时候,面试官问我去重构代码是怎么保证自己重构的功能是没问题的

    我刚开始想的是不就是对着实现功能吗?然后在测试吗?但是他一直想让我说出个什么名词出来,我说可以进行灰度发布,面试官又问还有呢? — 后面他才说是想问我有没有写单侧文件用没有jest 或者 e2e那种的测试手段

  2. promise和async await有什么区别

    我自己的理解可能就是async和await就是promise的一种语法糖,async await 实际上就是把async的内容写在Promise.resolve(produce)中 把之后的代码段放在 .then()中去消费,但是面试官好像对我的说法并不表示赞同,对我说如果给一个async的空函数会返回什么?我没太理解他的意思,他让我到下面自己试一试

  3. webpack的构建过程

    关于打包工具我知道自己一直理解的不是很深和很准确,于是只能硬着头皮把自己理解的说出来了,我说的是在webpack中会在内部运行一个server,每当有文件改动的时候会执行热更新,不过webpack是把所有的文件都会更新在执行流程,就导致很慢,vite就是按需加载会更快,在执行打包build命令的时候,webpack总共分成了三个阶段,初始化流程 && 编译构建流程 && 输出文件

    初始化流程:从配置文件和shell中读取参数,初始化Complier和Compilation

    编译构建:执行Complier类的run方法进行编译,找到entry的入口文件,根据文件配置和loader配置对文件进行转化,协议文件的AST语法树,找到依赖关系,递归编译

    递归完后得到每个文件的最终结果,根据 entry 配置生成代码块 chunk,输出所有 chunk 到对应的 output 路径,打包完成

  4. flex 1 是什么意思?是那些属性的缩写?对应的都是代表什么意思?

  5. 紧接着就问我知不知道tree sharking 和 联邦模块等的

  6. 做了一个有关Promise的编程题

    类似要自己写一个管控流程去按顺序的输出一些内容这种

  7. promise中的.catch 和 try catch 中的 catch有什么区别吗?

  8. 为什么我在一个js文件中声明的变量和另外一个js文件中声明的变量可以重复并且不影响呢?

  9. 场景题:做过站内信吗?如果你的前端版本更新了,你如何去通知用户呢?没有后端你应该怎么做呢?具体实现的方案

  10. 场景题:知道cookie和token相关的知识吗?如果阿里的下面子系统,淘宝和天猫,如果淘宝拥有你的登陆信息,那么天猫如果判断出来你就是他们的用户呢?如果直接运行进入并且识别你呢?

  11. 浏览器的事件循环,nodejs的事件循环呢?有什么区别?什么是微任务,什么是宏任务,在react或者vue框架中他们是怎么调用的宏任务,除了setTimeout你还能想到怎样去添加宏任务

  12. 给一道Promise输出的编程题,大概就是让你手动添加微任务改变事件循环的输出

  13. dom原生事件熟悉吗?怎么完成dom的增删改?HTMLCollection是什么,如何在dom中去防止xss攻击,innerhtml会发生什么

  14. css中的grid布局,骰子的布局,unocss知道吗?如何制作多种主题和切换呢?

  15. 学过C++吗?知道C++中的经典题目拆炸弹吗?我们来一道关于js的拆炸弹

    这个汗流浃背了,因为说实话我不会在浏览器上面去debug,导致我去看网页源码调试变的异常困难,在面试官指点下一步一步完成的

  16. 我看你简历上面说熟悉计算机网络,那么你给我讲一下从url到网页显示内容的过程,刚准备来吟唱八股,面试官抢先说,说一点别人不知道你知道的 我:???

  17. 如果知道自己的网络从那个网卡出去的呢?如果你的数据包发到了网关处网关怎么给你转发呢?你知道rip和ospf吗?算法的逻辑是什么?怎么配置的路由表? 我:???

  18. 我看你平时日常开发用的是linux系统啊,那你一定对linux很了解吧,说一些你常用的linux命令和linux中的文件管理???最后得到的面试官评价是:你的linux使用shell的水平就跟windows的cmd一样!!!被狠狠的伤到了

  19. 平常使用docker干嘛?说一下docker的一些指令以及一些配置文件

  20. 手写一下防抖和节流,高阶函数有什么用?一般你日常开发会用到什么地方?

  21. react中有关于render的优化手段,你平常中有哪一种的多?

  22. 手写一下请求库中的串行,不能使用await和递归

  23. 写一个请求阀的类,要求有并发限制,超时丢弃,可以随时开启和关闭,可以往里面推加任务,暂停的时候要记录当前帧下次开启的时候要复用,而且要传入很多回调,要有自己规定的生命周期? 当时听完后我的感觉是:我日????

  24. 完成一个下载中心,类似于谷歌浏览器中的下载任何任务,我开始想成串行了,最后在面试官提醒下才知道下载中心的模式,不过写的也不正确,因为每个resolve去接受的res可能不是那次任务的

  25. 网络的七层模型和每层的作用

  26. http1.1中的队头阻塞是指什么?没有http2的时候是怎么优化的呢?头部臃肿又是什么?是header里面的字段吗?怎么打表的?

  27. 在实习项目中 react 结构,数据流转,组件设计,为什么要封装antd-pro,你是做了什么样的操作?

  28. 大数相加(有正负和小数)

  29. 数组拍平方法

  30. 编码中的设计模式

  31. javascript中的原型链

  32. 排序算法,把自己知道的全说出来

  33. 浮点数在内存中的存法

  34. 最长回文子串

  35. deepclone实现

  36. 讲一讲http1.1 http2 http3 https都有什么特点和改进?

  37. 浏览器中的缓存策略(强制缓存和协商缓存)

  38. 讲一下js中的垃圾回收

  39. 垃圾回收有那些算法?

  40. esmodule和commonjs有什么区别?

  41. css中实现居中的手段

  42. 螺旋矩阵

  43. 大文件上传怎么做的,讲了一下思路

  44. 具体流程呢?

  45. 断点续传是怎么做的呢?

  46. 比如极端的情况,断点续传传到一半浏览器关闭了,下次在打开怎么做的上次的情况呢?

  47. 计算是在ui主线程吗?

  48. 大文件上传怎么监控失败的情况呢?

  49. 平常用nodejs吗?写过那些工具?做过哪些工具链?

  50. 跨端知道吗?

  51. 微信小程序实现原理

  52. 微信小程序的serve是运行在什么地方

  53. 跨端的原理是什么?

  54. 知道electron吗

  55. 为什么可以做成桌面程序呢

  56. 讲一下你做的性能优化,性能优化的指标?ssr和ssg有什么不一样的地方

  57. 讲一下react和vue的不同,react fiber是什么?

  58. 爬楼梯 && 优化 && 如果是可以爬n步呢?

字节实习一周感受

字节的软硬件配置都很好(什么牛马套件),电脑也是发的最新的m3pro,内部也有很多的基建和一些运维上面的工具之类的,整个需求从评审到排期到开发到落地流程是很规范的,唯一感觉是自己可能没什么产出,而且每个人都非常忙,几乎没人带着我去看代码和做需求(这样也很正常),而且基本上都是九点半后在下班了,虽然可能自己没什么活但是不知道为什么也拖的很晚,强度还是很大的,而且我感觉我的自学能力其实挺弱了555,不过加油吧!!!争取下周多做点需求

同时最近秋招也开了,本来打算是边实习边秋招的发现根本做不到啊,周末的复习八股卧薪尝胆计划也失败了,刷了两天的手机😭,下周要好好努力了!!不能看小说和看番啊!