# Q&A

前端面试常见问题与个人的总结整理

下面是记录的所有面试题目录😄

# js

原始类型有哪些?

null是对象吗?

为什么0.1+0.2!=0.3?

对象类型与原始类型的不同之处?

函数参数是对象会发生什么问题?

typeof能否正常判断类型?

instanceof能正确判断类型的原因是什么?

概述原型与原型链?

如何正确判断this?

==与===有什么区别?

什么是闭包?

深拷贝与浅拷贝?

为什么使用模块化?JS实现模块化的几种方式

Promise的特点/优点/缺点?

什么是Promise链?

Promise构造函数执行和then函数执行有什么区别?

async及await的特点/优点/缺点是什么?

await原理是什么?

new原理是什么?

new创建对象与字面量创建对象的区别?

v8下的垃圾回收机制?

事件触发过程是怎么样的?

什么是事件代理?

什么是跨域?使用同源策略的原因?

解决跨域的方式?

什么是预检请求?

什么是函数柯里化?

JS的垃圾回收机制?

什么是节流,防抖?

浏览器与Node中event loop?他们有何不同?

概述一下js中的词法作用域?

for in遍历数组会有哪些问题

window.onload与document.ready执行顺序

了解JSBridge吗

# css

什么是回流与重绘?

什么是盒模型?

CSS的层级关系?

什么是BFC?

flex弹性布局?

display属性有哪些?作用分别是什么?

position的值有哪些?

什么是语义化标签?有哪些?为什么要使用它

哪些属性不可以被继承

display:none,opactiy:0,visibility:hidden区别

什么是IFC?

grid布局?

# vue

实现数据的响应式的原理?

路由原理,为什么浏览器不会刷新

# ES6

常见es6问题?

Symbol的用法?

箭头函数特点?

什么是提升/暂时性死区?var/let/const区别

# 小程序

小程序的特点?

小程序的原理?

与传统移动web的异同?

小程序是如何与webview通信的?

# 浏览器

浏览器的缓存机制?

什么是强缓存/协商缓存?

协商缓存的作用?如何工作的?

浏览器安全问题?

# 编程题

如何实现继承

实现new

节流与防抖实现

实现call/apply/bind

如何实现 a==1&&a==2 -- true

使用requestAnimationFrame实现setTimeout/setInterval

如何实现水平居中,垂直居中,垂直水平居中

quicksort

实现36进制转换

二叉树树的遍历方式,前/中/后,层次

函数柯里化实现

单链表转置

模式串匹配,在找出子串在模式串中第一次出现的位置

对称二叉树

并发请求?

实现一个ajax

判断一个有向图是否包含环

# 网络

概述一下TCP

概述一下UDP

TCP与UDP区别

概述HTTP

HTTP与HTTPS的区别

TLS协议握手过程,如何工作的

HTTP2的特点

如何才能使用HTTP2,有什么前提条件

HTTP3中使用的QUIC协议基于UDP的原因?

如果响应头Content-Length=0那么是发出来被截取了还是没发出来?

跨域如何携带cookie

# 操作系统

线程与进程的概念/区别/如何工作的?

进程和线程怎么通信?

什么是死锁?为什么会出现?如何避免

进程之间如何进行切换的?

几种常见的页面置换算法

# 综合问题

怎么理解前端工程化?

浏览器输入url之后到网页显示发生了什么

原型如何实现继承,Class 如何实现继承,Class 本质是什么

typeof 是否能正确判断类型,instanceof 能正确判断对象的原理是什么

对象类型和原始类型的不同之处?函数参数是对象会发生什么问题?

原始类型有哪几种?null 是对象吗?

什么是提升?什么是暂时性死区?var、let 及 const 区别?

原始类型有哪几种?null 是对象吗?

如何理解原型?如何理解原型链?

# 非技术问题

未来的职业规划

除开发外的兴趣爱好

自己的长处/优势

自己的不足

跟其它候选人相比,你觉得你的优势在哪里

对前端工程化的理解

为什么选择前端

平时怎么学习的,最近在看什么

你觉得自己最成功的一次分享或者成果是什么

你如何看待前端这个行业

你为什么会选择我们

# 目录