常用的浏览器内核有哪些
行内元素和块元素有什么区别
清除浮动有哪些方法
如何解决JavaScript中的this
原始类型与引用类型有什么区别
如何深度克隆一个对象
数组去除重复元素有哪些方法
同步与异步的区别
get请求与post请求的区别
跨域请求有哪些方案
注:问题来源抖音的晚舟报告,我一看他的发际线就知道他肯定是资深程序员,说的面试题肯定有用!
- 常用的浏览器内核有哪些
我知道的有IE内核Trident、火狐浏览器的内核Gecko、谷歌浏览器的内核WebKit、谷歌chrome和网络Opera浏览器的Blink内核。
- 行内元素和块元素有什么区别
块元素独占一行,可设置宽高,如<dic>和<p>标签。行内元素不独占一行,根据内容本身调整宽高,如<span>和<a>标签。
- 清除浮动有哪些方法
有三种方法,第一是给父元素设置固定高度,但这种方法不灵活,内容增多时可能会出现问题;第二是在浮动元素后添加一个空的 <div> 标签,设置 clear: both ,但会增加额外的标签;第三是给父元素添加 overflow: hidden ,可以触发BFC(块级格式化上下文)来清除浮动,但可能会隐藏超出父元素的内容。
- 如何解决JavaScript中的this
有两种方法,第一可以使用箭头函数,它没有自己的 this ,会继承外层作用域的 this 。
第二使用 bind 、 call 、 apply 方法来显式绑定 this 的值。 bind 会返回一个新函数, call 和 apply 会立即执行函数,且 call 和 apply 的区别在于传参方式不同, call 是逐个传参, apply 是传数组。
- 原始类型与引用类型有什么区别
原始类型包括 number 、 string 、
boolean 、 null 、 undefined 等,它们存储的是具体的值,在栈内存中分配空间。
引用类型如 Object 、 Array 、 Function
等,存储的是地址,在栈内存中存储地址,实际的值在堆内存中,当把一个引用类型变量赋值给另一个变量时,传递的是地址,而不是值本身。
- 如何深度克隆一个对象
两种方法,第一可以使用
JSON.parse(JSON.stringify(obj)) ,但这种方法有局限性,不能克隆函数、正则表达式等特殊对象。
第二,手动实现深度克隆,通过遍历对象的属性,判断属性的类型,如果是原始类型直接赋值,如果是引用类型则递归克隆。
- 数组去除重复元素有哪些方法
两种方法,第一,使用 Set 数据结构, Set 中的元素是唯一的,可以将数组转换为 Set 再转换回数组,如 [...new Set(arr)] 。
第二,遍历数组,使用 indexOf 或
includes 方法判断元素是否已存在于新数组中,不存在则添加到新数组。
- 同步与异步的区别
同步代码是按照顺序依次执行的,只有前一个任务执行完,才会执行下一个任务。
异步代码不会阻塞后续代码的执行,它会在合适的时候被执行,比如 setTimeout 设置的回调函数会在指定时间后执行,而不会影响其他代码的执行。
- get请求与post请求的区别
get 请求通常用于获取数据, post 请求用于提交数据,如提交表单。get 请求的参数会显示在地址栏。
- 跨域请求有哪些方案
使用 JSONP ,利用 <script> 标签的 src 属性不受跨域限制的特点,通过动态创建 <script> 标签来实现跨域请求,但只支持 get 请求。
服务器设置 CORS (跨域资源共享),在响应头中添加允许跨域的相关信息,让浏览器允许跨域请求。
使用代理服务器,将跨域请求转发到同域的代理服务器,由代理服务器再请求目标服务器,然后将结果返回给前端。
OK,今天就到这里了,明天见
关注我,带你了解更多前端知识[来看我]