引言
大家好,小编在有了一点前端项目经验后,自我感觉良好,感觉Ctrl + C / Ctrl + V
大法就能打遍天下了,于是,机缘巧合下,冲刺了一把字节的面试。经历过字节笔试的过程后,对前端开发有了新的认识。下面简要谈谈我的感受。
经历
笔者采用的是在线视频面试,直接视频通话在线做题。一来先自我介绍,然后做题,你和面试官会有一个操作界面,面试官会现场把题目发给你,看着题目,就可以在中间的playground代码编辑区写答案了。笔试题大概有3题,可能根据做题情况,面试官会酌情增减。
小编做了3题
- 第一题基础题,考察原型链方法调用输出结果,基本概念把我绕晕了,出错;
- 第二题算法题,在面试官的指导下,修复了部分低级错误,调试做了出来;
- 第三题算法题,在自己写出大概逻辑的情况下,不知道哪里犯了低级错误,未调试成功;
不得不称赞一下字节的面试官,很亲切的开发小哥,虽然小编很菜,但是让小编感觉交流很舒服,会敲代码又会沟通的大神,很敬佩。
思考
- 首先,C/V大法直接pass,因为是要在线直接手敲代码的,没有地方
Ctrl+C
,因为是在线笔试,按道理你也可以搜索答案,但是面试官直接盯着你呢,你想干啥; - 不过也不是完全手敲,字节在线面试用的牛客网在线做题,还是有语法提示的,所以你只要记得基本的js的语法,也可以写出来,问题不大。不过前提还是你知道有哪些API,而不是遇到问题就直接搜索答案才能知道的那种;
- 自己现场手敲代码,还是不够熟练,因为平时能复制来用的代码,为啥要手敲呢?没错,面试要手敲,所以之后我们要养成手敲代码的习惯,一是为了记住这些代码,二是还能提高打字速度
- 最后就是,算法算法算法,框架什么的不是重点,底层、深层次的逻辑,才是最重要的
总结
面试前邮件里就说了,先要准备对系统设计的认识,这个我倒是能吹吹,但是面试官没问。这里我把小编总结的内容分享出来。
问题如下:
如何从一个需求落实到一个系统设计,如何衡量两个不同设计的好坏,如何在各种限制下(人员、时间、资源等)选择其中更合适的设计,以及提升该设计的可拓展性等
小编脑补吹牛场景:
-
从一个需求落实到一个系统设计,
- 首先进行需求分析,根据具体业务需求整理出功能点和大致的产品方案,注意挖掘出隐藏需求,较难实现的部分也需要及时调整
- 根据方案做原型设计
- 根据原型设计来定架构方案和技术栈,接口数据结构,定数据库表结构,后端数据结构,模块规划等
- UI设计后,前端这边:根据需要调整接口数据结构,定前端DOM渲染数据结构,开发文件目录,模块划分等
- 开发,测试,迭代,优化
-
如何衡量两个不同设计的好坏 从两个角度考虑
- 一是开发者的角度,看模块、代码结构的设计是否方便开发,易于维护和扩展,性能如何,代码规范是否合理
- 二是用户的角度,看系统界面是否美观,操作是否流畅和简便,打开速度快不快
-
如何在各种限制下(人员、时间、资源等)选择其中更合适的设计
- 人员方面,选择开发者储备多的技术栈,比如如果市场调查Angular开发者很难招,那就选择Vue/React
- 时间方面,时间紧张时就做MVP,先做最核心、最重要的功能,不必要的功能往后延期,后续再迭代优化
- 资源方面,资源不足时就考虑现有资源能实现的最有用的功能有哪些,同样也是功能简化的思路,然后通过已经实现的这部分功能,去获取或者申请更大的资源
-
提升该设计的可拓展性
-
文件目录结构合理,类别清晰,如果添加相关功能,要一眼就能看出来加在哪里合适
-
数据结构设计时要尽可能考虑未来可能还会增加哪些参数,留好口子,比如你在状态管理里面定一个变量,那么可以先定一个父级变量再把当前要用的变量放进子变量里,这样的话,假如之后又需要加一个类似这个变量的数据的时候,就可以加在子变量里,这样整体数据结构就不会太乱
-
模块或函数多做拆分,注意一个模块负责一块功能,并标注清楚
-
公共模块、方法、变量、组件需要抽出来模块间或者项目间共享,提供复用率
-
还有就是题目取材自leetcode,没说难度,好家伙,小编简单题都敲不全,这个确实要下点功夫学习下,有经验的朋友说要求大概在中级难度水平,我理解意思是如果你中级难度信手拈来,你肯定没问题,如果中级难度稍微要花点时间,那也可以,只需要稍加练习即可。
总结来说就是,刷leetcode吧
重磅重磅!!
字节跳动在上海的前端团队招聘啦,目前所做的业务是飞书文档。
30 – 60K · 15薪
找我内推的好处:
- 简历优先筛选
- 面试过程及时跟进
- 优先接触直属leader
接触底层前端技术,与大牛们共舞!
有兴趣可以前来咨询
- 邮箱:liuyang.0809@bytedance.com
- 微信:niuyang89
职位描述
- 负责企业级沟通及协作办公工具Lark产品的研发,包括但不限于在线表格;
- 负责高质量的设计和编码;承担重点、难点的技术攻坚;
- 和产品经理配合,深度参与产品需求讨论,功能定义等;
- 主要前端框架:React、Electron等。
职位要求
- 1年及以上Web前端开发经验;
- 熟练掌握计算机相关基础知识,具有良好的设计和编码品味,热爱写代码能产出高质量的设计和代码;
- 掌握WEB前端开发技术: JavaScript(含ES6)、HTML、CSS、DOM、协议、安全等;
- 有表格相关领域研发经验优先,有客户端开发经验优先,有知名开源作品优先;
- 积极乐观,认真负责,乐于协作。
办公环境: