跳到主要内容

软实力

2025年03月22日
柏拉文
越努力,越幸运

一、自我介绍


您好, 我叫张文强, 现在拥有将近 5 年前端开发经验, 我对前端技术拥有深入理解, 尤其在 VueReact 框架上积累了丰富的实践经验; 同时, 在服务端开发上也具备较强能力, 熟练掌握 NodeRedisMongoDB 等技术, 可以灵活应对全栈项目需求。在工作中, 从零到一开发过 AI 视频录制工具, 集成人脸识别、ASR, 视频录制帧率达到 40 fps+, 工具上线后, 直接达成了诺和诺德以及日本生命人寿两家签单。也曾将基于 Angular 1.xWebpack 4.x 构建的老旧大型项目的重构升级工作, 通过采用 RsPack 构建方案, 构建速度提升 90%。也探索过 AI 技术在业务中的应用, 也基于 QianKun 重构过一个大型平台, 平台接入的各个页面加载速度提升 20%, 基于 MicroApp 对大型页面进行分模块渲染, 有效的提升了首屏渲染速度。以上就是我的介绍。

二、如何管理项目?


构建一个项目需要从需求分析到技术选型, 再到团队协作和后续维护, 整个流程都要精心设计。

一、需求分析与规划, 与产品、设计、后端等各方沟通, 了解项目的业务需求和用户需求, 并明确项目的范围, 包括功能点、时间和预算等, 来确定项目需求和范围。

二、技术选型, 根据项目特点选择合适的框架(如 ReactVueAngular), 并考虑团队熟悉程度。根据项目复杂度选用状态管理方案(如 ReduxVuexMobX 或者使用 React HooksContext)。确定使用 WebpackVite 等构建工具, 并考虑 BabelTypeScript 等对代码质量和可维护性的提升。 如果需要快速迭代, 可以考虑引入成熟的 UI 库(如 Ant DesignElementUI)或自定义组件库。

三、项目初始化与目录结构设计, 根据模块化和组件化思想规划目录结构, 制定代码风格规范(ESLintPrettier), 确保团队代码风格统一。

四、架构设计与组件化开发, 采用组件化、容器与展示层分离的设计模式, 使得组件具有高内聚低耦合的特点。 根据业务逻辑划分不同模块, 确保每个模块职责单一, 易于测试和维护。 针对大型项目, 提前规划路由级别和组件级别的懒加载,提高首屏加载速度。抽象后端接口, 统一管理数据请求和错误处理, 保证数据层与 UI 层解耦。

五、环境配置与开发工具链, 配置本地开发环境(热更新、mock 数据、代理配置),提升开发效率。制定 Git 工作流程(Git FlowFeature Branch),确保代码版本管理有序。

六、CI/CD 与代码质量控制, 配置 CI 流水线(如 GitHub ActionsJenkins),实现自动化测试和构建,保障每次提交都稳定可靠。制定代码审核流程,保证代码质量,分享知识,降低技术债务。部署上线后,通过日志、性能监控工具(如 SentryNew Relic)收集反馈,及时发现和修复问题。

七、项目管理与团队协作, 使用敏捷方法(如 ScrumKanban),进行迭代开发,定期评审和调整项目进度。 根据团队成员技能与经验合理分配任务,鼓励知识分享和跨部门协作。

八、后续维护与迭代优化, 根据用户反馈和数据分析,进行产品功能和性能优化,适时重构代码。建立完善的技术文档、组件库文档以及 API 文档,便于新成员快速上手和后续维护。

三、如何管理需求?


一、需求分析

二、需求评审

三、视觉、交互评审

四、技术方案评审

五、研发

六、测试用例评审

七、测试

八、验收反馈

九、发布

四、如何做技术选型?


五、如何与 HR 谈薪资


根据我对市场的了解,我期望的薪资在 24 到 26 之间, 具体的数字可以根据公司对我的综合评估来确定。

六、谈谈你的优点、缺点?


一、优点: 我对前端技术拥有深入理解, 尤其在 VueReact 框架上积累了丰富的实践经验; 同时, 在服务端开发上也具备较强能力, 熟练掌握 NodeRedisMongoDB 等技术, 可以灵活应对全栈项目需求。在工作中, 我不仅关注页面和组件的实现, 更重视整体前端架构的设计与优化。曾主导多个项目从多仓向大仓的迁移, 并成功设计出基于 PNPM+Monorepo 的高效方案, 显著缩短了 NPM 带来的安装和调试时间。另外, 我也积极关注行业前沿动态, 积极将新技术融入到项目中。例如, 在 AI 应用方面, 我从零开始开发了 AI 视频录制工具, 并顺利交付了 AI 封面图、字幕 及 数字人 等功能, 为项目带来了创新驱动。最后, 在项目推进过程中, 我也非常注重与团队成员、产品、设计及其他部门的高效沟通, 确保各环节协调一致。通过积极倾听和及时反馈, 我能迅速解决问题, 促进团队协同合作, 保证项目高质量按时交付。

二、缺点: 过去在某些项目中, 比如开发 AI 视频录制工具时, 我在图像推理和音频处理上投入了过多精力, 导致 UI 部分进度滞后。为了解决这一问题, 我开始定期回顾项目进展, 并优化团队协作和流程管理, 学会在追求技术深度与项目整体进度之间保持平衡。这一调整不仅提升了工作效率, 也增强了跨部门沟通和整体项目管理能力。

七、上线出现问题如何解决?


八、最快什么时候能够到岗?


我目前是在职状态, 也非常期待加入贵公司, 如果后期 Offer 能够达到预期的话, 我会尽快提出离职, 确保离职前完成正在进行的工作, 并交接完成后, 会尽力缩短时间。

九、为什么选择我们公司呢?


我之前就对这个行业很感兴趣,通过各种渠道了解到该行业发展前景也很好, 而贵公司在该行业中也是佼佼者, 知名度也很好。人人都说, 兴趣是最好的老师, 更能驱动自己。

十、为什么从上一家公司离职?


目前我们的 UMU 学习平台在教、学、练、习的功能和业务上取得了非常棒的成果, 那我作为开发者也非常开心、自豪。但与此同时, 我渴望在更具挑战性的技术和项目中不断突破自我, 从而为团队带来更多创新和价值。我坚信, 一个优秀的平台与团队是相辅相成、共同成长的。我期待能在一个持续激发我潜力并与我成长目标相契合的环境中长期投入, 与团队携手迎接未来的挑战, 共同实现更大的成就。

十一、最近有关注什么新技术吗?


一、AI 领域: 关注如何将 AI 技术嵌入前端应用, 比如利用 TensorFlowTensorFlow.js 在浏览器端训练和推理模型

二、Rust 语言: Rust 语言凭借其内存安全和高性能, 正在迅速成为前端构建工具的热门选择。我关注的工具如 swc-loaderRsPack, 都是利用 Rust 重构构建流程, 极大提升了编译速度和代码优化效果。此外, 我也在探索如何将 RustWebAssembly 结合, 在关键性能模块中获得接近原生的性能, 为前端开发带来全新可能。

三、KafkaRocketMQRabbitMQ 消息队列: 虽然这些技术传统上属于后端, 但随着前后端一体化的趋势, 我开始关注如何通过消息队列实现实时数据同步和事件驱动架构。比如在实时数据流和动态交互场景中, 借助消息队列与前端的 WebSocketServer-Sent EventsSSE)技术相结合, 可以实现高效、实时的数据推送, 极大改善用户体验。

十二、你还有其他公司的 Offer 吗?


我目前有两个已经确认过的 Offer。但是我对本公司的工作环境、文化以及发展机会很感兴趣, 如果薪资差距不大, 我会倾向于选择本公司。

十三、你对未来 3-5 年的职业规划?


首先深耕未来入职公司业务, 出色完成业务工作的同时沉淀出自己的一些方法、心得。同时, 也希望为团队作出一些积极的贡献, 共同创造更多的价值, 并帮助团队扩大影响力。我也非常重视学习和个人成长。在每天六点起床后, 我会系统学习一些 AI 领域方面的知识, 探索 AI 如何在前端更好的落地。也会利用早起的时间来继续精进前端领域的深度。

十四、如何利用 AI 工具来进行赋能的?


在我们前端领域, AI 工具在多个层面都能显著提升工作效率和产品竞争力。首先, 在日常开发中, 像 GitHub CopilotCursor 这样的 AI 辅助编程工具可以帮助我加速代码编写、自动补全和错误检查, 从而降低重复劳动, 快速实现原型。再者, AI 工具还能在自动化测试和性能监控中发挥作用, 例如自动生成测试用例、分析用户行为数据, 帮助团队及时发现并优化性能瓶颈。最后,我也会利用 AI 技术促进团队协作, 通过自动化文档生成和代码审查, 提升整个团队的开发效率。

十五、从自己的角度,如何保证代码质量?


一、初始化项目: 制定或遵循行业公认的代码规范, 并使用 ESLintPrettier 等工具自动检查和格式化代码, 确保代码风格一致。并基于 Git Hooks, 比如说 husky, 利用 pre-commit Hook 提交前检测是否符合代码规范。

二、技术评审阶段: 需求开发初期, 必须先制定详细的技术方案, 在完整实现需求的基础上, 保证架构设计正确, 从而保证后续的可维护性、可扩展性、可读性。

三、项目开发阶段:

  1. 函数式编程: 尽量使用纯函数, 函数功能尽可能单一。

  2. 模块化管理: 统一模块规范为 EsModule, 并且模块编写规范为 纯模块命名导出

    1. 采用组件化、容器与展示层分离的设计模式, 使得组件具有高内聚低耦合的特点。而且一个组件代码不宜过多, 一般超过 400 行将丧失可读性。因此, 需要根据业务逻辑划分不同模块, 确保每个模块职责单一。比如说 data 数据层, 用于存储常量、枚举。server 服务层, 用于管理各个接口。interface 用于管理各个类型。

    2. 纯模块: 如果某个模块中, 声明某个全局变量, 比如 添加修改 Window 属性注册事件监听器 等, 没有进行任何导出。Tree Shaking 主要依赖于静态分析模块的导入和导出, 如果不通过 sideEffects 声明来告知构建工具这些文件具有副作用, 它们可能会被误认为是 无用 的而在打包过程中被剔除, 导致 添加修改 Window 属性注册事件监听器 失效。因此, 我们在 Js 模块中, 尽可能做到无副作用。

    3. 命名导出: ES6 模块的 Tree Shaking 依赖于静态分析导入与导出关系。对于命名导出, 构建工具可以明确知道哪些变量被使用, 从而在打包时剔除未被引用的代码。但是, 默认导出对象的情况不同: 整个对象在被导入时会被当作一个整体, 内部的属性(ABC)没有单独的导出标识, 当 B 模块通过解构来获取对象内的属性时, 这个过程是在运行时进行的, 构建工具无法在静态分析阶段确定只需要 A, 而剔除 BC。因此, 默认导出对象, 无法有效利用 Tree Shaking

  3. 文档与代码注释: 强调良好的文档习惯,包括详细的 API 注释、模块设计文档和开发指南, 能够帮助新成员快速上手, 长期来看也能减少技术、业务债务。

四、代码审查 Code Review: 引入 AI Code Review, 作为 Code Review 的第一道屏障, 根据我们设定的代码规范提示词, 进行初步 Review。在提测阶段, 进行最后的 Leader Code Review 或者 Monenter Coder Review

十六、讲讲你和普通前端,你的亮点有哪些?


我对前端技术拥有深入理解, 尤其在 VueReact 框架上积累了丰富的实践经验; 同时, 在服务端开发上也具备较强能力, 熟练掌握 NodeRedisMongoDB 等技术, 可以灵活应对全栈项目需求。在工作中, 我不仅关注页面和组件的实现, 更重视整体前端架构的设计与优化。曾主导多个项目从多仓向大仓的迁移, 并成功设计出基于 PNPM+Monorepo 的高效方案, 显著缩短了 NPM 带来的安装和调试时间。另外, 我也积极关注行业前沿动态, 积极将新技术融入到项目中。例如, 在 AI 应用方面, 我从零开始开发了 AI 视频录制工具, 并顺利交付了 AI 封面图、字幕 及 数字人 等功能, 为项目带来了创新驱动。最后, 在项目推进过程中, 我也非常注重与团队成员、产品、设计及其他部门的高效沟通, 确保各环节协调一致。通过积极倾听和及时反馈, 我能迅速解决问题, 促进团队协同合作, 保证项目高质量按时交付。

十七、你对下一份入职的公司有什么预期吗?


我希望下一份工作在业务和技术上都有更大的成长和挑战空间, 这样我可以与团队共同探索新技术、解决更复杂的问题, 并为公司创造更大的价值。基于我对这个岗位的了解, 加上一面和二面面试官对岗位的详细讲解, 我认为这个岗位非常符合我的职业规划和技术追求, 对我来说充满吸引力。

十八、谈谈你对 B 端业务和 C 端业务的理解?


B 端业务主要面向企业、政府等专业用户,关注工作流程、数据管理和协同办公,要求功能性强、数据准确、流程严谨,界面设计以简洁实用为主,通常采用订阅或定制服务模式,决策理性且周期较长。而 C 端业务直接面向广大消费者,涉及电商、社交、娱乐等领域,强调极致的用户体验,界面需要视觉吸引、交互流畅、响应迅速,其商业模式多样,如广告、电商及增值服务,市场推广更注重情感和体验,竞争较为激烈。总体来说,B 端侧重企业级稳定和高效数据处理,C 端则追求用户体验和互动。作为前端开发者,我深知两者在技术选型与架构设计上的差异,能根据业务需求制定优化策略,为产品提供最佳性能与体验。

十九、我的问题问完了, 你有什么需要问我的吗?


一面: 目前业务的重点和主要挑战是什么?

二面: 目前业务的重点和主要挑战是什么?目前业务的发展处于什么阶段呢? 团队氛围怎么样呢?

三面: 这个部门的业务的发展方向是怎么样的?

HRBP: xx 公司企业文化是怎么样的呢?

二十、在以往的工作经历中, 有哪些最优成就感的项目?


在我以往的经历中, 经历许多重难点需求。那最有成就感的项目是基于 TensorFlow.js 从零到一实现的 AI 视频录制工具。这个视频录制工具, 业务特色非常浓重, 之前没有一个案例可以参考。所以, 从方案设计、技术选型、方案逻辑都是自己潜心专研、一步一步探索来完成、实现的。

实现背景: UMU 学习平台主要服务于企业培训, 同时也面向个人用户。我们的客户包括霸王茶姬、诺和诺德以及日本生命人寿等知名企业。平台主要分为 三个部分。针对 这一环节, 我们开发了一个 AI 视频录制工具。简单来说, 学员在录制视频进行话术练习时, 这个工具会利用 TensorFlow 实时检测他们的手势、眼神、微笑和自信等表现, 并提供即时反馈。同时, 工具会把学员的面部特征和语音转写数据(ASR)上传到服务器, 系统根据这些数据生成一个精准的得分, 这个得分往往会被用于公司绩效考核的一部分。

实现细节: 1. 音视频录制与合成; 2. 推理图像、推理优化; 3. 音频采样、采样优化

二十一、你了解这个岗位吗? 你觉得你可以胜任这个岗位吗?


根据我对这个岗位的了解, 加上一面、二面面试官对岗位的详细讲解, 我了解到该岗位在 AI 应用、项目架构以及微前端等方面都有较高的要求。在我的过往工作中, 我经历了许多重难点需求, 有的是偏重于页面交互, 有的偏向于功能逻辑, 通过对技术细节、项目进度的把控以及团队之间、跨团队的高效沟通与协作, 都交出了满意的答卷。另外, 我在 AI 应用领域从零到一开发了一个 AI 视频录制工具, 并敏捷交付了 AI 封面图、AI 字幕、AI 数字人等功能, 取得了非常不错的成果。在项目架构方面, 我成功将 22 个多仓库迁移至大仓, 并设计了一套符合项目特色的 PNPM + Monorepo 方案; 同时, 我还主动推动构建升级, 将 Webpack 4.x 升级为 RsPack, 显著提升了构建效率。除此之外, 我在微前端领域也有多个大型项目的实战经验。综合这些经历, 我相信无论是在项目需求的高质量交付上, 还是在团队自驱赋能方面, 我都能利用自己全面的技术栈、丰富的项目经验、严谨的规划和持续钻研的精神, 充分满足并超越该岗位的要求, 为团队创造更大价值。

二十二、在一个重点需求中, 你是如何进行团队协作与跨部门协作的?


在项目推进过程中, 我注重与团队成员、产品、设计及其他部门的高效沟通, 确保各环节协调一致。通过积极倾听和及时反馈, 我能迅速解决问题, 促进团队协同合作, 保证项目高质量按时交付。那么, 高效沟通不仅仅是信息传递, 更是建立信任、达成共识和推动项目进展的关键。以下是几个关键点, 可以帮助你在团队和跨团队协作中实现高效沟通:

首先, 在沟通前, 先明确你想传达的信息和希望达成的目标。准备好讨论要点, 既能提高会议效率, 也能避免沟通时跑题。高效沟通是双向的。倾听对方的观点, 确认理解无误, 再给予及时反馈。例如, 可以用复述对方观点的方式确认对方的意思, 这样既表达了尊重, 也能避免误解。语言要尽量简洁, 直击重点, 避免使用过多专业术语或模糊表述, 让信息接收者更容易理解。如果涉及复杂概念, 可辅以图表或示例。沟通结束后, 及时进行总结和反馈, 找出不足并不断调整沟通方式。定期回顾和优化流程, 有助于建立长效的沟通机制, 提升整体协作效率。