关注弥雾meow谢谢喵 level
获赞
403
粉丝
226
关注
34
看过 TA
3548
门头沟学院
2026
Web前端
IP属地:广东
[object Undefined]
私信
关注
2024-12-11 17:03
已编辑
门头沟学院 Web前端
自我介绍 - 蓝桥杯是什么- 问两个开源项目:- Threejs 那个怎么说- 某音乐网站嵌入 tauri 二次开发(扯了一下写的 vite 插件,实现了把外部网站嵌入到脚手架内实现的直接开发,还有重写部分热重载代码,以及代理后端,实现内容覆盖与整个网站的控制权,以及扯了一下这种跨平台开发要注意的是什么,然后就扯了一下ipc通信与序列化的性能)- 做了这些插件最终的意义?(提升开发体验与效率)- 这些是自己做的还是实验室做的(第一个跟隔壁实验室哥们一起做的,第二个是自己做的,2023年7月 -> 2024年8月,有GitHub提交可查)- 说一下你对前端工程化的理解(尽可能地实现非业务部分过程自动化,使得开发者可以专注开发)- 用过webpack吗,没有,直接 vite 上手- 说一下你对 vite 的认知,越多越好,尽可能地说(esbuild 开发环境,rollup 生产环境,vite 在加速方面做了哪些努力(esbuild 构建开发环境js,预构建依赖,对源码更新采用链失活处理(仅概念)))- esm cjs(同步与异步导入,import 静态分析)- url 到页面呈现(合法判断,cache,dns,tcp,dom树,cssom,js 阻塞,render tree,绘制,部分 css 送入 gpu 处理)- 说一下用 Astro 的原因(vite 作为底层驱动支持,内容驱动静态网站生成,支持SSG,SSR)- 除了 SSG,SSR 还有什么渲染,区别是什么(ISR,CSR,边缘计算)- Astro SSR 还有哪些应用场景(扯了一下官网文档的电商平台,用户可以先看到页面商品内容,具有交互性质的按钮可以在后续注水激活)- 说一下 yjs 是干什么的(以CRTD为核心思想的并发冲突解决库)- 在线演示平台,平台有多少人在用(不多,给内部人员编辑使用)- 做这个遇到最难的地方是什么(服务端崩溃上下文丢失后内容恢复,说了目前的实现与未来最好实现)- VSCode 插件看一下效果(演示了一下并说了转 ast 做处理的简单流程)笔试:- html css js 基础- lodash.get- 树遍历本来要反问了,感觉节奏不对,继续跟面试官扯完了简历上的后两点:- 页面预览实现?成本有点高,目前思路是转发脚手架页面曾经做过的努力:- 用 astro 的编译器看看能不能 build 一些组件并拼接完整页面(不能,必须依赖 node 环境或在浏览器实现需要的 api)- 用 SSR (审查了 astro 部分源码发现对于 markdown 编译逻辑都是写在 vite 插件内,打包时是直接把 markdown 编译成 js,SSR执行时直接静态出字符串,没有运行时编译过程)- 11月14号新出的 content layer api,去官方文档看了milestone,其中写清楚了不把运行时编译 markdown 放在目标内,与 astro 的 baseline 与解决问题场景不一致- jsx 编写通用组件?曾经做过的努力:- 调研 tinyMVC,在示例仓库里发现他针对各个框架都写了一套 renderless 逻辑,还为此写了一个专门抹平框架差异的函数- taro,基于编译器实现,背后有编译团队,运行时团队,小程序团队和跨平台团队支持,对于小团队开发成本太高了反问:- base 北京上海- 二面什么时候- 主要业务- 需要改进的地方
查看27道真题和解析
0 点赞 评论 收藏
分享
2024-11-27 22:42
已编辑
门头沟学院 Web前端
总结:面试官人很好,整个面试过程中就像是聊天一样,全程演示项目,中间穿插了一点八股- 蓝桥杯是什么- 问简历上的项目是实验室还是个人项目面试官说都会把比赛项目给放到前面,所以以为这也是实验室作品。然后我就拿了挑战杯写的前端页面简单说了一下以下基本都是项目细节:- Mod 开发组与你是什么关系(甲乙方?)- 为什么分了开源核心 + 后台仓库(后台仓库代码不安全,需要审查)- 编辑人员提交流程(后台编辑 + 管理员提交 -> gitee pr + 审查后合并 + webhook 触发 cicd 同步到 oss)- Astro 是什么,SSG SSR 是什么(说了一下基于 vite 进行驱动与支持 ssg + ssr,然后说了一下 ssr 的动态拼接字符串;然后面试官说了什么 jeklly?)- 选了他的原因是什么(博客落地实践过,知道一些底层原理,内容驱动生成网站,符合 wiki 定位要求)- 框架可以插入 react 或者 vue 组件吗(可以,且可以一起使用)- 有试过放在一起吗(没有,提了一下 vite 放在过一起导致开发声明报错,其次是两个应用相互独立,通过各自的 app 创建函数来渲染页面,只要他们副作用不会相互影响我觉得问题都不算大,不过现在看来感觉还得想一想 vue react 底层,他们的更新机制不一样,会不会一个框架的占用线程太久导致了另一个框架更新不及时)- 整个项目内核升级是什么意思(说了用插件将所有的逻辑进行封装,最后进行复用,要求展示了一下除了简历还有哪个网站复用了)- 编译器和 polyfill 的关系,知不知道每一个 es 版本的区别(不会)- VSCode 插件展示一下,具体在 VSCode 做了什么,用途(mdx 转 ast 语法树,对节点进行分析,并读取工作目录下的资源进行查错;给一些编外的词条编辑人员使用)?- 网页插件展示一下?(没实现,说了一下对每一个用户都要开一个专用检查进程的原因)- 看一下你的分析器和 mdx 官方分析器的关系(完全独立,没来得及说存在的优化部分)本来要进笔试了,然后说了一下 yjs 是核心之一- 在线平台演示效果- yjs 是什么(协同编辑中编辑冲突的一个库)- 协同主要问题(说了并发冲突和 YATA 算法的作用,面试官似乎没做过这个领域)笔试:```ts// 写一个类似迅雷的下载管理器,用户可以不停往里面push url,管理器需要保证同一时间最多只有3个请求在并发下载。class Downloader {urls = []push(url) {}}// 每个url均需要被传入以下fakeAxiosWrapper函数。你可以把这个函数当做一个封装好的axios函数,作用是请求远程api,不要改动这个函数。async function fakeAxiosWrapper(url) {return new Promise((resolve, reject) => {setTimeout(() => {console.log(`download ${url} done`)resolve()}, 3000);})}// 验证代码const downloader = new Downloader()downloader.push(`url1`)downloader.push(`url2`)downloader.push(`url3`)downloader.push(`url4`)downloader.push(`url5`)// 等待3s后,同时输出// download url1 done// download url2 done// download url3 done// 再等待3s后,同时输出// download url4 done// download url5 done```没写出来很可惜,因为以前写过一个类似的并发下载控制,结果这里没写好。面试官换了个节流,问了一下为什么 setInterval 可以用来证明你这个函数是节流的(宏任务队列首部)反问:工作时间(上午十点到晚上八点半)地点(深圳总部)实习时长(越久越好)技术栈(挺多跨端技术的,感觉进去又要开始上手新东西了)有没有什么可以改进的地方(没有,做的很好(不知道是不是客套话整体下来感觉最大的问题还是信息差与沟通点没到位,项目yjs部分展示的内容不是很多,然后还浪费了一些时间,只能说很可惜,下一次对于不会的内容就应该直接说不会(恼)。然后就是没问多少八股,这真的正常吗()
查看22道真题和解析
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务