最近组内掀起了学习 AI 相关知识的风潮,大家都在分享自己看到的 AI 相关内容。
微前端这个概念在前端开发这个方向里面已经不是新鲜事情了,前几年沸沸扬扬,基本每个前端开发都会将「了解微前端开发」写到自己的简历上,各种微前端方案也是层出不穷:
-
最初的 single-spa,到基于 single-spa 实现的 qiankun,将 js 沙盒和 css 隔离都做到了开箱即用;
-
再到基于 webComponent 实现的 micro-app,基于 webComponent + iframe 实现的 wujie;
-
另外还有直接使用 iframe 作为微前端方案(谁说 iframe 不是微前端呢,天生的上下文隔离就是它最大的优势),基于 webpack5 的 module federation 模块联邦,等等。
基本流程
面试前:
1、电话联系,约时间,并要求准备好视频会议面试软件,加好友,设置视频会议相关权限
面试中:
-
介绍自己和团队(1min)
-
对方自我介绍(1min)
-
现场编码(编码能力)(10min)
这一块可以是算法题,也可以是编程场景题(实现一个 Promise.all、Array.prototype.flat 这种),注重可以看求职者的编码能力、编码思路、代码规范等。
建议是制造一些卡点让面试者当场想方案(但这块是不是应该有一定量的题库作为背景呢?每次创造新的题目也怪费劲的)
还可以看到对方搜索用的啥、是否翻墙顺畅、是否有 AI 辅助、编辑器和配色喜好等等。
-
问基础(深度和广度)(10min)
JavaScript HTML CSS Vue React
比如算法、闭包、迭代器、Promse、ES 特性、React、数据流、工程化等。
前端方向多,不同岗位有不同的侧重点,比如招中台的就不需要考察 H5 经验了。基础也分「深度」和「广度」,外包答疑岗位会侧重广度,基础技术岗位会侧重深度。
广度就是多问,10 个问题能答出来 7 个就可以;深度看两点,一看求职者能否经得住熟悉知识点的一问到底(比如针对一个 Promise 深挖,可以挖到事件循环,Promise 规范,generator yield 等等),二看对于熟悉的技术栈是否有原理性的认识(在我看来就是不仅要会用这个框架,还要去思考为什么这个框架要这样设计)。
-
问项目实践(产出、解问题的能力)(10min)
结合项目问技术,考虑解决问题的能力
开源项目、社区影响力、个人博客、业务项目的闪光点都属于此类。
问题比如是:你做了什么,你的角色是什么,遇到什么问题,你是怎么解决的,是否有其他的解法,为什么是这个解法,你的思考逻辑是什么?
**招人就是为了解决问题的,不仅是解决他会的问题,还要解决他不会的问题。**通常结合项目来问,提出一个他之前没有考虑过的问题,然后看他的解决思路。
-
问学习方法(学习能力)(3min)
我一般习惯问平时有没有了解前端的新动向,最近学习最新的前端知识是什么,有没有写博客记录的习惯等。
可以问遇到一个不会的知识点怎么学,期望做什么,等等。
-
问杂项(离职原因、职业规划等)(3min)
-
你有什么想问我的(3min)
问题
在微信修改群名称的时候,发现无法使用多个特定的emoji,但是有许多emoji是可以使用多个的。
无法使用的emoji:👨👨👧👧
思路
由技术常识知道,emoji底层本质上也是Unicode编码的符号,那有没有可能是个别emoji的底层Unicode编码过长导致的呢?我们需要途径去查看emoji的Unicode编码,可以通过这个网站去查看(Unicode Full Emoji List)。这个网站包含了所有最新的emoji,因此加载的时候比较慢。
背景
在搭建基于 vuepress 的博客时,由于框架是基于 markdown 中的 frontmatter 来获取元数据,现在文章数量大,杂糅着不规范的 frontmatter,有些甚至没有写 frontmatter,因此下意识就想写一个可视化的 frontmatter 编辑器。
由于这里面需要文件读写等操作系统权限,使用 web 应用会捉襟见肘,因此第一时间想到的就是使用 electron 来实现,顺便也可以实践一下 electron。
架构模型
主进程
每个 electron 应用都有一个单一的主进程,作为整个应用程序的入口。主进程运行在 node.js 环境中,意味着它具有 require
模块和使用所有 node.js api 的能力。
背景
Electron
Electron 是一个使用 JavaScript、HTML 和 CSS 等 Web 技术创建原生应用程序的框架。它负责处理困难的部分,因此您可以专注于应用程序的核心。如果您可以构建网站,则可以构建桌面应用程序。
Tauri
Tauri 是一个框架,用于为所有主要桌面平台构建微小、极快的二进制文件。开发人员可以集成任何可编译为 HTML、JS 和 CSS 的前端框架来构建他们的用户界面。应用程序的后端是一个来自 rust 的二进制文件,带有一个前端可以与之交互的 API。
安装包 / 打包
惯例先上链接——字节的前端监控 SDK 是怎样设计的
比较异同
不同/不如点
字节 | 内部 |
---|---|
监控,代表着不仅仅是埋点,包括了众多类型的信息上报 | 埋点,只针对于页面一些特定行为的信息上报 |
环境多样( Web 应用、小程序、Electron 应用、跨端应用等等) | 仅针对 Web 应用,针对 Vue 做了特性提供 |
逻辑解耦,分独立模块 | 逻辑一体化,采集、上报都在内部 |
实现插件化,支持业务自行拓展 | 不支持拓展、插件化 |
上报量大,QPS 高,批量上报 | 上报量一般,基于神策 SDK 只支持单条上报 |
照惯例,先上篇参考文章:
关于 chrome 拓展开发的实践与思考(一) - 掘金 (juejin.cn)
这是一个作者写的系列文章,帮助了我很多,在此感谢~
背景
项目中新需求开发,往往会有接口的新增,然后我们一般要手动去 UAC
手动录资源,这个过程比较繁琐而且容易遗漏,再加上 UAC
越更新是越不好用了,因此我手动写了一个 cli
来处理这个事情,但发现 cli
还是不够智能和好用,最后想到的就是 chrome extension
,可以取 cookie
、发请求、获取 DOM
,最重要的是它也在浏览器,会比较地一体化。
Vite1
仅仅试用过,Vite2
已经更新了,全新插件架构,丝滑的开发体验,和Vue3
的完美结合。 出于对尤大的信任与新技术的追求,在做毕设的我尝试着把项目移植到 Vite2 上。Vite2 官方文档(看了一个星期的英文文档才发现原来中文文档也更新了 T.T)
目标
npm
是一个包管理器,npx
类似于一个运行需要全局安装的 npm
包的快捷指令,会在需要时下载对应的包,用完即删除。在 npm
的基础之上,npx
让 npm
包中的命令行工具和其他可执行文件在使用上变得更加简单。