腾讯(PCG移动商业产品部)初试
1.自我介绍!!!
2.在这么多的项目中你最熟悉的是什么?
3.能详细说明一下你是怎么通过设置请求头解决了缓存问题吗?
4.在这个项目中有没有用到登录这个功能?
追问:怎么实现登录呢?
追问:让你做一个登录的页面,你会怎么做呢?(比如登录之后,我去请求购物车,为什么我能返回来的是自己的购物车,而不是别人的?)
使用token认证机制
5.假设界面显示价格为9.99元,现在我去拉取了后台的价格,现在数据为8.88元。当你把数据设置为8.88后再到页面显示成8.88元。在这个期间你了不了解vue帮你做了什么事情?
双向数据绑定+发布订阅者监听+虚拟dom(diff算法)+生命周期钩子(beforeupdate、update)
6.用过哪些es6语法?
追问:数组里面新加的方法你有用过哪些?
7.https(传输过程是安全的,但是怎么解决密钥本身是安全的呢?使用证书的机制解决这个问题)
最后一道编程题:
三次重试:假设有一个函数名为job,调用job后会执行一些异步任务,并返回一个Promise,但job执行的异步任务任务有可能会失败
请实现函数retry,把job作为retry函数的参数传入,当retry执行后会尝试调用job,如果job返回成功(即Promise fulfilled),则retry函数返回job函数的返回内容;
如果job返回失败(即Promise rejected),retry函数会再次尝试调用job函数。
如果job连续三次均返回失败,retry则不再尝试调用,并返回其最后一次失败的内容。
function job() { return new Promise(function (resolve, reject) { setTimeout(function () { var num = Math.ceil(Math.random() * 20); //生成1-10的随机数 console.log('随机数生成的值:', num) if (num <= 1) { console.log('符合条件,值为' + num) resolve(num); } else { reject('数字大于1了执行失败'); } }, 2000); }) } function retry(job, times, delay) { return new Promise(function(resolve, reject){ function attempt() { job().then(num => { resolve(num); }).catch(function (err) { console.log('还有', times - 1, '次尝试'); if (0 == times - 1) { reject(err); } else { times--; setTimeout(attempt(), delay); } }) } attempt(); }) } retry(job, 3, 1000).then(result => { console.log(result); }).catch(err => { console.log(err); });
或者
function job() { return new Promise(function (resolve, reject) { setTimeout(function () { var num = Math.ceil(Math.random() * 20); //生成1-10的随机数 console.log('随机数生成的值:', num) if (num <= 10) { console.log('符合条件,值为' + num) resolve(num); } else { reject('数字大于10了执行失败'); } }, 2000); }) } async function retry(job, times) { for (let i = 0; i < times; i++) { try { return await job(); break; } catch(err){ if(i == times-1){ return err; } } finally { console.log('还有', times - i - 1, '次机会'); } } } retry(job, 3).then(num => { console.log(num) })
2.fastClick原理
3.点击穿透
4.图片懒加载原理(节流是什么)
5.介绍一下mvvm(从双向绑定原理开始讲)(怎么监听数组的变化?)
6.使用闭包实现变量自加一
7.setTimeout第二个参数为0时和匿名自执行函数区别
8.微任务有哪些?
9.你是怎么压缩图片的?
10.你是怎么实现瓦片绘制的?为什么在ios下会出现200万像素绘制不了的情况?
11.数组和链表的区别?
12.cookied和session的区别
13.nodejs中的require原理
14.webpack中如何实现按需加载的
腾讯(PCG动漫)初试
1.tcp三次握手
2.网络攻击(xss、csrf)
3.性能优化(懒加载、缓存、重排重绘)
4.闭包
5.cookie和localstorage区别
6.http状态码
9.手机适配你会怎么做?(媒体查询、rem、vwvh)
10.你未来的方向和目标
全部评论
(3) 回帖