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布局? (opens new window)
vue
✔ 实现数据的响应式的原理?
✔ 路由原理,为什么浏览器不会刷新
ES6
✔ 常见es6问题?
✔ Symbol的用法?
✔ 箭头函数特点?
✔ 什么是提升/暂时性死区?var/let/const区别
小程序
✔ 小程序的特点?
✔ 小程序的原理?
✔ 与传统移动web的异同?
✘ 小程序是如何与webview通信的?
浏览器
✔ 浏览器的缓存机制?
✔ 什么是强缓存/协商缓存?
✔ 协商缓存的作用?如何工作的?
✔ 浏览器安全问题?
编程题
✔ 如何实现继承
✔ 模拟实现new命令
✔ 如何实现 a==1&&a==2
✔ 快排实现
✔ 单链表转置
✔ 模拟实现call
✔ 模拟实现apply
✔ 模拟实现bind
✔ 节流与防抖实现
✔ 使用requestAnimationFrame实现setTimeout/setInterval
✔ 如何实现水平居中,垂直居中,垂直水平居中
✔ 实现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 是对象吗?
✔ 如何理解原型?如何理解原型链?
非技术问题
✘ 未来的职业规划
✘ 除开发外的兴趣爱好
✘ 自己的长处/优势
✘ 自己的不足
✘ 跟其它候选人相比,你觉得你的优势在哪里
✘ 对前端工程化的理解
✘ 为什么选择前端
✘ 平时怎么学习的,最近在看什么
✘ 你觉得自己最成功的一次分享或者成果是什么
✘ 你如何看待前端这个行业
✘ 你为什么会选择我们
目录