到今天,大概半个月已经面了5家,收到2份offer,2个还在流程中,有的公司还是在大规模招聘的。。接下来还有大概3家,做个阶段性的总结。
浏览器输入url到显示页面都发生了什么
一个非常经典的面试题,不同阶段的人的答案相差会很大,一定程度有助于区分面试者水平。初级阶段会说出类似建立tcp连接,发送http请求,服务器接收请求返回数据,浏览器显示页面等;相对高阶的会对每个阶段都详细阐述,如DNS查询、浏览器缓存、资源重定向、浏览器的DOM、CSSOM以及如何渲染等,大神级会说出计算机图形学、浏览器渲染原理之类的。。
另一个经典之处在于,对整个过程了解的越详细,对网站搭建、网络请求、前端性能优化就更有深层次的见解。
阿里云数据迁移与恢复,以及ssh连接服务器
最近发现用了很多年的阿里云服务器配置下架了,不光配置低(1核1G),续费还比高配的要高,忍受了这么久的低配卡顿又白花了这么多钱,索性找售后退款退实例,直接换新的。
由于是切换实例,所以一定要做数据备份。可以先创建一个新实例,然后把旧实例的数据恢复到新实例上,最后旧实例删除即可。
新实例的配置2核2G,CentOS 已经停止维护了,之前试过Alibaba Cloud感觉不太好用,常用命令不支持,还有些莫名的报错,最后选择了Debian 13系统。
SSH 连接
想要每次免密登录服务器,可以在本地生成一对公钥和私钥,然后把公钥上传到服务器的~/.ssh/authorized_keys文件中,这样就可以免密登录了。
这次又理解了一次ssh连接服务器的原理,ssh连接分为客户端和服务端,发起方是客户端,服务端是被动的,客户端发起连接请求,服务端响应请求。要把客户端的公钥上传到服务端的~/.ssh/authorized_keys文件中,服务端就可以通过公钥验证客户端的身份。
Github Actions自动推送
很久没更新的博客,再触发更新构建失败了,原来是Node 12已经不支持,建议选择24版本,现有的package也要做一次升级。
官方有对ssh-deploy的说明文档:https://github.com/marketplace/actions/ssh-deploy。 由于也是ssh推送的方式,此时Github actions就变成了客户端,在本地临时生成一对公钥私钥,将私钥保存到github actions的环境变量中,再把公钥追加到服务器的~/.ssh/authorized_keys文件中,这样就可以通过github actions自动推送了。需要注意的是Debian没有rsync命令,安装即可。
如何发布VSCode Web Extension
VSCode正备越来越多的使用在浏览器中,以Github为例,可以在项目页面按下.键,即可直接打开一个在线的VSCode编辑器,属实是厉害了👍。
然而Web端的功能相比客户端来说要少了一些,Terminal的功能就逊色一些,还有插件系统也做了更新,需要适配Web端。
比较完整的NPM发包流程
现在的npm包是越来越卷了,之前只要把能用的js文件打包发到npm上就可以了,现在随着技术更新迭代,又多了一些需求,常见比如typescript支持,支持ES模块。
通过一个MR请求,我也是整理了下之前理解有误的地方,再结合一些别人的实践,重新发一个包,比较完整的说明下当前npm包的发布流程,以及一些常见的问题。
curl命令的使用
TODO: WIP
AMD、UMD与CommonJS
TODO: WIP
HTTP2协议与优劣势
在http2协议下,一个TCP请求可以请求多个资源,既避免重复建立TCP连接,有解决了并发数量的限制。
蛇形输出二维数组元素
TODO: WIP
可控制并发数的Promise方法
这个问题见过几次,头条的笔试有道题好像就是这个意思,最近又看到了类似的题目,试着实现了一下。
题目概述:有20个请求,希望可以控制并发数量为5,每成功一个则继续执行下一个请求,直到所有请求都成功,并按请求参数顺序返回结果数组(可暂时认为所有请求都会成功)