2023-06-22 前端面试题
1. 自我介绍一下
(我是谁) (我工作多久了) (我的工作经历) (我的技术栈是什么) (我觉得做得最好的项目是哪一个) 你好我是李xxx,5 年的前端开发经验,我的技术栈是 vue 和 react, 主要使用的是 vue。
2. css 盒子模型
盒模型是由content,padding,margin,border组成的:分别有标准盒模型和怪异盒模型
标准盒模型:
标准盒模型的宽高是取决于content的宽高和padding跟border
怪异盒模型:
这个模型的宽高包含了content,padding,border,比如有一个元素的宽度是200px,那么这个200px的容器就包含了content的宽度和设置padding和border
3. 给定下面代码,如何实现 child 水平居中、垂直居中
<div class="parent">
<div class="child"></div>
</div>
<style>
1、使用 flex 的方法 .parent {
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
height: 100%; /* 父容器需要有高度 */
}
2、使用定位拉回的方法 .parent {
position: relative; /* 父元素需要相对定位 */
height: 100%; /* 父容器需要有高度 */
}
.child {
position: absolute; /* 子元素需要绝对定位 */
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* 使用 transform 对元素进行偏移 */
}
3、使用 CSS Grid 的方法 .parent {
display: grid;
place-items: center; /* place-items 是 align-items 和 justify-items 的简写 */
height: 100%;
}
4、使用 CSS 表格布局的方法 .parent {
display: table;
width: 100%;
height: 100%;
text-align: center;
}
.child {
display: table-cell;
vertical-align: middle;
}
5、使用行内块和文本居中的方法 .parent {
text-align: center; /* 文本水平居中 */
line-height: 100px; /* 这个值需要等于.parent的高度 */
}
.child {
display: inline-block; /* 设置为行内块 */
vertical-align: middle; /* 让元素垂直居中 */
}
</style>
4. js 数据类型都有哪些
基本数据类型: 1、Number: 用于表示整数和浮点数,如:123, 3.14。 2、String: 用于表示文本数据,如:"Hello World"。 3、Boolean: 有两个值,true 或 false。 4、Null: 只有一个值,null。 5、Undefined: 只有一个值,undefined。 6、Symbol(ES6 新增): 产生一个唯一的值,主要用于对象的属性名,防止命名冲突。 7、BigInt(ES2020 新增): 可以安全地存储和操作大整数,甚至超过 Number 能够表示的安全整数范围
复杂数据类型: 1、Array 数组 :数组是一个可以存储多个值的数据类型。这些值可以是基本数据类型,也可以是复杂数据类型。在数组中,每个值都有一个索引,我们可以通过索引来访问或修改数组中的值。
2、Object 对象:对象是一种可以包含多个键值对的数据类型。每个键值对由一个键和一个值组成,键通常是字符串,值可以是任何数据类型。我们可以通过键来访问或修改对象中的值。
3、Function 函数:函数是一段可执行的代码,它可以接受输入参数,并返回一个结果。在 JavaScript 中,函数本身也是一种数据类型,我们可以将函数赋值给变量,也可以作为参数传递给其他函数。
4、Set 集合:集合是一种可以存储多个唯一值的数据类型。在集合中,每个值只能出现一次,重复的值会被忽略。
5、Map 映射:映射是一种可以存储键值对的数据类型,与对象类似,但键可以是任何数据类型。
5. vue2 生命周期描述一下都有哪些钩子
1、beforeCreate:这个钩子在实例初始化之后被调用,创建实例之前执行的钩子事件
2、created:创建实例完成后执行的钩子事件
3、beforeMount:将编译完成的 html 挂载到对应的虚拟 dom 时触发的钩子 此时页面还没有内容
4、mounted:实例被挂载后调用,创建 vm.$el 并替换 el
5、beforeUpdate:更新之前执行的钩子,发生在虚拟 DOM 重新渲染和打补丁之前。你可以在此钩子中进一步地更改状态,这不会触发附加的重新渲染过程。
6、updated:更新之后执行的钩子,组件 DOM 已经更新,现在可以执行依赖于 DOM 的操作。
7、beforeDestroy:实例销毁之前执行的钩子
8、destroyed:实例销毁完成执行的钩子
6. vue2 v-if 和 v-show 的区别
v-if:当条件为假时,该元素不会被渲染并且从 DOM 中删除,而当条件为真时,该元素会被渲染并插入到 DOM 中。
v-show:是在元素上应用 CSS 样式 display: none,当条件为假时,该元素会被隐藏但仍然存在于 DOM 中,而当条件为真时,该元素会显示出来。