8.16投递
8.22约面
8.24 19:00面试
百度个人云部门
大约1小时10分钟
百度自己的即时通讯软件 如流
1.自我介绍
2.自己认为收获最多的项目 展开讲讲
3.我看你用的vite框架,vite和webpack比好在哪
我说作为开发者,主观感受是启动快,控制台有展示diff 问我为什么快,我说vite是打包前确定引用关系,按需加载;webpack是把所有引用到的问价打包好一起加载; vite有热更新,面试官说webpack也有,我说我没用过最新的webpack5哈哈哈 我说vite代理服务器解决跨域问题,这个webpack也有,算是我觉得用框架方便的地方
4.讲讲你用的pinia
我就讲了一下项目中用到的store吧,设计用户登陆状态 具体设计方式就不说了
5.你在开发小程序的过程中学到最多的地方是什么
个人经历可能对大家来说没意义
6.如果说小程序中要嵌套h5页面,怎么保持页面跳转后用户信息自动同步?
我说的是http请求,post请求的时候请求头带上用户不敏感的信息(头像nickname这种)
7.上面说完后顺便问了下https,跳转到h5被抓包怎么办
对称加密+非对称加密 先非对称得到只有两端共识的key,后续两端用key加密交流 普通抓包抓到的是加密后的文件,解不开 如果伪装中间人生成第三方pk/sk,就买个权威机构的证书 证书里会有有效期,加密算法,pk和机构签名 现在的中级证书一般都是2048位的rsa算法,目前算法只能解到768位,比较安全
8.自己实现promise
这部分也是口述的,大致把下面说了,有点不同的是在构造器里引用原型上的函数,避免了每次new promise都要构造resolve和reject函数, 在定义属性的时候如果用箭头函数也会自动挂载到对象属性上,这样子写相当于把res和rej写在原型方法上,构造的时候调用函数,节省内存。 我也不知道这种想法对不对,面试官也没有评价
class myPromise { state = 'pending' value = undefined reason = undefined onFulfilledCallback = [] onRejectedCallback = [] constructor(executor) { this.resolve = this.resolve.bind(this) this.reject = this.reject.bind(this) try{ executor(this.resolve, this.reject) }catch(err){ this.reject(err) } } resolve(value){ if (this.state === 'pending') { this.state = 'fulfilled' this.value = value while(this.onFulfilledCallback.length){ this.onFulfilledCallback.shift()(value) } } } reject(reason){ if (this.state === 'pending') { this.state = 'rejected' this.reason = reason while(this.onRejectedCallback.length){ this.onRejectedCallback.shift()(reason) } } } then(onFulfilled, onRefected) { if (this.state === 'fulfilled') { onFulfilled(this.value) } if (this.state === 'rejected') { onRefected(this.reason) } if(this.state === 'pending'){ this.onFulfilledCallback.push(onFulfilled) this.onRejectedCallback.push(onRefected) } } }
强制缓存和协商缓存 1.如果强制缓存没过期,不会走协商缓存,直接在浏览器端读取资源 2.如果过期了,同时配置了Etag||last-modified,走协商缓存,如果匹配命中,返回304,使用本地缓存,但是不会更新max-age, 如果协商缓存不存在或者匹配未命中,返回200+新资源+max-age
10.讲讲http的缓存历史(延续上题)
1.0 expires 1.1 cache-control 添加了etag和last-modified
11.爬楼梯
口述秒了 1.动态规划 2.dp[i]的含义 i:楼梯层数 dp[i]:第i层的路径数 3.状态转移方程:斐波那契数列
12.你个人认为原生js,框架这些知识哪些自己比较强,哪些比较弱
随便说就好啦
总的来说就是根据你的项目随机提问,面试官人比较好也不为难你,看牛客上面经一面都比较基础,希望能给二面机会
题目就是这些,答案是我当时的回答,有错误希望大佬们不用忌讳直接骂,骂多学多哈哈哈。
#前端##百度#