前端常见面试题
前端常见面试题归纳和总结
HTML&CSS
浏览器内核
常用五大浏览器及其内核
浏览器 | 内核 |
---|---|
Google Chrome | Blink引擎 |
Mozilla Firefox | Gecko引擎 |
Apple Safari | Webkit引擎 |
Microsoft Edge | Blink引擎 |
Opera | Blink引擎 |
IE(已被历史所淘汰) | Trident(俗称IE内核) |
盒模型、flex布局、两/三栏布局、水平/垂直居中;
BFC、清除浮动;
css3动画、H5新特性。
JavaScript
开始之前我们先来看一道面试题,请回答一下打印的结果
1 | async function test() { |
答案是:
想一下为什么会得到这样的结果吧!继承、原型链、this指向、设计模式、call, apply, bind;
继承与原型链
当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(object)都有一个私有属性(称之为 __proto__)指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(__proto__),层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。
1 | // 让我们创建一个函数 f,它自身拥有属性 a 和 b |
继承方法,当继承的函数被调用时,this 指向的是当前继承的对象,而不是继承的函数所在的原型对象。
1 | var o = { |
this指向
new实现、防抖节流、let, var, const 区别、暂时性死区、event、loop;
new的时候都做了什么
new 关键字会进行如下的操作:
1、创建一个空的简单 JavaScript 对象(即 {});
2、为步骤 1 新创建的对象添加属性 __proto__,将该属性链接至构造函数的原型对象;
3、将步骤 1 新创建的对象作为 this 的上下文;
4、如果该函数没有返回对象,则返回 this。
promise使用及实现、promise并行执行和顺序执行;
Promise 一共有三种状态,而其必然处于以下三种状态之一:
待定(pending),初始状态,既没有被兑现,也没有被拒绝;
已兑现(fulfilled),意味着操作成功完成;
已拒绝(rejected),意味着操作失败。
传递到 then() 中的函数被置入到一个微任务队列中,而不是立即执行,这意味着它是在 JavaScript 事件队列的所有运行时结束了,且事件队列被清空之后,才开始执行:
1 | const wait = ms => new Promise(resolve => setTimeout(resolve, ms)); |
async/await的优缺点;
闭包、垃圾回收和内存泄漏、数组方法、数组乱序, 数组扁平化、事件委托、事件监听、事件模型
网络
HTTP1, HTTP2, HTTPS、常见的http状态码;
浏览从输入网址到回车发生了什么;
前端安全(CSRF、XSS)
前端跨域、浏览器缓存、cookie, session, token, localstorage, sessionstorage;
TCP连接(三次握手, 四次挥手)
性能相关
图片优化的方式
500 张图片,如何实现预加载优化
懒加载具体实现
减少http请求的方式
webpack如何配置大型项目
参考文章
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 藤源Tofu店!
评论