微信公众号:路人zhang
扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: 大厂面经 > 前端 > 百度 > 百度面经(1)


百度个人云部门

大约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)
        }   
    }
}

本站链接:https://www.mianshi.online如需勘误,请联系微信:lurenzhang888


点击面试手册,获取本站面试手册PDF完整版