2021首份字节面经珍藏版 | 前端开发

2,108 阅读6分钟

引言

大家好,小编在有了一点前端项目经验后,自我感觉良好,感觉Ctrl + C / Ctrl + V 大法就能打遍天下了,于是,机缘巧合下,冲刺了一把字节的面试。经历过字节笔试的过程后,对前端开发有了新的认识。下面简要谈谈我的感受。

经历

笔者采用的是在线视频面试,直接视频通话在线做题。一来先自我介绍,然后做题,你和面试官会有一个操作界面,面试官会现场把题目发给你,看着题目,就可以在中间的playground代码编辑区写答案了。笔试题大概有3题,可能根据做题情况,面试官会酌情增减。

小编做了3题

  1. 第一题基础题,考察原型链方法调用输出结果,基本概念把我绕晕了,出错;
  2. 第二题算法题,在面试官的指导下,修复了部分低级错误,调试做了出来;
  3. 第三题算法题,在自己写出大概逻辑的情况下,不知道哪里犯了低级错误,未调试成功;

不得不称赞一下字节的面试官,很亲切的开发小哥,虽然小编很菜,但是让小编感觉交流很舒服,会敲代码又会沟通的大神,很敬佩。

思考

  1. 首先,C/V大法直接pass,因为是要在线直接手敲代码的,没有地方Ctrl+C,因为是在线笔试,按道理你也可以搜索答案,但是面试官直接盯着你呢,你想干啥;
  2. 不过也不是完全手敲,字节在线面试用的牛客网在线做题,还是有语法提示的,所以你只要记得基本的js的语法,也可以写出来,问题不大。不过前提还是你知道有哪些API,而不是遇到问题就直接搜索答案才能知道的那种;
  3. 自己现场手敲代码,还是不够熟练,因为平时能复制来用的代码,为啥要手敲呢?没错,面试要手敲,所以之后我们要养成手敲代码的习惯,一是为了记住这些代码,二是还能提高打字速度
  4. 最后就是,算法算法算法,框架什么的不是重点,底层、深层次的逻辑,才是最重要的

总结

面试前邮件里就说了,先要准备对系统设计的认识,这个我倒是能吹吹,但是面试官没问。这里我把小编总结的内容分享出来。

问题如下:

如何从一个需求落实到一个系统设计,如何衡量两个不同设计的好坏,如何在各种限制下(人员、时间、资源等)选择其中更合适的设计,以及提升该设计的可拓展性等

小编脑补吹牛场景:

  • 从一个需求落实到一个系统设计,

    1. 首先进行需求分析,根据具体业务需求整理出功能点和大致的产品方案,注意挖掘出隐藏需求,较难实现的部分也需要及时调整
    2. 根据方案做原型设计
    3. 根据原型设计来定架构方案和技术栈,接口数据结构,定数据库表结构,后端数据结构,模块规划等
    4. UI设计后,前端这边:根据需要调整接口数据结构,定前端DOM渲染数据结构,开发文件目录,模块划分等
    5. 开发,测试,迭代,优化
  • 如何衡量两个不同设计的好坏 从两个角度考虑

    1. 一是开发者的角度,看模块、代码结构的设计是否方便开发,易于维护和扩展,性能如何,代码规范是否合理
    2. 二是用户的角度,看系统界面是否美观,操作是否流畅和简便,打开速度快不快
  • 如何在各种限制下(人员、时间、资源等)选择其中更合适的设计

    1. 人员方面,选择开发者储备多的技术栈,比如如果市场调查Angular开发者很难招,那就选择Vue/React
    2. 时间方面,时间紧张时就做MVP,先做最核心、最重要的功能,不必要的功能往后延期,后续再迭代优化
    3. 资源方面,资源不足时就考虑现有资源能实现的最有用的功能有哪些,同样也是功能简化的思路,然后通过已经实现的这部分功能,去获取或者申请更大的资源
  • 提升该设计的可拓展性

    1. 文件目录结构合理,类别清晰,如果添加相关功能,要一眼就能看出来加在哪里合适

    2. 数据结构设计时要尽可能考虑未来可能还会增加哪些参数,留好口子,比如你在状态管理里面定一个变量,那么可以先定一个父级变量再把当前要用的变量放进子变量里,这样的话,假如之后又需要加一个类似这个变量的数据的时候,就可以加在子变量里,这样整体数据结构就不会太乱

    3. 模块或函数多做拆分,注意一个模块负责一块功能,并标注清楚

    4. 公共模块、方法、变量、组件需要抽出来模块间或者项目间共享,提供复用率

还有就是题目取材自leetcode,没说难度,好家伙,小编简单题都敲不全,这个确实要下点功夫学习下,有经验的朋友说要求大概在中级难度水平,我理解意思是如果你中级难度信手拈来,你肯定没问题,如果中级难度稍微要花点时间,那也可以,只需要稍加练习即可。

总结来说就是,刷leetcode吧

leetcode

重磅重磅!!

字节跳动在上海的前端团队招聘啦,目前所做的业务是飞书文档。

30 – 60K · 15薪

找我内推的好处:

  • 简历优先筛选
  • 面试过程及时跟进
  • 优先接触直属leader

接触底层前端技术,与大牛们共舞!

有兴趣可以前来咨询

职位描述

  • 负责企业级沟通及协作办公工具Lark产品的研发,包括但不限于在线表格;
  • 负责高质量的设计和编码;承担重点、难点的技术攻坚;
  • 和产品经理配合,深度参与产品需求讨论,功能定义等;
  • 主要前端框架:React、Electron等。

职位要求

  • 1年及以上Web前端开发经验;
  • 熟练掌握计算机相关基础知识,具有良好的设计和编码品味,热爱写代码能产出高质量的设计和代码;
  • 掌握WEB前端开发技术: JavaScript(含ES6)、HTML、CSS、DOM、协议、安全等;
  • 有表格相关领域研发经验优先,有客户端开发经验优先,有知名开源作品优先;
  • 积极乐观,认真负责,乐于协作。

办公环境:

环境1 环境2 环境3 环境4