前言:
这篇博客是记录自己在看面试过程中还未完全掌握的前端知识点,也是一些前端面试需要掌握的知识点(总结的并不全面,可以参考,具体情况以自己实际为准),并且这篇博客正在持续更新中…
附言:有时候面试还会遇到面试官问一些无关技术的问题,比如聊职业发展规划、为什么选前端、平常怎么自学前端、最近的学习过程中遇到了哪些印象深刻的知识、 如何协调和沟通需求、得到产品原型后如何进行开发工作的划分等等,可以根据自己情况整理一些,面试问道也不至于很乱。
(其余整理的知识点,接 前端面试题整理(一)-CSDN博客)
1、0.1+0.2为什么不等于0.3,怎么解决这个问题
计算机中用二进制来存储小数,大部分小数转成二进制之后都是无限循环的值,因此存在取舍问题,也就是精度丢失。
如上所述:0.1和0.2在转换成二进制后会无限循环,由于标准位数的限制后面多余的位数会被截掉,此时就已经出现了精度的损失,相加后因浮点数小数位的限制而截断的二进制数字在转换为十进制就会变成 0.30000000000000004。
对于这个问题,一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2^(-52),在ES6中,为我们提供了Number.EPSILON属性,而它的值就是2^(-52),只要我们判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3
function numberEpsilon(a,b){
return Math.abs(a - b) < Number.EPSILON;
}
console.log(numberEpsilon(0.1 + 0.2, 0.3)); // true
2、CSS 伪类和伪元素详解及区别
伪类:
CSS 伪类是用来选择处于特定状态的元素,比如说鼠标悬浮在元素上面、元素被点击等等。常见的伪类有:
:hover 鼠标悬浮在元素上时
:active 元素被点击时
:focus 元素获得焦点时
:visited 访问过的链接
:nth-child() 选择元素的某个子元素
伪类的语法是在选择器后面加上冒号和伪类名,比如:
a:hover {
color: red;
}
这个样式表示当鼠标悬浮在链接上时,链接文本的颜色会变成红色。
伪元素:
CSS 伪元素则是用来选择某个元素的特定部分,比如说元素的第一行或第一个字母。常见的伪元素有:
::before 在元素前面插入内容
::after 在元素后面插入内容
::first-line 选择元素的第一行
::first-letter 选择元素的第一个字母
伪元素的语法是在选择器后面加上两个冒号和伪元素名,比如:
p::first-letter {
font-size: 2em;
}
这个样式表示段落的第一个字母的字体大小为 2em。
伪类和伪元素的区别
伪类和伪元素的区别在于,伪类是用来选择整个元素的某个状态,而伪元素是用来选择元素的某个特定部分。另外,伪元素需要使用两个冒号 ::,而伪类只需要一个冒号 :。
举个例子,a:hover 是一个伪类,表示当鼠标悬浮在链接上时的状态,而 ::before 是一个伪元素,表示在元素前面插入内容。
3、二叉树(或dom树)中查找两个节点的最近的公共父节点(说思路)
4、不能使用箭头函数的场景
(1)定义对象的方法
(2)定义原型的方法
(3)定义事件回调函数
(4)定义构造函数