头条一面
2018-11-20 03:19:05来源:博客园 阅读 ()
大厂就是不一样,面一次打击一次,感觉可以买票回家过年了……
目前情况是过了两轮,还剩最后一轮技术面,总结一下面试题和自己的解答。
一面记不太清了,只记得几个。
首先是懒加载原理,写伪代码。
这里贴一个自己练习时候写的vue类似懒加载的指令:
const lazyLoad = (() => { const tro = (fn, delay = 300) => { let flag = false; setInterval(() => { flag = true; }, delay); let wrapper_fn = () => { if(flag) { flag = false; fn(); } } return wrapper_fn; }; const key = Symbol(); let pending = Symbol(); const config = { opacity: 'translate(0, 0)', left: 'translate(-100px, 0)', right: 'translate(100px, 0)', top: 'translate(0, -100px)', bottom: 'translate(0, 100px)', }; return { directives: { lazy: { inserted(el, binding){ let type = binding.arg || 'opacity'; el.style.opacity = 0; el.style.transition = 'all 1s'; el.style.transform = config[binding.arg]; let top = el.offsetTop - el.clientHeight * 1.5; this[key].push({top, el, type}); }, }, }, created() { window[key] = []; window[pending] = false; onscroll = tro(() => { let cur = window.scrollY; if(window[pending]) return; window[pending] = true; window[key].forEach((v, i) => { v.el.style.opacity = v.top > cur ? 0 : 1; v.el.style.transform = v.top > cur ? config[v.type] : config.opacity; }); window[pending] = false; }, 500); }, } })();
使用方法,在需要的组件直接用mixin混入,然后在dom上挂v-lazy就行了。
这里主要的点如下:
1、根据绑定dom的高度注册事件
2、监听onscroll,然后判断是否有dom需要处理
优化点就是节流函数了,当时傻傻的分不清防抖和节流,被鄙视了……
接下来问了promise的原理,然后出了一道题:
const log = (s) => { console.log(s); }; log(1); new Promise((resolve) => { resolve(2) }).then(v => { log(v); }); async function fn1() { log(3); } async function fn2() { log(4); await fn1(); log(5); } fn2();
可以自己思考下,我反正头都大了(14325)。
问了下promise原理,没答出来。
问了下数组扁平化,这个很简单,但是自己写的很臭,反正答案应该是这样:
let result = []; function fla(ar) { ar.forEach(v => { if(Array.isArray(v)) fla(v); else result.push(v); }); return result; }
剩下的就是一些XSS、跨域、垂直居中等等,距离比较久,也记不很清。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 大厂-十道前端面试题 2019-05-22
- 【面试】2018大厂高级前端面试题汇总 2018-11-22
- 头条二面 2018-11-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash