前端直播分享笔记 | 青训营笔记

131 阅读11分钟

(第一次)前端认知及学习路径

meetings.feishu.cn/s/1ixhfgfmj…

什么是前端

  • 前端负责开发与用户直接交互的界面

为什么需要前端岗位

  • 交互界面的复杂性:企业应用系统、在线编辑器等

  • 如何做出更好的「用户体验」

    • 性能、动画、美观
  • 可用性保障

    • 兼容、无障碍、安全

前端天花板高吗

  • 工程思维(不仅做了,还要做好)

    • 效率:开发范式、低代码平台、编译等
    • 性能:工具、监控、应用容器、JavaScript运行时等
    • 全链路:服务端、客户端等
  • 领域应用

    • 3D、可视化、在线游戏
    • 音视频等

前端入门路线

  • 基础语言

    • HTML、CSS、JavaScript
  • 行业标准和规范

    • 浏览器API、HTTP
  • 项目工程化

    • 数据状态驱动UI:React/Vue框架
    • TypeScript、Webpack/Vite、ESLint等

前端进阶

  • 做某个领域的专家

    • 性能
    • 动画
    • 编辑器等

技术之外

  • 保持好奇心,持续学习

    • 不要对一切习以为常,多问
  • 做好Team Player

    • 沟通能力、主动性
  • 思维方式

    • 结构化、数据驱动、ROI

(第二次)关于字节跳动面试的小分享

meetings.feishu.cn/s/1ixhfgfmj…

面试是什么?

面试的定义:通过一系列的沟通,引导与代码考核的过程,面试官挖掘候选人的能力,潜力,确认候

选人是否与目标团队匹配,决定其是否予以录用的过程,而非单纯地考倒对方。

简单来说,面试是一个交流的过程,交流的主题是“候选人是否符合岗位的招聘要求”。

这其实是一个非常抽象的说法,每个人对此都有不同的理解,最终结果的不确定因素是非常多的,比

如:

  1. 候选人的专业能力、综合素养
  2. 公司的经营状况、人才需求
  3. 整体大环境的影响、未来预期

从我目前的整个职业生涯来看,也面试过有上百位同学,遇见过一些各种各样有意思的事情。

本分享主要是从我个人的角度来聊聊我对面试的一些理解,希望可以多多少少帮助到大家。

从面试官的角度出发

面试前

在面试前,面试官一般都会提前看到候选人的简历,整体简历会给面试官有一个大致的印象。

一位好的面试官,会根据你的简历情况,准备相应的问题,能够更准确的评判候选人水平。

一位优秀的候选人,简历, 上应该有一些突出的亮点,便于面试官快速的识别到。

考察维度

面试官应该要从多个维度来综合衡量一个候选人的综合能力。

纵向(专业能力)计算机基本原理,操作系统,网络,设计模式,前端领域知识等
横向(项目能力)系统设计,技术方案,流程控制,难点解决
深度(算法和编码能力)编程题的高效实现,前端类编码题,编码风格,思路等
契合度(综合素质能力)性格,沟通方式,学习能力,主动性,责任心等

考察前端专业知识

  • 内容比重:HTML 10-15%,CSS 20-30%, JavaScript 50%以上。

  • 掌握程度:

    • 了解:应用基础知识完成常规业务开发,对一些常规的Bug能够有解决能力
    • 熟练:了 解各个基础场景面临一些坑, 并且针对语言特性有一些应对方案。
    • 掌握:理解语言底层的运行环境和运行原理,能够根据底层原理解决问题。
  • 简要考纲:

    • JavaScript

      • 数据类型、检测方法、转换方式
      • 函数和类,继承、定义提升、类的特性、闭包
      • 流程控制,callback、 Promise
      • 数据结构,数组、对象、装箱等
      • 网络操作,xhr/fetch、 tcp、 https
      • DOM、BOM
      • 正则、JSON
    • HTMl

      • 常用标签、语义化标签、HTML5特性
      • 属性、事件
    • CSS

      • 选择器(伪类、伪元素)
      • 盒模型,BFC
      • position、flex、 transition、 animation
      • 常用技巧,样式标准化、清除浮动、响应式设计、布局实现
      • 编译器,sass/less/ postcss
    • 进阶知识

      • 浏览器渲染机制、存储能力等
      • 性能
      • 安全

考察项目和系统设计

  • 基本方法论

    • 项目是什么,做了什么,怎么做的,收益是什么,是否可以说清楚?

    • 围绕项目中使用到的基础知识进行考察,比如

      • 框架|库
      • 工程化
      • 其他项目核心工具
    • 项目中的不足和优化点,是否可以更优处理?

  • 评价标准

    • 基本要求

      • 能清晰的描述项目的背景和功能点、包括技术方案
      • 熟悉项目中框架和库的使用方式
      • 能够使用合适的工程化方案解决工程化能力
    • 进阶要求

    • 加分项

      • 能够把项目中的东西做好足够的封装并提供给外部使用
      • 能够hold住整体的技术方案,并且具备协同能力
      • 对业务理解透彻,能够利用技术对业务产生价值
      • 对框架和库理解透彻,能够基于项目特性提供更好的工具
  • 系统设计

    • 举例

      • 设计一个组件库?
      • 设计一个文件上传系统?
      • 设计一个登录框,或者一个登录系统?
      • 设计一个联动的表单系统?
      • 设计一个功能完善的搜索组件?
    • 基本要求

      • 整体思路比较清晰,能够正常work
      • 具备良好的健壮性和基本的可扩展性
    • 进阶要求

      • 能够兼顾到体验(用户、开发者)体验
      • 抽象层次更好,解耦完善,可复用程度高
    • 加分项

      • 能考虑到边缘Case,比如输入不合法情况的处理
      • 能考虑各种场景,比如登录考虑到安全性加密,服务端数据的处理等等

误区

  1. 面试不单是八股文的背诵,而是需要考察结合实际场景,运用所学知识解决实际问题的能力。
  2. 面试过程是平等的,面试官不应以考倒候选人为目的,而是应该尽量的发掘候选人的长处。
  3. 不要追究过时的细节,比如兼容性、某些DOM API参数等,这些只需了解,实际项目中根本不会用。
  4. 一般不会当场告诉候选人面试结果和评价,不过如果时间赶得及就会接着约下一轮。

从候选人的角度出发

技能储备

做一件事做好的时机是十年前,其次是当下

  1. 培养你对计算机、前端、互联网技术真正的热爱,而不只是吃饭的工具。
  2. 不要焦虑,制定目标和规划,从最简单的开始学起,踏实的学会每个知识点。
  3. 常去思考,这些知识点背后的原因是怎样的,这些知识点是否可以关联起来。
  4. 重视代码,学习如何去阅读代码,如何去让你的代码看起来架构合理、逻辑清晰。
  5. 走出去,到技术社区里去,三人行则必有我师。

准备简历

  1. 技术能力的描述真实清晰,能够切中招聘方需求

  2. 项目经历的描述完整,具体,价值点突出,最好自带可访问作品;

  3. 突出重点,展示能力,一定是做出了什么而非做过什么;

  4. 对技术有足够的热情并愿意做持续投入,有明确的关注点以及未来发展规划。

  5. 不需要太花哨,有价值的是其中的内容,内容控制在1-2页,不要带来太多的信息冗余。

对于实习/校招生来说,简历中可以凸显下面的关键信息:

  1. 个人信息:基本信息,入学时间,学历背景等
  2. 优势总结:前端技术栈,工程化体系,社区成就(开源作品,博客文章,会议演进等)
  3. 实习经历:从近到远的提取出实习过的公司,任职岗位,关键产出,数据指标等
  4. 项目经历:推动了什么事情,解决了什么难点,获得了哪些指标,沉淀了哪些思考。

投递简历

如果你对自己比较有信心,可以不用考虑中小公司,直接往你心仪的大公司投递简历即可。

个人的建议是,在投递你心仪的公司之前,先尝试投递其他几家公司试试水,这样做的好处有:

  1. 提前熟悉一下面试流程,可以当做预先的演练,正式面试前的不适应
  2. 如果能最终通过,手上有offer了 ,可以给你更大的信心接受挑战
  3. 鸡蛋不要放在一个篮筐里,如今就业形势并不乐观,多一个保底总归是好的

offer是用来证明你的竞争力的,除非你足够优秀,否则不要把它当作和HR议价的工具

面试前

  1. 准备好自我介绍,时长控制在1分钟即可,适度展示自己的长处,不好凑的话,一句话介绍下项目也

可。

  1. 调试好网络,电脑电量,耳机麦克风,整理干净仪容仪表,确保环境是相对安静的。
  2. 提前熟悉一下,脱离VSCode等智能编辑的环境,因为线上写代码体验可能不会那么好。

面试中

  • 情绪

    • 不要紧张,紧张只会影响你的正常发挥、影响你思路的清晰性。8只309
    • 不要过分谦虚,人都是会犯错的,重点是如何去改正和避免再次犯错。
    • 不要过分骄傲,给自己足够的自信,但是不要过度炫耀自己的才华。
    • 心态端正,把面试作为一次交流的机会,既然认识到自己的不足,也要发现自己的长处。一道题目回答错误并不等于此次面试的结束,要理解面试官其实是需要尽力发掘你的长处的。
    • 礼貌,不管结果如何,一定要向面试官表达感谢,留下一个较好的印象。
  • 回答策略

    • 面试官问完之后,不要急着回答,先给自己一些思考时间,先理解清楚面试官想问的是什么,把答案理清楚再回答。
    • 不要追求完美,面试时间是非常宝贵的,你可以先回答出基本解法,再去考虑更好的解决办法。
    • 可以虚心求指导,如果短时间难以得出答案,可以向面试官寻求一些提示,如果因此能得出很好的答案,这并不会减分。
    • 同样的,编码部分也是如此,如果这道题你没有刷过,也不用慌张,就当作一 次挑战。你可以尝试说出自己的思路,根据面试官的回答做进一步的编码。

你有什么想问我的?

一般来说,面试官最后可能会向你提出这个问题,我个人认为至少问一点,不宜太多。

比如目前团队大致方向,有哪些挑战,发展潜力等,这些问题的答案会帮助你做更好的选择。

不建议询问敏感和关键性信息,如果需要,可以留到HR面试的时候解答。

软素质表达(HR面)

不管是处于职业生涯中哪个阶段的软件开发者,如果需要将自己的职业生涯提到更高的层次,都离不开在个人软素质上的持续提升,同样在面试考察中也会贯穿始终。

自驱力

自驱力是一一个人成长的源动力,自驱力好的人后面发展的潜力也会比较好,比如是不是经常做计划?为什么会做这个计划?最近的计划是什么?计划是不是足够?

好奇心

逆水行舟,不进则退,如果不对不断变化的世界保持好奇心,且不断学习精进自己,很可能会跟不上节奏,一是知道所在的领域里有什么,二是知道为什么,发展局势判断等;

学习能力

首先要有学习的意愿,其次要有行动,最后还有要有结果,大部分人可能只是看了起步,但是没有落地可衡量指标也是不够的;

沟通表达能力

沟通的目的是要正确的传递信息,好的沟通表达要简单明了,且能抓住重点,好的表达方式是采用STAR原则,所谓STAR原则,即Situation (情景)、Task (任务) 、Action (行动)和Result (结果)四个英文单词的首字母组合,它是结构化面试当中非常重要的一一个理论;

技术规划能力

规划是对未来整体性、长期性、基本性问题的思考,并结合这些思考设计全面长远的发展计划和行动方案。和计划相比,规划更加具有前瞻性、全局性、战略性和方向性,好的团队也应当是愿景驱动,而不只做任务执行。